開源愛好者必看!開源許可證基礎(chǔ)知識掃盲

阮一峰?

作為一個開發(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ù)使用條件的不同,開源許可證分成兩大類。

[if !supportLists]·?[endif]寬松式(permissive)許可證

[if !supportLists]·?[endif]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 許可證也有四種(對用戶的限制從最強(qiáng)到最弱排序)。

(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 代碼(法律上叫做"停止侵害"),而不會強(qiáng)制要求你將源碼開源,因為《版權(quán)法》里面的"違約救濟(jì)"沒有提到違約者必須開源,只提到可以停止侵害和賠償損失。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容