W3C

Web 中文兴趣组会议

2022年9月6日

题目:国际 Web 标准参与历程思考

讲者:Hax [演示文稿]

现场纪要

Hax:

今天给大家讲一点最近这些年参与一点标准的一些历程和思考。非常简单。

其实,我从1998年开始写代码,我主要做Web前端和JS方面的工作。最早和W3C有一点关系,大家知道做Web前端,最早的标准都是基于W3C标准,[多媒体演示]这是我在网上找到2003年W3C第一次到中国在北京的一个会议,我找了一下老照片,第一排应该有一些W3C。我在第二排最右边。

那时候还很年轻,已经不太像了。

后来,HTML5 Chinese IG,就是Chinese Web IG前身,我自己参与一些标准,有那么一点点小贡献。

我也参加过几次W3C的TPAC会议。我觉得中间有一个发展过程,从最早我只是一个Web标准的使用者,逐渐变成有么一点参与,可能会参与具体标准提一些需求,后面可能会变成一个设计者。后来我在W3C的参与不是特别多,最近几年,我主要是参与JS方面的工作比较多了,2019年作为360集团的TC39代表去做了这方面的工作。

JS 是世界最流行的编程语言,据统计有1600万开发者,中国据统计有超过100万的开发者。

这个语言出现很早了,实际上它也是Web标准的一部分,但它在编程语言里是比较特殊的。因为编程语言作为一个标准,其实比较少编程语言是这样。

1996年它进行了标准化,它不是在W3C进行标准化,它是在ECMA国际。我记得有一些原因,当时W3C有一些顾虑,觉得网页本身到底要不要依赖很多脚本,所以就没有在W3C,可能还有一个原因就是ECMA国际标准化组织有到ISO的快速通道,所以当时就选择了到ECMA标准化。

虽然没有在W3C,但JS和Web关系还是密切,我们发现Web标准里有大量的API,如果是比较早的API,其实都不是Promise,但现在的标准都是基于Promise,这就是语言底层API一些东西发生变化之后,可能会影响其他的标准。再比方说下面还有一些例子,时间所限就不举了。

最下面Module是一个模块机制,真正要落实和一系列标准都有关系,比如在Web标准里,一系列标准都有之后才能在工程当中用起来,所以它有一整个标准站。

那中国公司和社区方面的参与,我觉得W3C还是比较好,中国到现在已经有很多公司在参与了,而且也比较早,很早就有公司参与。JS就比较差,JS到现在二十多年了,一直没有太多中国公司参与,可能有一个重要原因它不在W3C,后来我觉得自己要参与一下。

我自己对JS的参与是2006年开始,那时候就是在邮件列表了,多数是观察情况,在中国的社区里主要是把标准的进展和大家分享一下,实际参与比较少。一直到2016年,到2018年底,我一直观察下来觉得W3C参与了很多新的标准,很好,但是在JS方面就是欠缺,所以我做了一些努力,游说了一些国内公司。

这里牵涉到一个问题,为什么企业要参与呢?我解决不了,这可能是比较重要问题。

从我个人来讲,我之前个人这么参与也可以,为什么要让公司参与呢?就是有一个问题,标准是以公司和组织与,个人身份参与会遇到很多问题、很多障碍,比如专业度、代表性,就算比较专业,但是否有组就的代表性,这是很大的问题。所以,贡献是零散的,很多时候是很被动的。

一个很大的问题就是只能提供反馈,比如有一些use case可以提供,这就是我们参与时候遇到的很大问题。

所以,理想上面要让个人的专业能力和组织的技术战略结合起来,才能真正的参与到标准。2019年,360成为了ECMA国际会员,加入TC39,算是中国第一家,2019年12月华为、阿里巴巴、sujitech也参与了,年底字节等都参与了。

TC39就是参加讨论会,下个会议是在下周。

到目前为止已经有很多JS TI是由中国的代表提出的,分别是ES2022,也就是今年6月份发布的,Error Cause是阿里巴巴主导的,还有一个没有赶上2022,会在明年的标准,严格讲应该算是美国公司,是微软,但是微软中国的员工做的,在中国社区里做了很多共同的讨论的提案。

