Open Source License

淺談 Commons Clause

前陣子 Redis Labs 將部份 Redis 模組的授權條款從 AGPL 3.0 改成 Apache 2.0 + “Commons Clause"  [1]. 也就是禁止販售.

什麼是 Redis

基於記憶體運行的 key-value 資料庫 [2], 其核心程式碼採用 BSD-3 開源授權 [3]; 而部份模組採用 AGPL 3.0 進行授權. 特色是讀寫效能高並且支援永久儲存資料. 除了支援多種程式語言外, 也提供多種資料結構. 其優異特性讓許多雲端服務商提供 Redis 相關的雲端服務 [4][5][6].

Redis 有哪些模組被影響

  • RediSearch
  • Redis Graph
  • ReJSON
  • Redis-ML
  • Rebloom

什麼是 Commons Clause 

Commons Clause [7] 全文如下:

“Commons Clause” License Condition v1.0

The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition.

Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.

For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Cause License Condition notice.

Software: [name software]

License: [i.e. Apache 2.0]

Licensor: [ABC company]

短短三行, 基本上只敘述了一件事. 那就是不授予販售此軟體的權利, 並且在此定義何謂販售. Commons Clause 原意不是為了限制程式碼的分享散佈以及開發使用, 而是強迫那些使用程式碼來商業化的企業來進行談判進行合理使用 – 因許多企業使用 open source 賺錢, 但卻都不提供貢獻.

根據條款內容, Commons Clause 已違反 Open Source [8] & DFSG [9] 中定義第六條No discrimination against fields of endeavor. 故 Commons Clause 不是 Open source license, 且使用 Common Clause 的軟體不能稱為 Open source software.

  • 為什麼不使用 AGPL 就好? 

Commons Clause 表示 AGPL 有下列問題:

  1. 不為廣泛採用的 license
  2. 授權內容對於 “網路" 條款說明不清

以上問題導致無法有效維護開發者的權利

  • 為什麼不採用 Creative Commons non-commercial (非商業性使用) [10] 就好? 

Commons Clause 表示他們的概念和 CC-NC 很像, 但 CC-NC 不是 software license. 且 CC-NC 定義為禁止商業使用, Commons Clause 只限制不能銷售販賣.  相對於 CC-NC 的定義較為寬鬆.


Redis Labs 採用 Commons Clause 原由

Redis Labs 表示許多雲端運營商使用 Redis 建立商業服務賺取金錢, 但並沒有進行利益分享或者貢獻程式碼回社群, 此舉違反開源社群的精神. 使用 AGPL 除了無法有效遏止雲端運營商的行為外, 也違反許多開發者公司的開源政策 (有些公司的 open source policy 明令禁止使用 AGPL 這種 copyleft license). 所以最終採用 Apache 2.0 + Commons Clause 組合來進行軟體授權.

但 Redis Labs 也重申 Redis core 將會永遠使用 BSD -3 授權, 只有特定外掛模組會受影響.

Redis 特定模組修改授權後的影響

Redis 本體不受影響,

Redis 特定模組 – 雲端服務商需連絡 Redis Labs 進行授權以合理使用, 否則將無法銷售 Redis 特定模組之雲端服務. 其他使用者則不在此限, 可安心(?)使用.

此外, 因軟體授權不可徹回性的緣故; 修改授權後的軟體版本才會受影響. 之前的版本則繼續依照原本授權方法, 不受此限.

如同前面所述, 加上 Commons Clause 條款的軟體授權, 已違反 Open Source [3] & DFSG [4]定義第六條 No discrimination against fields of endeavor. 故上述模組不能稱為 Open source software. 堅守自由軟體精神的 Debian 立即有相關討論 [11], 並將這些不符合自由軟體的 Redis 特定模組移除 [12].

心得:

Commons Clause 以及 Redis 的初衷都是想要反制那些只拿取卻不回饋貢獻的公司企業, 但採用此違反自由軟體定義的方法是否合宜, 此舉對 Open Source 發展是否會造成危害. 都是需要觀察的地方. 但, 也許有更好的方法也能達到初衷.

Note:

知名的 NoSQL 圖形數據庫 – Neo4j 也在前幾個月導入 Commons Clause [13]


References:

[1] https://redislabs.com/community/licenses/

[2] https://en.wikipedia.org/wiki/Redis

[3] https://redis.io/topics/license

[4] https://aws.amazon.com/en/elasticache/

[5] https://azure.microsoft.com/en-us/services/cache/

[6] https://cloud.google.com/memorystore/

[7] https://commonsclause.com/#faq

[8] https://en.wikipedia.org/wiki/The_Open_Source_Definition

[9] https://en.wikipedia.org/wiki/Debian_Free_Software_Guidelines

[10] https://creativecommons.org/licenses/by-nc/3.0/us/

[11] https://lists.debian.org/debian-devel/2018/08/msg00319.html

[12] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906920#12

[13] https://github.com/neo4j/neo4j/commit/721b1154146b8a2e529a96ee69aa87481ef4caa3

 

淺談 Commons Clause 有 “ 1 則迴響 ”

發表迴響