瀏覽器內(nèi)核WebKit編年史
回首六年前,2005年,網(wǎng)絡(luò)和現(xiàn)在完全不同。那時(shí),瀏覽器大戰(zhàn)已告尾聲,雖然Netscape戰(zhàn)斗英勇,但微軟和Internet Explorer 的地位看起來(lái)越來(lái)越穩(wěn)固??雌饋?lái)互聯(lián)網(wǎng)正要落入這個(gè)邪惡帝國(guó)手上,還有一點(diǎn),地球人已經(jīng)阻止不了微軟了。
然后在2005年6月7日,在WWDC上,Bertrand Serlet走上講演臺(tái)推出了并不被人看好的產(chǎn)品——蘋(píng)果的瀏覽器的靈魂——Safari,它是開(kāi)源產(chǎn)品。它被稱(chēng)為WebKit??雌饋?lái),蘋(píng)果仍然無(wú)法阻 止微軟作威作福,但是之后,他們走上了一個(gè)那時(shí)沒(méi)人預(yù)料到的完全不同的方式。
略想一下:蘋(píng)果公司是出了名的神秘兮兮,為什么他們主導(dǎo)一 個(gè)開(kāi)源項(xiàng)目?要回答這個(gè)問(wèn)題,要正確地看待這個(gè)開(kāi)源如何成功的,我們必須回頭看看WebKit的根源。但如果我沒(méi)觸碰到WebKit的現(xiàn)狀,未來(lái)的發(fā)展, 那就是我的失職。過(guò)去的知識(shí)很重要,因?yàn)樗梢詭椭覀兞私猬F(xiàn)在,并更好地為未來(lái)作好準(zhǔn)備。
誕生于開(kāi)源
瞧瞧,現(xiàn)在幾乎所有人都認(rèn)為WebKit來(lái)源于蘋(píng)果公司,它是Safari瀏覽器的靈魂,不是嗎?但這些代碼的確不是在蘋(píng)果總部的秘密巢穴里碼出來(lái)的。 它實(shí)際上源于他處,早在1998年,這些后來(lái)成為WebKit的代碼其實(shí)是KDE開(kāi)源項(xiàng)目的KHTML和KJS引擎的一部分。最初,KHTML和KJS是 較早采用khtmlw(The KDE HTML Widget)引擎的項(xiàng)目。雖然之前發(fā)布的程序引擎W3C將“DOM”和“CSS”兩者都標(biāo)準(zhǔn)化了,但仍有不少工作要做,因此支持這些功能成為一個(gè)重要的 優(yōu)先事項(xiàng)。
幾乎整個(gè)1999年,由Lars Knoll牽頭,掀起了一個(gè)KHTML風(fēng)潮。盡管需要不少艱巨的工作,KHTML的支持者和開(kāi)發(fā)人員都不希望輕易地放棄這個(gè)項(xiàng)目。但這些艱苦的工作帶回了 豐厚的回報(bào)。到2000年的春天,出現(xiàn)了一套嶄新的瀏覽器內(nèi)核——KHTML和KJS ——準(zhǔn)備在新版本的KDE上實(shí)施。他們就是后來(lái)被某個(gè)位于Cupertino的“水果”公司采摘的開(kāi)源項(xiàng)目。
蘋(píng)果式待遇
2003年1月,在舊金山的Macworld Expo主題演講中,Steve Jobs宣布蘋(píng)果KHTML引擎的移植——WebCore開(kāi)放源代碼。同一天,Safari的首席設(shè)計(jì)師Don Melton給公布于KDE開(kāi)發(fā)者郵件名單上的KHTML和KJS – KDE的首席開(kāi)發(fā)員發(fā)送了一封郵件。之后便成立了蘋(píng)果的Safari團(tuán)隊(duì),而且很顯然兩方面對(duì)于能使用這個(gè)開(kāi)源代碼來(lái)創(chuàng)建Safari都感到高興和自豪。 對(duì)代碼的效率以及開(kāi)發(fā)員所實(shí)現(xiàn)的技術(shù),Melton信件中充滿(mǎn)了溢美之詞。它看起來(lái)像一個(gè)美妙婚姻的開(kāi)始。
然而,時(shí)間快進(jìn)到兩年前,我們發(fā)現(xiàn)這場(chǎng)婚姻似乎也開(kāi)始觸礁。
開(kāi)源社區(qū)是建筑于激情,善意,自我犧牲之上。它并不適合每一個(gè)人。要想在此取得成功——或者在這個(gè)社區(qū)成為一個(gè)腕——你必須要了解這些性格特征,并將自 己置身其中。蘋(píng)果也是一個(gè)社區(qū),但它有自己的文化和目標(biāo)。KHTML和蘋(píng)果公司的WebCore的嘗試合作出現(xiàn)問(wèn)題,也是可以理解的。
與蘋(píng)果公司經(jīng)常在WebCore做出一些變化不同,KDE社區(qū)似乎對(duì)KHTML引擎“端口”上的改變所需的時(shí)間和精力無(wú)動(dòng)于衷。2005年春,合作于 KHTML的兩個(gè)開(kāi)發(fā)者Zack Rusin 和Carewolf都在博客文章表達(dá)了他們的挫折感,不僅在于蘋(píng)果的“合作”方式,而且也針對(duì)KDE社區(qū)關(guān)于合作關(guān)系的看法。
那時(shí),蘋(píng) 果公司現(xiàn)有的合作建立的開(kāi)源項(xiàng)目開(kāi)展得并不順利。他們努力想成為開(kāi)源社區(qū)的好公民,但它在KDE社區(qū)的眼中確是不足。看起來(lái)蘋(píng)果的開(kāi)放源碼的嘗試是失敗 的。KHTML和KJS是蘋(píng)果創(chuàng)造的偉大基甸,但這也證明蘋(píng)果幾乎不可能以社區(qū)為所用所享的方式去“回饋”社區(qū)。
開(kāi)源,以蘋(píng)果的方式
細(xì)細(xì)觀(guān)察蘋(píng)果公司的運(yùn)作方式,其方法看起來(lái)非常簡(jiǎn)單。他們精美的創(chuàng)作其實(shí)就是不斷重復(fù)的細(xì)化打磨過(guò)程。他們有一個(gè)對(duì)他們來(lái)說(shuō)運(yùn)轉(zhuǎn)良好的系統(tǒng)。回想起來(lái),也難怪試圖融入開(kāi)源世界對(duì)他們來(lái)說(shuō)并不成功。
但蘋(píng)果并不是一個(gè)完全無(wú)情的公司。他們知道,他們目前在Web技術(shù)的進(jìn)步的核心就是開(kāi)源社區(qū)的工作成果。所以到這里我們就回到了故事的開(kāi)頭, 2005年6月7日蘋(píng)果宣布WebKit開(kāi)放源代碼。
WebKit起初就是WebCore和JavaScriptCore代碼庫(kù),后來(lái)還加入一些東西。連同源代碼控制樹(shù)以及錯(cuò)誤跟蹤工具,所有用來(lái)創(chuàng)建有效 的Web瀏覽器的代碼是開(kāi)源的。即使從哲學(xué)的角度看,這種粘性似乎讓蘋(píng)果更具團(tuán)隊(duì)精神變得理所當(dāng)然。這個(gè)由蘋(píng)果組織和驅(qū)動(dòng)的項(xiàng)目,不定期發(fā)布一些代碼供所 有人使用,讓蘋(píng)果在保持其臭名昭著的“控制欲”的同時(shí),還為其在媒體界贏得了開(kāi)源之名。
而且還將此名聲充分利用。
崛起,出局和離開(kāi)
從那時(shí)起,事情開(kāi)始了微妙的變化。這雖非吹枯拉朽的態(tài)勢(shì),但確是漸進(jìn)而不可逆轉(zhuǎn)的過(guò)程。 WebKit開(kāi)始掠奪瀏覽器市場(chǎng)。當(dāng)然,它不純粹關(guān)乎市場(chǎng)份額數(shù)字——至少不會(huì)是第一關(guān)注點(diǎn)。
WebKit正贏得網(wǎng)民們的心。而蘋(píng)果,這家一直以設(shè)計(jì)界的倡導(dǎo)者和伙伴的身份所世人所知的公司,也開(kāi)始到處討好網(wǎng)頁(yè)設(shè)計(jì)師。WebKit非常靈活,十 分迅捷,能夠?qū)崿F(xiàn)新的標(biāo)準(zhǔn)和技術(shù),仿佛是為它們的構(gòu)想和發(fā)明而生。這與Internet Explorer非常不同。而Web社區(qū)鐘情于此。這是從未間斷過(guò)的傳統(tǒng)。最近,我們還看到WebKit的諸多創(chuàng)新,推動(dòng)許多新的CSS3規(guī)范,并率先采 認(rèn)HTML5規(guī)范。
WebKit開(kāi)始出現(xiàn)Safari以外的在其他地方。2005年11月,諾基亞為其S60平臺(tái)發(fā)布了一個(gè)基于 WebKit的網(wǎng)頁(yè)瀏覽器。隨著iPhone在2007年1月發(fā)布,WebKit手機(jī)應(yīng)用方面聲勢(shì)更加壯大。其在iOS平臺(tái)上得到的增長(zhǎng),更是前所未有。 而且蘋(píng)果公司將其寵兒WebKit作為Mobile Safari的基礎(chǔ)非常具有意義。而殺紅了眼的手機(jī)廠(chǎng)商后來(lái)的所作所為更是亙古未有。
2007年11月,也就是iPhone亮相的10個(gè)月后,谷歌發(fā)布了收購(gòu)的一項(xiàng)成果:Android操作系統(tǒng)。雖然無(wú)論在蘋(píng)果及其iPhone所涉及哪 個(gè)領(lǐng)域,Android都想跟它拼個(gè)你死我活,但它還是那么一點(diǎn)點(diǎn)的別扭——其瀏覽器也是由WebKit支持的。這個(gè)兩個(gè)競(jìng)爭(zhēng)對(duì)手都受益于這個(gè)開(kāi)源項(xiàng)目。 但真正的驚喜是,蘋(píng)果正是這個(gè)開(kāi)源項(xiàng)目的幕后主導(dǎo)者。而且他們干得還真漂亮。
顯然,谷歌很喜歡WebKit里面的東西,因?yàn)?008年秋天,谷歌自主開(kāi)發(fā)的瀏覽器Chrome測(cè)試版開(kāi)始受到互聯(lián)網(wǎng)的熱捧。沒(méi)錯(cuò),這也是基于WebKit的。你現(xiàn)在應(yīng)該能看到WebKit所描繪的宏偉藍(lán)圖了吧?
2009年7月7日,這是一個(gè)有趣的命運(yùn)轉(zhuǎn)機(jī),因?yàn)楣雀栊剂艘豁?xiàng)新的項(xiàng)目。他們已經(jīng)開(kāi)始啟動(dòng)了其稱(chēng)作“Chrome操作系統(tǒng)”的項(xiàng)目運(yùn)作。它的誕生就 是為了爭(zhēng)奪微軟和蘋(píng)果的市場(chǎng)的,而它卻是由——你猜對(duì)了,WebKit支持的。這也是WebKit故事最吸引人的方面之一。 WebKit由開(kāi)源出生,經(jīng)過(guò)極具競(jìng)爭(zhēng)力的蘋(píng)果制作和打磨,而現(xiàn)在卻是谷歌用于與蘋(píng)果競(jìng)爭(zhēng)的未來(lái)計(jì)劃的基礎(chǔ)。是不是開(kāi)源軟件都那么吸引人呢?
一年后,也就是2010年,黑莓也進(jìn)入到手機(jī)WebKit行列,并宣布為黑莓第六版操作系統(tǒng)提供新瀏覽器。同樣,耐人尋味的是:智能手機(jī)市場(chǎng)的三個(gè)巨頭 ——蘋(píng)果,谷歌和RIM ——都將WebKit作為任何智能手機(jī)的關(guān)鍵功能——網(wǎng)頁(yè)瀏覽器的骨干應(yīng)該有任何智能手機(jī)。想來(lái),谷歌和RIM都需要為此感謝蘋(píng)果。蘋(píng)果,你知道的,這個(gè) 來(lái)自Cupertino的神秘兮兮的公司。
當(dāng)然,不僅僅是那些地位顯赫的公司充分利用了這個(gè)WebKit開(kāi)源項(xiàng)目。還有不少其他小公司的瀏覽器也是建筑于WebKit之上,例如Midori,Shiira和Epiphany。
但最迷人的地方之一還是WebKit的應(yīng)用還不僅嚴(yán)格限于瀏覽器。一個(gè)高質(zhì)量,開(kāi)放源碼的瀏覽器的存在,讓許多獨(dú)立的應(yīng)用程序開(kāi)發(fā)人員將基于瀏覽器的功 能納入到應(yīng)用程序。OS X上最好的在線(xiàn)RSS閱讀器——Reeder,就是使用WebKit代碼提供feeds閱讀時(shí)的無(wú)縫體驗(yàn)?;蛘哌€可以更具創(chuàng)造性的方式使用它,就像 Valve的Steam平臺(tái)使用WebKit來(lái)渲染其用戶(hù)界面。
亦敵亦友
現(xiàn)在,RIM公司采用WebKit非常有趣。谷歌將其今后的成長(zhǎng)和規(guī)劃明顯的押寶在它之上更是真正的迷人之處。但蘋(píng)果還有另一個(gè)競(jìng)爭(zhēng)對(duì)手,其競(jìng)爭(zhēng)關(guān)系也是越演越烈,也在狠狠地挖掘WebKit:Adobe。
是的,甚至連iOS的死敵——Flash——也已接受該渲染引擎,將其納入其應(yīng)用程序的Creative Suite,而且甚至還給這個(gè)代碼庫(kù)添磚加瓦。
不過(guò),蘋(píng)果和Adobe之間的關(guān)系,可以在另外一篇文章中進(jìn)行討論。我只是覺(jué)得像Adobe這種關(guān)于網(wǎng)絡(luò)建于什么之上都有不同意識(shí)形態(tài)的公司也可以在 WebKit中找到共同點(diǎn)。這是WebKit項(xiàng)目之所以偉大的一種見(jiàn)證:其維護(hù),質(zhì)量及其最初開(kāi)發(fā)者所采用的和今天編寫(xiě)和維護(hù)代碼的工藝。
國(guó)王已死,國(guó)王萬(wàn)歲!
還記得我先前總結(jié)的蘋(píng)果之所以致力于開(kāi)源的WebKit的首要原因嗎?對(duì)了,就是要將微軟拉下馬,撼動(dòng)其瀏覽器市場(chǎng)的王座。不過(guò)確實(shí)沒(méi)有那么“確鑿的證 據(jù)”。當(dāng)然也沒(méi)有關(guān)于蘋(píng)果高管或Safari瀏覽器開(kāi)發(fā)者之間交流了如何干掉IE瀏覽器的秘密圖謀。這只是我的直覺(jué),我的猜測(cè),不過(guò)我認(rèn)為這還是蠻合理 的。更重要的是,我還可以提供一些冰冷生硬的數(shù)字證明,即使這不是其開(kāi)源WebKit的背后初衷,它也肯定是最終的結(jié)果。
來(lái)自Net Applications的數(shù)據(jù)顯示,Internet Explorer在2005年占據(jù)著驚人驚艷的89%的瀏覽器市場(chǎng)份額,而當(dāng)年WebKit剛剛開(kāi)源?,F(xiàn)在,這個(gè)數(shù)字下降到相對(duì)并不起眼的54%。相比之 下,2005年,唯一的基于WebKit的瀏覽器——Safari僅有可憐的1.7%的市場(chǎng)份額。但到如今,基于WebKit的瀏覽器占近20%。
不 過(guò),這些統(tǒng)計(jì)數(shù)字很明顯地偏向于桌面瀏覽器。手機(jī)操作系統(tǒng)的網(wǎng)頁(yè)瀏覽器狀況如何?又說(shuō)明什么問(wèn)題呢?好吧,手機(jī)瀏覽器中基于WebKit的瀏覽器占超過(guò) 62%的市場(chǎng)份額。 Opera Mini以22%的份額占據(jù)第二的位置,微軟的那個(gè)瀏覽器甚至沒(méi)有足夠的使用量,無(wú)法納入統(tǒng)計(jì)。而“其他”瀏覽器的市場(chǎng)份額為15%。
如今,你很難找到對(duì)高新技術(shù)產(chǎn)業(yè)感興趣的人否認(rèn)手機(jī)領(lǐng)域才是未來(lái)真正的王國(guó)。而且Webkit已經(jīng)有一個(gè)強(qiáng)大的存在,很難想象WebKit團(tuán)隊(duì)持續(xù)創(chuàng)新的努力會(huì)很快改變。
總結(jié)
當(dāng)然,關(guān)于WebKit,還有不少本文未有涉及到的。如果你讀到了最后,我得承認(rèn)倍感榮幸。我已盡我所能去完整而準(zhǔn)確地講訴這個(gè)故事,但仍然有很多細(xì)節(jié)未被納入其中。
要想獲得KHTML的原編碼者中的兩人的觀(guān)點(diǎn)和想法,以及WebKit開(kāi)源后一年他們的立場(chǎng),你可以在雅虎上觀(guān)看他們的介紹。想要跟上有關(guān)WebKit項(xiàng)目的最新進(jìn)展,沒(méi)有比Surfin’Safari的博客更好的地方啦。
最后,親愛(ài)的讀者,如果你喜歡這篇文章,請(qǐng)發(fā)表評(píng)論。我很想聽(tīng)到有關(guān)這個(gè)領(lǐng)域——比如網(wǎng)頁(yè)方面的歷史——你更多的見(jiàn)解?;蛘?,也許你討厭它,認(rèn)為它過(guò)于累贅。如果你認(rèn)為有需要,也不妨直言。
原文鏈接:http://web.appstorm.net/general/opinion/the-history-of-webkit/