1. 程式人生 > >谷歌為什麼從WebKit中建立一個Blink分支

谷歌為什麼從WebKit中建立一個Blink分支

你可以隨意轉載,但請寫上譯者文章地址,

////////////////// 分割線 : 以下為翻譯原文  ////////////////////

努力編碼,不然回家!

2013年4月12,晚上7點53分,作者:約翰·斯拉庫薩

Come at me, Bro

回到2001年,當蘋果決定製作屬於自己的瀏覽器時,它選擇了KDE專案的 KHTML/KJS 作為渲染引擎(核心)的技術基礎。蘋果並不只是“使用”了這一技術,而是在原始碼上修改,並且花了好幾年的時間,僱傭了一大批聰明、經驗豐富的開發者,給他們時間和所需的資源去改進KHTML/KJS。這就是 WebKit 。

在開源軟體的世界裡,想要宣稱對一個專案的“所有權”,唯一合法的方式是:貢獻最多、最好的更新,成為開發過程的實際驅動力。由於WebKit跑在了前面,蘋果沒有動力幫助同步 KHTML。兩個專案有不同的目標以及顯著不同的限制。最後 

KDE 還是參與進了 WebKit。雖然 KHTML 一直在持續開發,但 WebKit 遙遙領先。

當谷歌試圖引進自己的瀏覽器時,那是2008年,它選擇了 WebKit 作為渲染引擎(核心)的基礎。相比在 WebKit 基礎上建立自己的分支,谷歌選擇了融入到已存在的 WebKit 社群。在當時,蘋果是 WebKit 世界裡唯一的巨頭,但是我們看看自從谷歌加入後發生了什麼 。(資料來源於Bitergia.)

WebKit: 提交次數對比 WebKit reviewed commits per company WebKit: 活躍作者對比 WebKit reviewed commits per company

根據上面兩幅圖表,並且瞭解過去的10年裡蘋果與谷歌之間的故事的話,就明白以下兩件事之一必然發生:要麼谷歌成為 WebKit 開發的事實主導者,即“擁有者

”;要麼谷歌建立自己的 WebKit 分支。結果是後者成真了,這就是 Blink 。

谷歌已經證明它有能力、經驗、資源來開發世界級的瀏覽器。它製作了自己的 JavaScript 引擎;製作了自己的多程序架構,為了穩定且程式碼隔離;並且給WebKit添加了數量巨大的改進。現在它也開始掌控起渲染引擎。

蘋果被置於何地呢?因為所有有爭議的程式碼都是開源的,所以蘋果可以自由地把來自 Blink 的改進新增到 WebKit 。當然,谷歌沒想過幫助蘋果來幹這事。另外,Blink 已明確聲稱,將很快成為與原有 WebKit 有巨大差異的分支。來自Google’s press release about Blink

一文:“我們預計,很快將刪除7000多個檔案,刪掉7個生成體系。這包含了450萬行程式碼。” 

蘋果,以及其他的 WebKit 社團,有技巧和能力來推動 WebKit 繼續向前,保持與谷歌的巨集大的 Blink 計劃同樣的步調嗎?簡單的回答是:“當然啦!是蘋果建立了 WebKit 專案,而且在谷歌加入之前做的也相當不錯。” 但是我看著這兩張圖表,表示懷疑。

WebKit 最近的故事也給了我警示。谷歌不想再貢獻自己的多程序架構到 WebKit 專案,所以蘋果建立了自己的解決方案:稍微令人疑惑地被命名為 WebKit2 。當谷歌選擇在瀏覽器應用中加入程序管理時,蘋果自行將多程序支援合併入 WebKit 引擎。這意味著使用 WebKit2 的應用程式獲得了多程序的便利,而且不需做任何特殊操作。

這些聽起來都不錯,但是經過幾年的實踐,谷歌的Chrome已被證明,當面對行為錯誤的網頁時,容錯性、相容性都比蘋果的Safari—基於WebKit2——好的多。我整天同時執行兩個瀏覽器,然後一週過去了,使用Safari我很少不碰見令人害怕的“網頁無響應”對話方塊,這會提醒我重新載入每一個開啟的標籤頁來恢復正常操作。

安卓繼承者

擁有研發能力來掌控基礎技術也是公司的一種自立。三星的智慧手機業務目前依賴於其他公司研發的一個平臺。利用他人的產品,可以節省時間與金錢,但是毫無疑問地,如果三星對於其最賺錢的產品線之一有更大的控制力,它將過的比現在滋潤的多。

麻煩的是,我不認為三星足夠專業到能獨自主導一個可能的安卓分支。開發一個現代的作業系統,以及相關的工具鏈、文件、開發者支援系統、app store等等,是一項浩繁的任務。歷史上,成功地大規模完成這項任務的公司,屈指可數,請記住其中沒有三星。當然,馬上開始投入工作,建立專業權威,是可行的,但這並不容易,並且需要幾年的投入。我打賭三星辦不到。

