1.1.2 HTML5起源
在20世纪末期,W3C开始考虑改良HTML语言,当时的版本是HTML 4.01,但是在后来的开发和维护过程中,出现了方向性分歧:是开发XHTML1再到XHTML2最后终极目标是XML,还是坚持实用主义原则,快速开发出改良的HTML5版本。
2004年,在W3C成员内部的一次研讨会上,当时Opera公司的代表伊恩·希克森(Ian Hickson)提出了一个扩展和改进HTML的建议。他建议新任务组可以跟XHTML2并行,前提是在已有HTML的基础上开展工作,目标是对HTML进行扩展。但是W3C投票表示反对,他们认为HTML已无前途,XHTML2才是未来的方向。
后来,Opera、Apple等浏览器厂商,以及部分成员忍受不了W3C的工作机制和拖沓的行事节奏,决定脱离W3C,他们成立了Web超文本应用技术工作组(Web Hypertext Applications Technology Working Group,WHATWG),这就为HTML5将来的命运埋下了伏笔。
WHATWG决定完全脱离W3C,在HTML的基础上开展工作,并向其中添加一些新内容。这个工作组的成员有浏览器厂商,他们不断提出一些好点子,并且逐一整合到新版本的浏览器中。
WHATWG的工作效率很高,不久就初见成效。在此期间,W3C的XHTML2却没有什么实质性的进展。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设计原理。