最近有关红芯办公浏览器的新闻比较火爆,可以参考搜狐:融资2.5亿的红芯宣称自主创新遭打脸:只是谷歌浏览器换层皮一文。知乎上罗志宇关于自主研发一款浏览器内核的难度到底有多大?一问的回答中提到了KHTML、WebKit、Blink和KDE、Qt以及Trolltech公司(现在的The Qt Company公司)的一些渊源。
我这里大致按时间线介绍一下:
-
Qt是Trolltech公司的一个软件产品,可以理解为是一个工具包或者中间件,供其他开发人员开发应用程序用的。Trolltech是一个挪威公司,由Eirik Chambe-Eng和Haavard Nord创建于1994年。1995年5月20日发布了Qt的0.90版,第一个公开发行的预览版。
-
KDE是Linux上的一个桌面环境,由Matthias Ettrich在1996年创建,KDE中的应用程序是基于Qt的。这里需要强调的是KDE是一个开源社区的成果,不能算作Trolltech公司的产品,或者Qt的一部分,虽然Trolltech公司中的很多员工都是KDE的核心开发人员甚至是领导者,甚至Trolltech公司直接雇一个或几个员工,让他们全职为KDE项目做开发工作。(注:Matthias Ettrich,德国人,在1998年加入Trolltech,并在2004-2006年担任Trolltech的VP Engineering。)
-
KDE是一个庞大的桌面环境,其中肯定有针对网页的浏览器应用程序Konqueror,其中的引擎就叫做KHTML,它的前身叫做khtmlw或者the KDE HTML Widget,是Torben Weis和Martin Jones开发的。KHTML是在1998年11月4日出现的,是在khtmlw基础上进行了一定修改,Waldo Bastian是其中之一。
-
在1999年,KDE项目中有这样的讨论,“是继续推进KHTML还是使用Mozzila”。从5月到8月,Lars Knoll根据W3C DOM标准重写了KHTML,这样在10月,又集成了Harri Porten写的KJS。到2000年3月,Lars又和Antti Koivisto以及Dirk Mueller为KHTML添加了CSS支持。这样KHTML就成为了继IE之后第二个支持希伯来文阿拉伯文等从右向左的文字的网页浏览器,甚至是在Mozilla之前。(注:Lars Knoll,德国人,当时正在完成他的博士学位,他是在2000年7月年加入Trolltech,并在2008年开始担任Trolltech的VP of Engineering,现在仍是The Qt Company公司的CTO。Harri Porten,德国人,也是KDE贡献者,Trolltech公司前雇员,2001年2月KDE社区的一篇访谈中中提到了他很快会被Trolltech雇佣,在2003年创建了froglogic公司。)
-
2001年6月,Apple(苹果)公司fork了KHTML和KJS,也就是WebKit项目,重命名为WebKitCore和JavaScriptCore,以及后来基于WebKit的Safari浏览器。WebKit也是一个开源项目,除了KDE和Apple的开发人员,Google、Nokia、Bitstream、BlackBerry、Igalia以及很多其它公司也参与了开发。在2008年发布的Qt 4.4中,包含了一个基于WebKit的QtWebKit组件。
-
2013年,Google公司又fork了WebKit项目,也就是Blink,Blink是Chromium项目的一部分,还有Opera、Adobe、Intel、Samsung等公司参与。自2009年晚些时候开始,Google就是WebKit项目的最大贡献者了。在2014年发布的Qt 5.4中,包含了一个基于Chromium的QtWebEngine组件。
大致的历史如上,但是在Wikipedia: KHTML中,提到了“Descendants of KHTML are used by some of the world’s most widely used browsers, among them Google Chrome, Safari and Opera.”,看来Opera和KHTML还是有些渊源的,但是在Wikipedia: Presto中却没有提及,其中的细节我就不清楚了,看来还得等Opera的内部人士进行解读了。
关于开源项目、软件、科技、自主创新这类话题,我自己的一点看法,现在的中国(或者专指中国大陆,也许还可以包括港澳台,甚至全球的华人),如果有人把Google、Microsoft、Apple这些大公司连带所有的源代码都交到中国(公司或者人员)手中,中国或者中国人能否基于现有以及历史代码,在正常的迭代周期内完成新的版本,并且开发出适量的新特性呢?开源项目的自主创新,也是类似的,开源开源,代码都在那里,怎么才能自主创新并且领导这些开源项目呢?那就是参与进去,做贡献,做最大的新特性,做最多的贡献,久而久之,像Google公司fork了WebKit项目,形成Blink/Chromium项目的故事就有可能了。