You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
开源真的等于安全、可持续吗?
文章洗稿自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 输出。
但开发者社区的反馈清一色是强烈抵触:
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。
他同步推送了恶意版本:
事件背景
两个包合计是全球超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. 供应链安全隐患突出:维护者掌握包发布权限,一旦心态失衡,仅靠几行代码就能击穿全球海量线上业务,且事前缺少有效的风险隔离机制。
很多人以为开源天然安全、可持续,但安全的前提是:维护者拥有稳定收入、有充足人力持续迭代修复漏洞;可持续的前提是建立合理的价值回流体系。只要创作者的劳动长期无法变现,更多「维护者崩溃事件」只会不断重演。
All reactions