core-js 是 Denis Pushkarev 创建的 JavaScript polyfill 库,几乎每个现代网站都在不知不觉间依赖着它。但本文想聊的,是它背后开源维护者所面临的困境。
维护者几乎得不到财务支持。他打造了了不起的项目、许多人喜欢它,却永远无法获得所需的资金——他不能指望财富 500 强公司去资助,因为它们绝不会;它们也没有这个义务。
也许自由开源软件(FOSS)的黄金时代正在落幕,因为维护工作的重担让它不再可行。30 年前,一个 FOSS 包只是你随手写来发布的,别人觉得有用就很酷;今天,全球最大的科技公司免费使用你的成果来驱动每天数十亿次浏览——这完全是另一种关系。
这种不对称令人震惊却不意外:以 Meta 为例,它为什么要资助你的 Node.js 包?你免费提供它。如果你被车撞了、而 Meta 仍需要这个包,他们会出钱维护。但你的包再流行,也不构成双向关系:Meta 没有付费的责任,你也没有维护的义务。
core-js 的讽刺在于:它越成功,反而越不可见。它「赢」在成为深埋数十层的传递依赖,数亿用户从中受益却从不知其名。这种不可见让它极难建立贡献者或付费赞助社区,即便它已成为 Web 的关键基础设施。
最有趣的一点是:core-js 不是因为失败而过时,而是因为成功而不再处于核心。它的使命是让开发者在浏览器支持之前就能用上现代 JavaScript——而如今浏览器大多已经支持现代 JS。这就好比杀毒软件因操作系统更安全而不再重要,或 gzip 代理因服务器自带压缩而不再重要。
换句话说:2015 年「每个站点都需要 core-js」;2020 年「大多数站点可能还需要 core-js」;2026 年「有些站点确实还需要 core-js,但大多数不需要」。这就是进步。也许 Pushkarev 现在该学会放手,去专注自己的需求了。
