开源真的等于安全、可持续吗?
文章洗稿自BiliBili黑纹白斑马
四起开源维护者崩溃事件,撕开行业底层矛盾
很多人默认:开源是一种安全、可持续的开发模式。但如果现实和你听过的所有说辞完全相反呢?
开源从来不是一直完美无缺,它的发展史充满波折。近几年我们亲眼见证了大量丑闻、背叛,甚至连自由软件之父 Richard Stallman 都难以预料的离谱操作。
我和市面上所有网页主机服务商都无矛盾,今天聊的内容,完全针对开源领域普遍存在的困境。我本身十分认可开源,但有一个核心现实必须厘清:所有人对“开源”的定义并不统一,“免费”也绝不代表永久免费。
本文将拆解近代四起知名度最高的开源维护者崩溃事件:
- 梳理维护者做出极端行为的完整心路;
- 分析这些举动给整个开发者社区带来的毁灭性后果;
- 挖掘当下开源生态最核心的底层矛盾——也是所有崩盘事件的根源。
先抛出一个核心观点:开源并不像资本、创业创始人想象中那样天然具备可持续的商业可行性。运营好开源项目,需要投入海量实打实的时间与人力;运营成熟后,开源固然价值巨大,但生存难题始终悬在维护者头顶。
下面我们从四个真实故事,一步步揭开开源行业的困局。
故事一:2019 npm 终端广告风波——维护者为创收,在安装脚本植入广告
2019年8月,JavaScript 生态核心开发者 Feross Aboukhadijh 推出了一场名为「捆绑计划」的实验。
Feross 手握上百个 npm 开源包,其中最知名的是 StandardJS ——一套自带代码校验、自动修复的 JS 规范工具,单月下载量高达160万次;再加上 simple-peer 等其他项目,他名下所有包每月累计安装次数达数亿次,是全球前端生态不可缺少的支柱。
在他看来,当时开源可持续发展的危机已经迫在眉睫,他决定亲自尝试一套商业化解决方案: npm install funding 。 这套机制逻辑十分简单: 用户执行 npm install 安装依赖时,终端会打印赞助商 ASCII 大幅广告横幅,展示位置刚好卡在依赖解析完成、漏洞检测提示中间,广告合作方包含 Linux、LogRocket 等企业。
终端一直是开发者心中最后一块无广告净土:你不会在 ls 、 git log 的输出里看到商业推广,所有人都默认终端只承载纯粹的程序输出,这次实验彻底打破了这份清净。
Feross 公开解释了自己的初衷:现有开源支撑模式已经完全失效。他特意强调,这套广告方案不会收集任何用户隐私数据,本质只是一段花哨的 console.log 输出。
但开发者社区的反馈清一色是强烈抵触:
- 使用 npm 安装依赖是开发刚需,没人愿意在工作流程中被动观看广告,体验极差; 2. 为展示广告而执行任意 postinstall 安装脚本,会埋下严重软件供应链安全隐患。
事态很快发酵:短短几天,GitHub 就出现大量专门屏蔽 npm 广告的工具包;npm 官方迅速更新平台规则,全面封禁所有在命令行输出广告的开源包。最终 Feross 主动叫停了这场实验。
事后他发布复盘文章,提出一个贯穿全文的核心观点:几乎所有财富500强企业都在大规模使用开源代码,但开源维护者几乎没有渠道,从自己创造的巨大商业价值里分到一分收益。
行业一边要求维护者以业余爱好者的微薄投入,提供工业级稳定可靠的软件;一边拒绝为开源维护者的劳动付费,这也是后续所有维护者极端行为的根本诱因。
从长远来看,这场实验也算一次成功的公众宣传,让整个行业看见开源失效的利益分配机制。而 Feross 后续也转型创办供应链安全公司 Socket,专门检测这类违规、存在风险的安装脚本。
本次事件形成了一套固定循环模式,后续三起事件都会重复这套逻辑: 热门开源项目维护者因收益问题心生不满 → 做出极端破坏行为 → 社区集体反对 → GitHub、npm、微软等平台企业强势介入管控 → 行业定下临时规则,但开源维护者如何合理赚钱的核心问题,依旧无解。
故事二:2022 colors.js / faker.js 投毒事件——维护者愤怒之下恶意破坏全球依赖库
2022年1月8日,大量开发者发现自己项目控制台疯狂输出诡异乱码:重复三次单词「liberty」,搭配扭曲失真的 Zalgo 故障字体,部分程序直接陷入无限循环卡死。
这场互联网故障的始作俑者,是当时两个超级热门 npm 包 colors.js 、 faker.js 的唯一维护者 Marak Squires。 他同步推送了恶意版本:
- colors.js 升级至 1.4.44-liberty-2 ,植入无限循环乱码文本;
- faker.js 升级至 6.6.6 ,删除项目绝大多数核心功能,README 文件仅留下一句话:亚伦·斯沃茨到底遭遇了什么。
事件背景
- colors.js 每周下载量超2000万次;
- faker.js 每周下载量近300万次; 两个包合计是全球超2万个项目的底层依赖,亚马逊云开发工具 CDK 等头部企业产品都深度依赖它们。Marak 的恶意更新,直接击穿了全球无数企业线上服务。
Marak 的愤怒并非一时兴起,他早在一年多前就发出过警告。 2020年11月,他在 GitHub 发布了一条引发热议的评论《Marak不会再做免费工作了》,核心诉求十分直白:
我不会再无偿为财富500强企业提供劳动。要么企业和我签订六位数年薪合同,要么所有人自行 Fork 项目接手维护。
但一年多过去,没有任何企业向他支付酬劳,所有人依旧免费使用他耗费多年维护的开源库。对商业公司而言,开源意味着零成本取用成熟工具;当维护者索要报酬时,行业统一回复都是「维持现状就很好,请继续免费开发」。忍无可忍的 Marak,最终选择用破坏代码的方式宣泄不满。
README 中提到的亚伦·斯沃茨,是自由互联网运动标志性人物:RSS 联合创始人、Reddit 联合创办者、Markdown 核心定义者、知识共享协议参与者,后因学术论文下载事件遭受联邦政府起诉,案件未完结便离世。在代码中投毒时提及他,是 Marak 对资本、大企业无偿掠夺开源劳动的抗议。
平台与社区的应对
GitHub、npm 做出了前所未有的强硬处置:直接封禁 Marak 全部账号,剥夺其数百个公有、私有代码仓库访问权限;npm 紧急下架所有恶意版本,将库强制回滚至安全旧版本。
后续 GitHub 恢复了他的账号权限,但两个核心开源库的信任彻底崩塌,同时引发巨大行业争论:
1. 一派工程师认为,平台封禁账号等同于「绑架开发者」,呼吁开源代码托管去中心化,避免平台单方面掌控创作者资产; 2. 另一派观点则指出:如果不希望商业公司使用你的代码,一开始就不该选用 MIT 这种允许商用的宽松开源协议。
社区最终折中方案:集体 Fork 项目,组建新团队接手长期维护。
全文核心总结
这两起标志性事件暴露了开源生态无法回避的结构性矛盾:
1. 价值分配严重失衡:大企业无偿享受开源带来的巨大商业收益,维护者承担全部开发、维护、安全修复成本,却缺少稳定、合规的商业化渠道; 2. 平台权责不对等:GitHub、npm 等托管平台掌控代码分发、账号生杀大权,可仅出台事后管控规则,无法从根源解决维护者生存问题; 3. 开源协议认知割裂:很多使用者默认「开源=免费随便用」,忽略开源协议背后创作者的劳动成本,也拒绝主动反哺维护者; 4. 供应链安全隐患突出:维护者掌握包发布权限,一旦心态失衡,仅靠几行代码就能击穿全球海量线上业务,且事前缺少有效的风险隔离机制。
很多人以为开源天然安全、可持续,但安全的前提是:维护者拥有稳定收入、有充足人力持续迭代修复漏洞;可持续的前提是建立合理的价值回流体系。只要创作者的劳动长期无法变现,更多「维护者崩溃事件」只会不断重演。
