標籤:系統 img art 政策 unix 蘋果 rip 分支 多個
http://36kr.com/p/202396.html
上周四,Google宣布從WebKit 分支出自己的瀏覽器渲染引擎 Blink。很多人覺得這像是晴天霹靂,或者甚至是遲到的愚人節笑話,但是其實這件事情是難以避免的,而且是曆史的重演。
上周四,Google宣布從WebKit分支出自己的瀏覽器渲染引擎Blink。很多人覺得這像是晴天霹靂,或者甚至是遲到的愚人節笑話,但是其實這件事情是難以避免的,而且是曆史的重演。
什麼是WebKit?它到底是誰的?
WebKit 是一個開源的瀏覽器引擎。它的前身是KDE在1998年開發的排版引擎KHTML,最初用於Linux和Unix等開源作業系統。當時蘋果覺得需要開發自己的瀏覽器,所以在比較了Netscape(現在的Firefox)的Gecko引擎 和KHTML引擎後,選擇了後者,因為KHTML擁有更清晰的架構,而且比Gecko更小巧。蘋果工程師Don Melton在2001年六月25號正式從KHTML分支出來,在蘋果內部開始了WebKit的研發。
開始的時候,蘋果和KHTML的關係還是不錯的。蘋果將KHTML發揚光大,在2003年推出了裝備WebKit引擎的瀏覽器 Safari。但是隨著時間的推進,WebKit和KHTML之間交換代碼變得越來越困難。蘋果會間隔很長時間之後,提交一大批更改,而且沒有文案,很多功能可能只開發了一半。對於KDE而言,將這些更改整合回KHTML是相當困難的。此外,蘋果要求KDE開發人員閱覽蘋果代碼之前必須簽署保密條款,KDE也很難接受這一點。在2005年,KDE開發人員開始公開攻擊蘋果的做法,並稱兩方的合作關係已經徹底瓦解了。
事情被媒體報道之後,蘋果做出了一系列的讓步。在2005年,蘋果宣布將WebKit完全開源(之前僅有從KHTML直接搬來的WebCore及JavaScriptCore是開源的)。KDE和蘋果的關係也得到了一些改善,有一些KDE的開發人員們開始為WebKit提交更改,蘋果的團隊也複原了很多為蘋果特定的修正,並且實現了平台層的抽象化,使引擎的核心代碼可以在其他平台上運作。但是KDE沒有忘記蘋果的背叛,他們沒有完全加入WebKit的開發,而是在2010年底推出了KDE開發平台4.5,並列支援KHTML和WebKit。
Google的介入
Google加入WebKit的開發是在2008年Chrome瀏覽器推出前後的事情。Chrome瀏覽器使用WebKit引擎是Android團隊的建議,而Chrome主要用的其實還是從KHTML那裡來的WebCore,它不太用WebCore之外蘋果開發的東西,而是使用自己開發的多進程瀏覽器架構等。
但是Google畢竟資源和人力雄厚,在上周從WebKit分支之前,大約50%的WebKit更改來自於Google的開發人員,剩下的一半大多數來自於蘋果,其餘來自於第三方開發人員,比如KDE的開發人員。雖然Google的開發人員開始提交大部分的WebKit更改,但是WebKit的最終決策權還是蘋果的。據一些第三方的WebKit開發人員透露,蘋果和Google的開發人員在交流時沒有一般開源開發人員的那種相互支援,反而更像兩頭相互打量的獅子,氣氛比較緊張。
Blink引擎的新聞爆出之後, Hacker News上立刻開始有雙方的開發人員發表評論。多數評論認為蘋果目前的WebKit更改提交政策對非蘋果的開發人員是有敵意的,尤其在WebKit 2這塊。更有很多人認為WebKit 2完全是蘋果單方推出的一個產品,而且根本就沒有和Google以及其它參與WebKit開發的人進行協商。
蘋果的開發人員也對此給予了回覆,蘋果WebKit團隊領頭人Maciej Stachowiak說:
如果我們要討論曆史的話,我們開發WebKit 2的最主要原因是因為Chromium(Chrome的開源版)從來沒有將它的多進程架構整合到WebKit裡。這些代碼一直在Chromium自己的目錄中。
我們在寫任何WebKit2代碼前就問了Google的人,他們願不願意將多進程架構的支援整合到WebKit中,他們的答案是否定的。在這種情況下,我們面臨的選擇是做一個懷有敵意的Chromium分支,或者寫我們自己的多進程架構,或者繼續使用單進程架構。我們選擇了寫自己的多進程架構。
如果當時Google同意整合他們的多進程架構,那麼我們肯定是會接受的,事情的發展可能也會和現在不太一樣。
無論誰是誰非,蘋果和Google這兩家在WebKit中明顯已經各走各的路有一段時間了。KDE是一家完全開源,對蘋果沒有任何實質性威脅的開發團體。如果當年蘋果和KDE都不能夠維持良好的合作關係,它是不可能和Google,一家在多個領域與蘋果有你死我活層級競爭關係的公司,有什麼良好合作的。雖然之前有很多人認為WebKit項目有點像柏林圍牆上的一個缺口,但這明顯有點天真了。
誰將擁有未來
未來的事情我們誰也不知道,但是我們能夠看到的有這幾點:
- WebKit會比以前少50%的新代碼提交。
- 絕大多數第三方WebKit開發人員會加入Blink項目。
- Google的平台是互連網本身,它會將所有資源傾注到Blink的開發之中,而蘋果目前最重要的平台是iOS。
- 當沒有蘋果這個“合作者”之後,Google可以用它自己的速度來推進瀏覽器科技。想在瀏覽器引擎中放一個Dart 虛擬器?沒問題。Google Native Client?可以。所以Blink支援的網路科技很有可能很快超越WebKit。
如果我非要下賭注的話,我會賭Blink逐漸取代WebKit,因為Blink對於Google是有戰略性意義的,而WebKit對於蘋果來說只是它封閉性花園中一隻開源的黑羊。
從WebKit的這段曆史,我們還看到了什嗎?第一,大公司永遠以自己的利益為導向。第二就是,最牛掰的工程師是開源項目的工程師,尤其是Unix這個生態系統裡的開源項目;Chrome用的WebKit部分根本還是KDE寫的WebCore。
曆史在重演:從KHTML到WebKit,再到Blink