下一個成為IE會不會是Chrome,看看是什麼情況。
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理
本文來自騰訊雲 作者:龍哥
IE 的歷史證明,如果一個瀏覽器佔據絕對主導地位,那麼就會帶來一系列負面的連鎖反應!當整個網路都以某一個瀏覽器引擎為標準時,那麼開發人員很可能就會忽略其他瀏覽器,只針對主流瀏覽器支援的 CSS 和 JavaScript 功能集,而不會考慮在其他瀏覽器中測試交叉相容性——且事實不止於此!現在的 Chrome 正在重蹈覆轍,開發者又該怎麼應對呢?
以下為譯文:
我一直在思考Web開發社群中一個老生常談的問題,自從Web瀏覽器誕生以來這個問題一直都是網上爭論不休的話題:瀏覽器單一化的問題。最近,由於微軟放棄了EdgeHTML瀏覽器引擎,並將Edge轉移到Google Chromium引擎上,於是這個話題再次被引爆。
我有一個瘋狂的想法,但我自己也沒有完全被說服,我覺得我的考慮並不周全,所以我想要一些反饋。但首先,讓我交代一下背景故事。
01
瀏覽器單一化意味著什麼?
瀏覽器單一化指的是當一個瀏覽器佔據絕對主導地位時引發的一系列連鎖反應:某個瀏覽器是唯一的選擇,所以所有人使用的瀏覽器只有這一種,所以所有人關心的瀏覽器只有這一種,所以開發人員編寫程式碼時需要考慮的也只有這一種。
我們主要的顧慮在於:如果一個瀏覽器佔據絕對主導地位,那麼開發人員可能會忽略其他瀏覽器,只針對主流瀏覽器支援的CSS和JavaScript功能集,而不會考慮在其他瀏覽器中測試交叉相容性。
這並非毫無根據,二十一世紀初,在瀏覽器大戰的高峰時期就發生了這樣的事情:Internet Explorer佔據了絕對主導地位,開發人員經常編寫專門針對IE瀏覽器的功能,許多網站根本無法在任何其他瀏覽器中執行。最糟糕的是,IE超級古怪,不遵循標準,而且它自身的變化或改進也非常緩慢。
另一個主要的顧慮在於:當市場上一家獨大時,你就無法推動該瀏覽器供應商遵循標準和規則,他們可以為所欲為。你可能會認為開發人員社群會對此不滿,並遠離該瀏覽器,然而問題在於,大多數瀏覽器使用者不是Web開發人員。大多數使用者不知道也不關心這些問題,他們才不會因為一些“鑽牛角尖”的人抱怨“API”和“標準”,就轉而使用其他瀏覽器。
也就是說,第三個顧慮就在於非開發人員不關心:如果每個人都使用同一個供應商提供的瀏覽器,那麼該供應商就可以訪問每個人的使用者資料等。這也不是沒有根據,很多人都認為過去Google在處理使用者隱私問題方面存在很大問題。
02
Chromium引發了單一化?
我們再來看一看最近發生的事情。
Google Chrome的底層瀏覽器引擎是一個名為Chromium的開源專案開發的。它的設計可以作為新型瀏覽器的基礎,如今許多瀏覽器都是在其基礎之上構建的,包括那些你所熟知的瀏覽器。2013年,Opera和三星網路都採用了Chromium,還有本文開頭介紹的今年的重大新聞:微軟的 Edge也將轉向Chromium。
所以問題就來了:如果絕大部分的瀏覽器都採用Chromium,那麼最終我們就會陷入Chromium的單一化。
從目前的統計資料來看,我們似乎正朝著這個方向發展:
2019年5月全球瀏覽器使用率超過1%的瀏覽器使用狀況統計資訊
(2019年6月7日,摘自statcounter.com)
僅Chrome一家就佔全球瀏覽器市場份額的60%以上。再加上三星網路、Opera和Edge(這幾家頂級的瀏覽器統統採用了Chromium),這個數字就高達70.8%!想象一下,如果蘋果厭倦了每個人都抱怨Safari缺少的功能(因為現在Safari確實遠遠落後於新型網路平臺API的實現),而決定步微軟的後塵。雖然不太可能,但我可以預見這一幕的出現。
在過去幾年中,許多新型的實驗性瀏覽器專案也基於Chromium,例如Vivaldi、Brave和Epic。我覺得這很合情合理:Chromium是一個非常完善、易於維護且易於擴充套件的瀏覽器引擎。從頭開始建立完整的JavaScript、HTML和CSS引擎是一項巨大的任務。Chromium已經發展了數十年(考慮到是建立在WebKit上的),所以不可能追趕它的發展,特別是對於一個剛剛建立的創業公司而言。此外,這些瀏覽器主要不是為了改善Web語言的狀態,它們專注於更高階別的功能,如安全性、隱私等。它們只是使用Chromium作為基礎並專注於各自關心的功能,所以我不會因此而怪罪它們。
然而,我想表達的觀點是:如今Chromium的定位變成了瀏覽器引擎的標準,類似於W3C規範的規範實現。但是這個問題先放一放。
03
Firefox瀏覽器的情況又如何呢?
回到瀏覽器大戰的時代,Firefox是我們所有人心中的英雄,它打破了Internet Explorer的壟斷局面,並推動瀏覽器邁入了多樣性和合作網路標準的新時代。
然而不幸的是,多年來Firefox的使用量一直在急劇下降,自Chrome出現以來一直都是如此。我認為最近Mozilla與Quantum一起做了一件了不起的事情,而且他們經常負責實施新的網路平臺功能,特別是在CSS(subgrid !!!)中。
但根本問題在於:Google的規模太大了,他們擁有大量員工。我認為Mozilla和圍繞Firefox的開源社群沒有足夠的人力和機構支援來跟上Google的步伐。
而且,我認為正確的解決方案是Google解散他們的瀏覽器團隊,讓Firefox跟上,我喜歡他們不斷嘗試很酷的新事物。那麼我們該怎麼辦?
04
如今的瀏覽器陷入了單一化嗎?
是的,這其中的意義重大。在接下來的5-10年裡,很有可能會出現瀏覽器單一化的問題。目前,Chromium的兩個主要對手是Safari和Firefox,他們總共佔據了大約21%的使用量。多年來Chrome的使用一直在緩慢而又穩步地增長,而且接下來還會繼續。如今連Edge也採用了Chromium,所以我覺得這個數字還會增加。
但是,我不得不提出異議。我想指出,現在的情況與我們在2000年代使用Internet Explorer 6時看到的單一化不一樣,或者我們不應該使用“單一化”這個詞來描述。
05
單一化是壞事嗎?
那麼,讓我們來深入爭議的本身。以下是我的看法:
之前我提出的三個顧慮的根據都是單個瀏覽器佔據絕對主導地位的情況,包括將使用者掛鉤到擁有獨立業務目標的特定公司結構以及該公司專有的生態系統中(例如將你的Google賬號掛鉤到你的瀏覽器中)。但Chromium並不是這種情況,它的情況有可能恰恰相反。
回顧一下,我提到的瀏覽器單一化的三個主要顧慮:
佔據絕對主導地位的瀏覽器會導致開發人員只考慮該瀏覽器,而忽略與其他瀏覽器的相容性;
當某個瀏覽器佔據絕對主導地位時,就不受通用Web標準的控制;
使用某個瀏覽器的人越多,擁有該瀏覽器的公司就可以獲得更多使用者的資料,這會引發隱私問題。
如果你意識到我們討論的不是Chrome單一化的問題,就會明白情況並不一樣。我們討論的是瀏覽器引擎的基礎——Chromium。就目前而言,Chromium是各個瀏覽器的基礎,而不僅僅是Google的旗艦產品。據我所知,引起隱私權擁護者關注的Google產品與核心Chromium瀏覽器引擎沒有關係。我的意思是,顯然微軟的Edge不會與Google的生態系統掛鉤,因此這兩者應該很容易區分。
06
隱私
對我來說,“瀏覽器”和“瀏覽器引擎”之間的區別已經解除了有關隱私的主要顧慮,引擎本身並不會引發隱私問題。我之前提到的兩個基於Chromium的實驗性瀏覽器——Brave和Epic,都提供了更安全和保護隱私的措施。
07
單一的主導平臺
至於擔心某個Web引擎過分受到開發人員的喜愛,這種情況確實屬實。有人聲稱Chrome就是這樣。
然而問題在於:因為Chromium是多種瀏覽器的基礎,因此當推出新的JavaScript或CSS功能時,它所推動的不僅僅是Chrome,而是所有這些瀏覽器的發展。因此,當Verge說Chrome會成為第二個IE時,他們指的應該是“基於Chromium的瀏覽器”,而不是“Chrome”。針對Chrome的優化也同樣Opera、Vivaldi、三星瀏覽器和Edge,因為它們都使用相同的引擎。
話雖如此,對於Firefox、Safari和其他任何仍在維護並行實現的人來說這都是一個問題。現在讓我們再來看看這個問題。
08
Web標準
這確實是一個大問題。Google在推動和開發Web平臺標準方面歷來都有著重要的影響力,但正如Verge指出的那樣,在過去幾年中Google偏離了這一軌道:
無論你認為是Google的問題,還是全球資訊網聯盟(W3C)的發展得過於緩慢,整個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)。
這可不是好訊息。但據我所知,這並不一定意味著Google無視標準。通常情況下,其他瀏覽器跟不上Google實現API的領先技術。而且,Google有錢有勢,因此在我看來,在某種程度上這是不可避免的。但是話說回來,Google也貢獻了Chromium,而不僅僅是Chrome,所有基於Chromium的瀏覽器都能從中受益。
09
我的瘋狂想法
好了,背景故事的交代就這麼多了。讀到這裡,我的看法已經呼之欲出了:
如果整個網路都以某一個瀏覽器引擎為標準,結果會怎樣呢?如果Chromium成為Web標準參考實現的基礎,而且所有瀏覽器都遵循它的標準,情況會怎樣呢?
在你給我寄刀片之前,容我詳細說明一下。
協作引擎
我希望你能明白:我並沒有說要將網路控制權移交給Google。事實恰恰相反。我希望,如今的開發人員花費了無數的時間在各自的程式碼庫中並行編寫相同的程式碼,如果將他們統一到同一個程式碼庫中,不是更好嗎?
理想情況下,這個程式碼庫不歸任何一家公司控制。我希望看到一個獨立的非營利基金會控制的通用瀏覽器引擎,例如Python軟體基金會,成員由每家瀏覽器供應商的代表組成。
想象一下:如果Safari和Firefox以及其他所有人都停止維護各自的程式碼庫,大家齊心協力開發一個共享程式碼庫,那麼就無需再重複大量的工作,也無需拼命地跟上Google龐大的開發團隊的節奏,那不是更好嗎?如果每個人都能受益於其他人的工作,不好嗎?
其實,先前就有這樣的例子。Opera開發人員就曾經做到了這一點,而Edge團隊也在朝著這個方向努力,兩個團隊都將他們的專業知識帶到了Chromium。
如今我有點灰心喪氣,雖然CSS subgrid已經在Firefox Nightly中實現,但Chromium還沒有開始動手。想象一下,如果Firefox開發人員的工作也可以貢獻到Chrome!這個問題就迎刃而解了!
這是一個很常見的Web平臺的問題:當某個瀏覽器展示新Web API時,我們都感到很興奮,但立即湧現的問題就是:“還要多久我們才能使用這個功能?其他瀏覽器會實現嗎?”現在我們就有機會永遠擺脫這個問題。
失去實現的多樣性?
這也是我所擔心的一個缺點:我喜歡各種各樣的瀏覽器引擎,他們常常以不同的方式實現相同的功能,一個比一個快。有時,我不禁會想如果Chrome開發人員能夠借鑑Firefox的解決方案,不是很好嗎?反之亦然。我們有什麼損失嗎?會有多大的損失?
我有兩個想法。
首先,我認為這對其他平臺來說並不是什麼大問題。我並沒有聽到太多人抱怨CPython沒有激烈的競爭來鼓勵實現功能的替代方法,但也許這算不上反駁。也許這對Python社群來說可能是件壞事,他們會從競爭中受益。我不太清楚。
其次,我們還有其他方法在某種程度上保留Web的這一特性。所有瀏覽器都將構建在同一個引擎上,但也許引擎的構建方式可以讓每個瀏覽器都在核心引擎之上構建自己的功能實現。也許這可以發展成一個常規的流程:在討論新API的時候,或者甚至在釋出最初的規範之後,每個感興趣的瀏覽器都可以編寫自己的功能實現。比如我們花6個月在Firefox、Chrome和Opera中構建了不同版本的功能,然後再由基金會決定哪些實現應該合併到主分支中。
希望大家能夠針對這一點提供具體的反饋。我不確定具體的做法,但感覺應該有辦法實現。
10
總結
感謝閱讀本文。而且我也非常希望您能提供反饋!針對瀏覽器之間日益擴大的差異,我反覆思考了很長時間。
我認為當前的方式沒有可持續性,我不希望某個受科技巨頭控制的瀏覽器佔據絕對主導地位,也不希望某個瀏覽器因為資源優勢而領先於其他瀏覽器,而其他瀏覽器一邊努力追趕,一邊抱怨“第二個IE6”。
以下是評論:
評論1:
所有人都使用Chromium的主要問題在於:Google控制著Chromium,因為他們做了很多工作。其他公司使用Chromium只是因為他們希望坐享其成Google的勞動成果,所以即使Google決定開始專制統治,這種局面也不會發生改變,何況目前也沒有任何跡象表明Google會這麼做。Google真的應該通過Web獲得所有權利嗎?
單一的瀏覽器程式碼庫會損害Web平臺的可維護性。如果Chromium壟斷瀏覽器,那麼Chromium的bug就會變成“標準”,而且所有網站都會依賴“標準”。某種程度上,目前事態確實如此,但情況可能會更糟。所以修復bug會變得更難。
單一程式碼庫也會增加實驗性實現的難度。各個可以打Chromium的補丁,但分支會迅速增加。假設你想重寫Chromium式的系統,來實現Rust的並行性,就像Mozilla用Firefox那樣,Google會說不嗎?
另一個問題是,你很難禁用Google在Chromium中已經實現的Web功能。
評論2:
曾經,IE與如今的Chrome一樣佔據主導地位,並且它已經被取代了。許多人似乎無法想象Chrome將來會如何隕落,但這種情況可能就會很快發生。例如,Google限制Chrome上的廣告攔截的行為肯定會讓Firefox市場份額增加。
但是,發生這種情況的唯一原因,是因為我們擁有獨立於瀏覽器和供應商的Web標準。如果我們完全放棄標準,只是使用Chromium的話,那麼開放的網路也就完了。
投入大量資金,在Chromium之上構建產品的情況最為糟糕,因為這會讓Google在未來擁有控制Web的無上權威。這與Chromium是否開源根本就沒有關係。
現實情況是,維護Chromium是一項艱鉅的工作。這需要像Mozilla這樣的組織將其從Google中分離出來,並朝著全新的方向發展。既然我們現在已經擁有了Mozilla和Firefox,那麼就應該確保它們繼續存活下去。
相關文章
- 特斯拉會不會成為下一個蘋果?蘋果
- InK會成為下一個Qtum嗎?QT
- 為什麼分散式限流會出現不均衡的情況?分散式
- 爬蟲代理為什麼會出現超時的情況?爬蟲
- mysql索引不會命中的情況MySql索引
- 驗證碼不顯示是什麼情況
- 為什麼你還是學不會程式設計程式設計
- 你為什麼總是學不會設計模式?設計模式
- 為什麼充滿情懷的香草遊戲時代會成為絕唱?遊戲
- 直接登入資料庫使用drop table tablename;會是什麼情況?資料庫
- 伺服器過載會出現什麼情況伺服器
- SQL SERVER中什麼情況會導致索引查詢變成索引掃描SQLServer索引
- 下一個10年即將火爆的行業會是什麼?行業
- 網站為什麼會打不開網站
- 為什麼新人不會程式設計程式設計
- ViewGroup為什麼不會呼叫onDrawView
- 為什麼RedisCluster會設計成16384個槽呢?Redis
- 區塊鏈會是下一個風口麼?區塊鏈
- 【Java】JDK1.8之前HashMap併發情況為什麼會發生死迴圈JavaJDKHashMap
- 瀏覽器定位是如何實現的?為什麼會有瀏覽器定位失敗的情況?瀏覽器
- 為什麼說共享WiFi專案是如今風口,會不會已經太晚了!WiFi
- Linux中什麼情況下會發生程式排程?Linux
- Snowflake(雪花演算法),什麼情況下會衝突?演算法
- MySQL什麼情況下刪除資料會釋放空間MySql
- SQL語句為什麼不會共享(上)SQL
- SQL語句為什麼不會共享(中)SQL
- SQL語句為什麼不會共享(下)SQL
- 為什麼Facebook不會有“dislike”按鈕?
- 這就是為什麼你學不會DDD
- 轉享:JVM 是下一個組合語言嗎?不會JVM組合語言
- 為什麼Laravel會成為最成功的PHP框架LaravelPHP框架
- 為什麼 Laravel 會成為最成功的 PHP 框架?LaravelPHP框架
- Julia會成為下一個程式設計大語言嗎?程式設計
- 美團會成為下一個反壟斷調查物件嗎?物件
- 在bean為singleton的情況下,為什麼同一個applicationContext會獲取多個不同的bean例項??BeanAPPContext
- Python 的切片為什麼不會索引越界?Python索引
- GreatSQL 中為什麼 Update 不會被鎖等待SQL
- 為什麼mysql會經常出現主從同步不一致的情況MySql主從同步