開源許可協(xié)議比較及應用實例

簡介

使用開源代碼可以幫助提高軟件開發(fā)效率并節(jié)省成本泄朴,但是如果不當使用開源代碼,也可能給個人及公司會帶來知識產(chǎn)權方面的法律風險,不僅要花費大量的費用隅居,有時候甚至需要公開自有的商業(yè)代碼,“賠了夫人又折兵”趁曼,給個人和公司造成極大的損失军浆,所以在商業(yè)軟件使用開源代碼前認真評估開源代碼所攜帶的許可證顯得尤為重要。

截至2019年6月挡闰,國際開源組織OSI(Open Source Initiative)批準的許可證超過80種,其中被廣泛使用的許可證包括以下8種:

根據(jù)使用條件的不同掰盘,開源許可證分為兩大類摄悯,即Permissive許可證和Copyleft許可證。

Permissive許可證

Permissive License(寬松式許可證)允許用戶不經(jīng)許可可以隨意復制愧捕、修改和發(fā)布奢驯,但是并不要求分發(fā)時必須使用相同的許可證,用戶可以在修改代碼后選擇閉源次绘,常見的Apache瘪阁、BSD、MIT屬于Permissive許可證邮偎。

BSD (Berkerley Software Distribution)

BSD許可證給予用戶在使用開源代碼方面很大的自由管跺,分為2-Clause(兩條款)和3-Clause(三條款)兩類,需要遵守以下規(guī)則:

  1. 如果分發(fā)的軟件包含源代碼禾进,則必須在源代碼中保留原始的BSD許可證聲明豁跑。
  2. 如果分發(fā)的軟件僅包含二進制程序,則必須在文檔或版權說明中保留原始的BSD許可證聲明泻云。
  3. 未經(jīng)許可艇拍,不得使用原始作者或機構的名字為軟件做市場推廣。(僅3-Clause需要遵守)

使用BSD許可證的應用案例包括:Chromium宠纯,Django卸夕,F(xiàn)reeBSD,Nginx等婆瓜。

Apache-2.0

Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議快集,需要遵守以下規(guī)則:

  1. 必須在源代碼中保留原始的Apache許可證聲明。
  2. 如果用戶修改了源代碼勃救,需要在被修改的文件中說明碍讨。
  3. 在衍生產(chǎn)品中,必須保留原來代碼中的版權蒙秒、專利勃黍、商標及作者規(guī)定的其他需要包含的說明等信息。
  4. 如果在分發(fā)的軟件中包含Notice文件晕讲,則需要在Notice文件中包含Apache許可證聲明覆获。

使用Apache 2.0許可證的應用案例包括:Apache家族系列產(chǎn)品马澈,如Hadoop, OpenOffice, Spark,SVN, 以及Swift弄息、Kubernetes痊班、Android Open Source Project (AOSP)等。

MIT (Massachusetts Institute of Technology)

BSD-2-Clause類似摹量,即需要遵守以下規(guī)則:

  1. 如果分發(fā)的軟件包含源代碼涤伐,則必須在源代碼中保留原始的MIT許可證聲明。
  2. 如果分發(fā)的軟件僅包含二進制程序缨称,則必須在文檔或版權說明中保留原始的MIT許可證聲明凝果。

使用MIT許可證的應用案例包括:Bootstrap, jQuery, Node.js, Rails等。

Copyleft許可證

Copyright(版權) 的意思是未經(jīng)許可睦尽,用戶無權復制和使用器净。Copyleft License(反版權許可證) 作為Copyright的反義詞,意為未經(jīng)許可当凡,用戶也可以隨意復制山害、修改和發(fā)布,但要求分發(fā)者必須使用相同的許可證發(fā)布修改后的衍生作品沿量,以保證衍生作品也能被其他人自由使用浪慌,常見的AGPL, GPL, LGPL, MPL屬于Copyleft許可證。

GPL 2.0

只要軟件中引用及修改了GPL代碼或者鏈接了GPL類庫欧瘪,整個軟件就就必須遵循GPL眷射,不僅需要公開所有源碼,并且允許他人可以自由地復制和分發(fā)佛掖。

使用GPLv2許可證的應用案例包括:Linux內(nèi)核妖碉、MySQL等。

GPL 3.0

GPLv3包含了明確的專利許可以及添加了對數(shù)字版權管理和加密簽名的限制芥被,不僅要求用戶公開源碼欧宜,還要求公布相關硬件及必要的安裝信息。

GPLv3能與更多的許可證兼容拴魄,例如Apache 2.0冗茸,但這個兼容是單向的,即GPLv3許可證的項目中可以包含Apache 2.0的開源代碼匹中,但是Apache許可證的項目不能包含GPLv3的開源代碼夏漱。值得注意的是,GPLv3與GPLv2卻并不兼容顶捷,即一個項目中不能同時包含GPLv2和GPLv3的代碼挂绰,但是,如果軟件以GPL “v2或更高版本”許可證發(fā)布服赎,則與GPLv3兼容葵蒂。

使用GPLv3許可證的應用案例包括:GCC交播,Emacs等。

AGPL

