修改软件许可证使用时间_阮一峰:为什么开源数据库改变许可证?
CockroachDB 是一個開源的分布式數(shù)據(jù)庫,最近改變了代碼授權(quán),放棄了 Apache 許可證。
許多開源數(shù)據(jù)庫這一兩年都改變了授權(quán),比如 Confluent、Elastic 、MongoDB、Redis Labs、TimescaleDB。本文分析這種現(xiàn)象。
一、CockroachDB 的許可證變更
CockroachDB 以前的許可證是 Apache,代碼托管在 GitHub,任何人都可以訪問。
現(xiàn)在的許可證改成了”商業(yè)源碼許可證”(Business Source License,縮寫 BSL)。
這段文字的意思是,三年以后的2022年10月1日,這些代碼將變?yōu)?Apache 許可證,在此之前都屬于商業(yè)源碼許可證。多少人想用三年前的代碼?因此,它實際上用 BSL 許可證取代了 Apache 許可證。
二、商業(yè)源碼許可證的特點
BSL 許可證是 MariaDB 發(fā)明的,最大的特點有兩個。
一是非商業(yè)性使用沒有限制,商業(yè)性使用有限制。
二是許可證是模塊化的,可以附加自己的條件(Additional Use Grant)。
比如,MariaDB 附加的條件是,一個項目最多只能使用兩個數(shù)據(jù)庫服務(wù)器實例,超過就要付費。
CockroachDB 附加的條件是,對外提供商業(yè)性的數(shù)據(jù)庫服務(wù)需要付費。
簡單說,商業(yè)源碼許可證就是一種限制了云服務(wù)的開源許可證。
三、問題的由來
目前,許多開源數(shù)據(jù)庫對云服務(wù)都有限制。這完全是由 Amazon 的 aws 云服務(wù)引起的。
aws 一直提供數(shù)據(jù)庫服務(wù),2009年推出 RDS MySQL 服務(wù),2013年推出 PostgreSQL 服務(wù),2015年推出 Amazon Elasticsearch 服務(wù)。大量企業(yè)購買這些服務(wù),使得收入都向 Amazon 集中,它的 Elasticsearch 一個服務(wù)的收入已經(jīng)高于原始開發(fā)商 Elastic 的所有收入。
這就相當(dāng)于,開源開發(fā)者在為 Amazon 免費打工,為它創(chuàng)造利潤。Elastic 當(dāng)然很不爽,推出了付費版本。結(jié)果,Amazon 一不做二不休,把開源分支分叉了,自己把 Elastic 的所有收費功能寫出來了。也就是說,Amazon 不僅拿走了利潤,還創(chuàng)造出了一個競爭性產(chǎn)品。類似的情況還有,Azure 提供 MongoDB 兼容的 CosmosDB 服務(wù)。
其他開源數(shù)據(jù)庫看到這種局面,都感到了云服務(wù)商的威脅,所以紛紛改變授權(quán)模式。
這里的根本問題是,云服務(wù)的出現(xiàn)改變了開源軟件的生態(tài)。以前,開源軟件有眾多的使用者,會形成一個社區(qū),從社區(qū)得到反饋和支持。現(xiàn)在,企業(yè)級開源軟件很可能都有云服務(wù),導(dǎo)致企業(yè)客戶都流向了云服務(wù)商,軟件自身形成不了社區(qū),云服務(wù)商反過來會對軟件產(chǎn)生巨大影響,許可證的變更只是抵抗云服務(wù)商的一種策略。
四、對策
目前,有三種變更許可證的策略。
第一種是采用 AGPL 許可證,任何對軟件的修改(包括提供服務(wù))都必須開源。這種策略的好處是防止云服務(wù)商對軟件進(jìn)行內(nèi)部修改,壞處是不夠靈活,可能打擊企業(yè)采用該軟件的積極性。
第二種是產(chǎn)品分層策略,同時提供免費的社區(qū)版和收費的企業(yè)版。這種策略可以保證收入,但是問題是,有些高級功能只在企業(yè)版提供,不利于軟件的開源。
第三種就是 CockroachDB 的策略,軟件依然開源,但是提供服務(wù)必須付費。我覺得,目前來看這種策略在開源和收費之間達(dá)到平衡,比較理想。
參考:
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
總結(jié)
以上是生活随笔為你收集整理的修改软件许可证使用时间_阮一峰:为什么开源数据库改变许可证?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 带返回值的action_C#委托的
- 下一篇: linux cmake编译源码,linu