在20世纪末期,W3C开始琢磨着改良HTML语言,当时的版本是HTML 4.01。但是在后来的开发和维护过程中,出现了方向性分歧:是开发XHTML 1,再到XHTML 2,最后终极目标是XML;还是坚持实用主义原则,快速开发出改良的HTML5版本?
2004年W3C成员内部的一次研讨会上,当时Opera公司的代表伊恩·希克森(Ian Hickson)提出了一个扩展和改进HTML的建议。他建议新任务组可以跟XHTML 2并行,但是在已有HTML的基础上开展工作,目标是对HTML进行扩展。但是W3C投票表示反对,因为他们认为HTML已经死了,XHTML 2才是未来的方向。
然后,Opera、Apple等浏览器厂商,以及部分成员忍受不了W3C的工作机制和拖沓的行事节奏,决定脱离W3C,他们成立了WHATWG (Web Hypertext Applications Technology Working Group,Web超文本应用技术工作组),这就为HTML5将来的命运埋下了伏笔。
WHATWG决定完全脱离W3C,在HTML的基础上开展工作,向其中添加一些新东西。这个工作组的成员里有浏览器厂商,因此他们可以保证实现各种新奇、实用的点子。结果,大家不断提出一些好点子,并且逐一整合到新版本浏览器中。
WHATWG的工作效率很高,不久就初见成效。在此期间,W3C的XHTML 2没有什么实质性的进展。在2006年,蒂姆·伯纳斯-李写了一篇博客反思HTML发展历史:“你们知道吗?我们错了。我们错在企图一夜之间就让Web跨入XML时代,我们的想法太不切实际了,是的,也许我们应该重新组建HTML工作组了。”
W3C在2007年组建了HTML5工作组。这个工作组面临的第一个问题是“我们是从头开始做起呢,还是在2004年成立的那个叫WHATWG的工作组既有成果的基础上开始工作呢?”
答案是显而易见的,他们当然希望从已经取得的成果着手,以此为基础展开工作。工作组投了一次票,同意在WHATWG工作成果的基础上继续开展工作。
第二个问题就是如何理顺两个工作组之间的关系。W3C这个工作组的编辑应该由谁担任?是不是还让WHATWG的编辑,也就是现在Google的伊恩·希克森来兼任?于是他们又投了一次票,赞成让伊恩·希克森担任W3C HTML5规范的编辑,同时兼任WHATWG的编辑,更有助于新工作组开展工作。
这就是他们投票的结果,也就是我们今天看到的局面:一种格式,两个版本。WHATWG网站上有这个规范,而W3C网站上同样也有一份。
如果不了解内情,你很可能会产生这样的疑问:“哪个版本才是真正的规范?”当然,这两个版本内容基本上相同。实际上,这两个版本将来还会分道扬镳。现在已经有了分道扬镳的迹象了。W3C最终要制定一个具体的规范,这个规范会成为一个工作草案,定格在某个历史时刻。
而WHATWG还在不断地迭代。即使目前的HTML5也不能完全涵盖WHATWG正在从事的工作。最准确的理解就是WHATWG正在开发一项简单的HTML或Web技术,因为这才是他们工作的核心目标。然而,同时存在两个这样的工作组,这两个工作组同时开发一个基本相同的规范,这无论如何也容易让人产生误解,误解就可能造成麻烦。
其实这两个工作组背后各自有各自的流程,因为它们的理念完全不同。在WHATWG内部,可以说是一种独裁的工作机制。伊恩·希克森是编辑。他会听取各方意见,在所有成员各抒己见,充分陈述自己的观点之后,他批准自己认为正确的意见。而W3C则截然相反,可以说是一种民主的工作机制。所有成员都可以发表意见,而且每个人都有投票表决的权利。这个流程的关键在于投票表决。从表面上看,WHATWG的工作机制让人难以接受,W3C的工作机制听起来让人很舒服。至少体现了人人平等的精神。但在实践中,WHATWG的工作机制运行得非常好。这主要归功于伊恩·希克森。他在听取各方意见时,始终可以做到丝毫不带个人感情色彩。
从原理上讲,W3C的工作机制很公平,而实际上却非常容易在某些流程或环节上卡壳,造成工作停滞不前,一件事情要达成决议往往需要花费很长时间。那到底哪种工作机制最好呢?个人认为,最好的工作机制是将二者结合起来。而事实也是两个规范制定主体在共同制定一份相同的规范,这倒是非常有利于两种工作机制相互取长补短。
两个工作组之所以能够同心同德,主要原因是HTML5的设计思想。因为从一开始就确定了设计HTML5所要坚持的原则。结果,我们不仅看到了一份规范,也就是W3C站点上公布的那份文档,即HTML5语言规范,还在W3C站点上看到了另一份文档,也就是HTML5设计原理。