10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

不再是开源产品,分布式数据库 CockroachDB 修改代码授权协议

2019 年 6 月 06 日

不再是开源产品,分布式数据库CockroachDB修改代码授权协议

2019 年 6 月 4 日,CockroachDB 官方博客更新了一篇名为《Why We’re Relicensing CockroachDB》的文章,文中指出:CockroachDB 核心代码的授权协议将从 Apache License version 2 (APL)变更为 Business Source License(BSL)。


CockroachDB 是一款分布式数据库,其思路源自 Google 的全球性分布式数据库 Spanner。CockroachDB 既具有 NoSQL 对海量数据的存储管理能力,又保持了传统数据库支持的 ACID 和 SQL 等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持 OLTP 场景,同时支持轻量级 OLAP 场景。


CockroachDB 修改开源协议

据 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 这样的大型云服务提供商将其开源软件作为一项服务来接受和销售。


在这场交锋中,双方都在朝着更加“利己”的方向改变策略,例如越来越多的开源产品转向更强势的许可方式,而云厂商针对新的许可方式也有自己的应对方法,例如自研兼容开源产品的相关产品、推出相应的增强开源发行版等等。


关于 BSL 协议

CockroachDB 更改为的 BSL 协议到底是什么?BSL 全称是 Business Source License,它不是一个开源协议,用户虽然可以拿到源代码,但是使用时会受限。使用 BSL 协议的软件在发布的最多 4 年之后(开发者可在协议中自定义开源时间)会将协议变更为开源协议,也就是说,使用 BSL 协议的软件,最终都会变成开源软件。


BSL 协议是在经历了 MySQL 被收购之后,MariaDB 公司新定义的一种协议,是开源软件与商业公司对抗的一次新的探索。它介于开源和闭源之间,在非生产环境中,BSL 协议的软件可以不受限制的使用,如果用于商业目的,那么会有所限制。


协议变更后的 CockroachDB

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 团队的尝试能够给大家更多启发。


相关文章:


敲山震虎?继 MongoDB 之后,AWS 又对 Elasticsearch 下手了


玩大了,开源协议修改引发 MongoDB“大动荡”?


Kafka 团队修改 KSQL 开源许可,怒怼云厂商


AWS 回击了:推出兼容 MongoDB 的 DocumentDB


2019 年 6 月 06 日 07:008537
用户头像
田晓旭 InfoQ 编辑

发布了 497 篇内容, 共 242.4 次阅读, 收获喜欢 1668 次。

关注

评论

发布
暂无评论
发现更多内容

「干货总结」程序员必知必会的十大排序算法

bigsai

排序 排序算法 快速排序

MyBatis-技术专题-拦截器原理探究

李浩宇/Alex

距离 2020 年结束不到2个月,字节跳动员工却在闲鱼卖内推名额登上热搜!

Java架构师迁哥

区块链技术应用开发、区块链版权应用搭建解决方案

t13823115967

区块链技术应用开发 区块链版权搭建解决方案

跨语言跨平台聚合OpenAPI文档从来没有这么简单过

Trust Me

微服务 OpenAPI Knife4j Knife4jAggregation

物化视图如何快速完成数据聚合操作?

VoltDB

数据库 数据分析 sql

区块链医疗、电子票据应用落地开发解决方案

t13823115967

电子票据 区块链医疗

讯飞推出充电宝式便携拾音器,重新定义传统拾音

Talk A.I.

关于 AWS Lambda 中的冷启动,你想了解的信息都在这!

donghui

Serverless Faas 函数计算

大厂经验:一套Web自动曝光埋点技术方案

阿亮

埋点 曝光埋点 点击埋点 自动化埋点

SpringBoot-技术专题-如何提高吞吐量

李浩宇/Alex

数字化时代App们将何去何从?

fino星君

Java踩坑记系列之Arrays.AsList

Java老k

Java

java: Compilation failed: internal java compiler error解决办法

LSJ

IDEA

802.11抓包软件对比之Microsoft Network Monitor

IoT云工坊

wifi 嵌入式 抓包

《华为数据之道》读书笔记:第 4 章 面向“业务交易”的信息架构建设

方志

数据中台 数字化转型 数据治理

京东千亿订单背后的纵深安全防御体系

京东科技开发者

安全 网络 云服务 云安全

推荐几款MySQL相关工具

Simon

MySQL 工具 percona server

成德眉资现代农业园区大联动促发展,“1链3e”引领四市农业产业数字化建设

CNG农业公链

前端高效开发必备的 js 库梳理

徐小夕

Java GitHub 前端 js

中小型企业创业的福音

anyRTC开发者

创业 音视频 WebRTC RTC

京东智能客服品牌焕新:“言犀”亮相2020京东JDD大会

京东科技开发者

大数据 AI 知识图谱

面试者必看:Java8中的默认方法

Silently9527

java8 默认方法

开源认证和访问控制的利器keycloak使用简介

程序那些事

开源 程序那些事 授权框架 keycloak 认证授权

Thread.start() ,它是怎么让线程启动的呢?

小傅哥

Java 线程 JVM 小傅哥 Thread

26张图带你彻底搞懂volatile关键字的底层实现

小牛

volatile 后端 多线程 并发 Java 分布式

肝了一周的 UDP 基础知识终于出来了。

cxuan

计算机网络 计算机基础

以 Kubernetes 为代表的容器技术,已成为云计算的新界面

阿里巴巴云原生

云计算 Kubernetes 容器 云原生

MySQL-技术专题-LEFT JOIN避坑指南

李浩宇/Alex

表格控件Spread.NET V14.0 发布:支持 .NET 5 和 .NET Core 3.1

Geek_Willie

阿里内部11月最新出台Spring Cloud架构设计+程序开发+运维部署

Java架构追梦

Java 阿里巴巴 架构 微服务 SpringCloud

开源中间件技术学习路线

开源中间件技术学习路线

不再是开源产品,分布式数据库CockroachDB修改代码授权协议-InfoQ