1980 年代,正统的标准化世界都站在 OSI(开放系统互连)一边——这是由国际 ISO 流程产出的、规格完备的协议套件。它背后是欧洲电信垄断企业和大多数政府,各国法律要求采购 OSI 设备,而且它也是最理性的选择:完整、严谨、由委员会事先定好。互联网的 TCP/IP 是黑马——只由一群自治的志愿者社区定义,没有授权、没有投票资格、在任何一个官方机构里都没有席位。

按标准机构的规则正面较量,是赢不了的。OSI 有选票、有官方地位、有采购强制令;TCP/IP 几乎一样都没有。无论是比合法性、比代表性还是比官僚地位,任何委员会式的裁决都会在第一个实现落地之前,就把赛场判给 ISO。

互联网工程师没有在自己赢不了的正式阵地上去和 OSI 争,而是干脆拒绝投票。到 1992 年,IETF 已经把一条治理原则挑明了——David Clark 在那年的演讲里给它命名:「我们拒绝国王、总统和投票。我们相信粗略共识和正在运行的代码。」一个标准是否定案,不看是或否的投票,而看有没有足够多的人真的把它建出来并跑起来——仲裁者是现场跑着的代码,不是会议室里的代表人数。

IETF 不投票,用「rough consensus and running code」定标准:谁已经在跑,谁就赢,合法性追着能跑的代码走。

粗略共识和运行代码之所以奏效,是因为它把裁决从挑战方赢不了的场子(官方委员会、采购强制令、投票)挪到它占优的场子(已经铺开在成千上万网络上的可用实现)。

正式标准要到发布那天才算完成,所以它永远可以「还没做完」;运行代码哪一刻被证明能用,哪一刻就算完成,所以在对手还在定义规格时,它就已经靠被采纳而赢得认可。

关键是这套机制会自我强化:每新增一次 TCP/IP 部署本身就是一个「投票」,标准因此只朝一个方向累积;而正式标准自身的复杂度(OSI 的完备性害了它——太多要完成、太少在跑)从优点变成了负担。

当两个候选标准在组织、联盟或市场内部僵持不下时,别用权威、资历或正式投票去裁定。直接宣布:哪个候选已经在现场存在、能跑、能用的实现,哪个就赢,让这个来决定未来方向。认真的人都去适应跑着的那个,阻挠者失去否决权,选择也不再是一场谁也赢不了的政治角逐。

OSI 败在太复杂、能跑的代码太少。TCP/IP 虽然松散,却已经在成千上万个互连网络上跑着,所以它靠被采纳而非靠任何投票,一路赢得认可。到 1990 年代中期,TCP/IP 成了占主导的互联网协议套件,而官方青睐的 OSI 悄悄输掉了这场战争。 粗略共识和运行代码赢下的不止一场战役——它成了互联网标准化的主导准则,从 IETF 带进 W3C,也带进了此后绝大多数开放协作流程。这套机制比最初证明它的那些具体协议活得更久。

从这里,追溯依据

参考来源

  1. IEEE Annals of the History of Computing — 'Rough Consensus and Running Code' and the Internet-OSI Standards War (A.L. Russell) IEEE · doi.org
  2. Computer History Museum — Networking revolution: the protocol wars Computer History Museum · computerhistory.org