Blink 其实都在意料之中——Chromium Committer 朱永盛访谈

  • 彭超

2013 年 4 月 23 日

话题:Chrome语言 & 开发

朱永盛, Web 技术和 WebKit/Chromium 社区的爱好者和贡献者。2010 年之前,从事于 XML 和 XSLT 编译器的开发和优化工作。自 2010 年开始,参与开发过多个基于 WebKit/Chromium 的项目,一直对 WebKit/Chromium 开源社区保持关注和贡献,去年成为 Chromium 项目的 Committer。

作为 QCon 北京 2013“跨终端的 Web”的演讲嘉宾,朱永盛接受了 InfoQ 的采访。采访内容如下:

InfoQ:能否讲讲您与 WebKit、Chromium 项目的渊源

朱永盛:在业余时间里,发表关于 WebKit/Chromium 技术内幕的文章,分享个人在项目的经历和理解,和大家一起交流学习心得。具体见个人微博 http://blog.csdn.net/milado_nju。联系方式是yongsheng@chromium.org

InfoQ:究竟什么是 WebKit?

朱永盛:这其实是一个很难的问题,因为 WebKit 本身的确是很复杂,经常容易被人误解。WebKit 只是一个渲染引擎,不是浏览器,主要用来将 HTML 页面渲染成可视化的图像结果。它包括 WebCore,JavaScript,WebKit Ports 等,这其中 WebKit Ports 是很大的一块,而且是平台相关的。所以基于 WebKit 的浏览器一般需要有不同的 WebKit Port。

同时,WebKit 离一个完整的浏览器非常非常地远,这是因为浏览器还有很多其它的功能。拿 Chromium 来说,它是一个基于 WebKit 的浏览器,WebKit 用来渲染网页,但是,Chromium 做了很多其它的工作,主要两部分:第一,WebKit 的 Chromium port,这里面主要是 Chromium 需要将 WebKit 运行在不同平台 (Windows, Mac, Linux 等) 和图形工具上(skia);第二,很多新框架和浏览器功能,包括多进程模型,沙箱模型,各种 HTML5 功能实现,GPU 硬件加速机制等等。

InfoQ:WebKit Ports 是什么?

朱永盛:WebKit 的渲染一部分工作是平台独立的(例如 HTML 解析等),但是还有很大一部分是需要依赖平台的功能(如系统调用),也需要平台上的其它库(如图形库 skia,cairo)。平台有多个,例如 Windows,Linux,Mac 等。同一平台上,也有不同的图形库,这样组合起来就会有很多不同的可能,一个 WebKit Port 可能就是基于一个这样的组合来实现的。

InfoQ:浏览器都使用 WebKit,就意味着 Web 的统一和封闭吗?

朱永盛:相信看了上面的描述,你也很难相信使用 WebKit 就代表 Web 会很好的统一和封闭了。因为虽然都叫 WebKit,但是 WebKit 是开放的,它虽然包含了相同的基础架构,但是每个 WebKit Port 都有不同的实现,导致很多的不一致性,需要大家共同努力。至于封闭问题,这个也是仁者见仁的问题了。本身 WebKit 是开源的,与其不停的争论,不如大家都参与进去,共同推动 Web 技术的发展。

InfoQ:作为 WebKit 和 Chromium 项目的参与者以及 Chromium 的 committer,能否和大家分享一下参与这种著名开源项目的感受?

朱永盛:个人还是很喜欢开源的风格,因为你可以从中学习任何你想知道的东西,而且可以参与。这两个项目里面有很多非常资深的人,但是他们很随和,当然也少不了争论。举个例子来说,基本上当我提交代码补丁后,他们都会很快的反应并给予很多的意见帮忙改进他们,完全是技术讨论,能收获很多。如果想参与到他们中来,建议从一些小的问题入手,找资深的人给些建议,相信可以很快地成长的。

InfoQ:对前端开发者来说,了解 WebKit 如何解析渲染网页,会给他们带来怎样的经验和启示?

朱永盛:我一直相信这样一个道理,了解背后原理的人总是对问题理解地更深刻。这就像是用 C 语言编程的人应该了解 C 语言背后的东西,这样写出的代码更高效。同样,当你了解 WebKit 是如何工作的时候,知道什么事情它能够高效的做到,什么事情它会比较费时,这绝对会有助于你更深刻的理解你的代码是怎样被执行,从而设计并改进他们。

InfoQ:您对 Google Blink 项目有什么看法?

朱永盛:其实这个并不令人吃惊,因为之前就有很多关于这方面的讨论,如果你关注 WebKit 的邮件列表就会发现。Google 有很多新的功能希望加入 WebKit 中,但是 WebKit 可能并不认可,双方分歧越来越多,终于分道扬镳,就像当年的 WebKit 之于 KHTML 一样。目前,Blink 就是 WebKit,没有太多的变动,只是删除了些不用的代码。未来,Blink 应该会有很多新颖的功能,大家拭目以待。 以上仅是代表我个人的观点。

InfoQ:如果在 InfoQ 开设专栏详述 WebKit 内幕,您有什么计划?

朱永盛:一直想把 WebKit 内部的技术逐一介绍出来,目前的打算是列出一个系统的提纲出来,然后逐步介绍提纲中各个专题的技术内部。因为涉及的技术很多,所以可能这会是一个较长的过程。

(采访内容完)

特别提醒:

QCon 北京 2013 即将在本周四(25 号)于北京国际会议中心召开。无论您是否身处会场,都可以通过InfoQ 微博、微信:infoqchina,来获得场内最新资讯,slides 下载信息等内容。

腾讯大讲堂仍将鼎力支持 QCon:除所有的 Keynote 之外,二号厅 A 的其余 4 个专题 16 场演讲,都会在大讲堂进行视频直播,敬请关注。

Chrome语言 & 开发