胡亂寫寫 - 開發一個瀏覽器有多難
最近有一篇博客在 HN 上引起了許多討論[1]。這篇博客講的是為什麼 Mozilla 的主要產品僅僅是一個瀏覽器,就需要有 1200 名員工。開發維護一個瀏覽器需要這麼大的投入嗎?答案是真的需要。
目前全世界滿打滿算,只有四家有自己的 Web 引擎和 JavaScript 引擎的獨立的瀏覽器廠商,其中三家是全球市值前十的 IT 巨頭,一般人玩不起啊。而這四家的瀏覽器引擎的歷史都可以追溯到十幾年前。據我所知,近十幾年來沒有從零開始開發做大的瀏覽器項目,至多是從已有的項目 fork 出來( KHTML -> WebKit -> Blink, Trident -> EdgeHTML)。
- 谷歌 / Chrome / Blink內核 / V8
- 蘋果 / Safari / WebKit內核 / JavaScriptCore
- 微軟 / Edge / EdgeHTML內核 / Chakra
- Mozilla / Firefox / Gecko內核 / SpiderMonkey
這篇文章里我們不提到底需不需要這些個獨立的瀏覽器,只說說開發一個獨立的瀏覽器需要多大投入。
大型軟體
任何大型軟體工程項目都是需要巨大投入來維持的。瀏覽器也是一個複雜的軟體工程項目,複雜度不亞於操作系統。
開發瀏覽器需要實現哪些東西呢?嗯,大概有:Web 標準的實現。對多媒體的支持,視頻播放。圖形顯示。各種文字的顯示。GPU 渲染,流暢的滾動和動畫。網路。HTTPS, SSL, HTTP/2, HSTS, DNS 等玩意兒。跨平台支持。需要運行在 Windows / Android / MacOS 操作系統上,需要支持x86, x64, Arm, Arm64 的 CPU,需要支持各種硬體,解決或者繞過各種 GPU 的各種 bug。安全性。實現沙盒模型,多進程模型。CORS。預防網路攻擊和釣魚,保護用戶安全和隱私。性能優化,內存使用的優化,程序大小的優化,耗電量的優化。激烈的競爭下,用戶體驗和性能優化是很重要的方面,需要投入許多。此外還有 Headless 模式的支持,開發者工具,擴展和插件系統,pdf顯示等。(當然,許多功能特性並不是必須要有的。)
這麼多東西塞在一起,保持項目正常運行,可維護, 能開發新功能,實在是一個大工程。
Web 標準有多少?
瀏覽器需要兼容老的Web標準。幾十年前的網頁現在依然可以瀏覽,不得不說是Web的一個巨大成就。
其次新的Web標準層出不窮,標準也會不斷更新,導致Web平台的複雜度突破天際:HTML, CSS, JS, DOM, Canvas2D, WebGL, WebGL2,IndexDB,WebRTC,Web Audio/Video, WebCL, Web Storage, File API, WebSocket, Web worker, WebVR, WebUSB, Payment, WebAssembly, SVG, Media Capture, MathML, CSS Flexbox, CSS grid layout, HTTP2… 去W3C官網上看看,Recommendation 的標準就上百個[2]。(當然,許多功能特性並不是必須要有的。)
羅馬不是一天建成的,實現這些標準,解決各種bug,處理各種邊邊角角的問題,讓所有依賴這些標準的網站正常工作,需要大量的時間積累和持續不斷的投入。
開發 Chrome 用了多少人
作為市場份額第一大瀏覽器,Chrome 的開發人員應該比 Firefox 的人多不少。谷歌員工好幾萬,直接或者間接參與 Chrome 開發的有幾千也是很正常的。此外還有其他公司如 Opera,三星,英特爾,igalia的人參與開發。
我非常粗略的統計了一下一年以來向 Chromium 主 repo chromium/src 提交過代碼的人數。
git log --format="%ae" --since="1 year" | cut -d @ -f1 | sort | uniq -c -i | sort -g -r | nl | less
由於許多人會同時使用 chromium.org 和 google.com 的郵箱,所以只根據郵箱的用戶名來統計。大概有近一千人在一年內提交過十個或十個以上的 patch。
此外,還有許多其他的項目其實也屬於或者部分屬於 Chrome。包括 V8, skia, ANGLE, catapult, pdfium 等。這些也需要人手來開發。
此外,Chrome 自己用的各種工具和基礎設施也有很多,包括構建工具 gyp, gn, ninja, 代碼瀏覽 cs.chromium.org, bug 管理系統 Monorail,代碼審查系統 Rietveld 和 Gerrit, Fuzzing 工具,CI 系統 LUCI,性能測試監測系統 chromeperf.appspot.com 等。
總的加起來,感覺進行 Chrome 以及相關項目的開發測試人員確實得幾千人。
結語
列了這麼多亂七八糟的東西,其實就一個意思:開發瀏覽器挺難的。
參考來源
- Maintaining an Independent Browser Is Expensive
- All Standards and Drafts
推薦閱讀:
※Firefox 53.0 正式版用戶特性介紹
※Firefox 52.0 正式版用戶特性介紹
※被收購的品牌為什麼還有保存的必要?
※9個技巧,讓你的夸克瀏覽器更好用