GPL、BSD和Apache開源許可證
參考資料
五種開源協議的比較(BSD,Apache,GPL,LGPL,MIT)
簡介
自由軟體許可證由FSF(Free Software Foundation)基於FSD(Free Software Definition)負責批准和維護。
開源許可證由OSI(Open Source Initiative)基於OSD(Open Source Definition)負責批准和維護。
如果使用者打算開源自己的程式碼,一般也是從中選擇一款開源許可證。
常見的開源許可證有GPL、BSD、Apache、LGPL和MIT等。
分類
根據使用條件的不同,開源許可證可以分為兩大類。
寬鬆式(permissive)
寬鬆式許可證是最基本的型別,對於使用者幾乎沒有任何限制,二開後可閉源商業化。它有3個基本特點。
- 沒有使用限制;
- 不擔保程式碼質量;
- 使用者必須披露(notice requirement)原作者。
無版權式(copyleft)
copyleft是由Richard Stallman發明的詞彙,是版權(copyright)的反義詞。意為無版權的形式,使用者未經許可可以隨意複製使用。但是其比寬鬆式許可證的限制要多。
- 如果發行的是二進位制的格式,則必須提供原始碼;
- 修改後的原始碼也必須使用修改前的許可證;
- 不得在原始許可證以外附加其他限制。
以上條件的核心就是,修改後的copyleft程式碼不可以閉源!
BSD(Berkeley Software Distribution)
BSD許可證給予使用者很大的自由協議,近乎“為所欲為”。可以自由使用、修改原始碼,可以將修改後的程式碼開源或者閉源作為商業軟體再發布。
“為所欲為”有前提,當釋出了使用BSD許可證的程式碼,或者以BSD許可證的程式碼為基礎做二開,需要滿足三個條件:
- 如果再發布的產品中包含原BSD許可證的程式碼,則在新產品的原始碼中需要包含BSD許可證;
- 如果再發布的產品是二進位制類庫/軟體,則在新產品的文件和版權說明中需要包含BSD許可證;
- 不可以使用原BSD許可證的程式碼的作者/機構名稱和原產品名做市場推廣。
BSD鼓勵程式碼共享,但需要尊重程式碼作者的版權。由於BSD允許使用者修改和再發布程式碼,允許在程式碼基礎上做二開並閉源做商業軟體,因此BSD對於商業整合很友好。
Apache
Apache許可證和BSD類似,鼓勵程式碼共享和尊重原作者版權,允許程式碼修改和再發布,可開源也可閉源商業化。
- 需要給程式碼的使用者一份Apache License;
- 需要在被修改的程式碼檔案中做說明;
- 在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的許可證、商標、專利宣告和其他原作者規定需要包含的說明;
- 如果再發布的產品中包含Notice檔案,則在Notice檔案中需要帶有Apache License;
- 可以在Notice檔案中增加自己的許可,但不可以表現為對Apache License做出修改,即不能與之衝突。
GPL(GNU General Public License)
我們所熟悉的Linux核心、GCC編譯器等,就是使用了GPL。GPL和BSD,Apache很不同。GPL的出發點是程式碼的開源/免費使用,引用/修改/衍生程式碼的開源/免費使用,但是不允許修改後的程式碼和衍生程式碼作為閉源產品商業化。因此我們可以使用到各種免費使用的Linux發行版,無論是商業公司發行的還是個人/社群發行的,以及在其上的各種開源免費軟體。
如果某個產品在程式碼中使用(這裡的“使用”指類庫引用,修改後的程式碼或者衍生程式碼)了GPL產品。那麼該產品也必須採用GPL許可證,即必須也開源和免費使用。這就是GPL許可證的傳染性。
因此GPL並不適用於商業環境。