瀏覽器核心WebKit編年史

發表於2011-08-08

回首六年前,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的“水果”公司採摘的開源專案。

蘋果式待遇

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來渲染其使用者介面。

亦敵亦友

現在,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的部落格更好的地方啦。

最後,親愛的讀者,如果你喜歡這篇文章,請發表評論。我很想聽到有關這個領域——比如網頁方面的歷史——你更多的見解。或者,也許你討厭它,認為它過於累贅。如果你認為有需要,也不妨直言。

原文:appstorm
譯文:leiphone

相關文章