还有很多在进行当中的提案,这些是我个人作为作者提出的提案,还有其他的。提案还是很多,成果还是很多。

如果现在看比例,差不多有15%的提案是中国代表主导的,当然,这里面还有很多问题。虽然我们做了这些事情,但真正的参与者还是很少。现在落实到人就是四个人,也有其他人,但是作为提案主导者就是这样四个人。

而且比较遗憾,王文路已经离开了微软中国,所以不能参与。

刚才是个人的深度参与,在国内主要是阿里巴巴,我看到负责阿里巴巴TC39的负责人也在。

华为和腾讯虽然是TC39的成员,但参与不多,字节也在不定期观察。我离开360之后,360基本没有参与了,比较遗憾。

我自己感觉这里面可能有很多问题,总结下来就是四个方面的问题:一是英语的能力,我自己英语也不大好,我觉得英语能力努力一下还能改一改,但时区的问题确实比较讨厌了,因为大量会议都是在中国半夜开,TC39的会议8次有6次都是在中国的0点、2点甚至有4点开始的会议,就非常困难。

还有一些问题,我觉得更多的像意愿、能力的问题、意愿问题,国内发言也挺多,但真正有代表性的比较少,因为会议时间比较少,大家会觉得自己是不是听不懂或者讲不清楚,可能有一些中国文化的因素,感觉中国的工程师都比较害羞,其实会议上会有非常激烈的argue,但我们的文化都比较客气。还有一些更加复杂的因素,我列各种各样的因素,比如技术本身很复杂,有很多的历史包袱和金融形的要求,还有一些问题,因为JS不仅在Web里应,还有load,还有IoT设备、边缘计算的场景,不同的场景有时候需求有冲突。还有是涉及到标准组织也有一些问题,不同的标准组织,像W3C、Web WG、ECMA等其他标准组织,东西很复杂,普通工程师根本搞不清楚哪个部分在哪个标准组织,就算我在标准委员会,有很多东西有很难讲,如果问我哪个东西归在哪个标准组织也很难讲。

还有一个参与问题,国内公司对这方面的组织还是有些问题,包括给予工程师的时间,我们知道国内的业务都很繁忙,时间上确实有点问题。还有绩效,参与了怎么算绩效呢?等等原因都造成了参与的原因,也就是说我们发现了一些问题,但没有办法让提案变成标准,我列了一些原因,具体就不阐述了,反正会遇到一些问题。

原来我不在标准组织里,觉得这些问题解决不了情有可原,我到了标准组织发现还是解决不了,就非常打击人。

为什么会这样呢?引擎厂商也是有一些矛盾,确实有一些这样的问题,还有代表有自己的偏好和倾向性,但他能不能跳出个人的偏好和倾向性也很重要。

其实到标准化情绪会发生一些变化,不是说它是对的,而是要把提案推进下去,要优先满足委员会代表的倾向性,如果有人不喜欢,就要砍掉,可能各个标准组织多多少少都有这样的一些问题。归根到底就是人和制度的问题。

可能还有TC39的特殊问题,和W3C的区别,TC39优先是书面,这个规则比较特殊。结合我前面讲的作为中国参与,有一些限制,时区、语言可能会把这个问题放大。

包括国际化和包容性、对社区的尊重,我自己感觉W3C做得比较好,ECMA TC39有点欠缺。反正,这些大概就是我的一些感受,不是很系统,如果总结一句话,提升中国对标准化的参与,要多方面共同努力,公司、标准化组织要不断努力。

我的分享就到这里!我还有更多的一些思考,在目前的大环境下的一些问题。这些资料都是公开的,在计算机学会的论坛讲过。谢谢!

主持人:谢谢Hax。Hax提到很多深此的原因,我有一个感同,个人参加是参加,组织参加是引领,这有特别典型的案子,19年开始阿里、百度、腾讯、小米等牵头在W3C做的小程序,这是我们自己牵头孵化的标准,这是Hax说的,以前个人无法实现的。从立项到文档开发,整个过程都比较艰难,这应该是组织的力量。我们看看现场和线上的问题。大家的问题很激烈!

