当前位置: 首页 > 科技观察

社区争论不断:为什么程序员刁难程序员

时间:2023-03-21 02:00:02 科技观察

前几天,Swift之父因为受到很多人的辱骂和辱骂,正式退出Swift核心团队。这样的“语言暴力”、“网络暴力”事件在开源社区乃至整个IT界屡见不鲜。在很多技术社区中,创始人、重要的维护者、贡献者都因为觉得“社区氛围不好”、“受伤”而宣布退出。更有什者,一些科技公司的领导被曝光,叫嚣让80后退出IT圈。后者大致可以说是领导太偏激了,属于少数情况,就不过多讨论了。但是在开源圈子里,为什么会这样呢?为了回答这个问题,本文梳理了一些过往的社区纠纷,发现很多冲突发生在社区的实际管理者/层级之间,社区贡献者和参与者之间。双方的不满大致可以归纳为几类原因。难以认同从大教堂的开发模式转变为集市的开发模式后,技术社区存在的目的就是凝聚大家的力量,把项目做的更好。在集市模式下,开源社区给予个人很大程度的自由,所有贡献者都可以畅所欲言,表达自己的想法,为项目做出贡献。随之而来的问题就是如何协调大家的意见。小区的管理模式也在一定程度上决定了以后小区发生争吵的风险。目前的开源社区管理主要分为四种模式。一种是由社区主导,采用免费贡献模式。“共识”是其前提。功能开发、版本发布等重要决策均基于社区共识。二是公司主导,公司会资助社区和软件的发展。相对而言,公司将拥有更多实权。三是BDFL的仁慈独裁者模式,基于社区模式。社区中有一个“独裁者”,对一些重要的决定拥有最终决定权,而不是依赖于社区共识。四是精英治理。在社区中表现突出和贡献最大的人被任命为管理团队,并通过投票做出决定。我们常见的纠纷,往往可以归纳为“当权者”与“贡献者”之间的纠纷。这种争论更可能出现在“仁慈的独裁者”模式的开源社区。在其他三种模式中,很多争议都是因为实际的管理团队没有发挥好作用。当权者的不满世界知名的大型开源项目,往往出自“天才程序员”之手。早期的开源社区普遍处于“仁慈的独裁者”模式,独裁者受到崇拜,比如Linux社区的Linus、Ubuntu社区、Python社区。然而,天才似乎更愿意独自战斗。对贡献不满意Linus对不符合他个人标准的代码的评价非常恶毒。曾有网友引用Linus之前在邮件列表公开的回复,指出Linus在人际交往中态度恶劣:“这也是BUG?你做内核维护者多久了?还没学会内核维护然而?”第一条规则?我不想收到这种明显的垃圾,像个白痴一样提交……”对于一直不爽的英特尔,Linus也谈到了他提交的代码。2018年初,为了修复Spectre漏洞之后,Intel工程师为间接分支限制推测(IBRS)功能提供了补丁,Linus在邮件列表中公开指出IBRS会导致系统性能大幅下降,并直言该补丁“完全是垃圾”。Linus,也是提倡“精英主义”的BSD社区中一个明显的“蔑视链”。编写BSD第一版的BillJoy不愿相信大量的志愿贡献者,他说:“大多数人都很糟糕程序员,让很多人盯着代码,并没有真正发现错误。真正的错误是由一些非常聪明的人发现的。大多数人看代码什么都看不到……你不能指望成千上万的人做出贡献并且都达到高标准。”这种看法一直存在于BSD之后的开发中,MarshallKirkMcKusick,FreeBSD的深度参与者曾经说过committer贡献的代码90%无法使用,剩下的小部分也需要打磨。Python社区遭遇信任危机,Python之父GuidovanRossum一直是最权威的多年来,他也被社区授予“终身仁慈独裁者”的称号。但在2018年Python社区讨论改进建议时,Guido发现“现在有很多人鄙视我的决定”。因此,他不想再为PEP(PythonImprovementProposal)[PEP572]而战,决定逐渐脱离决策层,不再领导Python的开发,而是作为一个休息一段时间后的普通核心开发人员。有时,“仁慈的独裁者”也被指责为“不作为”。Ubuntu创始人MarkShuttleworth在社区中被昵称为“自封的仁慈独裁者”。事实上,早期的Ubuntu社区确实是一种“仁慈的独裁者”的管理模式。然而,当Ubuntu社区蓬勃发展,各项业务步入正轨时,MarkShuttleworth的工作却逐渐与开发者拉开了距离。JonoBacon等早期在Ubuntu社区享有盛誉的核心成员相继离开。MarkShuttleworth也离开了很少活跃在社区中。渐渐地,一些资深的Ubuntu开发者认为社区正面临着“群龙无首”的尴尬局面,指责Shuttleworth没有尽到“BDFL”的责任。一位前Ubuntu开发者在Ubuntu社区留言指责MarkShuttleworth作为BDFL“抛弃社区,对社区治理的崩溃保持沉默”,令人失望。MarkShuttleworth也勇于承担责任,承认自己在这些方面做得不够好,表达了自己的“挫败感”。不回馈开源项目最不满的一点就是“白嫖”。很多开源项目都是靠作者的爱心发电,社区的吸收大于反馈,导致软件作者身心疲惫。前段时间发生了轰轰烈烈的ApacheLog4j2高危漏洞事件。攻击者可以利用其JNDI注入漏洞远程执行代码,影响了很多项目和公司。这件事也给Log4j2的作者带来了关注和批评。Log4j2的维护者之一@VolkanYaz?c?在Twitter上抱怨道:Log4j2的维护者寥寥无几,而且他们都是免费自愿工作的。没有人付钱或提交代码解决问题,出了问题一堆人在仓库留言骂。此前,PhantomJS的核心开发者之一VitalySlobodin宣布辞去维护者一职,不再维护该项目。原因是一个人太累了无法发电:“我看不到PhantomJS的未来。作为一个开发PhantomJS2和2.5的开发者,这真是一场血腥的地狱。即使有了新的、闪亮的新QtWebKit最近发布的2.5Beta,我还不能真正支持3个平台,我们没有其他势力的支持!”贡献者不满当社区随着项目生命周期的发展而逐渐发生变化时,流程和规则的变化在所难免,贡献者之间交流的氛围也在不断变化。贡献者对社区的不满往往始于社区的变化……一位Debian软件包维护者Stapelberg在2019年写了一篇长文,宣布他将退出Debian开发进程,并逐渐减少参与Debian维护和相关活动。主要原因是他发现Debian中整个开发评估过程非常缓慢。比如补丁评估没有截止日期,有时会通知他几年前提交的补丁现在已经合并了。部分Debian维护者出于个人喜好拒绝合作,维护者给予的人身自由对Debian造成了严重影响。当他对Debian的开发过程感到沮丧时,他放弃了并写了一些文章希望能激发Debian的变革。在LLVM社区,2018年一位名叫RafaelAviladeEspindola的高级开发人员(在LLVM编译器贡献中排名第五)发送了一封电子邮件,宣布他决定与该项目分道扬镳。原因是这几年感觉变了,LLVM变大变慢了,他不认同LLVM最近出台的社区行为规范。真正促使他做出决定的是LLVM与Outreachy的合作,Outreachy是一个公然基于性别和出身进行歧视的组织,这让他非常不高兴。此外,一些由企业主导的开源项目也会因为发展战略的改变而引起不满。从2021年1月开始,Qt公司将使Qt5.15成为仅限商业的LTS。Qt5.15的现有分支将公开可见,但不会看到任何新补丁。只有付费帐户才能使用Qt5.15的长期支持版本。此举引起了社区的强烈不满,也引起了基于Qt开发的KDE社区的关注。一位用户在Qt官方公告下讽刺地评论道:“所以,基本上你是在告诉所有忠实的开源用户,现在他们将只被视为商业客户的beta测试者,作为奖励,他们将只能下载非LTS版本。你太客气了!”Qt的长期贡献者、英特尔公司的开发人员ThiagoMacieira表示,至少对于他在Qt中处理过的代码,他将不再参与修复、评论和后期审查。终端错误报告。反独裁对应的是每个社区都有一个实际的一个或几个人的管理团队。当管理不善时,贡献者就会站出来反抗“管理”。几个月前,RustModerationTeam昨天宣布集体辞职,立即生效。团队成员AndrewGallant表示,此举是为了抗议Rust核心团队只对他自己负责。Rust管理者分为很多团队,比如核心团队、审查团队、发布团队、库管理团队等等……其中,Rust核心团队拥有最高的权限,其他团队无法影响他们。AndrewGallant在公告中写道,由于核心团队在组织层面的不负责任,他们一直无法按照社区对审查团队的期望和他们自己的标准来执行Rust行为准则。他们对大家在这种情况下选择离开表示歉意。但从治理Rust的角度来看,他们别无选择。因此Rust审查小组认为,除了辞职并发表此声明外别无他法。如何取悦所有人?冲突激化的后果只有一个:成员慢慢离开。如果社区和项目不做出改变,很可能导致项目没落。既然一个长期充满争吵和不满的社区是难以长久的,那么如何建立一个让更多人快乐参与的社区呢?首先,无论任何治理模式下的社区,个体文明表达意见、遵守社区行为准则都是减少冲突的必要条件。但是,个人行为是一个非常不稳定的因素,就像Linus曾经说过,他想改掉暴躁的脾气,却经常被各种言论刺激,又回到了暴boss。其次,是通过治理框架对社区进行有效管理,多权分立,避免独裁,成员之间相互制约,在“共识”的基础上发展。具体来说,有一个好的“手册(原则、指南等)”和一个有说服力的公证管理团队。例如,在Apache软件基金会中,采用了任人唯贤的治理模式。ApacheWay在决策、监督、执行等方面都有明确的规定:包括扁平化结构,不分职位,各角色平等,投票权重相同,不允许出现仁慈的独裁者;活跃的志愿者团队在达成共识的前提下监督和决定项目的发展。如果不能完全达成共识,则通过投票等方式作出决定;整个基金会的治理模式是建立在信任和受托监督的基础上……在OpenAtom开源软件基金会项目的毕业标准考核中,也有类似的规定要求社区遵守“任人唯贤”:OA-CO-40[Chinese]社区努力做到精英管理,随着时间的推移,旨在为为项目增加价值的贡献者提供更多的权利和责任。[中]社会必须遵守任人唯贤的精神。随着时间的推移,为项目增值的贡献者将被赋予更多的权利和责任。经过多轮讨论后确定。在英文语境中,这个词是meritocracy,不完全是一个褒义词。“我们不认为用任人唯贤来形容社区是完全正确的,但我们也认为在开源社区中,所谓能者的氛围更积极是社区健康运行的主要因素”在很多项目中,一方面,每个人都是贡献者,另一方面,每个人提交的功能越重要,或者说对项目本身的贡献越有意义,贡献越有可能被当前的维护者选择到担任更重要的角色。以这种方式实现的精英治理或任人唯贤治理,往往希望项目能够自己成长,更好地走下去。Ubuntu创始人马克·沙特尔沃思,在遭遇信任危机后,开始参与到Ubuntu的转型中目前,Ubuntu社区还重组了由三名核心成员组成的管理团队,分别是Ubuntu社区代表MonicaAyhens-Madon、Ubuntu开发者关系负责人RhysDavies和临时社区经理KenVanDine。Ken也会负责继续为Ubuntu社区寻找合适的CommunityDirector,最后借用一个现在的共识:opensource比以往任何时候都重要。因此,保持良好的社区氛围显得尤为重要。