IE 的歷史證明,如果一個瀏覽器占據(jù)絕對主導地位,那么就會帶來一系列負面的連鎖反應!當整個網絡都以某一個瀏覽器引擎為標準時,那么開發(fā)人員很可能就會忽略其他瀏覽器,只針對主流瀏覽器支持的 CSS 和 JavaScript 功能集,而不會考慮在其他瀏覽器中測試交叉兼容性——且事實不止于此!現(xiàn)在的 Chrome 正在重蹈覆轍,開發(fā)者又該怎么應對呢?
以下為譯文:
我一直在思考Web開發(fā)社區(qū)中一個老生常談的問題,自從Web瀏覽器誕生以來這個問題一直都是網上爭論不休的話題:瀏覽器單一化的問題。最近,由于微軟放棄了EdgeHTML瀏覽器引擎,并將Edge轉移到Google Chromium引擎上,于是這個話題再次被引爆。
我有一個瘋狂的想法,但我自己也沒有完全被說服,我覺得我的考慮并不周全,所以我想要一些反饋。但首先,讓我交代一下背景故事。
1.瀏覽器單一化意味著什么?
瀏覽器單一化指的是當一個瀏覽器占據(jù)絕對主導地位時引發(fā)的一系列連鎖反應:某個瀏覽器是唯一的選擇,所以所有人使用的瀏覽器只有這一種,所以所有人關心的瀏覽器只有這一種,所以開發(fā)人員編寫代碼時需要考慮的也只有這一種。
我們主要的顧慮在于:如果一個瀏覽器占據(jù)絕對主導地位,那么開發(fā)人員可能會忽略其他瀏覽器,只針對主流瀏覽器支持的CSS和JavaScript功能集,而不會考慮在其他瀏覽器中測試交叉兼容性。
這并非毫無根據(jù),二十一世紀初,在瀏覽器大戰(zhàn)的高峰時期就發(fā)生了這樣的事情:Internet Explorer占據(jù)了絕對主導地位,開發(fā)人員經常編寫專門針對IE瀏覽器的功能,許多網站根本無法在任何其他瀏覽器中運行。最糟糕的是,IE超級古怪,不遵循標準,而且它自身的變化或改進也非常緩慢。
另一個主要的顧慮在于:當市場上一家獨大時,你就無法推動該瀏覽器供應商遵循標準和規(guī)則,他們可以為所欲為。你可能會認為開發(fā)人員社區(qū)會對此不滿,并遠離該瀏覽器,然而問題在于,大多數(shù)瀏覽器用戶不是Web開發(fā)人員。大多數(shù)用戶不知道也不關心這些問題,他們才不會因為一些“鉆牛角尖”的人抱怨“API”和“標準”,就轉而使用其他瀏覽器。
也就是說,第三個顧慮就在于非開發(fā)人員不關心:如果每個人都使用同一個供應商提供的瀏覽器,那么該供應商就可以訪問每個人的用戶數(shù)據(jù)等。這也不是沒有根據(jù),很多人都認為過去Google在處理用戶隱私問題方面存在很大問題。
2.Chromium引發(fā)了單一化?
我們再來看一看最近發(fā)生的事情。
Google Chrome的底層瀏覽器引擎是一個名為Chromium的開源項目開發(fā)的。它的設計可以作為新型瀏覽器的基礎,如今許多瀏覽器都是在其基礎之上構建的,包括那些你所熟知的瀏覽器。2013年,Opera和三星網絡都采用了Chromium,還有本文開頭介紹的今年的重大新聞:微軟的 Edge也將轉向Chromium。
所以問題就來了:如果絕大部分的瀏覽器都采用Chromium,那么最終我們就會陷入Chromium的單一化。
從目前的統(tǒng)計數(shù)據(jù)來看,我們似乎正朝著這個方向發(fā)展:
2019年5月全球瀏覽器使用率超過1%的瀏覽器使用狀況統(tǒng)計信息(2019年6月7日,摘自statcounter.com)
僅Chrome一家就占全球瀏覽器市場份額的60%以上。再加上三星網絡、Opera和Edge(這幾家頂級的瀏覽器統(tǒng)統(tǒng)采用了Chromium),這個數(shù)字就高達70.8%!想象一下,如果蘋果厭倦了每個人都抱怨Safari缺少的功能(因為現(xiàn)在Safari確實遠遠落后于新型網絡平臺API的實現(xiàn)),而決定步微軟的后塵。雖然不太可能,但我可以預見這一幕的出現(xiàn)。
在過去幾年中,許多新型的實驗性瀏覽器項目也基于Chromium,例如Vivaldi、Brave和Epic。我覺得這很合情合理:Chromium是一個非常完善、易于維護且易于擴展的瀏覽器引擎。從頭開始創(chuàng)建完整的JavaScript、HTML和CSS引擎是一項巨大的任務。Chromium已經發(fā)展了數(shù)十年(考慮到是建立在WebKit上的),所以不可能追趕它的發(fā)展,特別是對于一個剛剛建立的創(chuàng)業(yè)公司而言。此外,這些瀏覽器主要不是為了改善Web語言的狀態(tài),它們專注于更高級別的功能,如安全性、隱私等。它們只是使用Chromium作為基礎并專注于各自關心的功能,所以我不會因此而怪罪它們。
然而,我想表達的觀點是:如今Chromium的定位變成了瀏覽器引擎的標準,類似于W3C規(guī)范的規(guī)范實現(xiàn)。但是這個問題先放一放。
3.Firefox瀏覽器的情況又如何呢?
回到瀏覽器大戰(zhàn)的時代,F(xiàn)irefox是我們所有人心中的英雄,它打破了Internet Explorer的壟斷局面,并推動瀏覽器邁入了多樣性和合作網絡標準的新時代。
然而不幸的是,多年來Firefox的使用量一直在急劇下降,自Chrome出現(xiàn)以來一直都是如此。我認為最近Mozilla與Quantum一起做了一件了不起的事情,而且他們經常負責實施新的網絡平臺功能,特別是在CSS(subgrid !!!)中。
但根本問題在于:Google的規(guī)模太大了,他們擁有大量員工。我認為Mozilla和圍繞Firefox的開源社區(qū)沒有足夠的人力和機構支持來跟上Google的步伐。
而且,我認為正確的解決方案是Google解散他們的瀏覽器團隊,讓Firefox跟上,我喜歡他們不斷嘗試很酷的新事物。那么我們該怎么辦?
4.如今的瀏覽器陷入了單一化嗎?
是的,這其中的意義重大。在接下來的5-10年里,很有可能會出現(xiàn)瀏覽器單一化的問題。目前,Chromium的兩個主要對手是Safari和Firefox,他們總共占據(jù)了大約21%的使用量。多年來Chrome的使用一直在緩慢而又穩(wěn)步地增長,而且接下來還會繼續(xù)。如今連Edge也采用了Chromium,所以我覺得這個數(shù)字還會增加。
但是,我不得不提出異議。我想指出,現(xiàn)在的情況與我們在2000年代使用Internet Explorer 6時看到的單一化不一樣,或者我們不應該使用“單一化”這個詞來描述。
5.單一化是壞事嗎?
那么,讓我們來深入爭議的本身。以下是我的看法:
之前我提出的三個顧慮的根據(jù)都是單個瀏覽器占據(jù)絕對主導地位的情況,包括將用戶掛鉤到擁有獨立業(yè)務目標的特定公司結構以及該公司專有的生態(tài)系統(tǒng)中(例如將你的Google賬號掛鉤到你的瀏覽器中)。但Chromium并不是這種情況,它的情況有可能恰恰相反。
回顧一下,我提到的瀏覽器單一化的三個主要顧慮:
占據(jù)絕對主導地位的瀏覽器會導致開發(fā)人員只考慮該瀏覽器,而忽略與其他瀏覽器的兼容性;
當某個瀏覽器占據(jù)絕對主導地位時,就不受通用Web標準的控制;
使用某個瀏覽器的人越多,擁有該瀏覽器的公司就可以獲得更多用戶的數(shù)據(jù),這會引發(fā)隱私問題。
如果你意識到我們討論的不是Chrome單一化的問題,就會明白情況并不一樣。我們討論的是瀏覽器引擎的基礎——Chromium。就目前而言,Chromium是各個瀏覽器的基礎,而不僅僅是Google的旗艦產品。據(jù)我所知,引起隱私權擁護者關注的Google產品與核心Chromium瀏覽器引擎沒有關系。我的意思是,顯然微軟的Edge不會與Google的生態(tài)系統(tǒng)掛鉤,因此這兩者應該很容易區(qū)分。
6.隱私
對我來說,“瀏覽器”和“瀏覽器引擎”之間的區(qū)別已經解除了有關隱私的主要顧慮,引擎本身并不會引發(fā)隱私問題。我之前提到的兩個基于Chromium的實驗性瀏覽器——Brave和Epic,都提供了更安全和保護隱私的措施。
7.單一的主導平臺
至于擔心某個Web引擎過分受到開發(fā)人員的喜愛,這種情況確實屬實。有人聲稱Chrome就是這樣。
然而問題在于:因為Chromium是多種瀏覽器的基礎,因此當推出新的JavaScript或CSS功能時,它所推動的不僅僅是Chrome,而是所有這些瀏覽器的發(fā)展。因此,當Verge說Chrome會成為第二個IE時,他們指的應該是“基于Chromium的瀏覽器”,而不是“Chrome”。針對Chrome的優(yōu)化也同樣Opera、Vivaldi、三星瀏覽器和Edge,因為它們都使用相同的引擎。
話雖如此,對于Firefox、Safari和其他任何仍在維護并行實現(xiàn)的人來說這都是一個問題?,F(xiàn)在讓我們再來看看這個問題。
8.Web標準
這確實是一個大問題。Google在推動和開發(fā)Web平臺標準方面歷來都有著重要的影響力,但正如Verge指出的那樣,在過去幾年中Google偏離了這一軌道:
無論你認為是Google的問題,還是萬維網聯(lián)盟(W3C)的發(fā)展得過于緩慢,整個2017年的局勢已經十分明朗。越來越多的網站開始打出“最適合Chrome瀏覽器”的消息。Google Meet、Allo、YouTube TV、Google Earth以及YouTube Studio Beta都阻止了來自Windows 10默認瀏覽器微軟Edge的訪問,要求用戶下載Chrome。Firefox上也不支持Google Meet、Google Earth和YouTube TV,訪問時會顯示下載Chrome的消息。Google公開承諾支持在Edge和Firefox上運行Google Earth,而且他們正在“努力在更多瀏覽器上運行YouTube TV。”
摘自The Verge,“Chrome成為了第二個Internet Explorer 6”(https://www.theverge.com/2018/1/4/16805216/google-chrome-only-sites-internet-explorer-6-web-standards)。
這可不是好消息。但據(jù)我所知,這并不一定意味著Google無視標準。通常情況下,其他瀏覽器跟不上Google實現(xiàn)API的領先技術。而且,Google有錢有勢,因此在我看來,在某種程度上這是不可避免的。但是話說回來,Google也貢獻了Chromium,而不僅僅是Chrome,所有基于Chromium的瀏覽器都能從中受益。
9.我的瘋狂想法
好了,背景故事的交代就這么多了。讀到這里,我的看法已經呼之欲出了:
如果整個網絡都以某一個瀏覽器引擎為標準,結果會怎樣呢?如果Chromium成為Web標準參考實現(xiàn)的基礎,而且所有瀏覽器都遵循它的標準,情況會怎樣呢?
在你給我寄刀片之前,容我詳細說明一下。
協(xié)作引擎
我希望你能明白:我并沒有說要將網絡控制權移交給Google。事實恰恰相反。我希望,如今的開發(fā)人員花費了無數(shù)的時間在各自的代碼庫中并行編寫相同的代碼,如果將他們統(tǒng)一到同一個代碼庫中,不是更好嗎?
理想情況下,這個代碼庫不歸任何一家公司控制。我希望看到一個獨立的非營利基金會控制的通用瀏覽器引擎,例如Python軟件基金會,成員由每家瀏覽器供應商的代表組成。
想象一下:如果Safari和Firefox以及其他所有人都停止維護各自的代碼庫,大家齊心協(xié)力開發(fā)一個共享代碼庫,那么就無需再重復大量的工作,也無需拼命地跟上Google龐大的開發(fā)團隊的節(jié)奏,那不是更好嗎?如果每個人都能受益于其他人的工作,不好嗎?
其實,先前就有這樣的例子。Opera開發(fā)人員就曾經做到了這一點,而Edge團隊也在朝著這個方向努力,兩個團隊都將他們的專業(yè)知識帶到了Chromium。
如今我有點灰心喪氣,雖然CSS subgrid已經在Firefox Nightly中實現(xiàn),但Chromium還沒有開始動手。想象一下,如果Firefox開發(fā)人員的工作也可以貢獻到Chrome!這個問題就迎刃而解了!
這是一個很常見的Web平臺的問題:當某個瀏覽器展示新Web API時,我們都感到很興奮,但立即涌現(xiàn)的問題就是:“還要多久我們才能使用這個功能?其他瀏覽器會實現(xiàn)嗎?”現(xiàn)在我們就有機會永遠擺脫這個問題。
失去實現(xiàn)的多樣性?
這也是我所擔心的一個缺點:我喜歡各種各樣的瀏覽器引擎,他們常常以不同的方式實現(xiàn)相同的功能,一個比一個快。有時,我不禁會想如果Chrome開發(fā)人員能夠借鑒Firefox的解決方案,不是很好嗎?反之亦然。我們有什么損失嗎?會有多大的損失?
我有兩個想法。
首先,我認為這對其他平臺來說并不是什么大問題。我并沒有聽到太多人抱怨CPython沒有激烈的競爭來鼓勵實現(xiàn)功能的替代方法,但也許這算不上反駁。也許這對Python社區(qū)來說可能是件壞事,他們會從競爭中受益。我不太清楚。
其次,我們還有其他方法在某種程度上保留Web的這一特性。所有瀏覽器都將構建在同一個引擎上,但也許引擎的構建方式可以讓每個瀏覽器都在核心引擎之上構建自己的功能實現(xiàn)。也許這可以發(fā)展成一個常規(guī)的流程:在討論新API的時候,或者甚至在發(fā)布最初的規(guī)范之后,每個感興趣的瀏覽器都可以編寫自己的功能實現(xiàn)。比如我們花6個月在Firefox、Chrome和Opera中構建了不同版本的功能,然后再由基金會決定哪些實現(xiàn)應該合并到主分支中。
希望大家能夠針對這一點提供具體的反饋。我不確定具體的做法,但感覺應該有辦法實現(xiàn)。
10.總結
感謝閱讀本文。而且我也非常希望您能提供反饋!針對瀏覽器之間日益擴大的差異,我反復思考了很長時間。
我認為當前的方式沒有可持續(xù)性,我不希望某個受科技巨頭控制的瀏覽器占據(jù)絕對主導地位,也不希望某個瀏覽器因為資源優(yōu)勢而領先于其他瀏覽器,而其他瀏覽器一邊努力追趕,一邊抱怨“第二個IE6”。
以下是評論:
評論1:
所有人都使用Chromium的主要問題在于:Google控制著Chromium,因為他們做了很多工作。其他公司使用Chromium只是因為他們希望坐享其成Google的勞動成果,所以即使Google決定開始專制統(tǒng)治,這種局面也不會發(fā)生改變,何況目前也沒有任何跡象表明Google會這么做。Google真的應該通過Web獲得所有權利嗎?
單一的瀏覽器代碼庫會損害Web平臺的可維護性。如果Chromium壟斷瀏覽器,那么Chromium的bug就會變成“標準”,而且所有網站都會依賴“標準”。某種程度上,目前事態(tài)確實如此,但情況可能會更糟。所以修復bug會變得更難。
單一代碼庫也會增加實驗性實現(xiàn)的難度。各個可以打Chromium的補丁,但分支會迅速增加。假設你想重寫Chromium式的系統(tǒng),來實現(xiàn)Rust的并行性,就像Mozilla用Firefox那樣,Google會說不嗎?
另一個問題是,你很難禁用Google在Chromium中已經實現(xiàn)的Web功能。
評論2:
曾經,IE與如今的Chrome一樣占據(jù)主導地位,并且它已經被取代了。許多人似乎無法想象Chrome將來會如何隕落,但這種情況可能就會很快發(fā)生。例如,Google限制Chrome上的廣告攔截的行為肯定會讓Firefox市場份額增加。
但是,發(fā)生這種情況的唯一原因,是因為我們擁有獨立于瀏覽器和供應商的Web標準。如果我們完全放棄標準,只是使用Chromium的話,那么開放的網絡也就完了。
投入大量資金,在Chromium之上構建產品的情況最為糟糕,因為這會讓Google在未來擁有控制Web的無上權威。 這與Chromium是否開源根本就沒有關系。
現(xiàn)實情況是,維護Chromium是一項艱巨的工作。這需要像Mozilla這樣的組織將其從Google中分離出來,并朝著全新的方向發(fā)展。既然我們現(xiàn)在已經擁有了Mozilla和Firefox,那么就應該確保它們繼續(xù)存活下去。