2022年1月9日,周末。全球无数开发者的终端突然开始疯狂输出乱码——每一个使用colors.js或faker.js的项目都中招了。这两个npm包每周下载量超过2000万次,被数以万计的企业级应用依赖。它们的维护者Marak Squires做了一件震惊社区的事:他故意在代码中植入无限循环,让所有使用这些库的应用崩溃。

这不是黑客攻击,也不是供应链入侵。这是抗议。Marak长期以来对开源维护者缺乏经济支持感到沮丧,在GitHub上公开表达了他的不满。在此之前,他曾因开源项目被商业公司无偿使用而发起争议,最终导致他的GitHub账号被封禁。

这个事件撕开了开源世界的一道口子。它揭示了一个被忽视已久的结构性问题:维护着全球软件基础设施的人们,正在以惊人的速度倦怠。

一组令人不安的数据

Tidelift在2024年发布了一份面向400多名开源维护者的调查报告,数字令人震惊:

  • 60%的维护者没有获得任何报酬
  • 60%曾经退出或考虑退出维护工作
  • 44%认为开源维护给他们的生活带来了压力
  • 43%感到自己被低估

这不是个例。2023年Intel的开源社区调查显示,45%的受访者将"维护者倦怠"列为最大挑战。2024年GitHub的调查显示,64.23%的开发者经历过或目睹过负面交互。

更深层的问题是维护者群体的老龄化。Tidelift的调查发现,45%的维护者已经在这个角色上工作了超过10年。与此同时,只有7%的维护者经验在1-2年,仅有2%不足一年。老一代维护者在老去,但新一代不愿接棒。

为什么?答案藏在另一个数字里:平均每位无报酬维护者每周工作8.8小时,热门项目的维护者则可能达到20-30小时。这是一份兼职工作的工作量,但报酬为零。

倦怠是什么:从心理学定义到开源场景

“倦怠”(Burnout)这个词被过度使用了,以至于人们常常忘记它是一个严格的心理学概念。1981年,Christina Maslach开发的Maslach倦怠量表(MBI)将其定义为三个维度:

情绪耗竭(Emotional Exhaustion):感觉被掏空,没有精力,对工作产生厌倦。这是倦怠的核心维度,通常最先出现。

去人格化(Depersonalization):对工作对象产生冷漠、愤世嫉俗甚至敌对的态度。在开源场景中,表现为对用户请求的不耐烦、对社区的疏离感。

个人成就感降低(Reduced Personal Accomplishment):对自己的工作价值产生怀疑,感到无能和失败。

卡内基梅隆大学2020年发表在ICSE-NIER的研究首次将这个框架应用于开源社区。研究者发现,开源维护者的倦怠有其独特的驱动因素:

高频率的需求压力:bug报告、功能请求、文档改进、安全漏洞——这些请求源源不断。一个热门项目每天可能收到数十个issue。

有毒交互:用户以命令的口吻提出需求,对延迟响应表示不满,甚至进行人身攻击。研究者开发了一个分类器来检测GitHub issue中的有毒评论,发现大约每1000个issue中有6个包含明显的有毒内容。这个数字看起来很小,但考虑到维护者的心理状态,一次有毒交互的影响可能持续数天。

可见性带来的压力:GitHub上的所有讨论都是公开的。错误会被看见,会被截图传播,会影响维护者的职业声誉。这种透明度是一把双刃剑。

无边界的工作:没有工作时间,没有下班概念。issue会出现在深夜的邮箱里,周末的通知栏里。Anthony Fu在他的博客中写道:“GitHub通知是一个持续不断的负面信息流……阅读这些内容在精神和情感上都是消耗。”

经济悖论:8.8万亿美元与零报酬

2024年,哈佛商学院发布了一项关于开源软件经济价值的研究。结论是:广泛使用的开源软件的需求侧价值约为8.8万亿美元。如果这些软件需要从头开发,企业将不得不支付这笔天文数字。

讽刺的是,同一研究表明,开源软件的供给侧价值——即开发者实际获得的报酬——仅为41.5亿美元

8.8万亿对41.5亿。两个数字之间差了三个数量级。

这就是开源的核心经济悖论:用户价值巨大,创造者价值为零

Log4j事件是这种悖论的极端体现。2021年12月,这个被广泛使用的Java日志库被发现存在一个严重的远程代码执行漏洞。漏洞的影响范围之大,让美国网络安全与基础设施安全局局长Jen Easterly称之为"我见过的最严重的漏洞之一"。

然而,维护这个被数十亿设备依赖的项目的团队有多少人?16名无报酬的志愿者

