译自 Dries Buytaert 博客原文:Open Source is four kinds of economic goods(2026 年 9 月 1 日)。
一个开源项目里装着好几种经济品。代码、基础设施、服务、维护者的时间、商业生态,每一种的行为规律都不一样。把它们统统当成一个"公地",就会掩盖三件事:今天是谁在付钱、是谁掌握准入、以及谁需要付钱。
经济学家通常沿两个维度给物品分类。第一个是排他性(excludability):阻止别人使用某样东西有多容易。第二个是竞争性(rivalry):一个人用了之后,别人能用的会不会变少。
把这两个维度组合起来,就得到四类物品。
| 排他的 | 非排他的 | |
|---|---|---|
| 竞争的 | 私有品:三明治 | 公共池资源:海里的鱼 |
| 非竞争的 | 收费品:收费公路(直到容量上限) | 公共品:天气预报 |
私有品既排他又竞争。三明治是个简单的例子:店家可以选择卖不卖给我(排他),但我一旦吃掉它,别人就吃不到了(竞争)。
公共品很难把人排除在外,而且不会因为使用而被消耗完。天气预报是很好的例子:一旦发布,就很难阻止别人使用(非排他),而一个人用了,也不会让天气预报对别人变得不那么可用(非竞争)。
公共池资源同样很难排他,但它是竞争的。海里的鱼是标准例子:很难阻止人们去海里捕鱼(非排他),但一个人捕走的鱼,会让别人少一些(竞争)。
收费品是排他的,但在达到容量之前基本是非竞争的。收费公路可以把司机挡在外面(排他),但在拥堵形成之前,多一辆车并不减少别人的通路(拥堵前非竞争)。James Buchanan 也把这称作俱乐部物品(club goods)。
开源项目里的四种物品
人们常把开源同时描述成公共品和公地,但这两个词回答的是不同的问题。公共品描述的是某种资源的经济特征;公地描述的是共享资源如何被治理。
一个生态完全可以在其各部分具有不同经济特征的情况下,按公地的方式来治理。这正是把代码、基础设施、维护者时间、集体声誉这些东西分开归类的原因。
| 排他的 | 非排他的 | |
|---|---|---|
| 竞争的 | 私有品:专属支持、咨询、维护者的注意力 | 公共池资源:项目产生的商业机会池 |
| 非竞争的 | 收费品:项目运营的包注册中心、更新与安全数据服务的访问权、市场曝光度 | 公共品:已发布的开源代码 |
开源的代码本身,行为很像公共品。多复制一份并不会减少别人能用的量。而且开源许可证允许接收方再分发代码,所以发布之后再想限制访问就很难了。
Steven Weber 在《The Success of Open Source》里更进一步,把开源描述为"反竞争"的(anti-rival,这个维度没在表里出现)。在合适的条件下,它的价值会随着采用度和参与度的提高而增长。更多用户会带来更多测试、更多缺陷报告、更多功能、文档、宣传和其他贡献。
但代码只是一个开源项目的一部分。
很多大项目是"有托管方的开源"(Stewarded Open Source)。一个基金会、公司或社区在运营它的包注册中心和构建系统、响应安全问题、协调发布,等等。这些活动每一项都有自己的经济学,都可以映射到上述四类物品上。
由项目运营的包注册中心,或者支撑产品内更新与安全通知的数据服务,行为可以像收费品。项目可以对访问做限流、要求注册账号,或者把额外的容量和功能留给付费客户。
支持和咨询是私有品。合同决定了谁获得这项服务,花在一个客户身上的一个小时,就不能同时花在另一个客户身上。
维护者的注意力也可以像私有品。获得专门的评审时间是可以被限制的(排他),而花在评审一个补丁上的时间不能同时花在另一个补丁上(竞争)。
不过,这种私有投入可以生产出公共品。资助方可以付钱请维护者修一个 bug 或审一个补丁,但改进一旦以项目的开源许可证发布出去,任何人都可以使用和再分发。经济学家把这叫做"公共品的私人供给"(the private provision of a public good)。
开源项目产生的商业机会是一种公共池资源。客户是因为项目有名声才来找帮忙的,任何服务商都可以去争取他们(非排他)。但一单被某家拿下,对其他家就没了(竞争)。潜在客户的池子就是那片海,签下的合同就是被抓上来的鱼。
让这个池子保持有鱼的是项目的集体声誉。它由许多贡献者建立,而每一家服务商都在从中取用,不管自己有没有贡献。服务商可以只从池子里拿单,而不帮着维护产出这些机会的项目。质量差的工作或不健康的竞争会削弱声誉,声誉一弱,来找所有人的客户都会变少。
这就是我主张开源社区应该帮客户区分"创造者"(Makers)与"索取者"(Takers)的原因。让贡献可见,会把商业需求导向那些支撑项目、也支撑"让客户不断上门的名声"的服务商。
项目自己运营一个列出服务商的市场,是做到这一点的方式之一。进入这个市场的资格可以像收费品:项目控制列谁不列谁(排他),而多列一家通常并不妨碍其他家参与(非竞争)。开源给服务商的是代码上的权利,不是"被项目宣传"的权利。因此项目可以把"做出贡献"作为进入市场的前提条件。
一条用于托管维护的筹资规则
对一个开源项目来说,这个框架引出两个实际问题:它能对什么收费,它必须为什么编预算?
排他性说明了开源项目能在哪里控制准入,因而也说明了哪里可以直接收费。例如,项目可以对包注册中心的访问、对安全通知服务、对市场里的服务商列表收费。在每一种情况下,项目控制的都是与已发布代码分离的东西——而代码对所有人依然可用。
竞争性说明了什么使用会消耗掉,因而也说明了哪里必须为容量编预算。代码的副本不会用完,带宽、服务器容量、人员时间、维护者的注意力会用完。项目仍然可以选择免费提供它们,但总得有人吸收这份成本。
把两个维度合起来,就是一条简单的筹资模型:用可排他物品带来的收入,去支付竞争性资源的成本,而开源的代码始终是公共品。
这不意味着每一项可排他的服务都该放到付费墙后面。向所有人收取包注册中心的使用费,会让软件更难试用,从而拖慢采用。这也是我之前提出开源基础设施分级模型的原因:核心服务对个人和小项目保持免费,同时请大规模使用它们的组织为所消耗的部分分担成本。
在这四个类别之间,项目可以靠私有品和收费品筹钱,保护公共池资源不被耗尽,并用这些收入支付生产公共品所需的工作。
那些不把这些安排明确下来的项目,会继续依赖对基础设施和维护者工作的、看不见的补贴。