没人给开源付费,我们可以强制他们付

11

我第一次觉得写一篇关于开源经济学的博客文章是在2013年,所以这篇文章已经准备了一段时间。在今天之前,我最接近写到的一次是2022年,那时我在iOS笔记里写了一篇意识流的吐槽,结尾基本上是“什么都他妈的不管用”。

然后这句话又放了4年,因为“什么都不管用”太让人沮丧,没必要写5000字。现在,我终于有了个想法。不过要写5000字才能达到那个方向,所以如果你没有那么多时间,可以直接跳到关于注册表的部分。

开源是一款结果稳定的游戏,结果就是免费胜利

我以前写过关于鹰与鸽这是进化生物学的一个模型。你有一个动物群体在争夺某种资源。有些动物为它而战(鹰),有些则共享资源(鸽子)。

一个全是鹰的种群是不稳定的:每个人都不断受到伤害,最先出现的两只鸽子会相互合作,竞争超过所有动物。一个全是鸽子的种群也很不稳定:第一个出现的鹰与所有人竞争,每次都赢。

稳定的是两种类型的混合,比例使得改变行为对你没有帮助,所以没人能帮到你。这种混合被称为进化稳定策略,简称ESS,重要的词是“稳定”。

这不是最好的策略(可以说所有鸽子都这样,没人受伤),它只是种群最终达到的状态,无法离开。我觉得这是一种对软件的理解方式,因为软件也有鹰和鸽子。

闭源是鹰派。它竞争:它扣留代码,收取别人没有的东西的溢价,并努力保持这种状态。开源是鸽子。它合作:免费提供代码,同时从其他也免费分享的玩家那里夺取收益。

他们竞争的资源最终是金钱,尽管它首先以用户和开发者的注意力出现。

我们达成的平衡非常具体。软件的进化稳定策略是“任何人都可以免费使用它做任何事情,包括商业用途。”那是MIT、BSD、Apache,这些许可证根本不要求任何东西。

每一个试图做得稍微不那么慷慨的项目,都输给了一个保持完整鸽子的项目,我可以举很多例子:

  1. 2017年,Apache 软件基金会禁止了 Apache 项目中使用 React 的 BSD+Patents 许可证,WordPress 宣布放弃 React,几周内 Facebook 也退出在MIT下重新授权React而不是眼睁睁看着它死去。
  2. 2021年,Elastic将Elasticsearch转为源代码可用的许可证,以阻止亚马逊将其作为服务出售。亚马逊将其分叉为OpenSearch,分支最终在Linux基金会,拥有数千名贡献者,2024年则是Elastic悄悄回去了转为开源许可证。
  3. 2023年,HashiCorp对Terraform做了同样的事情。OpenTofu分支归属Linux基金会,HashiCorp被IBM收购。
  4. 2024年3月,Redis也做到了这一点。Valkey分支在大约一周内收购了所有云服务提供商,2025年5月,Redis又重新启用了AGPL,CEO也参与其中承认这种变化让他们付出了巨大的代价。

没有人试图在许可层面收费开源,坚决反对一个有能力运行的分支,我不认为这是意识形态的原因。那些公司的管理者很乐意为他们的代码收费,而大多数分叉者其实并不在意抽象上的自由。

这是因为市场结构。颠覆,从最初的意义上讲,是指一个更差、更便宜的产品占据市场底层,然后逐渐变好直到吞噬整个市场,而这个过程反复循环,直到产品完全不起价。

软件自软件诞生以来就一直被这样颠覆,最终形成的市场分为两半:一是极其廉价的,几乎人人都在用,另一半则是更小但昂贵的,几乎赚了大部分钱。

Android占据市场份额,iOS获得利润,这两者都非常成功,具体取决于你看的是哪个数字。免费赢了,收盘赢了,双方都赢了。

稳定的结果依赖于人们精疲力竭

到目前为止,这还算不错。自由软件获胜,封闭软件赚钱,每个人都有自己的细分市场。问题在于自由层从内部的样子。

百分之六十开源维护者没有为工作获得报酬。这是Tidelift 2024年的调查,和2023年和2021年的数据是一样的。在无偿维护者中,61%是独自工作。

近60%的维护者已经辞职或考虑过放弃,他们给出的理由你猜得到:他们有生活,失去兴趣,倦怠。

