1. 程式人生 > >GPL、BSD和Apache開源許可證

GPL、BSD和Apache開源許可證

參考資料

五種開源協議的比較(BSD,Apache,GPL,LGPL,MIT)

如何選擇開源許可證? - 阮一峰的網路日誌

開源許可證教程 - 阮一峰的網路日誌

簡介

自由軟體許可證由FSF(Free Software Foundation)基於FSD(Free Software Definition)負責批准和維護。

開源許可證由OSI(Open Source Initiative)基於OSD(Open Source Definition)負責批准和維護。

這裡是目前OSI所批准的許可證列表

如果使用者打算開源自己的程式碼,一般也是從中選擇一款開源許可證。

常見的開源許可證有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並不適用於商業環境。

對比圖

開源許可證對比圖