
HTML 標準的歷史演進:W3C 與 WHATWG 的分合
最早的 HTML 規範誕生於 1990 年代早期,由萬維網發明者 Tim Berners-Lee 制訂初版。隨後成立的 W3C(World Wide Web Consortium,全球資訊網聯盟)在 1994 年起扛下制定 HTML 等網頁技術標準的重任。W3C 陸續發布了 HTML3.2、HTML4.0 等版本,使瀏覽器廠商有共同遵循的規範。然而,進入 2000 年代初期,W3C 將重心轉向 XML 技術,專注開發 XHTML 2.0 等架構嚴謹的新標準,反而暫停了對傳統 HTML 的升級。當時 W3C 的理念是以更嚴格的 XML 規則來取代鬆散的 HTML,這使得原生 HTML 標準的演進一度停滯不前。
W3C 對 HTML 發展放緩的做法引發了瀏覽器廠商和開發社群的不安。2004 年,來自 Apple、Mozilla、Opera 等主流瀏覽器公司的代表決定另起爐灶,成立 WHATWG 組織。他們希望在不放棄傳統 HTML 彈性的前提下,加入現代網頁應用所需的新功能。WHATWG 發起了 Web Applications 1.0 草案,這其實就是日後 HTML5 的雛形。簡而言之,WHATWG 的誕生是對 W3C 專注 XHTML 而忽略 HTML 的回應:瀏覽器廠商聯合起來自行推進 HTML 標準演化,以滿足實際的 Web 發展需求。
起初 W3C 並未立即參與 WHATWG 的工作,不過隨著 Web 2.0 興起,互動式網頁應用的需求越來越高,W3C 不得不正視 HTML 的重要性。2007 年,W3C 宣佈重新啟動 HTML 工作小組,並採納 WHATWG 已經草擬的 Web Applications 1.0 規範作為新標準的基礎,正式命名為「HTML5」。自此,W3C 與 WHATWG 開始同步合作制定 HTML5:W3C 提供正式的標準化程序,而 WHATWG 繼續以非正式的管道實驗和完善規範內容。需要注意的是,雙方在合作中仍保有各自理念。WHATWG 強調 HTML 規範應該持續演進、不斷更新,因此 2011 年起他們將規範名稱中的"5"去掉,改稱為「HTML Living Standard」(HTML 活標準),表示不再區分版本,而是將規範視為活的文件持續維護。相對地,W3C 則傾向於在適當時機將規範定版,發布穩定的里程碑版本。於是,在 2014 年 W3C 發布了正式的HTML5 推薦標準,標誌著多年合作的成果。然而 HTML5 定案後,雙方對後續發展的節奏出現了明顯分歧:WHATWG 選擇繼續不間斷地更新他們的 Living Standard,而 W3C 則按照計劃推出HTML5.1(2016)和HTML5.2(2017)等後續版本,希望逐步改進。
HTML5.2 發布前後,W3C 與 WHATWG 之間的差異開始擴大。WHATWG 的 HTML 標準此時已經納入了更多新元素和 API(例如對話框 <dialog> 元素、更多表單輸入型別等),而 W3C 的 HTML5.2 仍著眼於整理與小幅增補已知功能。雙方規範內容甚至在某些具體細節上相互矛盾,導致市場上同時存在兩套「HTML 標準」。這種局面到了 2018 年 更加緊張——當年 W3C 試圖發布新版 DOM 4.1 規範時,遭到了 WHATWG 陣營(四大瀏覽器廠商)的公開反對,直接導致該規範無法通過。這件事凸顯出一個殘酷現實:沒有主要瀏覽器的支持,再權威的標準也只是紙上談兵。W3C 在 HTML 和 DOM 標準上的影響力受到前所未有的質疑。
所幸雙方很快意識到兩套標準並行對整個生態的傷害。2019 年 5 月,W3C 與 WHATWG 宣佈簽署諒解備忘錄,決定摒除分歧,攜手推進單一的 HTML 與 DOM 規範。根據這項協議,未來 WHATWG 的 HTML Living Standard 將作為唯一的 HTML 標準版本:WHATWG 繼續負責維護實時更新的規範內容,而 W3C 則將定期從中擷取快照(稱為 Review Draft),進行社群審查後推薦為 W3C 正式標準。W3C 不再另行發布獨立的 HTML 版本(例如原構想中的 HTML5.3 或 HTML6),改為將精力放在協助在 WHATWG 平台上討論問題、提出需求以及進行廣泛的審議。自此,曾經分道揚鑣的兩條路重新匯合。HTML 標準的未來藍圖,如今由 W3C 與 WHATWG 共同繪製——表面上看是合作無間,但實際運作更接近 WHATWG 的風格。我們接下來將仔細比較這兩大組織在角色定位與制定流程上的差異,以及目前雙方各自提供的 HTML 規範版本有何不同。
兩大組織的角色與制定流程差異
從治理結構上看,W3C 和 WHATWG 在制定標準的方式上截然不同。W3C 是一個傳統的國際網路標準組織,由各大科技公司、學術機構、政府單位等會員組成,有正式的會員制度與嚴謹的工作流程。W3C 制定標準通常經歷多個階段:從初期的工作草案(Working Draft),到候選推薦標準(CR),再到提案推薦(PR),最終成為正式推薦標準(Recommendation)。整個過程講求廣泛共識和反覆審查——需要不同利益相關者(瀏覽器廠商、開發者、無障礙專家等)的意見都被考量,並經歷公開徵求意見與測試實證等環節。這種模式確保了標準的穩健與權威性,但也相對耗時且官僚,常常為了讓各方達成一致而放慢腳步。
相較之下,WHATWG 的運作更加開放與靈活。WHATWG 並非傳統意義上的正式組織,一開始只是瀏覽器公司工程師主導的社群,後來逐漸形成由 Apple、Google、Microsoft、Mozilla 四大廠商組成的指導委員會負責決策。WHATWG 沒有繁複的會員體制,任何人都可以透過郵件列表或 GitHub 平臺參與討論和提案。規範以「Living Standard」形式存在,隨時根據共識進行編輯更新,沒有明確的版本階段劃分。在 WHATWG 的模式下,一項新提案如果獲得多數瀏覽器實作團隊的支持且經討論無重大異議,規範編輯就可以將其納入標準的下一版,即時上線公開。這意味著 HTML 標準的演進更貼近 "邊實作、邊標準化" 的節奏:當兩家以上的瀏覽器願意實作某個新功能時,WHATWG 規範便會著手加入對應的定義,以反映實際的瀏覽器行為。
在決策機制上,W3C 講究形式上的共識決。工作組透過會議和討論,力圖找出所有成員都能接受的方案;若有嚴重分歧,可能需要多輪協調甚至投票表決。而 WHATWG 的決策更接近開源社群的"粗共識 + 實際運作"原則:討論主要圍繞技術實際可行性和對使用者的影響,如果大多數人(特別是瀏覽器開發者)贊同且沒有明確反對意見,提案就會推進。可以說 W3C 更像是嚴謹的「瀑布式」開發流程——先完整規劃再實施;WHATWG 則近似「敏捷」開發——小步快跑、迭代前進。前者強調穩定與前瞻計畫,後者強調快速響應與實際落地。
兩種模式各有優勢。W3C 的流程雖然慢,但能保證標準在法律、無障礙、國際化等各方面經過深思熟慮,適合長遠扎根;WHATWG 的方式則使標準更緊密貼合當下技術趨勢,減少「紙上談兵」的成分,避免標準脫離實際。值得慶幸的是,自 2019 年起 W3C 與 WHATWG 嘗試將兩者優點結合:HTML 規範主要由 WHATWG 寫就和更新,同時 W3C 參與其中把關,提供更廣泛的意見反饋以及專利保障等支持。如今開發者既享有 Living Standard 的時效性,又能依賴 W3C 對標準品質的把控。理解了兩套機制如何運作之後,我們再來看看目前 W3C 與 WHATWG 各自維護的 HTML 規範版本有什麼差異,以及哪一個更具主導地位。
HTML 規範版本比較:誰是主流?
雖然 W3C 與 WHATWG 已經在合作,但在 HTML 規範的形式與內容上,過去確實存在差異。首先是版本命名的觀念:WHATWG 自 2011 年起就將 HTML 標準去版本化,統稱為「HTML Standard」或「HTML Living Standard」,不再推出所謂 "HTML6"、"HTML7"。反之 W3C 在 2017 年之前仍遵循傳統,發布了 HTML5.1、HTML5.2 等具版本號的規範文件。結果就是在 2010 年代中後期,開發者可能同時接觸到兩份名稱類似但內容略有不同的 HTML 標準文件:一份是 W3C 的 HTML5.2(最後更新於 2017 年),另一份是 WHATWG 持續更新的 HTML Living Standard。
具體來說,當時 兩套 HTML5 規範在細節上出現過一些差異,例如:
- <main> 元素用法: W3C 規範中,<main> 被定義為頁面主要內容區且每個文件僅能出現一次(並自動對應 ARIA 無障礙的主區域角色);WHATWG 規範最初允許頁面中出現多個 <main>,將其作為一般語意容器(只要確保同一時間至多一個 <main> 是對使用者可見的即可)。這反映了雙方對語意結構的不同取向。
- <hgroup> 元素存廢: <hgroup> 用於群組標題與副標題的元素,W3C 在 HTML5.1 時期就將其移除(理由是實際應用場景有限且瀏覽器實作欠缺),但 WHATWG 當時仍保留該元素在標準中作為可用(雖被標註為不推薦)。這導致開發者在是否應該使用 <hgroup> 上感到困惑:W3C 認為它已淘汰,而 WHATWG 版本似乎還支持它。
- 通知 API 事件命名: 例如在 Web Notifications(網頁通知)API 中,W3C 版本的規範定義了事件屬性 onshow、onclose 等四種事件處理器,而 WHATWG 為了簡化 API,僅保留了 onclick、onerror 兩種事件,刪除了顯示和關閉的事件屬性。這種關於功能取捨的差異也一度造成了規範間的不一致。
上述差異有時會影響到開發實務。例如,一位工程師根據 WHATWG 規範認為頁面可以有多個 <main>,但如果套用舊版 W3C 的檢查工具則可能收到警告;又或者開發者看到 WHATWG 文檔裡 <hgroup> 的描述而使用了它,卻發現某些瀏覽器或工具並不支持。以下是一個 <main> 元素差異的簡短範例:
<!-- WHATWG 規範允許多個 <main> 元素 -->
<main>內容區塊 1</main>
<main>內容區塊 2</main>
(上例在 WHATWG 的 HTML 標準下屬合法寫法,但 W3C 的觀點是每頁僅應有一個主要內容區 <main>,其他主要區塊可改用 <section>、<article> 等元素區分。)
值得慶幸的是,自從 2019 年 W3C 與 WHATWG 達成合作後,這類雙頭馬車式的標準分歧已逐漸消弭。目前 WHATWG 所維護的 HTML Living Standard 已成為業界公認的唯一現行 HTML 規範。W3C 不再另起爐灶制定新版 HTML,而是每年從 Living Standard 擷取內容,經過 W3C 社群審查後發布一份 HTML 標準快照。這份由 W3C 推薦的快照其實和 WHATWG 的原始內容毫無二致。例如,W3C 在 2021 年發布的 HTML 專案 Recommendation,就是以 WHATWG 當時的 Living Standard 為藍本。W3C 自身也在官網明確表示:WHATWG 的 HTML 規範取代了先前所有 W3C 發布的 HTML 版本。因此就實作層面而言,各大瀏覽器廠商如今完全以 WHATWG 的 Living Standard 作為開發依據。簡單來說,現今 HTML 的主流實作基準是 WHATWG 的活標準,而 W3C 則扮演支持與背書的角色。開發者在研讀規範或查詢功能時,也應以 WHATWG 的最新版內容為準。
差異對瀏覽器實作者與前端開發者的影響
標準制定權力的此消彼長,最直接受影響的莫過於瀏覽器實作團隊和眾多前端開發者。對瀏覽器廠商來說,曾經兩套規範並行的局面既尷尬又低效。過去幾年,如果 W3C 的標準決定與 WHATWG 不一致,瀏覽器工程師不得不抉擇究竟跟隨哪一邊;事實上他們大多數時候會優先實作 WHATWG 的規範內容,因為那通常代表了同行(其他瀏覽器)的共識。但這同時意味著,W3C 某些單方面批准的功能如果沒有瀏覽器配合實作,最終形同虛設。例如前文提到的 DOM 4.1 案例:四大廠商集體抵制後,哪怕 W3C 有再正式的草案,也無法改變瀏覽器不支持的事實。標準的影響力取決於實作者的買單程度,這點在 HTML 領域格外明顯。
如今統一到 WHATWG 路線後,瀏覽器實作者的負擔大大減輕。只有一套 HTML 規範需要追蹤,實作與標準的對接變得順暢透明。瀏覽器開發團隊能直接在 WHATWG 的平臺上提出新需求、討論規範修改,幾乎與開發過程同步演進,再也不必擔心 W3C 另有一份不同調的規範需要兼顧。這樣的協作也提高了效率:當某項新提案在 WHATWG 達成共識,它可能已伴隨瀏覽器實作原型同時出現,標準文字和程式碼實現相互驗證、快速迭代。對瀏覽器廠商而言,HTML 標準制定由他們主導也意味着可以更靈活地增進平台功能——當然,他們也肩負更大責任去傾聽社群聲音,確保新標準不會只服務於少數公司的利益。
對前端開發者而言,HTML 標準之爭的演變同樣帶來影響。首先是教育和知識更新方面:早些年有一段時間,不同資料來源對於「HTML5 之後發生了什麼」說法不一。有人堅持查閱 W3C 的 HTML5.2 規範,有人則追隨 WHATWG 的 Living Standard。這可能導致初學者迷惑,甚至在網路論壇上出現「到底該看哪一個規範才是權威?」的提問。現在情況好多了,因為官方明確只有一套 HTML 標準在延續,開發者可以放心地把 WHATWG 的 HTML 標準(例如透過 MDN 等文檔)當作參考依據。其次,新功能的發布節奏變得更加漸進。以前我們可能期待著 HTML5 大版本更新帶來一系列新標籤、新 API;如今沒有所謂 HTML6,一切改進會以小步快跑的方式逐項出現在 Living Standard 中。這要求開發者保持持續學習的狀態,定期關注瀏覽器更新帶來的新特性。例如 <dialog> 元素、<template> 元素、新的表單屬性等,都是在 HTML5 定案後陸續加入標準並為瀏覽器支持的。好消息是現代瀏覽器幾乎都自動更新(所謂常青瀏覽器),只要用戶使用的是最新版本瀏覽器,開發者就能較安心地採用那些已完成標準制定且被廣泛實作的新功能。而對於需要支援舊環境的專案,開發者則可以參考 W3C 每年發布的快照版本(或查閱 Can I Use 等工具),了解哪些功能在較舊的標準/瀏覽器中不可用,再決定是否採用 Polyfill 或替代方案。
另外,在規範分裂時期出現的一些爭議,如 <main> 元素可否多次、某些標籤是否應淘汰等,最終都有了較明確的方向。例如,即便 WHATWG 曾允許多個 <main>,實際開發中出於無障礙考量,多數人仍遵循每頁單一主內容區的最佳實踐;又如 <hgroup> 雖一度存在於 WHATWG 標準,但由於瀏覽器沒實作且可替代方案簡單,它從來沒在開發者社群中流行過。可以說,瀏覽器廠商和開發社群的選擇最終決定了哪些規範細節會留下。如今 WHATWG 平臺成為唯一的 HTML 提案管道後,開發者的聲音更容易透過社群討論直達標準編寫者;同時 W3C 仍在其中扮演"守門人"的角色,確保隱私、安全、無障礙等公共利益不被忽略,讓 HTML 的演進既有速度也有方向。不論是實作者還是使用者,最終都從中受益。
總而言之,統一後的 HTML 標準對前端開發日常影響更多是觀念上的:我們不再強調"這是 HTML5 或 HTML6",而是知道 HTML 是一套持續演化的活規範;我們遇到問題時,會直接查詢最新的標準定義或瀏覽器文檔,而不是引用多年久未更新的舊章。對大多數開發者而言,這種改變是潛移默化的——可能你並未特別留意某個 API 是在哪個年份加入 HTML,但當你需要時瀏覽器已經支持,它也已記載在當前的標準中。未來,HTML 的發展方向將隨著 Web 的需求而前進,由 WHATWG 和全球社群共同塑造。在下面的問答單元,我們將進一步針對開發者關心的一些問題進行解答,加深對 W3C 與 WHATWG 關係的理解。
問與答 Q&A
問: W3C 和 WHATWG 分別是什麼?兩者有何不同?
答: W3C 是由全球各領域成員組成的萬維網聯盟,負責制定各種 Web 標準;WHATWG 則是 2004 年由瀏覽器廠商發起的團體,專注推動 HTML 等網頁技術規範演進。簡言之,W3C 偏重正式的標準制定流程與廣泛共識,由多方共同決策;WHATWG 更強調由瀏覽器實作者主導的動態更新,讓規範快速迭代且貼近實際實作。兩者如今在 HTML 上協同合作,但運作方式和側重點仍有上述差異。
問: 現在 HTML 標準主要由誰主導制定?
答: 目前 HTML 的規範主要由 WHATWG 維護的 HTML Living Standard 主導。W3C 已不再獨立發布新的 HTML 版本,而是與 WHATWG 協作,定期將 Living Standard 的內容快照為 W3C 的推薦標準。因此實際上由瀏覽器廠商組成的 WHATWG 掌握著 HTML 未來演進的主導權,W3C 則在背後提供協調和品質監督。
問: HTML5 之後會有 HTML6 嗎?為什麼現在看不到版本號?
答: 不會有傳統意義的 HTML6。 從 HTML5 之後,標準團隊改用「Living Standard(活標準)」模式持續更新規範,而不再隔幾年湊一個大版本。也就是說,HTML 標準現在沒有版本號遞增(HTML5 之後直接稱 HTML),新功能會隨成熟度逐步加入現有規範。對開發者而言,我們平常所說的 "HTML5" 更像是對現代 Web 技術組合的統稱;但在正式規範上,已經不會再出現所謂的 HTML6 文檔,取而代之的是不斷演化的 HTML Living Standard。
問: 作為開發者,我應該參考哪一個 HTML 規範文件來學習和查詢?
答: 建議優先參考 WHATWG 的 HTML Living Standard,因為它是最新且與瀏覽器實況同步的規範。W3C 此前發布的 HTML5.2 等版本如今已被視為過時檔案(W3C 自己也聲明 WHATWG 的規範取代了先前版本)。實際上,無論是開發者教程還是 MDN 等文件,內容都以 WHATWG 的最新標準為依據。因此查詢 HTML 特性或語法時,請以 Living Standard 的定義為準,才能獲得與現今瀏覽器行為一致的答案。
問: W3C 現在在 HTML 標準制定中還有作用嗎?
答: 有的。雖然 HTML 規範日常由 WHATWG 編輯更新,但 W3C 依然扮演重要角色。首先,W3C 會代表更廣泛的社群(包含無障礙、隱私、安全等領域專家)在 WHATWG 平臺上反饋意見,確保 HTML 發展兼顧各方需求。其次,W3C 每年將 WHATWG 標準快照為正式推薦標準,有助於企業或法規引用一個穩定里程碑版本,並處理標準相關的專利問題。此外,W3C 本身還負責制定許多其他 Web 標準(如 CSS、JavaScript API、無障礙指南等),這些都和 HTML 息息相關。總而言之,W3C 從制定者轉變為協調者與監督者,在 HTML 標準的未來中仍不可或缺。