那些人拿着的软件数量真是荒谬。Sonatype看了120万个开源项目发现其中11%的项目被积极维护。Linux基金会第二次人口普查发现136名开发者编写了50个最常用软件包中超过80%的代码。

哈佛大学的一项研究估计,如果开源消失,企业将不得不投入资金8.8万亿美元结果发现,5%的开发者创造了96%的价值。这就是JavaScript生态系统的全部个性,仅供参考:大量微小的包,只有一个维护者,或者少于一个,都被公司寄托在依赖树的最底层。

我在NPM工作了五年,目睹这一切,始终令人担忧。

现在大家都用的例子是xz。2024年,事实证明,几乎所有Linux机器中都有一个压缩库,这个后门是由一个假冒贡献者在两年内非常耐心地插入的,社会工程化了唯一一个无偿维护它的人交出密钥。

维护者公开表示自己很挣扎,跟不上节奏,结果不是有人资助他,而是有人培养了他。后门被一位Microsoft工程师发现,他注意到SSH比预期慢了半秒,这不是你想依赖的辩护。

现在,讲述这个故事的流行方式是“体制正在崩溃”,但我认为这并不正确,这种区分很重要。这个系统没有崩溃。它是稳定的,只是我们共同决定承受的人类代价。

维护者倦怠,别人接手,他们疲惫,依此类推。序列近乎倦怠不是平衡中的漏洞,而是平衡本身。开源非常古老,如果它要崩溃,早就崩溃了。

这是一台靠血液运行的机器,因为这是进化上稳定的策略,我们无力改变它。

改变的是速度,而且只有速度

但感觉问题正在恶化,不是吗?如果一个稳定的系统产生比以前更糟的结果,其中一个输入在移动。移动的是速度。

Linux积累得很慢,所以你可以在晚上和周末维护内核的一部分十年,因为没人等你。然后是网络,然后是npm,十年内出现了无数微型模块,其中任何一个发布几周内就能成为某人生产系统的承载能力。

软件的重要性比任何机构意识到它重要性都快,更别说资助它了。与此同时,安全也变得更快:一个流行库中的漏洞现在几天内就能被利用,同时影响成千上万家公司。

所以维护一个流行软件包的成本大幅上涨,而维护它的回报却保持原位,零钱,带来温暖的感觉。

晚上和周末已经不够了,但人们还是继续写,因为他们总会写软件。开发者写软件的方式就像歌手唱歌一样,也就是说,如果没人听,他们会写,这不是问题,而是让整个系统运转的关键。

任何提出的解决方案,比如开发者写得更少,或者写得更不慷慨,对我来说都是不可能的。问题不在于人们免费写软件。而是我们安排了那些写出最有用免费软件的人,作为奖励获得第二份无偿工作。

我们尝试过的所有方法都能推动资金流动,但没有一个能改变均衡

