历史在重演:从KHTML到WebKit,再到Blink
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。
转载于:https://www.cnblogs.com/feng9exe/p/6676026.html
历史在重演:从KHTML到WebKit,再到Blink相关推荐
- 历史在重演:从KHTML到WebKit,再到Blink(转)
上周四,Google宣布从WebKit 分支出自己的浏览器渲染引擎 Blink.很多人觉得这像是晴天霹雳,或者甚至是迟到的愚人节笑话,但是其实这件事情是难以避免的,而且是历史的重演. 什么是WebKi ...
- vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈)
vue学习笔记-01-前端的发展历史(从后端到前端,再到前后端分离,再到全栈) 这篇文章是博主在看vue-前端发展简史的时候做的笔记,以供后续学习复习 文章目录 vue学习笔记-01-前端的发展历 ...
- JS运行机制(浏览器内核)
谈及浏览器,首先我们的第一映像就是页面信息显示或者是从网上百度.谷歌我们所需要的信息.归纳起来大概有两点:1.信息检索:2.信息展示 而回顾浏览器的发展历史,从1991年的世界上第一个有用户注册的浏览 ...
- 一文通透从输入URL到页面渲染的全过程----高频面试
一文通透从输入URL到页面渲染的全过程----高频面试 喜欢大海 喜欢夕阳 写下便是永恒 文章目录 一文通透从输入URL到页面渲染的全过程----高频面试 重温 进程与线程 什么是进程 什么是线程 进 ...
- 历史总是在重演,AI寒冬或再来
https://www.toutiao.com/a6646335224504402436/ 2019-01-14 20:55:08 [新智元导读]本文结合了近三年技术和产业发展的回顾,再论" ...
- 移动浏览器的内核WebKit介绍
Hybrid App是运行在移动操作系统的WebView上面的,我们可以在原生页面中嵌入HTML5网页,WebView就是这个网页的容器.WebView实际上是一种嵌入式的编程接口,WebView调用 ...
- 谷歌为什么从WebKit中建立一个Blink分支
你可以随意转载,但请写上译者文章地址, http://blog.csdn.net/taquguodedifang/article/details/48622135 点击查看原文地址,水平有限,请轻拍, ...
- 浏览器内核发展历史简述
浏览器最核心的部分是"Rendering Engine",译为"渲染引擎",不过更多地将之称为"浏览器内核",内核主要由"HTML ...
- 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
内核 首先得搞懂浏览器内核究竟指的是什么. 浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎.它负责取得网页的内容(HTML ...
最新文章
- matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
- OpenGL 持久映射分形的实例
- python热力图背景_python 绘制场景热力图的示例
- mqtt如何判断设备离线_反渗透纯水设备膜元件如何离线清洗?
- 漫画:下辈子你还当程序员么?
- Hi3559AV100开发环境搭建
- docker harbor 新建私有仓库
- 使用TensorFlow.js的AI聊天机器人六:生成莎士比亚独白
- 电脑键盘上每个键的作用_键盘F键有什么作用 键盘F键作用介绍【详解】
- Unity3D 学习教程 14 C# 旋转镜头
- MSFT_NetAdapter修改网卡名
- 大数据分析的重要性体现在哪里
- System.Data.SQLite兼容32位和64位问题
- Dev中ChartControl——属性熟悉与简单应用
- 数学建模——主成分分析入门及SPSS使用
- SpringBoot爬虫
- 微信公众平台测试号登录入口地址
- 安装Docker所遇到的问题
- 【STM32单片机入门】学习资源推荐,学习经验分享
- 翻译Prism4碰到生单词
热门文章
- jquery+jplayer实现歌词同步的mp3音乐播放器效果
- 基于形状图像检索的曲率尺度空间描述符与傅立叶描述子的比较研究——18.07.14
- 在线考试系统总体设计
- 安卓逆向——修改APP的名称,图标和包名多开分身
- 语音处理/语音识别基础(六)- 语音的端点检测(EPD/VAD)
- 使用OpenBTS基站测试物联网模块安全性
- 爬虫实战【12】使用cookie登陆豆瓣电影以及获取单个电影的所有短评
- 阿里视频云web播放器常见问题汇总
- 服务器登陆之后一直转无法显示桌面,如何解决远程登录Windows服务器无法显示桌面的问题?...
- 淘宝的商品管理是怎样的?