23 个核心开源项目中有 11 个仅靠 1 到 2 人运行
有人把手机上 23 个底层开源项目过去一年的提交历史全下载下来,按改动数量统计维护者:11 个项目只有一到两人在做日常维护,八个项目查遍四个公开资助渠道一分钱也拿不到。
中文
复制

你手机上的每一条闹钟、登机牌和日历邀请,都依赖一个文本文件,里面装着政府发布过的所有时区规则。UCLA 的一位讲师 Paul Eggert 利用业余时间维护这个文件,至少有四十亿台 Android 手机和 iPhone 在读取它。他是一名开源维护者,而处在他这个位置上的人远不止他一个。
每次安全事件之后都会被翻出来的那幅 xkcd 漫画,编号 2347,画的是现代基础设施的高塔架在一小块砖上,而这块砖由一个人默默维护,无人致谢。Reddit 用户 u/Mastbubbles 决定验证一下这离事实有多近。他下载了手机、浏览器和服务器所依赖的 23 个项目的完整历史,统计了过去一年里做出十次及以上改动的人,并把结果以 The People Holding Up the Internet 为题发布在 sheets.works 上。帖子在 r/linux 上第一天就拿到约 1,100 个赞。
23 个项目中有 11 个是一两个人在做日常维护。接下来要讲的是这些人是谁、有哪些钱到了他们手里,以及 r/linux 上对数据的质疑。
关键发现一览
- 23 个项目中有 11 个,在 2025 年 10 月 7 日到 2026 年 10 月 7 日之间,只有一两个人做出了十次及以上改动。
- xz 只有一位固定贡献者 Lasse Collin,2025 年 97% 的改动出自他手。分析没有发现 2024 年后门事件之后有任何新的资助。
- sudo 在 2008 到 2018 年间的 5,409 次改动中,有 5,408 次来自同一个人 Todd Miller。
- 八个项目,包括时区数据库、SQLite、zlib、xz 和 bash,在分析查过的所有公开资助来源中都找不到任何拨款或赞助。
- 钱跟着灾难走。 2014 年 Heartbleed 爆发后两个月内,Linux Foundation 就筹到了每年 2,000 美元的捐款,有了拿薪水的开发者和一次审计。
统计口径
作者取每个项目的完整公开历史,保留 2025 年 10 月 7 日到 2026 年 10 月 7 日之间写下的改动,剔除合并提交和机器人。在这段时间里改动达到十次及以上的人,就算作固定贡献者。在资助方面,“没有公开拨款”指的是 Sovereign Tech Agency、Alpha-Omega、Open Collective 和 GitHub Sponsors 都没有出过钱。这并不等于从来没有人给这些人付过报酬。文末的局限性一节会说明这套方法漏掉了什么。
一个人的项目:xz、sudo、bash 与时区数据库
xz:一己之力被推到聚光灯下的后门事件
住在芬兰的 Lasse Collin 维护着 xz——几乎每台 Linux 服务器上都有的压缩工具。2022 年 6 月,他在邮件列表里说,这是一个无偿的业余项目,自己能跟上进度的能力有限,主要受长期心理健康问题影响。几个月来,自称 Jigar Kumar 和 Dennis Ens 的账号一直在公开抱怨进展太慢,而一位名叫 Jia Tan 的贡献者则不断提交有用的补丁。Collin 给了 Jia Tan 更多权限。
到 2023 年,Jia Tan 的改动量已经超过 Collin,304 次对 172 次。2024 年 2 月,Jia Tan 发布的版本里藏着一条进入 Linux 服务器的隐蔽通道。微软工程师 Andres Freund 在 3 月 29 日发现了它——当时他的 SSH 登录占用的处理器时间异常偏高——而那时大多数 Linux 系统还没有发布这个版本。进入 sshd 的路径经由各发行版的补丁:若干发行版把 OpenSSH 链接到 libsystemd,而 libsystemd 又会引入 liblzma,后者是 xz 的一部分。Jia Tan 究竟是谁,至今无人查明。
Collin 又回到了孤身一人的状态。2025 年 xz 的改动有 97% 出自他手,而 2026 年这个项目只有一名固定贡献者。分析发现,后门事件之后并没有新的资金进来,这与 OpenSSL 在 Heartbleed 之后的遭遇正好相反(详见下文)。
时区数据库:一位讲师、一个备份、四十亿台设备
Eggert 自 2012 年起担任时区文件的官方协调人,同时在 UCLA 教计算机科学。Android、iOS 以及大多数服务器都读取这个文件来确定本地时间。9 月 29 日发布的 2026e 版,开篇就是 Manitoba 于 10 月 31 日永久转为 -05,这意味着 Winnipeg 的手机在 11 月 1 日不必把时钟往回拨。
过去一年对文件所做的 251 处改动中,Eggert 做了 218 处,Tim Parenti 做了 28 处。2020 年,Eggert 在邮件列表上请求让 Parenti 做他的备份,以防退休或其他事情让他离开。
这项工作也伴随着法律风险。2011 年,一家占星软件公司起诉了 Eggert 和 Arthur David Olson——后者于 1986 年在 National Institutes of Health 创建了这个数据库——声称其部分历史数据来自该公司拥有的一本图集。邮件列表和下载站点随即下线,直到当月晚些时候 IANA 接手。Electronic Frontier Foundation 免费为两人辩护,该公司于 2012 年 2 月撤诉。如今 Eggert 没有赞助页面,分析也未发现该项目获得过任何公共资助。
sudo:名单上资金最充足的一人项目
Todd C. Miller 从 1990 年代初起一直维护 sudo——这条命令让你在 Mac 或 Linux 服务器上获得管理员权限。这个工具本身可以追溯到 1980 年前后的 SUNY Buffalo。分析发现,2008 年至 2018 年间的 5,409 次变更中有 5,408 次出自 Miller 之手。
2026 年 2 月,他在自己的网站上写道,他正在“寻找赞助者”,以维持 sudo 的维护与开发。The Register 报道这则消息后,该项目的 Open Collective 预算达到每年约 61,700 美元,GitHub 上有 30 人赞助。这让 sudo 成为统计中资金最充足的一人项目——这也从侧面说明了名单上其余项目的处境。
bash:一个 25 年无人报告的漏洞
Chet Ramey 从大约 1990 年起维护 bash——Linux 上的 shell,2003 年至 2019 年间也是 Mac 上的 shell。他是在 Ohio 州 Case Western Reserve University 网络组的工作之余做这件事的。2014 年 9 月,Stéphane Chazelas 报告了一个漏洞:向服务器发送特制文本即可在其上执行任意命令。该漏洞于 9 月 24 日以 Shellshock 之名公开,波及数亿台机器。出问题的那行代码早在 1989 年 8 月 5 日就进入了 bash。分析发现,bash 公开历史中的每一次变更——包括官方修复——都署着 Ramey 的名字。
影响巨大却更小的库
-
libjpeg-turbo 在 Android 手机以及 Chrome 和 Edge 中解码 JPEG 图像。DRC(他以自己名字的首字母署名邮件)写了今年 98% 的变更,并以一人公司的形式运营该项目。他一度写道,一般性资助大约覆盖每月 8 到 10 小时的工作。
-
zlib 压缩 PNG 图像、Git、Android、iPhone 和 Chrome 内部的数据。Mark Adler 于 1995 年参与编写,他当时的另一份工作是管理飞往火星的 NASA Spirit 火星车。去年的工作大部分由他和一位名为 Vollstrecker 的贡献者完成,Adler 没有赞助页面。
-
HarfBuzz 决定印地语、阿拉伯语、泰米尔语以及世界上大多数文字中字母如何连接与排列,服务于 Android、Chrome、Firefox、Edge 和 Kindle。Behdad Esfahbod 写了今年 85% 的变更,另有五人做常规工作。
-
SQLite 存在于每一部 Android 手机、iPhone 和 Mac 中,也存在于 Windows 10 和 11 以及所有主流浏览器中。去年有四个人改动过它。该项目估计在用数据库超过一万亿个,团队通过 Hipp 的公司销售支持服务来为这项工作提供资金。
-
core-js 让新的 JavaScript 能跑在旧浏览器里,按作者自己的统计,全球最繁忙的一千个网站中约有一半在用它。Denis Pushkarev 发起捐款后,每月筹到大约 57 美元。2019 年他全职做这个项目,没有报酬,随后一场他自己讲述过的致命交通事故让他被判入狱。他从 2020 年 1 月起服刑约十个月,期间提交几乎停滞,而今年 95% 的改动都出自他手。
钱到位之后会发生什么:curl 与 OpenSSL
名单上的项目并非都靠一个人撑着。Daniel Stenberg 于 1996 年在瑞典发起 curl,如今它为手机、汽车、电视以及自 2018 年起内置它的 Windows 搬运数据。今年有 11 个人在 curl 上做常规工作,Stenberg 在 2025 年度回顾中写道,其他人贡献的代码行数如今已超过他本人。他能全职投入,是因为有公司为支持服务付费。项目每年还通过 Open Collective 获得约 89,700 美元,Stenberg 在 GitHub 上有 64 位赞助者,德国 Sovereign Tech Agency 为相关工作支付了 195,000 欧元。
OpenSSL 是更早的一课。2014 年 4 月,Heartbleed 漏洞让任何人都能从约 17% 的可信安全服务器内存中读出密码和私钥——这是 Netcraft 的统计。那一周,OpenSSL 基金会主席 Steve Marquess 写道,来自科技公司的捐款约为 540 万美元。OpenSSL 因此得到两名受薪开发者和一次审计,常规贡献者人数从 2013 年的 6 人增至 2014 年的 14 人。到 2026 年,这个数字是 32。
把两者并排来看,结果差别很大。Heartbleed 之后一年内,OpenSSL 的常规贡献者翻了一倍还多。而 xz 后门事件之后,分析没有发现规模相当的资金,xz 至今仍只有一个人。
开源资金:谁拿到了钱,谁没有
分析中两个最大的公共出资方是德国的 Sovereign Tech Agency——自 2022 年以来已资助约九十个开源项目——以及 Alpha-Omega 基金,后者去年发放了近 600 万美元,大部分给了 Python、Ruby 等基金会里的安全工程师。两者都把资金给到能够提出申请并提交报告的组织。这有利于背后有机构的项目,而不是只有一个邮件列表的个人。
| 项目 | 资金 |
|---|---|
| log4j | €596,160 |
| FFmpeg | €437,930 |
| OpenSSL | €405,888 |
| OpenSSH | €200,000 |
| curl | €195,000 |
时区数据库、SQLite、zlib、libjpeg-turbo、HarfBuzz、xz、bash 和 nghttp2 都没有查到任何公共资助。Eggert、Collin、DRC 和 Adler 也没有赞助页面。
钱确实会通过其他途径流向一些人。Nick Wellnhofer 维护 libxml2 的十年间筹到了六位数偏低的一笔钱,而从 2026 年 8 月起,慕尼黑市出资请 Sebastian Pipping 为 expat 工作,期限最长六个月。
这里要看具体背景。“没有公共资助”是一条很窄的判定标准,而且这些人里有好几位另有正职:Eggert 在 UCLA 教书,Ramey 在一个大学网络组工作。公开记录能说明的是,23 个项目中有 8 个从这四种渠道一分钱都拿不到。
libxml2:一次成功的交接
libxml2 为 Android 手机、iPhone 和 Chrome 读取 XML,分析报告认为它运行在 56 亿台手机和电脑上。直到 2025 年 12 月,它的 README 还承认这是业余爱好者的软件,只有一名志愿者维护者,安全漏洞不少。维护了大约十年的 Nick Wellnhofer 在 2025 年 9 月宣布卸任,之后仍在修回归问题,12 月把自己从维护者名单里去掉。大约十二小时后,新的维护者被加了进来。此后大部分工作由 Daniel Garcia Moreno 完成。
为什么只有出事时才会听到他们的名字
看看哪些名字上了头条:Heartbleed、Shellshock、Jia Tan。发现这些漏洞的人会被提一句——Shellshock 的 Stéphane Chazelas,xz 的 Andres Freund。而那些花多年时间让代码保持可用的人,很少被提到。
有些人刻意避开关注。DRC 用姓名缩写给邮件签名,SQLite 的网站一度撤下了开发者姓名和照片的页面,理由是有人可能滥用这些信息。2011 年的那场官司说明了维护者被注意到会怎样:Eggert 和 Olson 因为一个他们免费送出的文件被起诉。
r/linux 的讨论串在“认可”这一点上补了个小更正。一位上过 Eggert 操作系统课的评论者说,称他为讲师是低估了他,因为他教的东西塑造了他们的职业生涯。
r/linux 怎么看这些数字
最常见的反应是愤怒:公司把这些库装进数十亿台设备,却只为那些光鲜的、或对自己业务至关重要的部分付钱。一位评论者认为,卖 Linux 的公司在它们所依赖的软件上是活跃的;另一位回复说,这份名单上那些乏味的项目恰恰就是什么都拿不到的。一位长期评论者把问题追溯到措辞上:自由软件谈的是人、权利和责任,开源谈的是流程,而责任那一部分丢了。
最尖锐的分歧在于发行版。有评论者说,每个正经的发行版都会 fork 并给软件包打补丁,所以单看上游维护者只是故事的一部分。也有人回应,backport 不等于上游的韧性,因为发行版在发布、设计和代码的深层理解上仍然依赖原作者。
xz 事件让讨论分成了两派。一方说后门在发布后几周内就浮出水面,说明公开审查在起作用。另一方说,它能被发现,是因为一位工程师追查 SSH 登录多出的几百毫秒,类似的攻击可能一直没被注意到。还有第三条评论指出,攻击者得手靠的是把一位维护者耗垮,所以单看贡献者数量并不能完整衡量安全性。
一位持怀疑态度的人认为,这些维护者并没有不堪重负,工作量也不足以支撑一个团队。这话对成熟稳定的工具最成立,而在唯一那位维护者离开的那天最不成立。有评论者指出,名单里漏掉了 GnuPG;还有几个人不喜欢原页面的滚动动画。另有一个朴素版本,链接见下方来源。
数字该信到什么程度
这个计数是有用的信号,但局限也很实在。
- 提交的作者不一定是维护者,而且有些项目发布的历史记录是另一套系统的副本,这会让人头归属出现偏差。
- 提交数看不到 review、bug 分类、安全报告和发布工作,所以一份安静的日志可能掩盖了大量投入。
- 成熟软件变化慢。提交数低可能意味着已经完工,而不是无人问津。
- “没有公开资助”只覆盖四个具名来源,私人支持和雇主提供的工时都不会体现出来。
- 设备数是下限。只有作者能在某个平台上看到,项目才会把它算进去,而 Mac、iPad、服务器、汽车和电视都被排除在外。总数依赖的公开数字是:超过 30 亿台活跃 Android 设备、超过 10 亿部 iPhone,以及每月 16 亿台 Windows 机器。
作者要求在文章和 Reddit 帖子中都做出更正,libxml2 部分已于 2026 年 10 月在 Nick Wellnhofer 的帮助下修正。
看看你自己的系统依赖了什么
在你自己的机器上就能看到一部分。运行下面的命令,列出 curl 引入了这些库中的哪些。
ldd "$(command -v curl)" | grep -E 'libz\.so|libssl|libnghttp2'
在 Ubuntu 24.04 上,它会打印出 zlib(libz.so.1)、nghttp2 和 OpenSSL(libssl.so.3)。这只是 23 个项目中的三个,由一个命令行工具加载。把同一条命令指向你每天使用的其他程序,会出现更多名字。原文还有一个适用于 Android、iPhone、Mac、Windows 和 Linux 的设备选择器,展示每个平台里包含这些项目中的哪些。
如何支持开源维护者
- 赞助你每天使用的工具。sudo 和 curl 都通过 GitHub 和 Open Collective 接受赞助,sudo 的资金在一篇新闻报道之后就有了增长。
- 把它列入公司预算。如果你的雇主发布或运行 Linux,请申请向你的技术栈所依赖的项目定期付款。与一次事故的代价相比,这笔钱微不足道。
- 问问你的发行版回馈了什么。一位 r/linux 评论者认为,发行版最适合资助上游项目,因为它们清楚自己依赖什么。
- 提交 bug 时附上复现步骤,如果可以的话再附上补丁。别去提要求。xz 事件的一部分,就是公众对一位疲惫的维护者施压。
- 主动提出帮忙审查和分类。维护者需要人手来做这些不出彩的工作,而出于同样的原因,他们在信任谁这件事上也会很谨慎。
- 如果你维护着某个关键项目,请规划好交接。Eggert 在 2020 年指定了一位后备人选,而 libxml2 在 Wellnhofer 离开大约十二小时后就有了新的维护者。
结论
这份名单上的代码并不是薄弱环节。其中大部分已经老旧、被研究透了,而且稳定。薄弱环节是它周围的安排:一个人、一份日常工作、一个邮件列表,以及偶尔出现的一个愿意帮忙的陌生人。xz 事件表明,这种安排既是公平问题,也是安全问题;而 OpenSSL 事件表明,一点钱就能很快改变它。
这些人写了好用的东西,分文不取地送出去,整个行业在上面盖起了楼。现在就把他们的名字记住。否则,你迟早是从一份 CVE 里认识他们。
来源与延伸阅读
- 撑起互联网的人,sheets.works 上的原版交互式分析
- 同一篇文章的纯文本版,没有滚动动画
- xkcd 2347:依赖
- IANA 时区数据库
- XZ Utils 后门事件页面,来自 xz 维护者
- Heartbleed 漏洞
- 部署最广的 SQL 数据库引擎,sqlite.org
- Sovereign Tech Agency