夜天之书 #86 商业源码协议为何得到 HashiCorp 等企业的垂青?

当地时间 8 月 10 日,知名开源软件公司 HashiCorp 发布一则公告[1],称其原先在 Mozilla Public License 2.0[2] 下发布的 Terraform、Consul 和 Vault 等多款软件,将在未来的版本中改为使用商业源码协议,即 Business Source License 1.1[3] 来发布。

此前,已有其他知名开源软件公司也改用或从一开始就使用商业源码协议许可其源码公开的软件。

  • MariaDB 公司的产品 MaxScale[4] 数据库代理;

  • CockroachLabs 公司的产品 CockroachDB[5] 数据库;

  • Lightbend 公司的产品 Akka[6] 框架;

  • Materialize 公司的产品 Materialize[7] 流数据库;

  • Outline 公司的产品 Outline[8] 知识库。

本文首先介绍商业源码协议的由来和内容,进而以剖析选择该协议的公司和软件的方式讨论其作用。最后,从企业开源的动机和利益权衡出发,讨论为何 HashiCorp 等一众所谓开源软件公司,最终都走向带有商业保护条款的源码公开协议。

什么是商业源码协议

商业源码协议是 Business Source License 的逐词翻译,常被简称为 BSL 协议或 BuSL 协议,当前版本是 1.1 版本。

在此前的文章中,我基本使用 BSL 1.1 来指代当前版本的商业源码协议。但是,在 Linux 基金会推动的 SPDX 标准[9]里,商业源码协议以 BUSL-1.1 作为标识符。这是因为 BSL 被用来指代 Boost Software License 1.0[10] 这个更早出现的协议:它是一个类似 MIT License 的协议。因此下文及以后的文章里,我会尽量用 BuSL 1.1 来指代商业源码协议。

BuSL 1.1 是 MariaDB 公司为其产品 MaxScale 数据库代理量身定制的带有商业保护条款的源码公开协议。该协议实际使用时必然带有以下两个特点:

第一,协议授权接收方复制、修改、衍生和重新分发被许可软件的权利,但是只能在非生产环境下使用该软件。许可方可能在附加使用条款中允许其他受限的生产环境使用条款。

由于 BuSL 1.1 不授权接收方即下游用户或开发者使用不同协议分发的权利,因此上述生产环境使用的限制将传递到所有直接或间接的下游。

第二,协议约定一个不超过四年的期限。在该期限过后,接收方将获得许可方指定的变更协议授予的权限,同时第一点中的条款终止。变更协议必须与 GPL 2.0 或更高版本兼容。

把这段协议文本翻译成人话,意思就是软件以 BuSL 1.1 协议发布后,在最多四年的期限后会“变成”以新协议发布。这个新协议必须是跟 GPL 兼容的协议,兼容方向是 GPL 许可的软件能够跟该协议许可的软件集成后以 GPL 发布。再直白点说,所有 Permissive 开源协议和 Copyleft 开源协议里选一个。

所以,BuSL 1.1 协议,比起同类型的 Elastic License 2.0[11] (ELv2) 协议拿来即用,更像是一个协议模板。要想使用 BuSL 1.1 协议,需要决定是否约定一个小于四年的协议变更期限,以及是否在附加使用条款中允许客户在其他特定生产环境使用。

当然,BuSL 1.1 协议在许可方契约一节里也约定了任何自称 BuSL 1.1 的填完空的具体协议,只能细化这两处,且不能与一开始就授予的复制、修改、衍生和重新分发等权利相冲突。

显然,BuSL 1.1 协议并不是开源协议,因为它限制生产环境的使用,而这不满足开源定义[12]当中的第六条“不得歧视特定领域的使用”。BuSL 1.1 在其协议文本说明中也直接地说明了这点,同时提供了两份分别对于下游用户和许可方的常见问题解答:

  • Frequently Asked Questions[13]

  • Adopting and Developing BSL Software[14]

下面,我们从具体的应用案例出发,分析 BuSL 1.1 的使用方式及其作用。

商业源码协议的应用案例

MaxScale

首先看到的是协议诞生之地,MariaDB 的 MaxScale 数据库代理。毫不意外的是它约定了最长的四年变更期限,并以 GPL 2.0 or later 作为变更协议。这部分没有太多讨论必要,主要看它对生产环境使用的条款:

You may use the Licensed Work when your application uses the Licensed Work with a total of less than three server instances in production.

简言之,可以在生产环境使用,但是单个应用不能部署超过三个节点。

这其实就是限制了大规模集群的场景,允许个人用户和小企业用起来,做产品反馈和帮助传播。对于需要维护大集群的用户,通常也是更有实力付费的用户,限制其使用,促使它们谈判商业合同付费购买使用许可。

CockroachDB

CockroachLabs 起初使用 Apache License 2.0 (ALv2) 来许可自己的数据库。随后开发出一套所谓的 CockroachDB Community License Agreement[15] 来发布一些高级功能和插件,以图促使高级用户付费。

稍微展开一下这个 Community License Agreement 对下一节讨论协议采用动机有帮助,因为这个模式是在 ELv2 和 BuSL 1.1 出现之前开源商业公司追加商业保护条款的常见做法。

这个协议很长,所以对开发者极不友好。去掉所有套话,其中最关键的条款是第四条“费用”和第五条“试用协议”。简言之,开发者通过申请,每个自然年最多可以试用 30 天企业版,除此以外的使用统统要付钱。

所以这其实是一个很典型的商业协议,甚至没有跟源码公开协议、开源协议放在一起讨论的价值。只是因为它是一家开源商业公司 CockroachLabs 创造,且在相当一段时间内被其他开源商

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值