社区开源,死路一条(Pt.1)

我在过去经常极力避免打击开源社区协作者的积极性,开 issue 或者是留下评论时都尽量用最礼貌的修辞,避免冒犯到网线另一端的他/她/它。

但是在最近发生在我身边的一系列事件和对某些项目的近距离观察后,我觉得有些话该说的还是需要有人说出来。

纯粹以社区模式运行的开源项目,是不可能长久运作下去的。

每次一说到社区开源的好处,马上就有人搬出 Linux 内核,这个世上最成功的开源项目,来试图证明以社区驱动的开源项目是绝对可以成功的。

大错特错。

Linux 内核只有一个真正的主程序员,那就是 Linus Torvalds 本人,其他所有开发者都是属于 Linux 内核的贡献者,而 Linus 管理 Linux 内核项目的方式则是 Benevolent Dictator(仁慈的独裁者),即 Linus 握有项目的最终裁量权。

社区可以贡献建议,提交 patch,进行讨论,但也仅此而已。Linus 曾经因为与某几位贡献者在开发方向上的意见不合,就对其进行言语羞辱,直接或间接地导致后者退出了项目的开发。

当然了,因为开发方向意见不合就出言辱骂是非常不专业的行为,我并不认同 Linus 的这种行为,Linus 本人也在社区的建议下接受了情绪管理相关的心理询商,在那之后就没有再出现这种事件。

但是也是因为 Linus 对 Linux 内核项目所拥有的绝对控制,才能让这个项目走过20余年的岁月,依然维持着合理的代码质量,有着一个相对明确的开发方向和稳定的开发周期。

参与开源项目的人需要记住一点,开源社群不是民主社会,并不是每一个人都需要有他自己的意见,也不是每一个人的意见都要被考虑和采纳的。

某些开源项目社群中三天两头所出现的混乱和 “Drama” 的根本原因就是这个项目并没有一个领导者能够团结所有贡献者的意见,每个贡献者都觉得自己的想法才是对的,别人不同意肯定是因为别人的水平不行,无法理解自己的设计与实现。

这样的项目最后的结局往往要么是各位贡献者不欢而散,对项目失去了维护的兴趣,要么就是项目被持有不同意见的贡献者 hard fork,导致了社群的分裂。这样的例子在开源项目里面实在是太多太多,数不胜数,Linux 至今没有一个像样的,让大家都能接受的桌面环境,多少也是拜此所赐。

当然了在中文翻墙圈这个牛鬼蛇神出没的地方,还有一种结局就是“如果我写的东西没人用,那我就要确保别人写的东西用不了”,ShadowsocksR是如此,Xray也依然如此。Shadowsocks原作者的感受,我如今在年纪的增长后也慢慢地切身感受到了。对于这样的群体,我还能说什么呢,德匹下罢了。

值得一提的是,Zig语言也是使用的类似开发模式,这也是我对这个项目抱有信心的重要原因,我衷心希望他们能够有一天成为一个真正现代化的C语言替代品并得到广泛的应用,而不是让一群活动家把阿猫阿狗项目都用Rust重写(造轮子)。