WebKit 的历史是一部充满**开源精神、商业博弈、技术分歧与巨头决裂**的史

WebKit 的历史是一部充满开源精神、商业博弈、技术分歧与巨头决裂的史诗。

它不仅成就了苹果的 Safari,更是移动互联网(Mobile Web)时代的基石,甚至孕育了如今统治市场的 Chrome(Blink 内核)。可以说,没有 WebKit,就没有今天的移动互联网体验。

以下是 WebKit 跌宕起伏的历史脉络:

1. 起源:来自 Linux 的“灰姑娘” (1998 - 2001)

WebKit 的前身并非由苹果从零创造,而是源自 Linux 桌面环境 KDE 的开源项目。

  • KHTML 与 KJS: 1998年,KDE 项目为了开发自己的浏览器 Konqueror,编写了渲染引擎 KHTML 和 JavaScript 引擎 KJS
  • 苹果的选型: 2000 年代初,乔布斯回归苹果,急需为 Mac OS X 开发一款原生浏览器(当时 Mac 预装的是微软 IE)。
    • 苹果工程师 Don Melton 评估了当时主流的 Gecko(Mozilla/Netscape 的内核)和 KHTML。
    • 为何选中 KHTML? 尽管 Gecko 功能强大,但代码过于庞大臃肿(约 200 万行)。相比之下,KHTML 代码极其干净、优雅且轻量(不到 14 万行),且标准支持度极高。

2. 磨合:苹果的秘密分叉与“渣男”行为 (2001 - 2005)

这是 WebKit 历史上最尴尬的时期。

  • 秘密研发: 苹果将 KHTML 分叉(Fork),在内部秘密研发了一年多。
  • 发布 Safari (2003): 乔布斯发布 Safari 浏览器,震惊业界。虽然乔布斯公开致谢了 KDE 社区,但苹果初期的开源方式非常糟糕。
  • “代码扔过墙”: 苹果虽然遵守 GPL 协议发布了修改后的源码,但他们只是偶尔把一大坨修改后的乱码扔出来,没有详细的修改记录(Diffs),没有注释。KDE 开发者对此极度愤怒,认为苹果只是在“吸血”,双方很难合并代码。
  • 更名: 苹果将 fork 出来的 KHTML 渲染层命名为 WebCore,将 KJS 命名为 JavaScriptCore

3. 转折:彻底拥抱开源 (2005)

2005 年 6 月,苹果做出了一个改变 Web 历史的决定。

  • 完全开源: 苹果宣布将 WebKit 作为一个完整的开源项目运作,开放了 CVS 版本库和 Bug 追踪系统。这意味着外部开发者可以实时看到代码变动,并参与贡献。
  • 战略意义: 这一举动修复了与开源社区的关系,并开始吸引其他公司的注意。

4. 黄金时代:统治移动互联网 (2007 - 2013)

这是 WebKit 的高光时刻,它几乎成为了“移动互联网”的代名词。

  • iPhone 发布 (2007): iOS 的 Safari 采用了 WebKit,定义了手机浏览网页的标准体验。
  • Android 跟进 (2008): Google 推出的 Android 系统,其内置浏览器也选用了 WebKit。
  • Chrome 诞生 (2008): Google 发布桌面版 Chrome 浏览器。虽然 Google 换掉了 JS 引擎(用了自家的 V8),但渲染引擎依然使用了 WebKit。
  • 一统天下: 随后,诺基亚(S60)、黑莓、Palm WebOS 纷纷采用 WebKit。此时的 WebKit 就像当年的 IE 一样,成为了事实上的标准。前端开发者只需要写 -webkit- 前缀的 CSS 就能适配所有手机。

5. 裂痕:Webkit2 与 架构之争 (2010 - 2013)

随着浏览器演变成“操作系统”,苹果和 Google 的需求开始剧烈冲突。

  • 多进程架构(Multi-process): Google 极其看重浏览器的稳定性及安全性,坚持推行“多进程架构”(一个标签页崩溃不影响整个浏览器)。但 WebKit 原生的架构是单进程的。
  • WebKit2 的诞生: 2010 年,苹果发布了 WebKit2,引入了进程分离模型。但是,这个模型是深度绑定 Mac OS/iOS 系统机制的,并不通用,无法满足 Google 的跨平台需求。
  • 代码库的混乱: WebKit 的代码库变得极其丑陋。为了兼容两家巨头的不同需求,代码里充斥着大量的 #ifdef GOOGLE#ifdef APPLE。Google 工程师发现通过 WebKit 提交代码太慢、太累。

6. 决裂:Blink 的诞生 (2013 年 4 月)

这是 Web 历史上最重要的一天。

  • Google 宣布分家: Google 宣布将 WebKit 中的 WebCore 渲染组件 fork 出来,建立名为 Blink 的新内核。
  • Opera 倒戈: Opera 随即宣布放弃自家的 Presto 内核,加入 Google 的 Blink 阵营。
  • 大清洗: Google 在 Blink 中删除了约 450 万行代码(主要是为了兼容苹果和其他老旧系统的代码),让内核瞬间瘦身,跑得更快。
  • 格局形成: 从此,Web 世界形成了 WebKit (Apple) vs Blink (Google/Microsoft Edge/Opera) 的双雄对峙局面(Firefox 仍在坚守 Gecko)。

7. 现状:守门人 WebKit (2013 至今)

分家后的 WebKit 变得更加“苹果化”。

  • 专注方向: 失去了 Google 的激进推动,WebKit 的演进策略变得保守但务实。
    • 省电 (Energy Efficiency): 这是 WebKit 最大的优势,为了保证 iPhone 的续航,WebKit 对资源的消耗控制得极严。
    • 隐私 (Privacy): 苹果率先在 WebKit 中引入了 ITP (Intelligent Tracking Prevention),大力封杀第三方 Cookie 和广告追踪。
  • “新 IE”的争议:
    • 由于苹果更新 Safari 的频率远低于 Chrome,且对一些可能威胁 App Store 利益的 Web 新标准(如 PWA、Web Bluetooth、Web USB)支持缓慢,很多前端开发者戏称 Safari 为“新的 IE”。
    • 但在 CSS 的新特性(如色彩管理、排版)支持上,WebKit 往往又走在最前沿。

总结

WebKit 的历史就是一部**从“开源寄生”到“开源共主”再到“分道扬镳”**的历史。

  1. 它杀死了 IE 的垄断: 提供了轻量级的替代方案。
  2. 它定义了智能手机: 没有 WebKit 就没有 iPhone 和 Android 的浏览体验。
  3. 它也是 Blink 之母: 如今占据市场 70% 份额的 Chrome 内核,流淌的依然是 WebKit(以及 KHTML)的血。