http://36kr.com/p/202396.html

上周四,Google宣布从WebKit 分支出自己的浏览器渲染引擎 Blink。很多人觉得这像是晴天霹雳,或者甚至是迟到的愚人节笑话,但是其实这件事情是难以避免的,而且是历史的重演。

上周四,Google宣布从WebKit分支出自己的浏览器渲染引擎Blink。很多人觉得这像是晴天霹雳,或者甚至是迟到的愚人节笑话,但是其实这件事情是难以避免的,而且是历史的重演。

什么是WebKit?它到底是谁的?

WebKit 是一个开源的浏览器引擎。它的前身是KDE在1998年开发的排版引擎KHTML,最初用于Linux和Unix等开源操作系统。当时苹果觉得需要开发自己的浏览器,所以在比较了Netscape(现在的Firefox)的Gecko引擎 和KHTML引擎后,选择了后者,因为KHTML拥有更清晰的架构,而且比Gecko更小巧。苹果工程师Don Melton在2001年六月25号正式从KHTML分支出来,在苹果内部开始了WebKit的研发。

开始的时候,苹果和KHTML的关系还是不错的。苹果将KHTML发扬光大,在2003年推出了装备WebKit引擎的浏览器 Safari。但是随着时间的推进,WebKit和KHTML之间交换代码变得越来越困难。苹果会间隔很长时间之后,提交一大批更改,而且没有文案,很多功能可能只开发了一半。对于KDE而言,将这些更改整合回KHTML是相当困难的。此外,苹果要求KDE开发者阅览苹果代码之前必须签署保密条款,KDE也很难接受这一点。在2005年,KDE开发者开始公开攻击苹果的做法,并称两方的合作关系已经彻底瓦解了。

事情被媒体报道之后,苹果做出了一系列的让步。在2005年,苹果宣布将WebKit完全开源(之前仅有从KHTML直接搬来的WebCore及JavaScriptCore是开源的)。KDE和苹果的关系也得到了一些改善,有一些KDE的开发者们开始为WebKit提交更改,苹果的团队也复原了很多为苹果特定的修正,并且实现了平台层的抽象化,使引擎的核心代码可以在其他平台上运作。但是KDE没有忘记苹果的背叛,他们没有完全加入WebKit的开发,而是在2010年底推出了KDE开发平台4.5,并列支持KHTML和WebKit。

Google的介入

Google加入WebKit的开发是在2008年Chrome浏览器推出前后的事情。Chrome浏览器使用WebKit引擎是Android团队的建议,而Chrome主要用的其实还是从KHTML那里来的WebCore,它不太用WebCore之外苹果开发的东西,而是使用自己开发的多进程浏览器架构等。

但是Google毕竟资源和人力雄厚,在上周从WebKit分支之前,大约50%的WebKit更改来自于Google的开发者,剩下的一半大多数来自于苹果,其余来自于第三方开发者,比如KDE的开发者。虽然Google的开发者开始提交大部分的WebKit更改,但是WebKit的最终决策权还是苹果的。据一些第三方的WebKit开发者透露,苹果和Google的开发者在交流时没有一般开源开发者的那种相互支持,反而更像两头相互打量的狮子,气氛比较紧张。

Blink引擎的新闻爆出之后, Hacker News上立刻开始有双方的开发者发表评论。多数评论认为苹果目前的WebKit更改提交政策对非苹果的开发者是有敌意的,尤其在WebKit 2这块。更有很多人认为WebKit 2完全是苹果单方推出的一个产品,而且根本就没有和Google以及其它参与WebKit开发的人进行协商。

苹果的开发者也对此给予了答复,苹果WebKit团队领头人Maciej Stachowiak说:

如果我们要讨论历史的话,我们开发WebKit 2的最主要原因是因为Chromium(Chrome的开源版)从来没有将它的多进程架构整合到WebKit里。这些代码一直在Chromium自己的目录中。

我们在写任何WebKit2代码前就问了Google的人,他们愿不愿意将多进程架构的支持整合到WebKit中,他们的答案是否定的。在这种情况下,我们面临的选择是做一个怀有敌意的Chromium分支,或者写我们自己的多进程架构,或者继续使用单进程架构。我们选择了写自己的多进程架构。

如果当时Google同意整合他们的多进程架构,那么我们肯定是会接受的,事情的发展可能也会和现在不太一样。

无论谁是谁非,苹果和Google这两家在WebKit中明显已经各走各的路有一段时间了。KDE是一家完全开源,对苹果没有任何实质性威胁的开发团体。如果当年苹果和KDE都不能够维持良好的合作关系,它是不可能和Google,一家在多个领域与苹果有你死我活级别竞争关系的公司,有什么良好合作的。虽然之前有很多人认为WebKit项目有点像柏林墙上的一个缺口,但这明显有点天真了。

谁将拥有未来