漏洞披露后,项目成员Volkan Yazici在Twitter上表示维护者们正在"无眠不休地工作"来应对危机。项目领导者Ralph Goers在修复漏洞的同时,需要处理来自全球的压力和批评。而他的赞助者数量?三个。总金额?几乎为零。

这不是孤例。2018年,ua-parser-js的维护者因为不堪重负而退出,将项目转交给了一个陌生人。这个陌生人随后在代码中植入恶意程序来窃取加密货币。尽管这个项目被无数大公司使用,它的资金池里只有41.61美元

XZ后门:倦怠成为安全漏洞

2024年3月,微软工程师Andres Freund发现了一个令人脊背发凉的漏洞:XZ Utils——一个被几乎所有Linux发行版使用的压缩工具——被植入了后门。

调查结果揭示了一个精心策划的社会工程攻击:攻击者使用化名"Jia Tan",花了近两年时间成为XZ Utils的可信贡献者。他提交代码、修复bug、回应issue、耐心建立信任。当原来的维护者因为倦怠和健康问题逐渐减少参与时,Jia Tan自然而然地接过了维护权限。

然后,他植入了后门。

这个案例揭示了一个被忽视的安全风险:维护者倦怠本身就是一种漏洞。当一个项目只有一两个疲惫不堪的维护者时,社会工程攻击的成功率会大大提高。攻击者只需要提供一点帮助,表现出一点善意,就能获得信任。

XZ事件后,Commonhaus Foundation等组织开始推动新的治理模式,旨在保护单人维护者免受倦怠和安全风险的影响。但这只是杯水车薪。

说"不"的代价

许多维护者最终学会了一项关键技能:说"不"。

Jeff Geerling在2020年发表了一篇题为《作为开源维护者说"不"》的博客文章。他描述了自己如何从一个试图回应每一个请求的热情贡献者,变成一个学会拒绝的人。他的策略包括:关闭低质量issue、拒绝过于宽泛的功能请求、限制自己的工作时间。

但说"不"是有代价的。用户会抱怨,会批评,会说"如果你不想维护,为什么不把项目交给别人?"

这种批评忽略了一个关键问题:把项目交给谁?

开源项目的维护权不是简单的交接。新维护者需要对代码库有深入理解,需要获得社区的信任,需要有时间投入。对于复杂项目,培养一个合格的维护者可能需要数年时间。而在这个过程中,老维护者已经被倦怠消耗殆尽。

Mike McQuaid在《开源中的权利感》一文中指出:“用户开始向维护者提出要求。他们表现出一种权利感,仿佛维护者欠他们什么。“这种权利感——entitlement——是倦怠的重要催化剂。

结构性困境:免费劳动的制度化

开源倦怠不仅是个体问题,更是结构性问题。

传统雇佣关系中,雇主和雇员之间存在明确的契约:工作换取报酬,加班换取加班费,额外贡献换取晋升。开源世界中,这种契约不存在。

软件工程师Kyle Rankin在博客中写道:“开源维护者本质上是大公司的无报酬外包团队。“这个说法可能有争议,但揭示了核心问题:企业从开源中获益,却不需要为维护成本买单

这是典型的"公地悲剧”。每个公司都希望开源项目有人维护,但每个公司都希望别人来做这件事。结果是:每个人都免费搭车,没有人付费乘车

2024年的调查数据显示,在约3亿家使用开源软件的公司中,只有约4200家参与了GitHub Sponsors。这意味着99.999%的公司在免费使用开源软件

解决方案的探索

开源社区并非没有意识到这些问题。近年来,多种解决方案被提出和尝试:

GitHub Sponsors:GitHub在2019年推出的赞助平台,让用户可以直接资助维护者。2024年的数据显示,参与赞助的公司数量增长了20%,但绝对数字仍然微不足道。

Tidelift:这是一个订阅制服务,企业付费订阅后,资金会分配给参与计划的维护者。Tidelift宣称,其平台上收入最高的维护者已经达到了六位数年薪。但参与维护者的数量仍然有限。

Open Source Pledge:2024年由Sentry等公司发起的倡议,要求成员企业每年为每位全职开发者支付至少2000美元给开源维护者。截至2024年底,已有20多家公司加入,累计承诺金额超过130万美元。这是一个好的开始,但距离解决问题还很远。

企业雇佣:一些公司选择直接雇佣关键项目的维护者。Google、Microsoft、Red Hat等公司都有开源维护者岗位。Filippo Valsorda从Google离职后,成功转型为独立维护者,通过六个客户的赞助获得了与Google相当的薪酬。但这种模式需要维护者具备相当的知名度和谈判能力。

