CockroachDB 是一款分布式数据库,其思路源自 Google 的全球性分布式数据库 Spanner。CockroachDB 既具有 NoSQL 对海量数据的存储管理能力,又保持了传统数据库支持的 ACID 和 SQL 等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持 OLTP 场景,同时支持轻量级 OLAP 场景。
据 CockroachDB 官方博客称,CockroachDB 的核心代码授权协议将采用 BSL,用户可以将 CockroachDB 扩展到任意数量的节点,可以随意使用 CockroachDB,也可以将其嵌入到应用程序中(无论是将这些应用程序发送给客户,还是将其作为服务运行),甚至可以在内部将 CockroachDB 作为服务运行。唯一不能做的事情是,在没有购买许可证的情况下,提供商业版 CockroachDB 作为服务。
但好消息是该限制并不是无限期的,而是有失效性的:CockroachDB 每个版本在发布三年之后,许可证将转换为 APL。CockroachDB 官方表示,之所以会设置时间限制的再许可,主要有两个目的,一是想要创建一个具有竞争力的数据库即服务(DBaaS),二是为了保证核心产品是纯粹的开源产品。
从首次出现在 GitHub 上,CockroachDB 一直走的是比较典型的开源路线,即核心代码保存在 Apache 2.0 许可证之下,启动了托管服务,并根据企业许可证为已建立的公司提供一些功能。为什么突然就转变路线,想要变更协议呢?
变更协议的主要原因是 CockroachDB 团队对于开源商业模式有了重新的认识,之前他们认为公司可以基于强大的开源产品来建立业务,并不需要其它更大的技术平台,提供相同的产品即服务。现在,他们发现现行法律允许竞争对手提供其它公司的 OSS 产品即服务,而这一举动伤害到了原本的开源产品。
前段时间,AWS 推出的 Elasticsearch 开源发行版 就是一个典型案例,该 Elasticsearch 发行版不仅可以作为免费软件来使用,同时还将提供 Elastic 只向付费客户提供的高级功能,例如传输加密、用户身份验证、详细审计、基于角色的细粒度访问控制、事件监控和警报、深度性能分析和 SQL 支持等。
在博客中,CockroachDB 团队表示这次软件许可条款的更改就是为了回应这一类竞争对手。事实上,开源软件和云厂商的矛盾早已存在,之前 Redis Labs、Confluent 和 MongoDB 等公司先后修改了开源协议,并明确表示修改的原因是阻止像 AWS 这样的大型云服务提供商将其开源软件作为一项服务来接受和销售。
在这场交锋中,双方都在朝着更加“利己”的方向改变策略,例如越来越多的开源产品转向更强势的许可方式,而云厂商针对新的许可方式也有自己的应对方法,例如自研兼容开源产品的相关产品、推出相应的增强开源发行版等等。
CockroachDB 更改为的 BSL 协议到底是什么?BSL 全称是 Business Source License,它不是一个开源协议,用户虽然可以拿到源代码,但是使用时会受限。使用 BSL 协议的软件在发布的最多 4 年之后(开发者可在协议中自定义开源时间)会将协议变更为开源协议,也就是说,使用 BSL 协议的软件,最终都会变成开源软件。
BSL 协议是在经历了 MySQL 被收购之后,MariaDB 公司新定义的一种协议,是开源软件与商业公司对抗的一次新的探索。它介于开源和闭源之间,在非生产环境中,BSL 协议的软件可以不受限制的使用,如果用于商业目的,那么会有所限制。
BSL 许可证应用于 CockroachDB 的核心版本(即目前在 Apache 2.0 许可证下的代码),这意味着 CockroachDB 核心不再开源,但完整的源码仍然可用,除了构建 DBaaS 之外,也允许用于其它商业用途。对于绝大多数用户来说,CockroachDB 仍然可被自由使用,而且三年之后就又变成无任何附加条件的开源产品。
CockroachDB 数据库从 19.2 版本开始重新授权,企业功能继续沿用 Cockroach Community License (CCL),使用企业功能需要与 Cockroach Labs 签订许可协议,并且此许可证在三年之后不会转换为开源。而之前的版本不受此许可证更改的影响,即 CockroacheDB 19.1 仍使用 APL,19.1.x 系列中当前和将来的所有补丁版本也将使用 APL。
具体来说,CockroachDB 19.2(暂定 2019 年 10 月)是使用新许可方案的第一个版本,它包括在 BSL 和 CCL 许可下的代码。2022 年 10 月(发布三年后),CockroachDB 19.2 中 BSL 下的部分代码将转换为 APL,补丁版本也会随之转变为 APL。其它版本的协议转换时间以此类推,例如 CockroachDB 20.1 计划在 2020 年 4 月发布,于 2023 年 4 月成为开源软件。
开源和商业的关系绝不是简单的对立:没有开源的基础技术是没有生命力,很难被广泛应用;而商业体现了开源项目的价值,也反向推动了开源项目的发展和生态的建立。所以,开源项目如何在开源和商业找到一个平衡点,是很多开源团队在思考的问题,希望 CockroachDB 团队的尝试能够给大家更多启发。
相关文章:
AWS 回击了:推出兼容 MongoDB 的 DocumentDB
敲山震虎?继 MongoDB 之后,AWS 又对 Elasticsearch 下手了
https://www.infoq.cn/article/4JGCd6fWuTYWG2*BOBQo
玩大了,开源协议修改引发 MongoDB“大动荡”?
https://www.infoq.cn/article/J8hoGcT5x_EXxVf6cxve
你也「在看」吗?👇