Dive Into HTML5:历史(续三)

概览

2004年6月,W3C 成立了一个关于 web 应用程序和复合文档的工作组(Workshop on Web Applications and Compound Documents),由三家浏览器厂商、web 开发公司和 W3C 其他成员组成。对此感兴趣的很多组织,例如 Mozilla 基金会和 Opera Software 提出了它们自己关于 web 未来的设想:在已有的 HTML 4 标准之上为现代 web 应用程序开发者增加新的特性。

下面则是我们认为的应该提供的几项原则:

向前兼容,清晰地迁移路线

web 应用程序应该建立在现在已有的技术之上,至少与已有技术相似,例如 HTML,CSS,DOM 和 JavaScript。基本的 web 应用程序应该由行为、脚本和样式表构成,并且在 IE6 中也能够清晰地迁移。任何不能依赖于高市场占有率的用户代理(user agent)并且不需要使用二进制插件的解决方案都不大可能获得成功。

定义良好的错误处理

web 应用程序的错误处理必须在经过仔细地定义,因为 User Agent 或其它 User Agent 的还原引擎都不能自己实现一个错误处理机制。

用户不应该看到编写错误

标准应该指定每一个可能的错误的准确的回复行为。错误处理大多数情况下应该像 CSS 一样优雅,而不是像 XML 那样出现明显的灾难性失败。

实际应用

web 应用程序标准的每一个特性都应该满足一个特定的用例。但反过来不一定是必须的:每一个用例不一定必须要有一个新的特性。用例应该建立在开发者已经在使用的真实的站点之上。

在这里保留脚本

但是应该注意避免使用更方便的声明标记。脚本应该是与设备无关的,除非要使用一个设备相关的特性(例如,除非列入到 XBL 中)。

应该避免设备相关的信息

开发人员应该能够使用在桌面和移动设备上都能够实现的统一的特性。

开放进度

web 能够在一个开放的环境中获得极大的好处。web 应用程序将会成为 web 的核心,因此它的开发过程也应该是开放的。邮件列表、归档或者草案都应当公之于众。

在一项民意测验中,工作组被问到:“W3C 是不是应该扩展 HTML、CSS 和 DOM,来满足中等级别的 web 应用程序,而不是提供一种全方位的类似操作系统 API 的标准?(这是 Opera Software 的 Ian Hickson 提出的)”投票的结果是 11 票支持,8 票反对。在工作组的总结中,W3C 写道,“在现阶段,W3C 不打算对任何第三方民意测验投入精力。这也就意味着,我们将为 web 应用程序扩展 HTML 和 CSS,除非这项技术正由当前 W3C 工作组制定章程。”

面对这项决定,希望 HTML 和 HTML 表单改革的人们只有两种选择:放弃,或者在 W3C 之外继续他们的工作。他们选择了后者,注册了 whatwg.org 域名,于是在2004年6月,WHAT Working Group 成立了。

WHAT Working Group?

WHAT Working Group 的目的是什么?下面我们看看他们自己是怎么说的:

Web Hypertext Applications Technology Working Group 是一个由 web 浏览器厂商和其他感兴趣的团队组成的松散的、开放的组织。组织目的是制定基于 HTML 及相关技术的标准,方便开发可互操作的 web 应用程序,并且为标准组织提交制定成果。之后本次提交将成为扩展 HTML 标准的基础。

这个组织成立之后几个月内使用私有 email 发送了很多有关技术标准的问题。其焦点在于扩展 HTML 4 表单,以便为开发者提供更多特性,并且对现有内容不打破向后兼容。组织的成立是为了保证今后标准的制定是完全开放的,通过公开的归档以及公开的邮件列表。

这里的关键字是“不打破向后兼容”。XHTML 对于 HTML 不是向后兼容的。它要求一个全新的 MIME 类型,并且满足该 MIME 类型的所有内容都必须具有严格的错误处理。XForms 与 HTML 的 form 不是向后兼容的,因为它只能用在 XHTML 新的 MIME 类型中,这意味着 XForms 也是严格的错误处理。条条大路通 MIME。