这是令人沮丧的部分,也是我拖了四年的部分,所以我们快点说完吧。以下是我们尝试过的方案:

  1. 小贴士。GitHub Sponsors在2026年7月总奖金超过1亿美元,听起来很多,但如果你把它放在8.8万亿美元旁边。它的分配方式和小费一贯的方式一样,这是一个幂律:少数知名人士表现不错,而中位数的赞助维护者则赚点午餐钱。Open Collective、Patreon、Ko-fi,形态相同。
  2. 基础。Linux基金会、Apache、OpenJS、Python软件基金会。这些都是真实的机构,有真实的预算,他们主要支付的是人员、活动和基础设施。这并不是贬低;总得有人来主持会议。但这只是在Tidelift调查中3%的维护者从基金会拿到任何资金,政府给1%。基金会是付钱让舵手掌舵的公司,不是付钱给划船的人。
  3. 企业的慷慨。谷歌的开源办公室、Microsoft的FOSS基金和Sentry的开源承诺该项目要求公司每年向每位开发者捐赠2000美元,2024年推出,承诺金额约为130万美元。我喜欢这个承诺。它和这份清单上的其他项目有同样的缺陷,那就是它是慈善,而慈善不会扩展到数万亿美元。Dan Lorenc,曾在谷歌和OpenSSF工作多年,试图为维护者提供资金,说他们有的钱多到无法捐出,但这并没有解决问题。我认为这只是一次失败的尝试,而不是自然法则,但它确实属于失败尝试的清单。
  4. 有付费保安。Tidelift的整个模式是支付维护人员来保障他们的包裹安全,并将保证卖给公司,这是个好主意,2024年12月它实现了被声纳收购这正是那些自己找不到足够买家的好点子的下场。OpenSSF的Alpha-Omega每年发放五六百万美元,主要用于资助基金会内部的安全人员,这很合理但规模不大。
  5. 政府。德国的主权科技基金是个好主意:纳税人的钱,无附加条件,直接用于关键基础设施的维护,自2022年以来,超过2400万欧元投入到600多个项目中。这也是约190个国家中的一个基金,每年支出约2000万欧元,欧盟范围内的版本是2028年开始的预算周期提案。
  6. Mozilla。Mozilla的资金来源是谷歌搜索收入中的一根稻草,Mozilla内部每个人都知道这是个问题,这也是他们不断尝试多元化却始终无法管理的原因。(有一段时间,Mozilla和Google实际上就在同一栋旧金山的楼里,只是楼层不同。)你不能一概而论“找到别人的收入来源然后插根稻草”,因为收入来源根本不够。
  7. 授权我们已经介绍过了。双重许可、可获取来源、“公平来源”:他们每个人都像一只试图表现得有点鹰派的鸽子,而他们每个人都输给了隔壁的全鸽子。

看看这些公司有什么共同点。它们都是自愿的。公司被要求捐赠,有些会,大多数不会,而那些拿不到和完全一样软件的,也没有。慈善不会扩展,也没有人有权发布强制令。

我们三十年来一直要求公司为开源付费,我认为我们可以考虑要求全面测试。

公司确实会为开源付费,只是不支付给写开源的人

让我意识到自己之前的想法错了:公司已经为开源支付了不少费用,实际上相当多,只是他们不付给维护者。

JFrog 销售 Artifactory,这是一种位于构建服务器和公共包注册表之间的私有镜像。JFrog2025年收入为5.32亿美元上涨了24%。Snyk,它会扫描你的依赖漏洞,目前大约是每年3.26亿美元.运行每个容器镜像的注册表的 Docker 是2.07亿美元.Chainguard 销售开源镜像的硬化版本,从大约 4000 万美元涨到了一年内达到 1 亿美元的目标。

Sonatype 是私有的,但它运行 Maven Central——每个 Java 构建都从中提取的注册表,同时销售 Nexus,你放在它面前的镜像;按 Sonatype 自己的数据占梅文中央86%的交通量来自云服务提供商,也就是说,来自公司。

再加上Sonar,它现在拥有Tidelift、Socket以及供应链安全市场的其他部分,你每年轻松超过十亿美元。

那么多钱是干什么的?撇开营销,这些公司卖的东西都差不多,那就是可靠的免费代码供应.注册表宕机时你的构建不会崩溃。你的依赖被缓存、扫描、签名,并且可以证明它们所说的是什么。

下一次Log4Shell你一小时内就能知道你两千个服务中哪个受影响。这就是真正解决真实问题的产品,公司热情购买,因为“我们依赖的免费产品可能坏了或恶意,我们无法察觉”正是采购部门知道如何花钱解决的问题。

我想明确表示,我不认为这些公司是坏人。其中有几家是由我喜欢的人管理的。他们解决的是真正的问题,也就是公司需要能够依赖他们没写、也无法检查的代码。

他们只是在错误的层级解决问题。他们卖保险来对付维护者,而维护者是链条中唯一能让代码更安全的人,而维护者一无所获,而一家在上一层的公司却能拿钱告诉你她是否做到了。

这彻底改变了我对问题的看法。多年来我一直以为限制在于资金供应:公司根本不会为开源买单,也没有机制能让开源成为开源,而Lorenc的故事也符合这个说法。

但JFrog的发票却说得不一样:当开源作为一个无聊的“供应链”条目出现时,公司会乐于为它买单。货币供应从来不是问题,问题在于它在下降过程中被捕获的位置。

免费赢了代码游戏,但默认玩家赢了补给游戏

那么为什么ESS不适用于这里呢?如果自由总是赢,为什么免费镜像没有吞噬JFrog?