个人层面的应对

对于正在经历倦怠的维护者,开源社区也提供了一些建议:

设定边界:关闭推送通知,固定时间处理issue,不要让开源工作侵占生活。Anthony Fu建议"主动检查"而非"被动接收”:不要等通知推送过来,而是选择自己状态好的时候主动去查看。

降低期望:接受自己不能解决所有问题。开源软件是"按原样提供”(as-is)的,维护者没有义务满足每一个需求。GitHub官方的维护指南建议维护者明确这一点,并在README中说明响应时间预期。

培养社区:寻找合作者,分担工作。但这对单人项目来说很难——没有资源就很难吸引贡献者,没有贡献者就更难获得资源。

暂时离开:有时候,休息是唯一的选择。许多维护者在经历倦怠后选择暂停数周甚至数月,然后再回来。但这需要心理准备:离开期间,issue会堆积,用户会抱怨。

我们能否改变?

开源倦怠问题有解吗?答案取决于我们是否愿意改变。

对于企业:如果你使用开源软件,请考虑赞助维护者。Open Source Pledge的2000美元/开发者/年的门槛并不高,但它代表了态度的转变。如果你的公司依赖某个特定项目,考虑直接雇佣其维护者。

对于开发者:在提交issue之前,检查是否已有相同issue。在请求功能之前,考虑这是否是项目方向的一部分。在抱怨响应速度之前,想想维护者是在用业余时间免费工作。如果你有能力,考虑成为贡献者而非仅仅是用户。

对于维护者:学会说不。设定边界。你的心理健康比项目更重要。开源是马拉松,不是短跑——可持续的节奏比爆发式的产出更有价值。

尾声

开源软件已经成为数字世界的基础设施。从运行互联网的服务器操作系统,到你手机里的应用程序,开源无处不在。哈佛的研究告诉我们,这份基础设施价值8.8万亿美元。

但基础设施需要人维护。当维护者倦怠、退出、甚至恶意破坏时,整座大厦都会动摇。colors.js事件让数万个项目崩溃,Log4j漏洞让全球安全团队彻夜无眠,XZ后门几乎攻破了Linux的安全防线。

这些不是偶然事件。它们是结构性问题的症状。

开源的先驱们在几十年前设计这套模式时,可能没有预料到今天的局面。那时候,开源是理想主义的实验,是黑客文化的延伸。今天,开源是全球经济的支柱,是国家安全的关键。

但规则没有改变。维护者们仍然在用自己的时间、精力和健康,支撑着这个庞大的体系。60%的维护者没有报酬,60%曾经考虑退出。这个数字不应该被接受。

开源的未来,取决于我们是否能找到一种新的契约——一种让创造者与使用者之间的价值分配更加公平的契约。这不是慈善,这是可持续性。这是为了确保,当我们需要开源软件的时候,还有人愿意、并且有能力维护它。


参考文献

  1. Tidelift. (2024). The 2024 Tidelift State of the Open Source Maintainer Survey.
  2. Harvard Business School. (2024). The Value of Open Source Software.
  3. Raman, N., Cao, M., Tsvetkov, Y., Kästner, C., & Vasilescu, B. (2020). Stress and Burnout in Open Source: Toward Finding, Understanding, and Mitigating Unhealthy Interactions. ICSE-NIER'20.
  4. Maslach, C., & Jackson, S. E. (1981). The Maslach Burnout Inventory.
  5. MIT Technology Review. (2021). The internet runs on free open-source software. Who pays to fix it?
  6. Anthony Fu. (2024). Mental Health in Open Source.
  7. Open Source Pledge. (2024). Burnout in Open Source: A Structural Problem We Can Fix Together.
  8. Intel. (2024). Maintainer Burnout is a Problem. So, What Are We Going to Do About It?
  9. GitHub. (2024). Maintaining Balance for Open Source Maintainers.
  10. WIRED. (2024). The Mystery of ‘Jia Tan,’ the XZ Backdoor Mastermind.
  11. SonarSource. (2023). Maintainer burnout is real. Almost 60% of maintainers have quit or considered quitting.
  12. The Register. (2024). Open source maintainers underpaid, swamped by security, going gray.
  13. Mike McQuaid. (2022). Entitlement in Open Source.
  14. Jeff Geerling. (2020). Saying ‘No’ to burnout as an open source maintainer.
  15. jlowin. (2025). An Open-Source Maintainer’s Guide to Saying No.