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