AGPL是對GPL的補充践付,如果使用了AGPL代碼的軟件是一個網(wǎng)絡應用秦士,那么這個軟件的所有源碼和修改代碼也必須開源,除非購買了該AGPL代碼的商業(yè)授權永高。

使用AGPL許可證的應用案例包括:BerkeleyDB隧土,MongoDB (2018年10月前發(fā)布的版本),Wiki.js等命爬。

LGPL

和GPL相比次洼,LGPL限制更少,是一個主要為類庫使用設計的開源協(xié)議遇骑,需要遵守以下規(guī)則:

  1. 如果軟件通過動態(tài)鏈接的方式使用LGPL類庫,則該軟件不需要開源揖曾。
  2. 如果軟件通過靜態(tài)鏈接的方式使用LGPL類庫落萎,則軟件作者必須提供程序的二進制目標文件(不需要提供源代碼),以便用戶有機會更新LGPL類庫并重新鏈接到該程序炭剪。
  3. 如果修改了LGPL的源碼或者衍生了新的代碼练链,則所有修改后及衍生的代碼也必須遵循LGPL許可證。

使用LGPL許可證的應用案例包括:7-Zip奴拦,GLib媒鼓,uClibc等。

MPL (Mozilla Public License)

MPL License由Mozilla基金會開發(fā)并維護错妖,介于BSD(衍生代碼可以閉源)和GPL(衍生代碼必須以GPL方式開源)之間绿鸣,最新發(fā)布的2.0版以更簡潔和更好的兼容其他協(xié)議為目標,鼓勵企業(yè)和開源社區(qū)為開發(fā)核心軟件做更多貢獻暂氯。使用MPL源碼需要遵守以下規(guī)則:

  1. 如果修改了MPL的源碼或者衍生了新的代碼潮模,并且以源代碼方式發(fā)布的文件,則所有修改后及衍生的代碼也必須遵循MPL許可證痴施。
  2. 如果用戶自有的源碼通過專用接口訪問MPL的源碼及類庫擎厢,則包含專用接口的代碼必須遵循MPL許可證,用戶自有源碼不必遵循MPL許可證辣吃。
  3. 用戶獲得MPL代碼中的專利許可动遭,但是不能使用其原始商標。

使用MPL許可證的應用案例包括:Mozilla Firefox, Mozilla Thunderbird, Apache Flex, LibreOffice等神得。

EPL (Eclipse Public License)

EPL License由Eclipse基金會開發(fā)并維護厘惦,在CPL基礎上刪除了專利相關訴訟的限制條款。EPL比GPL許可證更為寬松循头,并且與GPL并不兼容绵估。使用EPL源碼需要遵守以下規(guī)則:

  1. 如果修改了EPL的源碼或者衍生了新的代碼炎疆,并且以源代碼方式分發(fā),則所有修改后及衍生的代碼也必須遵循EPL許可證国裳。
  2. 如果軟件以二進制目標文件的形式分發(fā)形入,則需要聲明可以根據(jù)請求向其他用戶提供源代碼。
  3. 用戶獲得EPL代碼中的專利許可缝左。

使用EPL許可證的應用主要為Eclipse基金會名下的軟件亿遂,如著名的集成開發(fā)工具 - Eclipse。

應用實例

MariaDB

MariaDB是目前最受關注的MySQL數(shù)據(jù)庫衍生版渺杉,由開源社區(qū)開發(fā)和維護蛇数,誕生于Oracle收購MySQL后,目標是成為MySQL的替代品是越。

MariaDB的服務端使用的是GPL v2許可證耳舅,如果軟件只是內(nèi)部使用,并且沒有被包含在對外發(fā)布的產(chǎn)品中倚评,這種情況不被視為分發(fā)浦徊,可以自由使用;如果軟件用于對外發(fā)布天梧,使用了服務端的GPL代碼或者通過鏈接的方式使用了客戶端的GPL動態(tài)庫盔性,或者軟件與MariaDB數(shù)據(jù)庫強綁定,即在沒有安裝MariaDB數(shù)據(jù)庫的情況下呢岗,軟件無法運行或者只能使用非常少的功能冕香,該軟件也必須遵循GPL許可協(xié)議;但是如果該軟件通過第三方獨立框架訪問數(shù)據(jù)庫后豫,

MariaDB的C/JAVA/ODBC的客戶端動態(tài)庫使用了LGPL許可證悉尾,軟件也只需遵循LGPL協(xié)議,可以自由使用這些動態(tài)庫硬贯,不存在必須開源的問題焕襟。

如果軟件通過調(diào)用非GPL的連接器與MariaDB數(shù)據(jù)庫進行通信,例如:mysqlnd for PHP, ruby-mysql等饭豹,軟件只需要遵循該連接器所使用的許可證鸵赖。如果軟件通過第三方獨立的框架訪問數(shù)據(jù)庫,即使框架中使用了包含GPL許可證的模塊拄衰,例如:ODBC, JDBC, Perl它褪,PHP PDO等,軟件本身并不受其影響翘悉,不需要遵循GPL許可證茫打。如果發(fā)布的軟件除了可以訪問MariaDB數(shù)據(jù)庫之外,還可以訪問其他數(shù)據(jù)庫,即MariaDB在軟件中不屬于必須項老赤,在這種情況下該軟件可以和MariaDB一起自由發(fā)布轮洋,同樣不需要遵循GPL許可證。