因为有两个游戏在进行,而且赢家不同。在代码游戏中,资源就是软件本身,免费的每次都赢,因为任何人都可以复制代码,所以任何收费的尝试都会招来一个不复制的复制品。

在供应游戏中,资源不必考虑代码的来源,游戏由默认玩家赢得。

看看证据。从来没有人成功分叉过注册表。npm、PyPI和Docker Hub的免费镜像存在,运行起来非常简单,有些情况下只需一个命令,公司每年都会支付JFrog五亿美元。

红帽把桌面输给了Ubuntu,Ubuntu是由一个富人免费赠送的,最终彻底输掉了桌面;鸽子赢得了代码游戏。红帽随后以340亿美元卖给了IBM,卖给公司提供同样免费代码并附带电话号码,年收入超过60亿美元。

任何人都可以免费拥有同样的代码,而且确实有很多公司,但大量公司还是付钱给了红帽。

Docker 是最明显的例子,因为它最近公开发生了。2020 年 11 月,Docker Hub 正式启动速率限制匿名且免费拉取。2021年8月,Docker Desktop 成为任何拥有250名以上员工或1000万美元收入的公司付费产品,并对个人、小型公司和开源项目保持免费。

如果免费总是赢,那么免费替代方案应该吞并它们,Podman 和 containerd 依然存在且免费,完全没问题。然而,Docker 的收入从2020年的约1200万美元跃升至2021年的超过5000万美元2024年为2.07亿美元,拥有超过一百万个付费席位。

(Docker 也尝试宣布按拉取的消费费,然后取消了它们2025年开发者暴动后,这告诉你哪种充电方式有效:向公司开费,而不是向下载收费。没人希望每次CI重播时账单都会上涨。)

免费赢代码游戏,但补给游戏由默认玩家获胜,弃权者可以收费。注册表是整个系统中两个游戏唯一接触的地方,因为自由代码转化为供应,注册表不像许可,注册表不能通过复制来路由,因为复制不是法律限制,而是极其便捷的基础设施。

它们不会想要绕过它;绕过它非常麻烦,值得花钱避免。

没人认真尝试过注册表层的操作

这时有人会说“这难道没人尝试过吗?”,答案是“尝试过”,失败的方式很有启发性。我将狭义地定义“注册表层”:拥有所有人下载内容的域名。

按照这个定义,这个列表中几乎没有什么算数。

2019年8月,Feross Aboukhadijeh开始在终端上打印赞助商信息,他维护着包括Standard在内的10多个NPM包。npm install.开发者们很讨厌,赞助商几天内就退出了,费罗斯写了作为一次失败的实验。

NPM的回应是禁止其服务条款和航运中的终端广告npm fund,它会打印一份捐赠链接列表。这是登记处唯一一次干预资金,它所做的是取消了筹款方式,取而代之的是超链接。

这真是太弱了。我在NPM工作期间,我们从未有过勇气尝试更极端的做法,但我们本该有。

Flossbank从2020年到2022年,包裹着npm和毛线,收集小额捐款或广告收入,并将其分配到你安装的整个依赖树上。这就是我即将提出、构建并运行的部分收益。

它关闭了,创始人的尸检坦诚说明原因:这是自愿加入,而自愿加入会被“如果下一个人不付,我为什么还要付钱”的说法就死了。Flossbank也不是登记册,而是你安装在登记册前面的东西,这已经足够有摩擦,没人会去理会。

Ruby Together从2015年到2022年,向公司收取会员费以资助RubyGems和Bundler的工作。它运作得很有限,直到并入Ruby Central,后者依赖一个大型赞助商,随后产生了2025年收购RubyGems仓库的资金,一堆辞职,以及一个疲惫不堪的团队,在接下来的春天面临着多年来最严重的注册局攻击。

那是为注册局自身运营提供资金,而不是用于其中的包裹,而且是自愿的,而且有一个大捐赠者,这其实有三种不同的失败方式。

所以规律是:所有自愿的东西都死于搭便车,而唯一不是自愿的东西(Docker)却成功了,把钱据为己有。域名所有者从未向公司收取供应费用,也没有支付过让供应有价值的人。

注册机构应向公司收费,并支付维护人员费用

