2011年8月7日星期日

浏览器内核WebKit编年史

  回首六年前,2005年,网络和现在完全不同。那时,浏览器大战已告尾声,虽然Netscape战斗英勇,但微软和Internet Explorer 的地位看起来越来越稳固。看起来互联网正要落入这个邪恶帝国手上,还有一点,地球人已经阻止不了微软了。

  然后在2005年6月7日,在WWDC上,Bertrand Serlet走上讲演台推出了并不被人看好的产品——苹果的浏览器的灵魂——Safari,它是开源产品。它被称为WebKit。看起来,苹果仍然无法阻止微软作威作福,但是之后,他们走上了一个那时没人预料到的完全不同的方式。

  略想一下:苹果公司是出了名的神秘兮兮,为什么他们主导一个开源项目?要回答这个问题,要正确地看待这个开源如何成功的,我们必须回头看看WebKit的根源。但如果我没触碰到WebKit的现状,未来的发展,那就是我的失职。过去的知识很重要,因为它可以帮助我们了解现在,并更好地为未来作好准备。

  诞生于开源

  瞧瞧,现在几乎所有人都认为WebKit来源于苹果公司,它是Safari浏览器的灵魂,不是吗?但这些代码的确不是在苹果总部的秘密巢穴里码出来的。它实际上源于他处,早在1998年,这些后来成为WebKit的代码其实是KDE开源项目的KHTML和KJS引擎的一部分。最初,KHTML和KJS是较早采用khtmlw(The KDE HTML Widget)引擎的项目。虽然之前发布的程序引擎W3C将“DOM”和“CSS”两者都标准化了,但仍有不少工作要做,因此支持这些功能成为一个重要的优先事项。

  几乎整个1999年,由Lars Knoll牵头,掀起了一个KHTML风潮。尽管需要不少艰巨的工作,KHTML的支持者和开发人员都不希望轻易地放弃这个项目。但这些艰苦的工作带回了丰厚的回报。到2000年的春天,出现了一套崭新的浏览器内核——KHTML和KJS ——准备在新版本的KDE上实施。他们就是后来被某个位于Cupertino的“水果”公司采摘的开源项目。

  苹果式待遇