臉書“主頁”也可以被視作一種自立,從基於開發者的角度。 臉書明顯地想要表明它是未來移動計算的重要組成,但是當你“僅僅是一個網站”時,這並不容易做到。“主頁”讓臉書把自己置於已有的基於安卓的智慧手機的前沿與中心位置。

對於臉書,在一個被宿敵(谷歌)掌控的平臺上建立自己的移動戰略,似乎並不明智。但是“主頁”專案也許是長期計劃的第一步,並最終導致臉書的安卓分支。如果是這樣的話,接下來的問題是:離開谷歌的幫助,臉書真的能掌控自己的平臺嗎?

臉書已經證明它能擴充套件自己的工具箱。在過去的幾年,它不斷地僱傭有才能的設計師,併吞並了業界公認設計力很強的公司。臉書“主頁”是這些努力的第一個成果,並且總的來說,其使用者介面精緻優雅,這往往是與蘋果相聯絡的,而不是臉書。

當然,一個鎖屏替換離完整的作業系統還有相當大的差別。也許臉書只是想一邊慢慢地在使用者體驗上獲得長足進步,一邊儘可能長時間地騎在熊身上,讓谷歌來處理髒活累活,來維護和推動平臺向前。

有些人懷疑開放原始碼的情況下,谷歌作用在安卓生態系統上的影響力微乎其微。臉書主頁已經被拿來作為谷歌在做無用功的力證。人們說:看看谷歌最凶猛的敵人之一,如何把谷歌當傻瓜一樣戲弄。谷歌做了所有的苦力活,最後臉書來了, 做了一小部分,完全為了自己的目的。

但是再看看上面的兩幅圖表。現在想想類似的安卓原始碼圖表。任何一家擁有基於安卓的產品的公司,如果想要脫離谷歌的控制,不得不做好準備,並且要有能力去適應谷歌的節奏。作業系統不會自我編寫;平臺不會自我維護;開發者需要工具以及支援;技術不斷進步。僅僅修復bug並支援新型硬體是不夠的。要想成功地建立安卓分支,一家公司不得不主導開發,就像以前的蘋果從 KHTML 孕育出 WebKit ,比如現在的谷歌從 WebKit 分支出 Blink 。

這不是一場即時戰略遊戲。像三星與臉書這樣的企業,不能只是開採資源並且建立新的開發者兵營。在新的領域建立權威,這需要幾年的艱苦努力,也需要在招聘時的一點點運氣。

臉書也許已經投入到這個過程中好幾年了。它最近收購了一家神祕的,可能與作業系統相關的創業公司osmeta,顯示了這一可能性。與此同時,三星已經加入到一個探索性的專案中:開發一款新式的渲染引擎。

谷歌當然也有自己的煩惱,但是也許能在最後關頭拯救它的,是它已被證明的成功掌控富有進取心的的軟體專案的能力。現在,在通往安卓王座的道路上,橫在三星、臉書以及其他後來者面前的挑戰已經很明顯。而且正如一位智者曾說的,“想要國王的位置,那你最好不要有閃失”。

相關推薦

為什麼WebKit建立一個Blink分支

你可以隨意轉載,但請寫上譯者文章地址, ////////////////// 分割線 : 以下為翻譯原文  //////////////////// 努力編碼,不然回家! 2013年4月12,晚上7點53分,作者:約翰·斯拉庫薩 回到2001年,當蘋果決

Confluence 6 一個模板建立一個空間

Confluence 已經儲存了一系列的模板,這些模板被稱為 空間藍圖(space blueprints),這模板具有一些自定義的主頁,邊欄或者可能有藍圖頁面或一些示例內容來幫助你開始使用 Confluence。 這個頁面是有關空間的藍圖的。你可以檢視 Blueprints 

資料庫MySQL脫褲到跑路-- 在mysql庫建立一個使用者