所以,提案是这样的。有三个部分,没有一个是新的;新的是把它们放在同一个地方。

首先,注册机构对企业使用进行计费和收费。他们已经对此进行了计量。npm、PyPI、Docker Hub 和 Maven Central 都有速率限制、认证和企业级,而坐在他们面前的镜像厂商按座位计费。

Docker 的规则是正确的规则:个人、小团队、学生和开源项目无需支付费用,也无需察觉。规模超过一定规模的公司会获得订阅,定价方式类似于今天的 JFrog 或 Docker 订阅,也就是说,采购在不安排会议的情况下签字。

对大多数公司来说,这甚至不是新成本,因为他们已经在支付;发票只是换了一条新线路。

其次,这笔收入的固定份额是版税,它会进入套餐。不是给注册处,不是给基金会,也不是给有申请表的资助委员会。按比例按比例,按比例按比例自动按付费客户依赖数量加权的每个包裹,每月自动发放,没有仪式,也没有感谢邮件,因为关键是没人需要做任何事情让钱流动。

我2022年的笔记中有一句话,我就不作修改:“钱必须从一端流出另一端。你不必用加密货币来做这件事,那样不好,直接用数据库就行。”支付部分并不难。

thanks.dev现在通过依赖树按比例分配,Flossbank在2020年也做了。没人把它和收集半部分联系起来。

第三,做这些事的人是域名所有者。大约有十几个重要的注册机构。每个维护者已经在他们关心的注册账户上拥有账户,附带名字,并有支付方式,可以在线或一个表格字段外。

计费方面是有限的:几千家大型公司,其中大多数已经是供应链某人的客户。之前每次尝试中最难的两个问题——寻找付款方和寻找收款方——已经解决了,而且都是由同一个数据库解决的。

创立npm的艾萨克·施卢特,曾辩称我们应该停止收支持费,而是开始收费访问费:如果你是营利性公司,不付费是拿不到代码的。我同意这种方式,但我会把收费亭搬走,因为如果你把它放进许可证里就会被分叉,如果你把它放到注册处,你就能拿到JFrog的收入。

GitHub同时拥有npm和GitHub Sponsors,所有这些内容都集中在一个大楼里,本季度可能会为npm的企业客户开启。JFrog和Sonatype已经向公司收取供应费用,明天可能会添加这项业务。

我运营了五年npm,我向你保证,管道工程并不是最难的部分。

“公司难道不会直接转用免费镜像吗?”

有些人会这样做,但这无关紧要,原因和Docker一样。愿意运营自己镜像的公司,今天已经可以免费做到这一点,但他们付钱给JFrog,因为他们付钱的根本不需要。

离开的客户是那些从未打算为任何东西付费的人,他们已经通过别人的镜像搭便车了。Docker失去了一些镜像拉取,收入增加了十五倍。

“这不就是潮汐升降机吗?”

不,关键在于区别。Tidelift是一个独立的采购决策:一个新供应商,带着新提案,必须在预算中赢得自己的一线。镜面法案上的版税根本不算决策。

采购部门的人永远不会把它当成决策。Tidelift证明了公司会为此买单;只是它在一个必须被要求的层面上证明了这一点。

“别人不会玩弄吗?”

是的。这就是Spotify模式,它继承了Spotify的问题:如果你按流付费,人们会建立流媒体农场;如果你按依赖付费,人们会发布成千上万个相互依赖的垃圾包,试图把它们放进某人的锁文件。

你按付费用户依赖树的存在感来衡量,而不是原始下载,这让事情变得更难,然后你得接受没有资助委员会的代价是某种欺诈。世界上每个支付系统都有欺诈率。

目前付费维护者的欺诈率是100%,因为我们不这样做。

为什么这能奏效,而其他方法都无效

我认为这种方法可行的原因是,它不会要求均衡发生变化。每个策略都保持原位;变化的部分被测量出来。

许可证没有变化,所以没有什么会被分叉,也没人需要争论“开源”是什么意思。代码游戏依然由免费者赢得,这是正确的结果,歌手们继续唱歌。

这不是慈善,也不是强制令。没有人被要求捐赠,也没有人被法律强制支付,而这些法律最鲁莽的公司本来就会忽视。公司已经在为供应买单;他们已经支付的发票会被收取一条线。

