幾個主流開源License的區(qū)別

Paul Bagwell的分析圖(阮一峰 譯)

關于“新增代碼”

網(wǎng)上流傳的這張圖片實際上容易產生一些誤導,關鍵在于“新增代碼是否采用同樣許可?”中的“新增代碼”。

GPL

GPL全稱GNU General Public License,一般要求derivative work必須使用同樣的GPL

LGPL

LGPL最初是GNU Library General Public License的縮寫,原本是基于GPL,為適用于類庫而開發(fā)的版本。LGPL同樣要求derivative work必須使用同樣的LGPLGPL。

但此License中區(qū)分了兩個概念,work based on the librarywork that uses the library。

A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

如果程序不包含LGPL的work或derivative work,僅僅是將其作為庫使用,則該程序不屬于derivative work,也就不必遵守LGPL的要求,可以自由選擇License。derivative work的含義是非常廣泛的,不僅僅是程序源代碼,還包括編譯結果,可執(zhí)行程序,相關文檔等。因此想要自由使用許可,發(fā)布的工程中連庫的二進制版本也不能包含。

不過此License的發(fā)布者Free Software Foundation (FSF)發(fā)現(xiàn),GNU Library General Public License的命名方式會誤導大家,使大家認為library代碼應該優(yōu)先使用LGPL而非GPL。實際上,FSF是希望能使用GPL開源的工程就使用GPL,有特殊的目的才去使用LGPL,即使工程是作為library使用的。因此,LGPL后更名為GNU Lesser General Public License,以便減少誤解。

由此可見,圖中的“新增代碼”在LGPL下意味著使用該庫的編寫的新代碼,而不是對LGPL許可的原代碼的修改或新增。

MPL

MPL全稱Mozilla Public License。在基于MPL項目構建的Larger Work中,MPL的部分依舊是MPL,其它的新增代碼可以使用其他協(xié)議,而且這個Larger Work整體也可以是其他協(xié)議,但其中MPL部分的代碼要依舊開源。

由此可見,在MPL下,圖中的“新增代碼”與平時的理解是一樣的。

結語

BSD,MIT,Apache,GPL,LGPL,MPL等都是當下使用的主流許可,各個許可其實各自有著詳細而復雜的規(guī)定。各自的細則都在最新的許可內容中定義了,本文章以及網(wǎng)上流傳的各個文章都不一定正確,也不夠全面。

《Understanding Open Source and Free Software Licensing》,該書比較全面的闡述了各個主流許可的規(guī)定,從copyright和patent的角度分析了各個許可,值的參考。該書的下載地址。不過此書的成書時間較早,部分許可有做微調,需要以最新版的許可為準。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容