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
(完)