點選▲關註 “資料和雲” 給公眾號標星置頂
更多精彩 第一時間直達
活動預告
2019年度 ACOUG活動正式啟動!3月23日,ACOUG核心專家楊廷琨先生,羅海雄先生,以及帶著最新著作《資料人的必備及永恆技能:SQL和PL/SQL深度程式設計》的網際網路教育專家侯聖文先生和甲骨文神秘技術專家,將為大家奉獻一場多層次、多維度的主題分享,歡迎踴躍報名參會。您有好的想法或者體會,也歡迎投稿,社群隨時為大家開放。
會議時間:2019年3月23日14:00-18:00
會議地點:北京市市轄區光華路9號光華路SOHO1期508室恩墨學院
長按二維碼或點選“閱讀原文”報名檢視詳情
作者:崔虎龍,雲和恩墨-開源架構部-MySQL技術顧問,長期服務於資料中心(金融,遊戲,物流)行業,熟悉資料中心運營管理的流程及規範,自動化運維 等方面。擅長MySQL,Redis,MongoDB 資料庫高可用設計 和 運維故障處理,備份恢復,升級遷移,效能最佳化 。
前一段時間有幾位公司同事問我,客戶要取用開源軟體,麻煩調研一下開源協議。我進一步瞭解下來,確實這裡邊有好多註意事項,特此準備了一下,普及給大家。
先上個圖看看,這幾年資料庫趨勢。
開源軟體走進了企業平臺,特別是雲平臺。並且一些機構,把這些開源軟體打包成產品,推向商業化。
終於有些開源機構看不慣了。。。
1)
2)
Redis Labs自研 Redis 模組 – RediSearch,Redis Graph,ReJSON,ReBloom 和 Redis-ML 將不再是開源軟體,而是原始碼可用(source available)
3)
Neo4j 產品副總裁 Philip Rathle 宣佈,從 Neo4j 3.5 版本開始,企業版將僅在商業許可下提供,不再在 GitHub 上提供原始碼。
問:開源協議是什麼,對我們有什麼影響。
答:對於熱愛開源軟開發的同事,研究架構的同事,要註意了。開源軟體投入到生產,間接的產生經濟利益的時候,就會有無情的手,在周圍徘徊。
下麵看下具體介紹。
定義:LGPL許可證是LESSER GENERAL PUBLIC LICENSE的簡寫,也叫LIBRARY GENERAL PUBLIC LICENSE,中文譯為“較寬鬆公共許可證”或者“函式庫公共許可證”。該許可證適用於一些由自由軟體基金會與其它決定使用此許可證的軟體作者所特殊設計的軟體軟體包─比如函式庫(即Library)。
全世界上的開源許可證(Open Source License):http://www.opensource.org/licenses/alphabetical
比較常見開源協議:
許可證 版本 包含許可證 包含原始碼 商業使用 散佈 修改 專利授權 私人使用 授權轉售 無擔保責任
GNU GPL 3.0 是 是 是 是 是 是 是 是 是
Apache License 2.0 是 是 是 是 是 是 是 是 是
BSD 是 是 是 是 是 是 是
MIT 是 是 是 是 是 是 是
從上面子項中,我們可以看到,想用開源軟體,就得遵守規則,要不將來要吃紅牌的
下麵介紹常用的的開源協議GNU GPL,PostgreSQL License,SSPL v1.0,BSD,Apache License2.0,Commons Clouse v1.0
GNU GPL
GNU是一個類Unix作業系統。GPL是GNU General Public License的縮寫。它是由多個應用程式、系統庫、開發工具乃至遊戲構成的程式集合。GNU的開發始於1984年1月,稱為GNU工程。GNU的許多程式在GNU工程下釋出;我們稱之為GNU軟體包。
GPL同其它的自由軟體許可證一樣,許可社會公眾享有:執行、複製軟體的自由,發行傳播軟體的自由,獲得軟體原始碼的自由,改進軟體並將自己作出的改進版本向社會發行傳播的自由。
GPL協議最主要的幾個原則:
1、確保軟體自始至終都以開放原始碼形式釋出,保護開發成果不被竊取用作商業發售。它必須開放原始碼。
2、GPL 大致就是一個左側版權(Copyleft,或譯為“反版權”、“版權屬左”、“版權所無”、“版責”等)的體現。GPL 精髓就是,只要使軟體在完整開源 的情況下,盡可能使使用者得到自由發揮的空間,使軟體得到更快更好的發展。
3、無論軟體以何種形式釋出,都必須同時附上原始碼。
4、開發或維護遵循 GPL 協議開發的軟體的公司或個人,可以對使用者收取一定的服務費用。但還是一句老話——必須無償提供軟體的完整原始碼,不得將原始碼與服務做捆綁或任何變相捆綁銷售。
SSPL v1.0
SSPL (Server Side Public License) 為 MongoDB 基於 GPLv3 上修改並提出的軟體授權協議.
MongoDB 認為 AGPL “Remote Network Interaction” 條款敘述不夠明確, 容易造成混淆. 加上許多雲端服務商一直在挑戰 AGPL 的底線, 大量使用 MongoDB 來進行營利行為卻不遵守 AGPL. 所以才提出明確定義的 SSPL.
SSPL伺服器端公共授權。許可證更改並不影響當前使用社群伺服器的常規使用者。根據 MongoDB 之前的 GNU AGPLv3 協議,想要將 MongoDB 作為公共服務執行的公司必須將他們的軟體開源,或需要從 MongoDB 獲得商業許可,該公司解釋說,“然而,MongoDB 的普及使一些組織在違反 GNU AGPLv3 協議的邊緣瘋狂試探,甚至直接違反了協議。”
儘管 SSPL 與 GNU GPLv3 沒有什麼不同,但 SSPL 會明確要求託管 MongoDB 實體的雲端計算公司要麼從 MongoDB 獲取商業許可證,要麼向社群開源其服務程式碼。
這回知道為什麼,從去年開始MongoDB 從linux 系統 各個平臺中 抽離出來了。
一共有18個協議如下,這個開發程式碼的人,不知道怎麼想出來的
0. Definitions.
1. Source Code.
2. Basic Permissions.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
4. Conveying Verbatim Copies.
5. Conveying Modified Source Versions.
6. Conveying Non-Source Forms.
7. Additional Terms.
8. Termination. 9. Acceptance Not Required for Having Copies.
10. Automatic Licensing of Downstream Recipients.
11. Patents.
12. No Surrender of Others' Freedom.
13. Offering the Program as a Service.
14. Revised Versions of this License.
15. Disclaimer of Warranty.
16. Limitation of Liability.
17. Interpretation of Sections 15 and 16.
參考:
https://www.mongodb.com/licensing/server-side-public-license
BSD
BSD許可證原先是用在加州大學柏克利分校發表的各個4.4BSD/4.4BSD-Lite版本上面(BSD是Berkly Software Distribution的簡寫)的,後來也就逐漸沿用下來。1979年加州大學伯克利分校釋出了BSD Unix,被稱為開放原始碼的先驅,BSD許可證就是隨著BSD Unix發展起來的。BSD許可證被Apache和BSD作業系統等開源軟體所採納。
BSD開源協議(original BSD license、FreeBSD license、Original BSD license)是一個給於使用者很大自由的協議,BSD 程式碼鼓勵程式碼共享,但需要尊重程式碼作者的著作權。BSD由於允許使用者修改和重新釋出程式碼,也允許使用或在BSD程式碼上開發商業軟體釋出和銷售,因此是對商業整合很友好的協議。而很多的公司企業在選用開源產品的時候都首選BSD協議,因為可以完全控制這些第三方的程式碼,在必要的時候可以修改或者二次開發。
相較於GPL許可證和MPL許可證的嚴格性,BSD許可證就寬鬆許多了,一樣是隻需要附上許可證的原文,不過比較有趣的是,它還要求所有進一步開發者將自己的版權資料放上去,所以拿到以BSD許可證發行的軟體可能會遇到一個小狀況,就是這些版權資料許可證佔的空間比程式還大。
BSD協議程式碼為基礎做二次開發自己的產品時,需要滿足三個條件:
1.如果再釋出的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的BSD協議。
2.如果再釋出的只是二進位制類庫/軟體,則需要在類庫/軟體的檔案和版權宣告中包含原來程式碼中的BSD協議。
3.不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。
參考: https://en.wikipedia.org/wiki/BSD_licenses
PostgreSQL License
PostgreSQL License是在PostgreSQL許可下釋出的,這是一個自由的開源許可,類似於BSD或MIT許可。
本軟體及其檔案的使用、複製、修改和分發均可用於任何目的,無需支付任何費用,也無需書面協議,但上述版權宣告及本段和以下兩段均應出現在所有副本中。目前 PostgreSQL 遵循的是 BSD 開源協議,該協議給予了使用者很大的自由,不僅允許使用者修改和重新釋出程式碼,也允許使用或在 BSD 程式碼上開發商業軟體釋出和銷售。另外,國內外的主流雲廠商幾乎都在提供 PostgreSQL 雲服務,如國外的 AWS、Microsoft Azure,國內的阿裡雲、騰訊雲、華為雲等等。
參考:
https://www.postgresql.org/about/licence/
Apache License 2.0
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再釋出(作為開源或商業軟體)。需要滿足的條件也和BSD類似:
1.需要給程式碼的使用者一份Apache Licence
2.如果你修改了程式碼,需要在被修改的檔案中說明。
3.在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議,商標,專利宣告和其他原來作者規定需要包含的說明。
4.如果再釋出的產品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。
Apache Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。
Apache 協議還有以下需要說明的地方:
永久權利
一旦被授權,永久擁有。
全球範圍的權利
在一個國家獲得授權,適用於所有國家。假如你在美國,許可是從印度授權的,也沒有問題。
授權免費,且無版稅
前期,後期均無任何費用。
授權無排他性
任何人都可以獲得授權
授權不可撤消
一旦獲得授權,沒有任何人可以取消。比如,你基於該產品程式碼開發了衍生產品,你不用擔心會在某一天被禁止使用該程式碼。
英文原文:http://www.apache.org/licenses/LICENSE-2.0.html
Commons Clause v1.0
首先,Commons Clause 不是開源的。開源專案必須符合由 OSI 開源促進協會審核透過的準則,審核標準包括:免費再分發、原始碼的完整性、允許衍生作品、不歧視個人或團體、不歧視工作領域、許可證分發、技術中立等等。
Commons Clause v1.0 的介紹:
如果許可證沒有限制其他條件,許可證下授權將不包括和並不授予給您出售軟體的權利。
就上述而言,“出售”是指根據許可證授予您的任何或所有權利,以便向第三方提供費用或其他報酬(包括但不限於託管或諮詢/支援軟體服務的費用),一種產品或服務,其價值完全或基本上來自軟體的功能。許可證要求的任何許可宣告或歸屬也必須包含此Commons Cause License Condition宣告。
當專案使用Commons Clouse,它隻影響程式碼的將來——這意味著不會立即影響現有的使用者。過去版本使用的許可證不會被撤銷,因此該Clouse只會應用在將來的版本。
連結:https://commonsclause.com/
總結
透過瞭解GNU GPL,PostgreSQL License,SSPL v1.0,BSD,Apache License2.0,Redis Commons Clause 開源協議,可以分為3大類
1.《GNU GPL》:完全開源
2.《BSD ,Apache License2.0 PostgreSQL License,MySQL社群版》:
使用者很大自由的協議,
程式碼鼓勵程式碼共享,
允許使用者修改和重新釋出程式碼,
開發商業軟體釋出和銷售。
3.《SSPL》 限制在於 雲端計算公司。
4.Redis Labs 高階功能限制
對於資料庫方面開源協議:
1.MySQL社群版,Redis ,PostgreSQL 自身使用沒問題
2.MongoDB 雲平臺上使用: MongoDB 獲取商業許可證,社群開源其服務程式碼
3.Redis Labs 商業限制
個人想法:
-
開源協議有效地管理和規範了開源軟體使用,開發規範,版本迭代,並且提供了很多好的想法,給我們實際應用上帶來了很多方便。
-
商用方面的開源協議,其實就是想把自己的勞動成果轉換成物資而已。這個需要一個平衡點。
-
還有那些閉源的,希望開源。說的偉大點,歷史記住你!
原創:崔虎龍