提问:华为子韬。华为是作为ECMA的会员,参与热度不够,现在我确实接到很多新的需求讨论这个问题,但我在学习,看ECMA标准的过程中,也有一些关于标准的界定问题。尤其是现在有一些特别新的需求,比如我们有一些类似于做申明式的语言,这种框架对原有的Java Script有一些颠覆式的讨论,还有一些关于UI的设计,专门UI的领域,也不好界定。所以,有些程度上不是很清楚能否直接拿出去讨论,所以,在此之前是否有一些标准前期孵化的组织可以进行讨论?

Hax:如果前期的讨论,现在中国代表以及其他的有做一个JS CIG的组织,在Github上,有一个相对定期的会议,每个月有一个会议,如果有需求可以先拿到会议上讨论。具体到您提到的申明式框架需要对语言进行改进,依我对TC39的了解很困难,确实很困难,有些东西很难做。后面你讲到语法行的问题,这非常麻烦,因为TC39总体上有一些代表对于语法的门槛非常高,所以也可以理解,有关浏览器厂商来讲是成本,要证明它有足够大的价值,怎么证明呢?这就涉及到很多argue的东西。目前TC39有很多有争议的提案都和语法有关,所以这个东西确实比较困难。我觉得还是可以努力一下。如果华为这边有兴趣的话,我们可以下面再沟通一下。

提问:有兴趣,争取我成为第5个比较活跃的会员。

Hax:太好了!

提问:我比较有兴趣的是代表性的问题,你说在TC39里,代表性不管是代表公司还是代表开发者,有没有比较好的故事?他们用什么方法说明他们可以代表更多人?比如公众投票或者其他方法?

Hax:这就比较麻烦,有些代表就比较麻烦,比如有些为了证明某个东西,会在Twitter上发起投票,会受到挑战。我觉得代表性的问题是你会发现在TC39里有些代表是很明显的,比如浏览器厂商的代表,它的代表性非常确定,代表的是引擎,引擎是代表实现者,实现者在这里面有一些实现者的看法;还有语言的研究者,还有大框架的代表,以前Facebook参与比较多,可能会有代表,会有代表性在里面。还有像微软在里面,它可能是tap script团队,它就会代表社区的声音。但是谁代表开发者?其实没有人敢说自己是代表开发者,其实我在里面做的很多东西是希望自己代表开发者,但怎么证明自己代表开发者?而且开发者和开发者之间,根据领域不同,需求不同,所以开发者和开发者之间也有矛盾。虽然引擎厂商之间有矛盾,但是通常情况下,实现者的角度比方说他们认为某个东西有问题,通常是可以达成一致的。因为里面背后的原因是非常一致的。但是,开发者非常困难,比如Web的开发者和load的开发者或者做IoT的开发者,可能自己先打起来了,这就是我说代表性是很困难的问题。

提问:我想请问一下,听您讲这些协作问题,包括一些投票之类的,Web3呢?不知道你有没有了解过DAO组织?因为这里面大家是拥有治理权的,比如你作为一个builder发起者,把治理权给各大机构,像华为、字节这样的机构,让这些机构拥有治理权,每个厂家都进行投票,有个提案之类的,超过51%就可以执行?不知道你对DAO有没有了解?感觉挺符合你现在的困境?

Hax:因为我比较简短,没有把很多问题描述清楚。其实,TC39的工作方式主要还是追求一致性,要一致同意。理论上讲,只要有一个代表投反对票,就是不能通过的。当然本身这个机制有很多问题,由于时间所限,我们私下可以交流,这涉及很多问题。因为我本人也是做技术,本身不懂这方面的东西,但是经过这么多年,我也观察到一些问题。它是否通过更好的机制改变呢?我相信是有办法的,但这里面主要的问题是就算要改变它的机制,本身也是要在现有机制里先要达成共同一致,这是一个死循环。我们可以私下再较。如果你有非常好的东西,我也想了解,只是我在里面的作用也比较有限。


返回[会议总结页面]获取其他话题的会议纪要。

若您对上述内容有任何疑问或需进一步协助,请联系:讲者 Hax <johnhax.net> 或会议主办方 W3C 北航总部 <team-beihang-events@w3.org>。