简介
作为Web开发者当然需要紧跟Web规范的变化。最好的方式当然就是参与标准的制定过程,你不一定需要实际提出建议,反馈新特性的实际使用情况也是一种参与。所以我把Web相关标准的制定流程和参与方式做一个总结。
JavaScript
相关术语
ECMAScript:JavaScript是ECMAScript的一种实现,除了JavaScript还有ActionScript等实现
ECMA-262:ECMA-262规范,就是ECMAScript语言的官方标准
ECMA TC39:ECMA第39号技术委员会,负责制定ECMAScript规范。TC39的成员有Microsoft、Google、Apple等浏览器厂商、此外还有jQuery、Intel等组织或公司,详细人员可以在这里查看
标准制定流程
ECMAScript每年发布一次新标准,每年新增的特性都会尽可能少(因为必须保证一年内能够完成)。常青浏览器配合标准每六周发布一次新版的加速JavaScript的进化。常青浏览器为
Microsoft Edge
Mozilla Firefox
Google Chrome
Opera
Apple Safari
一个新特性从提出到正式成为规范的一部分需要经过5个阶段
Stage 0:Strawman
说明:该阶段可以以任何方式提交推动ECMAScript发展的想法
进入条件:文档必须通过TC39会议审议,通过后将会放到Stage 0 Proposals页面
参与方式:任何人都可以在 https://github.com/tc39/ecma262提交pull request来提交新提议。注册成为ECMA贡献者以后能够以任何形式提交提议
Stage 1:Proposal
说明:对提议的正式建议
进入条件:
提供Polyfills和demos
指定一名TC39成员来负责该提议。
大概的问题的描述以及解决方案
使用方法的用例
高层级API
关于关键算法、抽象和语法的讨论
确定潜在问题,比如实现难度等等
Stage 2:draft
说明:阶段二会是标准的第一个版本。此时将会出现标准中的最终特性是差不多的。
进入条件:
前述的所有条件
提供两种实现方式,有一种可以是babel编译实现
初版的标准,有更规范化有关特性的语法和语义的说明(使用ECMAScript标准的正式语言)。
Stage 3:candidate
说明:此时提议已经接近完成,这个阶段需要得到实现方的反馈,以及用户使用的反馈。
进入条件:
提供两种实现(可以是实验性实现)与规范兼容
前述的所有条件。
完整的标准。
由ECMAScript标准的编辑以及TC39指派的审稿人审查通过并签字。
Stage 4:finished
说明:提议将被包括到下一个版本的标准当中
进入条件:
使用Test 262编写的单元测试来验证语言的特性
两个通过测试并且互相兼容的实现
重要的领域内实践经验。
需要订正:Significant in-the-field experience with shipping implementations, such as that provided by two independent VMs
将完整的规范文本提交pull request到tc39/ecma262、ECMAScript标准的编辑必须要签署上述pull request
其他
当前标准制定状态
TC39会维护一个列表,包含了当前正在制定中的新特性,可以在这里查看
标准的修订及日程
TC39委员会每年会在7月份向ECMA会议(ECMA General Assembly)提交标准来获得承认。一份新标准发布的大概时间线如下
2月1日:候选草案(Candidate Draft)发布
2月-3月:60天免版税时间的退出时间。
需要订正:60 day royalty-free opt-out period
3月TC39会议:第四阶段的提议被采纳,语法被确定并核准,新的标准将会重新从主干分支中分离,从这里开始只能作文字性的改动
4月到6月:ECMA CC 和ECMA会议审核
7月:ECMA会议批准新的标准
总结
JavaScript前所未有的繁荣。ECMAScript标准的制定过程也完全在Github上公开,使得公众能够参与进来。你还可以通过以下方式关注标准的制定过程
https://github.com/tc39,39号委员会的Github,所有标准制定的相关工作、讨论、会议记录均会公开在上面
https://mail.mozilla.org/listinfo/es-discuss,这个是mozilla组织中对ECMAScript的相关讨论的邮件列表