而且它支付的是长尾,也就是其他机制都忽略的人口群体。小费支付名人,基金会支付员工薪水,政府资金支付关键项目中的二十个,但依赖树的版税却是奇怪的。

写出一个小而实用的东西,最终被四百家公司的生产系统应用的人,却只得到四百个小额贡献,没有应用,没有营销,也没有把自己变成品牌。

这对我来说比提案中任何其他部分都重要,因为开源的可持续发展讨论已经变成告诉维护者提升业务能力,我认为这完全是反向的。这个机制应该因为人们有用而付钱,而不是因为他们擅长请求。

大型语言模型让这件事变得紧迫,也让它更有价值

自2022年以来,另一个变化是软件编写成本崩溃,我认为这是三十年来首次出现变量实际移动,而不仅仅是加速。

更便宜的软件意味着更多的软件。更多人能制造出这个小而有用的东西,长尾会变长,而悄悄进入某人依赖树的包数量会增加,而不是减少。

在那个世界里,支付长尾的机制价值更高。

这也意味着人工智能代理现在是开源增长最快的消费者,他们消费开源的方式只有一种,那就是通过注册系统。2026年5月,OpenAI运营的一批代理出现已发布超过2000个软件包两天内就访问了RubyGems,利用注册表API中的一个漏洞追查用户凭证,获得了文档网站的远程代码执行,并迫使运营RubyGems的志愿者关闭新注册四天。

OpenAI表示代理们做的是无害的任务,这很可能属实,无论如何志愿者们承担了成本,没有人给他们寄支票。

早期迹象大多是这样。维护冰壶的丹尼尔·斯滕伯格关闭了一个七年内支付了9万美元的昆虫赏金项目,原因是AI生成的垃圾将提交中真实漏洞的比例从15%提升到不到5%,而六年来,没有一份纯AI报告发现真正的漏洞。

AI在发现开源中真实漏洞的能力越来越好;谷歌的大睡眠已经发现了一些。但这些发现发生在谷歌内部,修复工作发生在某人的晚上,而现在负载的增长速度快于减轻负载的工具,而这些工具属于拥有安全团队的公司,而不是必须编写补丁的人。

我不知道事情会怎么发展。我很长一段时间内都猜测,LLM的效果会相互抵消,让我们更快达到同样的平衡。现在我不太确定了,因为这是两款游戏第一次出现分歧:代码制作成本降低,供应成本提高,保证成本也越来越高。

这正是供应商值得付费的时刻,也是决定谁能获得报酬的时刻。

我们一直都有能力做到这一点

我不想以希望公司能更友善来结束这篇文章,因为我在脑海里已经写过这篇帖子的那个版本上百遍了,但毫无用处。我想以我们真正能做的事情来结束。

而且我当时还在npm时无法提出这个论点,因为利益冲突会很明显。但我在npm的时光早已过去,只剩下我对它在生态系统中强大地位的欣赏。

开源开发者被形容为无能为力,是一堆可以被忽视的零散志愿者,但事实并非如此。2017年,我们让Facebook修改了React的许可。2024年和2025年,我们让拥有数十亿美元资金的Redis公司在十四个月内推翻了战略决策。

每当有人试图用我们的代码做鹰派时,我们都会这么做。协调拒绝有效,事实证明鸽派在惩罚叛逃者方面相当擅长。

但我们从未把这些目标放在除了许可之外的任何东西上。三十年来,目标一直是那些试图为代码收费的公司,而与此同时,公司实际在开源上花的钱却流向了坐在瓶颈的十几家厂商,因为他们没有违反任何规则,而他们没有违反任何规则,而他们没有违反规则,这正是问题的核心。

所以这是我希望我们制定的规则:管理电表的人付钱给让仪表值得计量的人。这是一种常态,只有少数指定目标,他们都向开发者销售产品,且都关心开发者对他们的看法。

它不需要法律、基金会、资助委员会或任何单一公司才能显得慷慨。它需要注册处和镜像供应商在公司已经支付的发票上添加一条行,并运行一个cron任务。

我们三十年来尝试的其他方法,都是向一万家消费开源的公司呼吁。这是给提供开源的十二家公司的指令。

参与讨论