这年头开放原始码软件越来越受到大家瞩目,各开源社交也蓬勃发展,然而如何维系一大群志愿者就是学问了,有的社交做得很成功,有的社交则否。Node.js 社交近年来一直有领导与治理的难题,继 3 年前技术选择的分裂(Io.js)再复合以后,8 月底又发生第二次大分裂,缘由为是否遵守社交行为守则。
Node.js 是近几年开源 Web 技术的重要领航者,数十家财星 500 大企业(如 Micorsoft、Netflix、PayPal 等)的关键基础架构和核心业务都仰赖 Node.js,该社交治理是否稳定不但是采用企业关注焦点,也攸关核心社交能否好好发展和推广,然而现在的 Node.js 显然不太稳。
这场大风暴,原因是 Node.js 基金会技术指导委员会(technical steering committee,TSC,负责该项目日常管理)的成员兼 TSC 前主席 Rod Vagg,近来在 github 与他私人 Twitter 有许多争议言论(包含可能侵犯他人、性骚扰),违反了该社交的行为准则,由于是领导阶层,言行可能代表基金会,更被放大检视。
于是在 8 月 21 日,TSC 举行一场投票来决定是否开除 Vagg。投票结果如何呢?该委员会共有 13 人,Vagg 本人不参加,两人弃权,6 人反对开除或要求他辞职,只有 4 人赞成,分别是 Anna Henningsen、Bryan Hughes、Myles Borins、Jeremiah Senkpiel,随后不久,这 4 个人包括该项目第一名女委员(Anna Henningsen),集体退出 TSC,TSC 顿时少了四分之一成员。此外,4 人中的 3 人保持留任核心技术委员会(core technical committee,CTC),Bryan Hughes 干脆离开了这项目。最终导致一群 Node.js 的人出走,分裂出 Ayo.js 项目。
更糟糕的是,事后 TSC 的一名成员把对 Vagg 的指控从投票事项的 Github#310 中移除,虽然目前被修改前的原文仍可以透过网页库存档浏览,但部分被指控的 github issue 事由原文已被删除,此举让人更感到厌恶。
怎么会这么严重呢?是什么样不适当的言论,导致 Node.js 社交严重分裂?
不当言论有言论自由吗?
让我们先看看 Vagg 方面。虽然他拒绝接受记者采访有关他在诸多发文中冒犯社交其他成员的事迹有多严重,发布在 Twitter 或 Github 相关言论也可能有删改,不过我们可以看看他在 Twitter 的理论──技术项目的行为准则,要求大家言行要完完全全“干净”不可能,过于政治洁癖的社交行为准则比起“不当”言论更伤害一个项目。
他的 Twitter 甚至援引了这篇论文为自己的行为辩解,该文是讲对科学发展而言,彻底的言论自由胜过政治正确。比如说对数学、物理学有很大贡献的科学家牛顿来说,他其实有精神病──强迫症、偏执狂、亚斯伯格症状、精神躁郁症,甚至还有严重的口吃。试想如果他待的大学实施现代言论守则,很有可能就因为他疾病导致的随意口出脏话、对他人易有攻击性言论,就失去大学教职,无法做出对日后科学发展的重大贡献了。
再来我们听听反 Vagg 方的说法。其中,任职于 Google 的 Google Cloud Platform 之 Node.js 开发大使 Myles Borins 在他的网志表示:“这个决议破坏了我们的社交守则,赶跑了潜在的贡献者,依我个人观点来看,此举也破坏了这个委员会的治理能力。”服务于 Microsoft 的 Byran Hughes 则在他的网志解释他为何离开这个项目,他是这样看 Vagg 的行为:“我不相信 Vagg 是故意的,或说他是古典定义的坏人。 相反地,他的不良行为源于无知和不愿意学习。”然而 TSC 诸多成员除了一再告诫,不愿意果断解决这个问题,甚至还有人认为这根本没有问题而护短。搞到最后,Hughes 觉得自己为 Node.js 付出两年多已经“burn out”(开源社交用来描述精力燃烧殆尽),干脆所有委员会统统辞一辞,彻底退出。这边留意一点,这两位辞职的人算是各自代表 Google、Microsoft 两大资讯公司,后续是否造成企业不再信赖 Node.js 则有待观察。
归纳起来,Vagg 认为社交行为守则有潜在的缺点──如果因为不当言论把卓越科技人士开除,是社交的损失,这是妨害言论自由;反 Vagg 方则认为,维系社交的健康最重要,像 Vagg 这样不断失言的人,会让风气变糟,吓跑既有与潜在贡献者,而广大的贡献者对开源项目非常非常地重要。
Node.js 的沉疴与亡羊补牢
很多人以为未能将 Vagg 拉下 TSC,视之为多年来杜绝破坏社交行为的改革失败。
“如果有人好好从 comment 留言举报确切的罪行事证,或是一些明显牵扯种族、性别发挥的不当言论,这样事情早就结束了。”Node.js 董事会两席新选上的董事之一 William Kapke 如此表示,他的职责是监督 3 个委员会。
尽管投票结果还是让 Rod Vagg 待在 TSC 委员会,执行董事 Mark Hinkle 公开声明表示,董事会对此“深感关切”,要求 TSC 暂停 Vagg 的职权直到情况得到解决。董事会也特别呼吁 TSC:“平等要求社交成员、协作者、领导层遵守行为准则。”
另一位刚当选的新董事 Ashley Williams 则表示:“这不是单一事件,这是一个长期存在、有模式可循的违规行为。”她以个人的身份而不是董事会表示:“Rod 的行为是不合作,始终如一地毫无歉意。这是一个系统性的领导失败,而 Rod 就是最突出的例子之一。”
行为准则并不允许扼杀言论自由或边缘化任何人的看法或意见(包含“我不同意你,但是我誓死捍卫你说话的权力”),旨在汇集来自世界各地的不同文化、信仰、性别和背景的不同人群,这是任何全球开源协作项目的核心价值。
然而 Node.js 治理中的毒素文化导致包容性问题。Williams 过去曾组织了一个约十几个人的包容性小组,该小组旨在确保每位想贡献社交的人都能被公平对待。然而该小组最终解散了,除了指责领导者“持续脱轨”,该小组认为会使社区更有凝聚力的建议也都被反对,这导致所有女性和第三性包含几位男性参与者,都在去年 8 月解散后随即离开这个小组,甚至许多人决定完全离开 Node.js 社交。
也就是说,不是单单 TSC 投票支持 Vagg 一个人就导致社交大分裂,此事件只是压垮骆驼的最后一根稻草。Kapke 说,TSC 的成员无法从组织宏观角度看一个成员的失序行为,导致系统性的信任崩溃;Williams 则认为 TSC 已经失能了。
TSC 主席 James Snell 已提出将 CTC 和 TSC 合并的方案,并举行新选举,包括选新主席和委员。另外还有一项建议──委员将有任期,监督两委员会的董事会表示可能在即将举行的董事会上接受此建议。
Williams 说,合并这两个委员会将增加委员会的多样性,更促成“根本上由社交驱动”的生态系统。但其他人则不乐观。Kapke 说,合并委员会最多只是“辅助方案”,除非确保更能组织好各委员会,这样才不会发生忽视行为准则的错误。
Ayo.js 的启示:开源项目不能黑箱
就在投票后的同一周,Kat Marchán 按下 fork 按钮,从 Note.js 分支出 Ayo.js 项目。Ayo 发音同字母 IO,纪念 3 年前从 Node.js 分裂出的 Io.js。Marchán 表示,已经有十几名开发人员和一百多人参与该项目的聊天室;短短数周,Github 项目页也已经有 1,502 名贡献者。
Marchán 说:“如果少数掌握权力的人可以阻止社交做该做的事,那么他们就不再代表我们了。”该项目虽然还在起步阶段,但已经在研议一种新的开放治理模式,以避免在 Node.js 发生的不良状况。
Ayo.js 的创立事件,已被视为对开源技术的提醒──必须透明、开放。如果社交在基金会没有代表或社交的声音不被聆听,那就可以分支出去,创造自己的项目。
Williams 说:“Ayo.js 不是开来摧毁 Node.js 或杀死 Node.js 的,而是要让 Node.js 更好。对那些看到 Node.js 治理失败、愤而离去的人们来说,还有这个归宿,其实可能更好。” (不过 Williams 没有参与,因为她在 Node.js 基金会仍有职位)。
分裂成两个项目想必震惊了许多人,并对 Node.js 的未来感到不安。但是,Marchán 和其他人并不关心。如果 Ayo.js 有一天成功了,那会被看做是 Node.js 的成功──就像当初 Io.js 分裂出去还做得很成功,使它后来又被并回 Node.js 一样。
“从长远来看,我认为社交赢了。”Marchán 说。
冰冻三尺非一日之寒,Node.js 基金会走到目前这样的状况,可得花一番努力改革了。
(首图来源:Flickr/theilr CC BY 2.0)