白一白HTML的历史
adf 发表于 2016/02/06 13:22 一品 人文历史 (www.ywpw.com) 主题字词: HTML语言 浏览器 万维网联盟 W3C HTML5 XML
(终于把HTML混乱的历史用中文整理了一篇出来)
1989年,国内正值悼念胡耀邦去世的月份,英国物理学家,后来成为计算机学界泰斗,蒂姆·伯尼斯 - 李(Tim Berners-Lee)提出一个通过HTTP进行信息发布的方案。同年他编写了一个客户服务器软件,创建了HTML语言的第一个规范。1994年他离开欧洲核子中心到麻省理工组建了万维网联盟(W3C)并一直担任主席至今。该组织与浏览器开发商合作,负责制定Web相关的技术标准和语言规范。2004年因为他的巨大贡献被英国女王授予爵士头衔。
W3C发布过三十多个Web技术标准。对工业界影响最大的就是HTML, XML,CSS,DOM,WSDL和SOAP,其中最引人注目的莫过于HTML。
1996年泰斗即位一年多W3C就发布了XML 1.0的语言规范。标记语言(Markup Language)可以让文档更灵活,语法更严格,而且可以机器处理。XML一出来就成了W3C的最爱。1997香港回归那年W3C先后发布了HTML 3.2和HTML 4.0,经过一两年的修改最终形成HTML 4.01。老的HTML语言同时发展也到了顶峰。
W3C看到HTML的蓬勃发展喜上心头。但如何让HTML语言变得更加规范,减少错误,给浏览器软件开发提供统一标准却是一个非常挑战的任务。W3C采用了一个大胆的计划,把XML引入HTML,加入DTD或者XML Schema验证,于是XHTML在W3C的大力推动下诞生了。
2000年,XHTML 1.0正式发布。XHTML功能上继承了HTML 4.01的标准,语法上按照XML的规范来写。开发人员也对XHTML也充满期望,希望写出更良好的网页代码,能够被不同浏览器有效的支持。XHTML 1.0对Web页面开发的影响比较小。旧的代码大部分都能兼容,改动的地方变得更专业,而且减少了错误。但是在浏览器软件看到的并不完全这样。所有的Web服务器几乎还是把XHTML的MIME-TYPE标记为text/html,也就是说大部分浏览器依然是用HTML处理XHTML的页面。即便改成application/xhtml+xml,也只有极少数浏览器真正支持用XML去解析。事实上直到IE8微软都没考虑要支持XHTML的解析。即使支持XML解析,浏览器也面临两难处境,无效的字符是显示错误信息还是空白页面,或者跳过继续显示页面其它内容。浏览器开发商和Web社区最终采用了比W3C更宽松的方案,就是XHMTL解析时有法可以不依,执法可以不严,违法可以不究。浏览器开发商和Web开发人员皆大欢喜。
实际上浏览器开发商对执行XHTML标准放了一马已经表明和W3C之间出现了分歧。然而生活在象牙塔中的W3C继续憧憬着XHTML的美好未来,没有意识到浏览器开发商才是主导这个技术发展的核心。从2002年到2006年,W3C一连发布了八个不同XHTML 2.0的草案,计划用XML技术彻底革新HTML的语言,不再兼容老的HTML规范。一石激起千层浪,不再支持HTML 4和XHTML 1.0遭到浏览器开发商和web社区的激烈反对,每个XHTML 2.0草案最后都被迫放弃。当年牵头创建了Web标准推广组织“The Web Standards Project” 的Jeffrey Zeldman参与了审查XHTML 2.0草案。他在博客中写道,“读到XHTML2.0有意不兼容HTML4和XHTML1.0的时候我经历了一场信仰危机。当时我甚至无法继续写我的书-《向前兼容》,书名就已经变成了一个谎言。新的标准就像一个地狱屠夫挥舞着血腥大斧,砸碎了所有现存的框架”。
进入二十一世纪以来,Internet从信息发布平台发展成为了web应用平台。IT界希望新的HTML规范能更好支持新的应用,同时兼容旧的页面,提供更好的数据操作手段和数据安全。代表部分浏览器厂商(Mozilla和Opera)的开发人员伊恩·希克森(Ian “Hixie” Hickson)提出为web应用建立不同于W3C的规范。希克森认为HTML语言的发展应该通过渐进式扩展功能,而不是革新式放弃以前的规范。2004年6月2日,该方案在W3C内部以11:8的票数被否决。方案否决后,Mozilla,Opera和Apple另起山头成立了“叛军组织”WHATWG继续该方案的工作,规范的名字也改成了Web Application 1.0,并逐渐增加了一些支持web应用的功能,比如Web Storage, Web Sockets, Server Events等等。2006年到2007年,W3C意识到自己决策错误,同WHATWG达成和解,协商在Web Application 1.0基础上共同制定新的HTML语言规范。Web Application 1.0改名成为HTML5。2008年W3C发布第一个HTML5草案。2009年XHTML 2.0最终被W3C放弃。
但故事并没结束,希克森在很长一段时期独自维护WHATWG和W3C的HTML5标准,直到2012年9月W3C决定组建一个团队负责维护W3C的HTML5标准,造成现在WHATWG和W3C的HTML5标准共存的混乱局面。支持WHATWG和希克森的人抱怨多年W3C没有正确引导制定HTML的规范和发展,质疑W3C的作用。支持W3C的人质疑希克森的个人判断将影响标准制定的公平性和合理性。Open Web Standards组织的创建人Bruce Lawson曾向希克森询问过他的判断准则是什么,希克森答道,“如果一个功能没有浏览器厂商愿意实施,或者只是一个浏览器厂商的意向,他只会加个评注而不会加入到HTML5标准里面;如果这个功能只是省一两行代码,没有实质性的功能改进,可能也不会加入;如果这个功能是方便开发人员但对用户不便可能也不加;如果这个功能相对其他的新功能没那么重要,也会酌情考虑是否加入”,因为每加入一个新的功能,增加了“代码编写成本”,“测试成本”,“QA成本”,“代码维护成本”,“文档工作”,“培训成本”,“规范的编写和维护成本”,“Bug fixing和维护成本”,“更多的浏览器资源开销”。至于用户担心标准的变化造成代码失效,希克森的建议是,“如果至少两个浏览器都支持一个功能,我几乎可以向你保证这个功能在未来十年内都不会过时”。这个方法也许可以成为当前Web开发人员的一个试金石,得到多个浏览器支持HTML5功能,不论是W3C,还是WHATWG,还是浏览器厂商自己开发暂时没列入HTML5标准的,都可以安全的使用。HTML5标准的另外一个巨大的进步是统一了厂商如何编写HTML5浏览器。希克森谈到之前五种主要浏览器用五种不同的方式去解析和显示网页。现在所有的浏览器都应该用同样的方法读和显示网页。
W3C从2002年到2009年浪费了7年时间在XHTML 2.0上面,IT界认识到web的标准制定有很多风险。高大上的XML技术并不一定符合HTML的未来发展,权威组织也可能完全走错方向。Tim Berners-Lee在2006年W3C的会议上承认试图把整个世界的网页都换成XML语言,包括给所有HTML tag的attribute加上引号,把空的tag去掉,是不可能的事情。未来HTML6的变化应该还是渐进的,不会有革命性的改动。希克森不一定会继续HTML6的编写。W3C也许会重新掌控HTML标准的核心。Internet就是一个平等开放的天地,任何人任何团体都可以把自己的创新加入到互联网平台,标准化组织也许更多的是追逐互联网技术前进的步伐,而不是站在前沿指导创新。