Fresset Ltd (一個小型web廣告公司)公司的聯合創始人Lea Verou在本文中討論了人們關於web標准的一些誤解,以及W3C及其工作組真正在做些什麼,以及標准化進程是如何工作的。
這是關於W3C工作組的系列文章的第一篇,主要關注CSS Working Group及相關工作。我覺得在我開始發表文章之前,有必要先清除一些關於web標准的廣為流傳的神話,並簡單講一下標准化進程是如何工作的。
一些術語
為了簡單及精確起見,下面列出了一些術語,這些術語在本文中得以使用,在大多數與標准相關的討論中也使用了這些術語:
Authors:開發人員,設計人員,或者說任何使用web技術的人。
Implementors:例如,那些提供開發者工具(developer tools)的公司。
Spec editors:撰寫標准的人。與人們慣常的想法相反,他們並不是創造web技術的人。在下面你將更多讀到關於這一點的內容。
1. ” W3C 創建了標准,然後浏覽器必須去遵循”
浏覽器創新與W3C創新(browser innovation vs W3C innovation)是一個廣為流傳的二元對立,然而這樣的對立是錯誤的想法。簡單來說,W3C實際上是implementors!Web標准是通過在Working Groups (WGs)中達成共識來實現的。這些WGs包括了各implementors的代表,主要是浏覽器的代表。每個WG都有少量W3C成員,但他們只占少數。例如,在CSS WG中,現在有74名成員,其中只有4個(5.4%)是W3C成員(Bert Bos, Richard Ishida, Chris Lilley 以及 Liam Quin)。當然,浏覽器通常自己先進行創新以後,然後隨後再進行標准化(例如,rag & Drop API, CSS transitions, CSS transforms, CSS animations),但這樣是很冒風險的,應該盡力避免。如果一個特寫在標准化之前就廣為流傳了,那麼,WG可能被迫去解決欠佳語法問題。
2. “你必須在大公司中工作,才能影響web標准”
如果你是在為一個成員公司工作,成為一個Working Group成員確實要容易得多。當然,除此以外,你還可以成為一個特邀專家(Invited Expert),但這對大多數WGs來說,都是分成困難的。CSS WG現在只有四個特邀專家(Molly Holzschlag, Koji Ishii, Brad Kemper 以及 Anton Prowse),在74名成員中只占5.4%。
然而,如果你想要有所貢獻,並不非得是WG成員。每個WG都有一個公開郵件列表,每個好的想法都會被考慮,不論這個想法來自於誰。通常,一直在跟進某個列表的人可能會有更為有效的建議,因為他們對相關術語更為屬性,並明白其中可能有的局限,但是這些對於提出一個值得考慮的想法來說,都不是必要的。
類似的,壞的想法都會被拒絕,即使這個想法來自於WG成員。這對於保持標准的高質量來說是非常重要的,因為任何人都可以加入WG。對於一個公司來說,要想成為W3C成員,所要做的只是有足夠資金去交年費。任何一個來自於W3C成員公司的人都可以成員W3C成員,只要他們有時間,並且他們的雇主同意他們這樣做。
3. “Spec editors創建web技術”
實際情形並非總是如此。W3C采取兩種方式工作模式:
CSS WG 主要是工作在第一種模式下,但並非每個WG都是如此。
4. “標准主要是為developers寫的”
標准(specifications)實際上主要是為implementors寫的,比如浏覽器提供商(browser vendors)。有一些editors會將標准寫得更為 author-friendly,但這並非是必須的。
5. “浏覽器不能依靠標准, 因為它們還在變化”
在實際操作中,一旦一個標准達到候選推薦(Candidate Recommendation ,CR)狀態,幾乎就不會再有什麼重大改變了。早期的一些狀態(工作草案”Working Draft”和編輯草稿”Editor’s Draft”)是還在改變過程中的標准,因此,一般都會發生改變。在這些狀態下的標准實現,通常是被看做實驗性質的,甚至在CSS中,是需要加前綴的,以免與將來成形的更為穩定的對應標准發生沖突。在過去幾年裡,authors對實驗性質依賴太多,將它們當做穩定標准。因此,這些實驗性質的標准似乎就是標准,即使不可信,但實際並非如此。即使一個實驗性的特性在web上廣為使用,大多數WGs對於改變它們也頗為躊躇。這並不太好,因為這些特性往往並不完美,但是又不可避免要去使用,因為用其他方式的話將會使很多站點無法工作。
6. “CSS3和CSS4 是用以指代CSS版本的正式術語”
在CSS 2.1之後,CSS被分解成很多模塊,每個模塊都有自己的版本。建立在現有CSS 2.1特性之上的模塊被稱為是”Level 3″,但是新開發出的一些新的特性被認為是從”Level 1″開始的。不幸地是,很多新的起源於Level 3的模塊,進一步促進了”CSS3″這個流行語的普及。然而,很多新模塊(比如Variables),是起源於Level 1的。
從歷史上來看,”CSS3″被用來描述在CSS2.1 之後出現的不管是什麼級別的任何模塊或者明確是Level 3的模塊。這兩種定義都有他們的問題。如果它是用來描述出現才CSS2.1之後的任何模塊,那麼如何區分CSS3 和 CSS4?如果它是用來描述明確屬於Level 3的模塊,那麼它就毫無理由地排除了很多新的CSS模塊。
7. “W3C 測試集是用來測試標准的一致性的”
這是測試的一個很有用的功能,但是從推進W3C Recommendation的角度來說,測試只是為了確保標准中特性的可實現性,這意味著當浏覽器無法正確實現某個特性時,可能並不是這個浏覽器的錯。原因可能是這個標准寫得不好,或者這個特性很難實現如它描述的那樣,或者implementers對這個標准沒有足夠興趣。通常,當有至少兩個浏覽器通過測試以後,該標准就能繼續推行。
8. “W3C = CSS WG + 一些小的重要的WGs”
完全不是這樣。當W3C在1994年創建的時候,CSS根本就不存在。除了CSS,很多其他重要的web技術都是由W3C創建的,要麼是由它獨立創建,要麼是和其他標准組織進行了合作:
還包括很多其他重要的web技術。進一步說, CSS WG甚至不是最大的 WG。例如,WebApps WG有146個成員.
延伸閱讀
本文編譯自:webapptrend.com,原文鏈接:The top 8 web standards myths debunked