浏览器内核WebKit编年史

  2003年1月,在旧金山的Macworld Expo主题演讲中,Steve Jobs宣布苹果KHTML引擎的移植——WebCore开放源代码。同一天,Safari的首席设计师Don Melton给公布于KDE开发者邮件名单上的KHTML和KJS – KDE的首席开发员发送了一封邮件。之后便成立了苹果的Safari团队,而且很显然两方面对于能使用这个开源代码来创建Safari都感到高兴和自豪。对代码的效率以及开发员所实现的技术,Melton信件中充满了溢美之词。它看起来像一个美妙婚姻的开始。

  然而,时间快进到两年前,我们发现这场婚姻似乎也开始触礁。

  开源社区是建筑于激情,善意,自我牺牲之上。它并不适合每一个人。要想在此取得成功——或者在这个社区成为一个腕——你必须要了解这些性格特征,并将自己置身其中。苹果也是一个社区,但它有自己的文化和目标。KHTML和苹果公司的WebCore的尝试合作出现问题,也是可以理解的。

  与苹果公司经常在WebCore做出一些变化不同,KDE社区似乎对KHTML引擎“端口”上的改变所需的时间和精力无动于衷。2005年春,合作于KHTML的两个开发者Zack Rusin 和Carewolf都在博客文章表达了他们的挫折感,不仅在于苹果的“合作”方式,而且也针对KDE社区关于合作关系的看法。

  那时,苹果公司现有的合作建立的开源项目开展得并不顺利。他们努力想成为开源社区的好公民,但它在KDE社区的眼中确是不足。看起来苹果的开放源码的尝试是失败的。KHTML和KJS是苹果创造的伟大基甸,但这也证明苹果几乎不可能以社区为所用所享的方式去“回馈”社区。

  开源,以苹果的方式

  细细观察苹果公司的运作方式,其方法看起来非常简单。他们精美的创作其实就是不断重复的细化打磨过程。他们有一个对他们来说运转良好的系统。回想起来,也难怪试图融入开源世界对他们来说并不成功。

  但苹果并不是一个完全无情的公司。他们知道,他们目前在Web技术的进步的核心就是开源社区的工作成果。所以到这里我们就回到了故事的开头, 2005年6月7日苹果宣布WebKit开放源代码。

  WebKit起初就是WebCore和JavaScriptCore代码库,后来还加入一些东西。连同源代码控制树以及错误跟踪工具,所有用来创建有效的Web浏览器的代码是开源的。即使从哲学的角度看,这种粘性似乎让苹果更具团队精神变得理所当然。这个由苹果组织和驱动的项目,不定期发布一些代码供所有人使用,让苹果在保持其臭名昭著的“控制欲”的同时,还为其在媒体界赢得了开源之名。

  而且还将此名声充分利用。

  崛起,出局和离开

  从那时起,事情开始了微妙的变化。这虽非吹枯拉朽的态势,但确是渐进而不可逆转的过程。 WebKit开始掠夺浏览器市场。当然,它不纯粹关乎市场份额数字——至少不会是第一关注点。

  WebKit正赢得网民们的心。而苹果,这家一直以设计界的倡导者和伙伴的身份所世人所知的公司,也开始到处讨好网页设计师。WebKit非常灵活,十分迅捷,能够实现新的标准和技术,仿佛是为它们的构想和发明而生。这与Internet Explorer非常不同。而Web社区钟情于此。这是从未间断过的传统。最近,我们还看到WebKit的诸多创新,推动许多新的CSS3规范,并率先采认HTML5规范。

  WebKit开始出现Safari以外的在其他地方。2005年11月,诺基亚为其S60平台发布了一个基于WebKit的网页浏览器。随着iPhone在2007年1月发布,WebKit手机应用方面声势更加壮大。其在iOS平台上得到的增长,更是前所未有。而且苹果公司将其宠儿WebKit作为Mobile Safari的基础非常具有意义。而杀红了眼的手机厂商后来的所作所为更是亘古未有。

  2007年11月,也就是iPhone亮相的10个月后,谷歌发布了收购的一项成果:Android操作系统。虽然无论在苹果及其iPhone所涉及哪个领域,Android都想跟它拼个你死我活,但它还是那么一点点的别扭——其浏览器也是由WebKit支持的。这个两个竞争对手都受益于这个开源项目。但真正的惊喜是,苹果正是这个开源项目的幕后主导者。而且他们干得还真漂亮。

  显然,谷歌很喜欢WebKit里面的东西,因为2008年秋天,谷歌自主开发的浏览器Chrome测试版开始受到互联网的热捧。没错,这也是基于WebKit的。你现在应该能看到WebKit所描绘的宏伟蓝图了吧?

  2009年7月7日,这是一个有趣的命运转机,因为谷歌宣布了一项新的项目。他们已经开始启动了其称作“Chrome操作系统”的项目运作。它的诞生就是为了争夺微软和苹果的市场的,而它却是由——你猜对了,WebKit支持的。这也是WebKit故事最吸引人的方面之一。 WebKit由开源出生,经过极具竞争力的苹果制作和打磨,而现在却是谷歌用于与苹果竞争的未来计划的基础。是不是开源软件都那么吸引人呢?

  一年后,也就是2010年,黑莓也进入到手机WebKit行列,并宣布为黑莓第六版操作系统提供新浏览器。同样,耐人寻味的是:智能手机市场的三个巨头——苹果,谷歌和RIM ——都将WebKit作为任何智能手机的关键功能——网页浏览器的骨干应该有任何智能手机。想来,谷歌和RIM都需要为此感谢苹果。苹果,你知道的,这个来自Cupertino的神秘兮兮的公司。

  当然,不仅仅是那些地位显赫的公司充分利用了这个WebKit开源项目。还有不少其他小公司的浏览器也是建筑于WebKit之上,例如Midori,Shiira和Epiphany。

  但最迷人的地方之一还是WebKit的应用还不仅严格限于浏览器。一个高质量,开放源码的浏览器的存在,让许多独立的应用程序开发人员将基于浏览器的功能纳入到应用程序。OS X上最好的在线RSS阅读器——Reeder,就是使用WebKit代码提供feeds阅读时的无缝体验。或者还可以更具创造性的方式使用它,就像Valve的Steam平台使用WebKit来渲染其用户界面。

  亦敌亦友
 