为了避免抹杀数十年的资本投资,或者是让 99% 的已有页面不能显示,WHAT Working Group 决定采用另外的实现方式:对浏览器通常使用的“宽松的”错误处理算法进行文档化。web 浏览器通常会“原谅” HTML 错误,但是没有人知道这究竟是怎么实现的。NCSA Mosaic 有自己的处理损坏页面的算法,Netscape 希望能够匹配这种算法。然后,Internet Explorer 则希望能够匹配 Netscape 的算法。后来 Opera 和 Firefox 则试图匹配 Internet Explorer。Safari 则要匹配 Firefox。这就是现在的情况。在这条路上,开发者要花费数千小时,让自己的产品能够兼容客户的浏览器。

这听起来是一个很疯狂的工作量,事实上确实如此。或者从另一方面说,它曾经就是这样。这已经持续了大约五年时间,知道 WHAT Working Group 成功地将浏览器如何解析现有 HTML 的算法文档化。在这个最终的算法中,没有哪一步是 HTML 解析器应当停止处理,并且向最终用户显示错误信息。

当这所有“反向工程”进行的时候,WHAT Working Group 也在默默地为其它事情工作。其中之一就是一个被称为 Web Forms 2.0 的标准。这个标准向 HTML 表单添加了新的组件。另外一个草案则被称为“Web Application 1.0”,包含了很多新的特性,例如直接在画布上进行绘制,以及不通过插件就可以支持音频和视频等。

回到 W3C

在以后两年半的时间中,W3C 和 WHAT Working Group 相互忽视。WHAT Working Group 关注于 web 表单和 HTML 新特性,而 W3C HTML Working Group 则忙于 XHTML 2.0。但是到了2006年10月,很明显,WHAT Working Group 达到顶峰,与此同时,XHTML 2.0 还是一个草案,没有被任何主流浏览器实现。2006年10月,W3C 的创立者 Tim Berners-Lee 宣布 W3C 将于 WHAT Working Group 共同改进 HTML。

有些事情就是过上几年之后才会更加清楚。HTML 的确需要循序渐进地演化。把整个世界一下子带入 XML,要让属性加上引号,要让空标签加上斜线,要加上命名空间,这些改进跨度过大,根本没有人愿意接受。HTML 没有大的变革,主要是因为浏览器没有抱怨任何错误。有些大的社区的确准备了迁移,并且享受到良格式系统的好处,但是这不是全部。对 HTML 进行循序渐进地修改是很重要的,这才能够将我们带进一个良格式的世界,在那个世界中,开发者才能变得更加强大。

计划在于成立一个新的 HTML 组织。不同于先前的一个,这个组织应当循序渐进地改进 HTML,这与 xHTML 是并行的。这将由不同的主席和工作人员联系。它将让 HTML 和 XHTML 同时工作。我们了解到包括浏览器厂商在内的很多工作人员都会强烈支持这一工作组。

当然也会有对表单的改进。这是一个复杂的领域,因为已有的 HTML 表单和 XForms 都是表单语言。HTML 表单是无处不在的,同时有多种实现,也有多个 XForms 用户在使用。同时,Web forms 提交的方案则建议有意义地对 HTML 表单进行扩展。我们的计划是,继续 web forms 的工作,扩展 HTML 表单。

新成立的 W3C HTML Working Group 所做的第一件事就是把 “Web Application 1.0” 命名为 “HTML 5”。终于,我们来到了 HTML 5 的世界。

后记

2009年10月,W3C 关闭了 XHTML 2.0 Working Group。对此他们解释道:

W3C 2007年3月宣布 HTML 和 XHTML 2 Working Group。那时候我们认为我们的主要工作是 XHTML 2。W3C 意识到社区所需要的更多是关于 HTML 的未来。

虽然我们意识到,XHTML 2 Working Group 多年来的工作成果是富有意义的,但是经过同其他与会者的讨论之后,W3C 管理会决定让这个工作组在 2009 年末停止工作,而不是继续进行。

还是那句话,真正的赢家是写出来代码的那家(暗示 XHTML 2 从来没有主流浏览器的实现)。

One Response

  1. willonboy's blog 2011年4月25日

Leave a Reply