作為一個開發(fā)者忌堂,如果你打算開源自己的代碼盒至,千萬不要忘記,選擇一種開源許可證(license)士修。
許多開發(fā)者對開源許可證了解很少枷遂,不清楚有哪些許可證,應(yīng)該怎么選擇棋嘲。本文介紹開源許可證的基本知識登淘,主要參考了 OpenSource.com (1,2)封字。
一黔州、什么是開源許可證
開源許可證是一種法律許可。通過它阔籽,版權(quán)擁有人明確允許流妻,用戶可以免費地使用、修改笆制、共享版權(quán)軟件绅这。
版權(quán)法默認(rèn)禁止共享,也就是說在辆,沒有許可證的軟件证薇,就等同于保留版權(quán),雖然開源了匆篓,用戶只能看看源碼浑度,不能用,一用就會侵犯版權(quán)鸦概。所以軟件開源的話箩张,必須明確地授予用戶開源許可證。
二、開源許可證的種類
目前先慷,國際公認(rèn)的開源許可證共有80多種饮笛。它們的共同特征是,都允許用戶免費地使用论熙、修改福青、共享源碼,但是都有各自的使用條件脓诡。
如果一種開源許可證沒有任何使用條件素跺,連保留作者信息都不需要,那么就等同于放棄版權(quán)了誉券。這時,軟件可以直接聲明進(jìn)入”公共領(lǐng)域”(public domain)刊愚。
根據(jù)使用條件的不同踊跟,開源許可證分成兩大類。
寬松式(permissive)許可證
Copyleft 許可證
三鸥诽、寬松式許可證
3.1 特點
寬松式許可證(permissive license)是最基本的類型商玫,對用戶幾乎沒有限制。用戶可以修改代碼后閉源牡借。
它有三個基本特點拳昌。
(1)沒有使用限制
用戶可以使用代碼,做任何想做的事情钠龙。
(2)沒有擔(dān)保
不保證代碼質(zhì)量炬藤,用戶自擔(dān)風(fēng)險。
(3)披露要求(notice requirement)
用戶必須披露原始作者碴里。
3.2 常見許可證
常見的寬松式許可證有四種沈矿。它們都允許用戶任意使用代碼,區(qū)別在于要求用戶遵守的條件不同咬腋。
(1)BSD(二條款版)
分發(fā)軟件時羹膳,必須保留原始的許可證聲明。
(2) BSD(三條款版)
分發(fā)軟件時根竿,必須保留原始的許可證聲明陵像。不得使用原始作者的名字為軟件促銷。
(3)MIT
分發(fā)軟件時寇壳,必須保留原始的許可證聲明醒颖,與 BSD(二條款版)基本一致。
(4)Apache 2
分發(fā)軟件時壳炎,必須保留原始的許可證聲明图贸。凡是修改過的文件,必須向用戶說明該文件修改過;沒有修改過的文件疏日,必須保持許可證不變偿洁。
四、Copyleft 許可證
4.1 Copyleft 的含義
Copyleft 是理查德·斯托曼發(fā)明的一個詞沟优,作為 Copyright (版權(quán))的反義詞涕滋。
Copyright 直譯是”復(fù)制權(quán)”,這是版權(quán)制度的核心挠阁,意為不經(jīng)許可宾肺,用戶無權(quán)復(fù)制。作為反義詞侵俗,Copyleft 的含義是不經(jīng)許可锨用,用戶可以隨意復(fù)制。
但是隘谣,它帶有前提條件增拥,比寬松式許可證的限制要多。
如果分發(fā)二進(jìn)制格式寻歧,必須提供源碼
修改后的源碼掌栅,必須與修改前保持許可證一致
不得在原始許可證以外,附加其他限制
上面三個條件的核心就是:修改后的 Copyleft 代碼不得閉源码泛。
4.2 常見許可證
常見的 Copyleft 許可證也有四種(對用戶的限制從最強到最弱排序)猾封。
(1)Affero GPL (AGPL)
如果云服務(wù)(即 SAAS)用到的代碼是該許可證,那么云服務(wù)的代碼也必須開源噪珊。
(2)GPL
如果項目包含了 GPL 許可證的代碼晌缘,那么整個項目都必須使用 GPL 許可證。
(3)LGPL
如果項目采用動態(tài)鏈接調(diào)用該許可證的庫痢站,項目可以不用開源枚钓。
(4)Mozilla(MPL)
只要該許可證的代碼在單獨的文件中,新增的其他文件可以不用開源瑟押。
五搀捷、常見問題
本節(jié)回答一些開源許可證的常見問題。
5.1 什么叫分發(fā)(distribution)多望?
除了 Affero GPL (AGPL) 嫩舟,其他許可證都規(guī)定只有在”分發(fā)”時,才需要遵守許可證怀偷。換言之家厌,如果不”分發(fā)”,就不需要遵守椎工。
簡單說饭于,分發(fā)就是指將版權(quán)作品從一個人轉(zhuǎn)移到另一個人蜀踏。這意味著,如果你是自己使用掰吕,不提供給他人果覆,就沒有分發(fā)。另外殖熟,這里的”人”也指”法人”局待,因此如果使用方是公司,且只在公司內(nèi)部使用菱属,也不需要遵守許可證钳榨。
云服務(wù)(SaaS)是否構(gòu)成”分發(fā)”呢?答案是不構(gòu)成纽门。所以你使用開源軟件提供云服務(wù)薛耻,不必提供源碼。但是赏陵,Affero GPL (AGPL) 許可證除外饼齿,它規(guī)定云服務(wù)也必須提供源碼。
5.2 開源軟件的專利如何處理瘟滨?
某些許可證(Apache 2 和 GPL v3)包含明確的條款,授予用戶許可能颁,使用軟件所包含的所有專利杂瘸。
另一些許可證(BSD、MIT 和 GPL v2)根本沒提到專利伙菊。但是一般認(rèn)為败玉,它們默認(rèn)給予用戶專利許可,不構(gòu)成侵犯專利镜硕。
總得來說运翼,除非有明確的”保留專利”的條款,使用開源軟件都不會構(gòu)成侵犯專利兴枯。
5.3 什么是披露要求血淌?
所有的開源許可證都帶有”披露要求”(notice requirement),即要求軟件的分發(fā)者必須向用戶披露财剖,軟件里面有開源代碼悠夯。
一般來說,你只要在軟件里面提供完整的原始許可證文本躺坟,并且披露原始作者沦补,就滿足了”披露要求”。
5.4 GPL 病毒是真的嗎咪橙?
GPL 許可證規(guī)定夕膀,只要你的項目包含了 GPL 代碼虚倒,整個項目就都變成了 GPL。有人把這種傳染性比喻成”GPL 病毒”产舞。
很多公司希望避開這個條款魂奥,既使用 GPL 軟件,又不把自己的專有代碼開源庞瘸。理論上捧弃,這是做不到的。因為 GPL 的設(shè)計目的擦囊,就是為了防止出現(xiàn)這種情況违霞。
但是實際上,不遵守 GPL瞬场,最壞情況就是被起訴买鸽。如果你向法院表示無法履行 GPL 的條件,法官只會判決你停止使用 GPL 代碼(法律上叫做”停止侵害”)贯被,而不會強制要求你將源碼開源眼五,因為《版權(quán)法》里面的”違約救濟(jì)”沒有提到違約者必須開源,只提到可以停止侵害和賠償損失彤灶。
原文作者:阮一峰
原文:http://www.ruanyifeng.com/blog/2017/10/open-source-license-tutorial.html