阮一峰:為什麼開源數據庫改變許可證?

CockroachDB 是一個開源的分佈式數據庫,最近改變了代碼授權,放棄了 Apache 許可證。

許多開源數據庫這一兩年都改變了授權,比如 Confluent、Elastic 、MongoDB、Redis Labs、TimescaleDB。本文分析這種現象。

阮一峰:為什麼開源數據庫改變許可證?

一、CockroachDB 的許可證變更

CockroachDB 以前的許可證是 Apache,代碼託管在 GitHub,任何人都可以訪問。

現在的許可證改成了”商業源碼許可證”(Business Source License,縮寫 BSL)。

阮一峰:為什麼開源數據庫改變許可證?

這段文字的意思是,三年以後的2022年10月1日,這些代碼將變為 Apache 許可證,在此之前都屬於商業源碼許可證。多少人想用三年前的代碼?因此,它實際上用 BSL 許可證取代了 Apache 許可證。


二、商業源碼許可證的特點

BSL 許可證是 MariaDB 發明的,最大的特點有兩個。

一是非商業性使用沒有限制,商業性使用有限制。

二是許可證是模塊化的,可以附加自己的條件(Additional Use Grant)。

比如,MariaDB 附加的條件是,一個項目最多隻能使用兩個數據庫服務器實例,超過就要付費。

阮一峰:為什麼開源數據庫改變許可證?

CockroachDB 附加的條件是,對外提供商業性的數據庫服務需要付費。

阮一峰:為什麼開源數據庫改變許可證?

簡單說,商業源碼許可證就是一種限制了雲服務的開源許可證。


三、問題的由來

目前,許多開源數據庫對雲服務都有限制。這完全是由 Amazon 的 aws 雲服務引起的。

aws 一直提供數據庫服務,2009年推出 RDS MySQL 服務,2013年推出 PostgreSQL 服務,2015年推出 Amazon Elasticsearch 服務。大量企業購買這些服務,使得收入都向 Amazon 集中,它的 Elasticsearch 一個服務的收入已經高於原始開發商 Elastic 的所有收入。

這就相當於,開源開發者在為 Amazon 免費打工,為它創造利潤。Elastic 當然很不爽,推出了付費版本。結果,Amazon 一不做二不休,把開源分支分叉了,自己把 Elastic 的所有收費功能寫出來了。也就是說,Amazon 不僅拿走了利潤,還創造出了一個競爭性產品。類似的情況還有,Azure 提供 MongoDB 兼容的 CosmosDB 服務。

其他開源數據庫看到這種局面,都感到了雲服務商的威脅,所以紛紛改變授權模式。

這裡的根本問題是,雲服務的出現改變了開源軟件的生態。以前,開源軟件有眾多的使用者,會形成一個社區,從社區得到反饋和支持。現在,企業級開源軟件很可能都有云服務,導致企業客戶都流向了雲服務商,軟件自身形成不了社區,雲服務商反過來會對軟件產生巨大影響,許可證的變更只是抵抗雲服務商的一種策略。

阮一峰:為什麼開源數據庫改變許可證?

四、對策

目前,有三種變更許可證的策略。

第一種是採用 AGPL 許可證,任何對軟件的修改(包括提供服務)都必須開源。這種策略的好處是防止雲服務商對軟件進行內部修改,壞處是不夠靈活,可能打擊企業採用該軟件的積極性。

第二種是產品分層策略,同時提供免費的社區版和收費的企業版。這種策略可以保證收入,但是問題是,有些高級功能只在企業版提供,不利於軟件的開源。

第三種就是 CockroachDB 的策略,軟件依然開源,但是提供服務必須付費。我覺得,目前來看這種策略在開源和收費之間達到平衡,比較理想。

參考:

Cockroach and the Source Available Future, Stephen O’Grady

Why We’re Relicensing CockroachDB, Peter Mattis

Everything You Need to Know About the OSS Licensing War, Raj Dutt

相關推薦

推薦中...