浏览器内核WebKit编年史

  现在,RIM公司采用WebKit非常有趣。谷歌将其今后的成长和规划明显的押宝在它之上更是真正的迷人之处。但苹果还有另一个竞争对手,其竞争关系也是越演越烈,也在狠狠地挖掘WebKit:Adobe。

是的,甚至连iOS的死敌——Flash——也已接受该渲染引擎,将其纳入其应用程序的Creative Suite,而且甚至还给这个代码库添砖加瓦。

  不过,苹果和Adobe之间的关系,可以在另外一篇文章中进行讨论。我只是觉得像Adobe这种关于网络建于什么之上都有不同意识形态的公司也可以在WebKit中找到共同点。这是WebKit项目之所以伟大的一种见证:其维护,质量及其最初开发者所采用的和今天编写和维护代码的工艺。

  国王已死,国王万岁!

  还记得我先前总结的苹果之所以致力于开源的WebKit的首要原因吗?对了,就是要将微软拉下马,撼动其浏览器市场的王座。不过确实没有那么“确凿的证据”。当然也没有关于苹果高管或Safari浏览器开发者之间交流了如何干掉IE浏览器的秘密图谋。这只是我的直觉,我的猜测,不过我认为这还是蛮合理的。更重要的是,我还可以提供一些冰冷生硬的数字证明,即使这不是其开源WebKit的背后初衷,它也肯定是最终的结果。

  来自Net Applications的数据显示,Internet Explorer在2005年占据着惊人惊艳的89%的浏览器市场份额,而当年WebKit刚刚开源。现在,这个数字下降到相对并不起眼的54%。相比之下,2005年,唯一的基于WebKit的浏览器——Safari仅有可怜的1.7%的市场份额。但到如今,基于WebKit的浏览器占近20%。

不过,这些统计数字很明显地偏向于桌面浏览器。手机操作系统的网页浏览器状况如何?又说明什么问题呢?好吧,手机浏览器中基于WebKit的浏览器占超过62%的市场份额。 Opera Mini以22%的份额占据第二的位置,微软的那个浏览器甚至没有足够的使用量,无法纳入统计。而“其他”浏览器的市场份额为15%。

  如今,你很难找到对高新技术产业感兴趣的人否认手机领域才是未来真正的王国。而且Webkit已经有一个强大的存在,很难想象WebKit团队持续创新的努力会很快改变。

  总结

  当然,关于WebKit,还有不少本文未有涉及到的。如果你读到了最后,我得承认倍感荣幸。我已尽我所能去完整而准确地讲诉这个故事,但仍然有很多细节未被纳入其中。

  要想获得KHTML的原编码者中的两人的观点和想法,以及WebKit开源后一年他们的立场,你可以在雅虎上观看他们的介绍。想要跟上有关WebKit项目的最新进展,没有比Surfin’Safari的博客更好的地方啦。

  最后,亲爱的读者,如果你喜欢这篇文章,请发表评论。我很想听到有关这个领域——比如网页方面的历史——你更多的见解。或者,也许你讨厌它,认为它过于累赘。如果你认为有需要,也不妨直言。

  英文原文:The History of WebKit

  中文翻译:雷锋网编译。