我们赖以生存的互联网标准是如何制定的

如今是网络已经成为我们生活的一部分,可以说没有网络就没有生活。我曾经也很怀疑自己这个论断,在这个年代难道山沟沟里的人就没有生活了吗?后来有一次我去到一处穷乡僻壤,无意中看到了“村村通”的成果,电话、网络等在山沟里也是可以通到的,淘宝等电商在山沟里也是能享受到的,只不过物流没有那么完美,只能在村里设置个商铺作为接收点,然后买家自己过来拿。所以我越发坚信自己这个论断,即便互联网尚未100%覆盖这个世界,它也已经是我们生活的一部分了。

既然互联网已经成为了我们生活必备的基础设施,那么它的各项标准是如何被制定出来的呢?作为W3C的受邀专家(Invited Expert,简称IE),我就来聊一聊互联网标准是怎么制定的。

W3C和IETF有什么区别?

谈到互联网标准,很多人可能搞不清楚W3C和IETF的区别,这是两个常见的平行的标准体系。W3C最典型的输出就是HTML5标准,而IETF则是那一大堆RFC打头的标准。

但是这两套体系不是对立的,也不存在高下之分,我们来举个例子说明下二者之间的关系。

比如说,Websocket标准(RFC 6455),就属于IETF体系;而W3C同样有一个Websocket API标准, 在这个标准中很明确地表示它与RFC 6455是关联标准。因为Websocket API主要是在Web前端被Javascript或者WebAssembly所调用,而后端的Web框架需要考虑的是RFC 6455的实现细节,两者共同作用才能完成Websocket的应用开发。

那么是不是W3C和IETF就是绝对意义上的前端和后端标准的差别呢?其实也不尽然,因为Websocket API是要浏览器具体实现的,很明显浏览器为了实现它必须得考虑RFC 6455的具体细节。

当然大部分情况下这么理解好像也没什么太大问题:W3C主要还是侧重于Web端,包括HTML5、CSS3、音频视频、字体标准等等;IETF主要被后端框架所考虑。

从产品体验来区分貌似也是一种办法,比如W3C侧重于产品能被用户直接感知到的那部分,而IETF侧重于用户不感兴趣,但对公司业务真正有价值的那部分。

除此之外,IETF真正体现了互联网开放的特点,任何人都可以提出自己的RFC(Request for Comments)并最终推动成为标准。IETF并不存在真正的会员制度,任何人都可以申请加入并参与。

而W3C是有门槛的,它的参与者分为会员(Member)和受邀专家(Invited Expert)。会员一般是业内大公司派驻的代表,并且必须要缴纳会员费,根据地区和公司规模不同每年要缴纳几千美元到上万欧元不等。而受邀专家无需缴纳任何费用,但是需要被邀请。

互联网标准是不是非遵循不可?

这其实是许多人心里不好说出来的疑问:凭什么你们这群人我都不认识,坐在那里定个标准咱就得遵循了?如果您有这样的疑问,听我把道理讲了就不会抵触了。

首先,制定互联网标准主要还是为了给从业者降低成本的,不是来收保护费的。这点跟USB标准、蓝牙标准那些不一样,那些其实就是大厂和财团合伙弄个圈子,然后收保护费,美其名曰授权费。互联网标准是不收授权费的,刚才也说了,IETF也是完全开放无门槛的;W3C虽然收公司的会员费,但对于不想参与制定标准的公司或个人,不交会费跟你能不能靠HTML5赚钱没关系。另一方面,这个标准的制定是很有技术含量的,要综合商业、技术、法规等等各种因素,并且是全球化合作,最后制定出来大家拿着用必须是靠谱的,这种针对专业素养的信任才是标准化的基石。

如果一个团队新开一家互联网公司就要自己定标准,那就不用等着产品上市了,肯定完蛋了。