未来的事情我们谁也不知道,但是我们能够看到的有这几点:

  • WebKit会比以前少50%的新代码提交。
  • 绝大多数第三方WebKit开发者会加入Blink项目。
  • Google的平台是互联网本身,它会将所有资源倾注到Blink的开发之中,而苹果目前最重要的平台是iOS。
  • 当没有苹果这个“合作者”之后,Google可以用它自己的速度来推进浏览器科技。想在浏览器引擎中放一个Dart 虚拟器?没问题。Google Native Client?可以。所以Blink支持的网络科技很有可能很快超越WebKit。

如果我非要下赌注的话,我会赌Blink逐渐取代WebKit,因为Blink对于Google是有战略性意义的,而WebKit对于苹果来说只是它封闭性花园中一只开源的黑羊。

从WebKit的这段历史,我们还看到了什么?第一,大公司永远以自己的利益为导向。第二就是,最牛掰的工程师是开源项目的工程师,尤其是Unix这个生态系统里的开源项目;Chrome用的WebKit部分根本还是KDE写的WebCore。

历史在重演:从KHTML到WebKit,再到Blink的更多相关文章

  1. 八大Webkit内核浏览器

    列举出时下最流行的Webkit内核浏览器,所以我们并不会做出评测和对比.PS:本文列举的浏览器有一部分为IE+Webkit双核浏览器,如果您对其他IE内核浏览器很感兴趣<抛弃数据!用体验和感觉告 ...

  2. WebKit技术内幕

    WebKit技术内幕(浏览器内核|渲染引擎| HTML5| Chromium项目Committer重磅作品) 朱永盛 著   ISBN 978-7-121-22964-0 2014年6月出版 定价:7 ...

  3. 数据库模型设计——历史与版本设计

    在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据.对于这种需求,我们可以使用保留历史数据或者使用版本来实现. 为了能够保留历史数 ...

  4. 将webkit内核封装为duilib的浏览器控件

    转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直 ...

  5. [Winform]WebKit.Net使用

    摘要 在项目中使用了cefsharp,最后发现在触屏电脑上面,如果长按文本内容,会经常性的崩溃,发现是cefsharp的问题,最后也等不及了.然后就换了webkit.net这个开源的浏览器内核. 关于 ...

  6. Shell系列(4)- 历史命令

    格式:history [选项] [历史命令保存文件] 选项: -c:清空历史命令 -w:把缓存中的历史命令写入到历史命令保存文件~ /.bash_history;用户的家目录下 例子: [root@l ...

  7. 谈谈我们对userAgent的看法,为什么爬虫中需要userAgent?

    首先打开浏览器,按 F12 进入控制台(Console),然后输入:navigator.userAgent,即可看到 UA.例如: 1 2 Mozilla/5.0 (Windows NT 10.0; ...

  8. 软件-浏览器-GoogleChrome:Google Chrome

    ylbtech-软件-浏览器-GoogleChrome:Google Chrome Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit, ...

  9. 成 功 的 背 后 !( 致给所有IT人员)

    转载了这篇文章,希望能对自己和看到这篇博客的人有所激励. 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人. ------------------- ...

随机推荐

  1. Knockout.js Visible绑定

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  2. RabbitMQ---5、远程 IP 访问

    刚刚安装的RabbitMQ-Server-3.3.7,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:1567 ...

  3. Docker学习(六): 网络使用与配置

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  4. java poi处理新版xlsx后缀的excel

    jar包下载地址http://poi.apache.org/download.html#POI-3.17,我把下载文件中的所有jar包都导入项目中才能跑 参考以下博客 https://www.cnbl ...

  5. Linux上把新磁盘扩展到已有分区中(基于LVM)

    0.在不重启服务器的前提下找到新加的磁盘 --查看主机总线号 ls /sys/class/scsi_host/ --根据查询结果生成刷新磁盘语句 echo "- - -" > ...

  6. Java 基础:数组

    一.数组声明: int[] x; int x[]; 在Java中一般使用前者,机把int[]看做一个类型,C++中只能后者 二.数组初始化: 直接提供值: int[] x = {1, 3, 4}; i ...

  7. springcloud 集成kafka问题记录,发消息报错:ERROR o.s.kafka.support.LoggingProducerListener - Exception thrown when sending a message with key='null' and payload='{-1,

    在springcloud集成kafka,发送消息时报错: 2018-08-15 16:01:34.159 [http-nio-8081-exec-1] INFO  org.apache.kafka.c ...

  8. HTML颜色的三种写法

    颜色的三种写法: 1.16进制代码     #000000 2.英文字母         red 3.rgba                rgba(0-255,0,0,0-1) 例如: <b ...

  9. Web前端和后端开发的区别和要求

    Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...

  10. RAP, 高效前后端联调框架,接口文档管理工具

    RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据.校验真实接口的正确性,使接口文档成为开发流程中的强依赖.有了结构化的API数据,RAP可以做的更多, ...