如果軟件中必須使用數(shù)據(jù)庫服務端的相關代碼抬旺,又不希望自己的商業(yè)代碼遵循GPL許可證弊予,可以考慮以下三種方案:

  1. 使用類似MIT/BSD許可證的PostGreSQL作為替代產(chǎn)品。
  2. 更換為不使用SQL作為查詢語言的NoSQL非關系數(shù)據(jù)庫方案开财,例如:Cassandra (Apache 2.0), Redis (BSD-3-Clause), 或者 CouchDB (Apache 2.0)等汉柒。
  3. 付費購買帶有商業(yè)許可證的軟件,如MySQL, MongoDB等责鳍。

Linux Kernel

Linux內(nèi)核以GPL v2許可證發(fā)行碾褂,所以任何Linux內(nèi)核的衍生產(chǎn)品也必須遵循GPL許可證進行發(fā)布。如下圖所示的應用實例历葛,我們列出其中違反GPL許可證的使用方法(紅線所示)正塌。

?
?
  1. 應用程序通過靜態(tài)或動態(tài)鏈接的方式使用GPL類庫,會導致整個應用也必須以GPL許可證方式發(fā)布恤溶。規(guī)避方法是主程序通過LPC或者RPC間接調(diào)用GPL庫里的接口传货,或者改用動態(tài)鏈接LGPL類庫的方式。
  2. 應用程序通過非標準接口直接訪問Linux內(nèi)核的行為宏娄,會導致整個應用也必須以GPL許可證方式發(fā)布。規(guī)避方法是通過Linux 內(nèi)核提供的標準接口函數(shù)訪問Linux內(nèi)核逮壁,用戶空間的程序及類庫的普通系統(tǒng)調(diào)用不被視為Linux內(nèi)核的衍生產(chǎn)品孵坚,應用程序不需要遵循GPL許可證。
  3. 可加載內(nèi)核模塊(LKM)是用戶編寫的軟件窥淆,它與Linux內(nèi)核緊密綁定卖宠,運行在內(nèi)核地址空間中,Linux內(nèi)核開發(fā)社區(qū)認為LKM程序應該遵循GPL許可證忧饭。但是不少硬件廠商出于保護商業(yè)機密及知識產(chǎn)權的角度出發(fā)扛伍,在這一點與Linux內(nèi)核開發(fā)社區(qū)一直存在爭議,硬件廠商一般都會以二進制目標文件的方式單獨發(fā)布硬件驅動試圖規(guī)避GPL風險词裤,但是始終存在潛在的法律風險以及開源帶來的的商業(yè)影響刺洒,降低風險的方法就是同樣以GPL或者其他與GPL兼容的許可證發(fā)布LKM程序,并且不要把那些不希望開源的的私有代碼直接鏈接到LKM程序吼砂。

小結

由于GPL嚴格要求使用了GPL代碼或類庫的軟件產(chǎn)品必須使用GPL協(xié)議逆航,所以商業(yè)軟件最好不要使用GPL許可證的產(chǎn)品。開源許可證既保護代碼作者渔肩,對他人使用代碼產(chǎn)生的風險免責因俐;同時也保護代碼使用者,了解使用開源代碼的權利及必須履行的義務,規(guī)避將來可能的法律風險抹剩。

參考文檔:

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撑帖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澳眷,更是在濱河造成了極大的恐慌胡嘿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件境蔼,死亡現(xiàn)場離奇詭異灶平,居然都是意外死亡,警方通過查閱死者的電腦和手機箍土,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門逢享,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吴藻,你說我怎么就攤上這事瞒爬。” “怎么了沟堡?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵侧但,是天一觀的道長。 經(jīng)常有香客問我航罗,道長禀横,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任粥血,我火速辦了婚禮柏锄,結果婚禮上,老公的妹妹穿的比我還像新娘复亏。我一直安慰自己趾娃,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布缔御。 她就那樣靜靜地躺著抬闷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耕突。 梳的紋絲不亂的頭發(fā)上笤成,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音眷茁,去河邊找鬼疹启。 笑死,一個胖子當著我的面吹牛蔼卡,可吹牛的內(nèi)容都是我干的喊崖。 我是一名探鬼主播挣磨,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荤懂!你這毒婦竟也來了茁裙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤节仿,失蹤者是張志新(化名)和其女友劉穎晤锥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體廊宪,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡矾瘾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了箭启。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壕翩。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖傅寡,靈堂內(nèi)的尸體忽然破棺而出放妈,到底是詐尸還是另有隱情,我是刑警寧澤荐操,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布芜抒,位于F島的核電站,受9級特大地震影響托启,放射性物質發(fā)生泄漏宅倒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一屯耸、第九天 我趴在偏房一處隱蔽的房頂上張望唉堪。 院中可真熱鬧,春花似錦肩民、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祟蚀,卻和暖如春工窍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背前酿。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工患雏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罢维。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓淹仑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匀借,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容