假如我就是很有个性、不差钱,我就不遵守这些标准,又怎么样呢?虽然这个世界上一般情况下没有这么傻的土豪,但就当闲聊好了,假定就有这么一傻瓜,我们来看看这家公司会遭遇什么问题。第一个遇到的问题就是你的产品跟产业链条上的东西不匹配,不遵守W3C标准,那么就无法让用户使用主流浏览器,好吧,假定老板很有钱,手下一帮牛人,重新搞一浏览器并且烧钱提升用户装机量,还是可以解决,谷歌当年就这么干的;不遵守IETF,那么现成的Web框架就用不了,老板有钱重新重金打造一个,也可以。经常有一句话说,用钱能解决的问题就不是问题。以上两个解决方案,就是能用钱解决的极限了。剩下的是用钱解决不了的问题,那就是耗时间的问题。烧钱买用户貌似可以缩短占领市场的时间,但是要知道你的竞争对手可不是死人,在你还在自己研究标准的时候人家产品早上市完成第一轮验证了。而任何标准一开始都有非常多的问题,在最终定型公布之前,会有多年的测试和研讨,这些都是烧钱也缩不短的时间成本。

所以结论很简单,任何想要认真做产品的人,都不会反对标准给自己找不痛快。更何况制定标准所需的高额成本,都由大厂的研发预算和不拿钱的第三方独立专家帮你扛了。脑子清醒的人会明白,尊重互联网标准就是尊重自己有限的精力;脑子清醒的老板也会明白,尊重标准就是尊重自己手里的钱。

这些标准究竟是怎么制定出来的?

由于我更为熟悉W3C的流程,在这里我只聊W3C。

为了避免加入过多细节,我在这里简单介绍下组织架构,主要包括两种类型的小组来运作:工作组(work group),和兴趣组(interest group)。工作组是针对已经成型有方法论的议题,比如WebAuth,已经在制定许多细节和API了,比较正式地进行标准化运作了;兴趣组针对那些暂时还没成型的议题,比如我所在的隐私兴趣组(Privacy Interest Group,简称PING),更多地是搜集意见,大量讨论,研究其他议题的内容,想办法去构建方法论。如果有一天我们这套东西都搞得差不多了,就会转化成工作组,比较正式地进行标准的制定。但是现在还不行,一个很实在的问题,就是“隐私”这个概念我们现在都还没找出一个令人满意的标准定义来。

这听起来好像PING这样的兴趣组其实没什么影响力啊?

虽然PING尚未准备得非常充分,但是今年6月份进行投票的一份流程整改方案赋予了PING相当大的权力:1、 任何提案都必须通过PING的审核;2、PING在必要的时候有类似一票否决的权力。

在25个投票会员当中只有谷歌投了反对票,目前内部还在讨论中,其中的一个看法是:如果W3C发布一个标准连自己的隐私保护小组都无法认可的话,上了头条可不好看。

投票结束后,谷歌在8月份发起了一份正式反对案(Formal Objection),更多的细节超出了本文范围,有兴趣的朋友可以看彭博社的报道。个人不太喜欢彭博社,之前报道中国出产的主板埋后门事件缺乏证据,后来一直就没给个说法。这篇报道还算比较客观,值得一读。

但是不管怎样,W3C对于隐私保护已经是表现得非常严肃了

回到正题,PING如何开展工作呢?流程说起来简单,做起来工作量不小。就拿最近的一个案例来说,比如WebAudio的一个提案上来,整个标准细节全部都列好了,要审核隐私问题只能一点点把里面的东西全部搞清楚,然后才能跟人家沟通隐私上可能存在的问题。到了这个层面,大家技术水平都不差,不可能对人家的工作不了解就做评价,否则会降低自己的credit。PING这边不通过就只能打回去再提交,下次再提交时对方需要把上次所有相关的问题全部列上去以及整改回复,以期尽快通过审核。

总之整个标准制定和评审的流程非常冗长,可能要很多年,其间多有反复,但大家都是不厌其烦的,因为一旦搞错了,成本就远比这样细致的审核更高了。

后记

作为一篇科普文,我尽量省略了细节,技术名词也尽可能少。

写这篇文章的目的,除了科普一下互联网标准化方面的常识,也是想告诉大家,科技大厂的权力不是没有制约的。技术权力的扩张和反制,这样的一个元循环,才给互联网带来了活力和不断改进的机会。当然,标准的制定也是一门妥协的艺术,毕竟标准如果太严苛,企业即便想说爱你也不容易。不过相比一开始就想着妥协,我更愿意一开始就走极端,宁愿最后被迫妥协,这样的策略才有机会把自己所坚持的理念更多地推进一步。