出現問題: ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解決 錯誤描述: insert into mysql.user(Host,User,Password) values("localho

關於怎麽在VS2017建立一個C/C++函數庫

and 函數 動態鏈接 mic view microsoft 自己 uil lin 想起來自己在大一暑假時做過飛機大戰的小遊戲,於是選擇在VS中創建一個自己的動態鏈接庫(C++),也是為了將加強自己對於數據結構的鞏固。 因為自己也是第一次接觸,於是百度來

零開始建立一個屬於你個人的Hexo博客

bash 網頁 服務器 引擎 branch -s add npm inux 從零開始建立一個屬於你個人的Hexo博客 Hexo 是一個快速、簡約且高效的博客框架。Hexo 使用 Markdown(或其他襯著引擎)解析文章,在幾秒內,便可使用靚麗的正題生成動態網頁。 相形癡肥

qt 建立一個工作執行緒(例子)

當一個事件需要很長的處理時間,就建立一個工作執行緒,防止主介面卡死。 1.新建一個QT的gui專案,裡面包含main.cpp,mainwindow.h,mainwindow.cpp,mainwindow.ui檔案 2.新建一個頭檔案thread.h,派生一個執行緒類,重新寫一個執行緒的入口函式。

【譯】使用 Pandas 在 Python 建立一個簡單的推薦系統

原文地址:Creating a Simple Recommender System in Python using Pandas 原文作者:Usman Malik 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:xilihuas

福利 | 後時代,本聰在哪?

編輯 | kou 谷歌定義了一個“自由世界”,它會將你限制在某個地點、某個時間和某種生活情景之中,不斷揮霍你的金錢,不斷攫取你的時間。 很幸運,中本聰創造了比特幣、提出了去中心化的區塊鏈技術,這項技術正在顛覆這個“自由世界”,它所做的主要事情就是把權力

零開始建立一個 PHP 擴充套件

建立一個擴充套件的基本步驟都有哪些。示例中,我們將實現如下功能: <?phpecho say();?> 輸出內容: $ php ./test.php$ hello word 在擴充套件中實現一個say方法,呼叫say方法後,輸出 hello word。 第一步:生成程式碼 PHP為我們

PS學習記錄10--如何在PS建立一個乾淨的網頁佈局

作為編碼者,美工基礎是偏弱的。我們可以參考一些成熟的網頁PS教程,提高自身的設計能力。套用一句話,“熟讀唐詩三百首,不會作詩也會吟”。 本系列的教程來源於網上的PS教程,都是國外的,全英文的。本人嘗試翻譯這些優秀的教程。因為翻譯能力有限,翻譯的細節上還有待推敲,希望廣大網友不吝賜教。 約定:

JDBC——用Java在資料庫建立一個Student表

一、Studnet表: 屬性:sno int(20)、cno int(4)、grade int(4)。即學號、課程號、成績。 二、Java中的類 用到的類: DBUtil(連線、關閉資料庫)、Student(學生資訊)、Userdemo(介面:實現Student表的增刪該查)、Userd

鍵盤輸入一個整數n,求1-n的和,以及偶數和、奇數和

n=int(input("從鍵盤中輸入一個數:")) sum1=0 sum2=0 sum3=0 i=1 while i<=n: sum1+=i if i%2==0: sum2+=i else:

Google競價鮮為人知的方法

來源:世界工廠網線上生態學院 作者:布布_桃子 Google佔據了全球90%以上的搜尋流量,就像我們在中國遇到問題大家都會“百度一下”,在海外大家有事沒事都會google一下。如果在google上展示自己的產品廣告,曝光和點選一定是非常可觀的,因此如何利用goo

在FORM1視窗建立一個類似cad的視窗要怎麼搞出來

怎麼記錄TextBox中的Text呢Winform怎麼樣經常換圖片怎麼記錄TextBox中的Text呢Winform怎麼樣經常換圖片 關於C#設計一個access資料庫密碼問題C#如何實現一個隨時間增加而不斷推移的心跳資料曲線關於C#設計一個access資料庫密碼問題C#如何

JavaScript 建立一個物件

在JavaScript當中建立一個物件有兩種語法, 一種是通過字面量的形式,另外一種是通過new Object()的形式 建立一個person物件 它有 name,age,sex等屬性。 1.字面量形式(literal syntax) var person =

在Eclipse建立一個ABAP專案

第1步:下載,安裝並啟動Eclipse IDE ABAP開發是在Eclipse IDE中使用自定義ABAP工具完成的。如果您尚未安裝Eclipse,請下載適用於Java開發人員的Eclipse IDE,然後立即安裝並啟動該應用程式。 第2步:為SAP NetWeaver(ADT)安裝ABAP開發工具

利用配置檔案,在工廠建立一個實現類物件

package cn.itcast.usermng.dao; import java.io.InputStream; import java.util.Properties; /**  * 通過配置檔案得到dao實現類的名稱!  * 通過類名稱,完成建立類物件!(反射完成

在IDEA建立一個工程後要放到git倉庫

1) 首先是使用IDEA 建立一個你需要的工程(如何建立和建立什麼樣的工程不是這裡的內容,略)。 2) 工程建立好後對工程右鍵是沒有Git 選項的。如圖 這時,我們可以在Terminal對話方塊裡輸入命令:git init來初始化一個本地的git 倉庫。如圖

oracle建立一個使用者,只能檢視指定的檢視,如何授權,建立別名

1.create user A identified by password,建立使用者,使用者名稱是A,密碼是password create user  USER_JWFZ identified by JWFZ2017; 2.grant connect to A --授

如何零開始建立一個新的專案

如何建立一個從0開始建立一個java專案 目前java在大資料,安卓開發等方面有著諸多的應用,學習java如何從0開始建立一個java的專案: 一. 首先明確一個概念就是什麼是java虛擬機器,什麼是整合開發環境,什麼是編譯器。在這個話題之下,首先來說java虛擬機器。 1