首頁>技術>

簡介

現在網際網路上有很多開源軟體專案,我們可以在例如 GitHub 或者 Gitee 上搜索到不同型別的開源軟體專案。很多大公司也都擁抱開源,並且開源了很多專案,利用開源社群來完善他們的程式碼,同時也反哺開源社群,達到雙贏。這些專案對於中小型科技公司也特別有用,可以避免重複造輪子,節省產品的開發週期,提高產品的品質。但是為了保護開源軟體作者的權益,同時也會規定一些使用限制,這就需要開源軟體許可協議了。在開源軟體盛行的今天,懂一點開源軟體的許可協議還是有必要的。

常用開源軟體許可協議

世界上的開源許可證(Open Source License)大概有上百種,而我們常用的開源軟體許可協議有Apache、GNU GPL、BSD、MIT、Mozilla 和 GNU LGPL。

Apache License

Apache License 是 Apache 軟體基金會發布的一個自由軟體許可證。Apache 是著名的非盈利性的開源組織,各個領域均有該組織釋出的開源軟體且被廣泛使用。該協議鼓勵程式碼共享和最終原作者的著作權,同樣允許原始碼修改和再發布。

使用這個協議的好處是:

永久權利 一旦被授權,永久擁有全球範圍的權利 在一個國家獲得授權,適用於所有國家授權免費,且無版稅 無任何費用授權無排他性 任何人都可以獲得授權授權不可撤消 一旦獲得授權,沒有任何人可以取消對商業應用友好 使用者可以在需要的時候修改程式碼來滿足並作為開源或商業產品釋出/銷售

但是也需要遵循以下條件:

需要給程式碼的使用者一份 Apache Licence如果修改了程式碼,需要在被修改的檔案中說明在衍生的程式碼中(修改的程式碼和由原始碼衍生的程式碼中)需要保留原來程式碼中的協議、商標、專利宣告和其他原來作者規定需要包含的說明在釋出的產品中的 Notice 檔案中需要帶有 Apache Licence可以在 Notice 中增加自己的許可,但是不可以更改 Apache Licence 內容GNU GPL

GNU General Public Licence (GPL) 有可能是開源界最常用的許可模式,Linux 就採用了 GPL。

GPL 保證了所有開發者的權利,同時為使用者提供了足夠的複製、分發、修改的權利:

可自由複製 沒有任何限制可自由分發 提供下載等可以用來盈利 但必須提供產品的 GNU GPL 許可協議及收費的理由可自由修改 如果你想新增或刪除某個功能,沒問題,如果你想在別的專案中使用部分程式碼,也沒問題,唯一的要求是,使用了這段程式碼的專案也必須使用 GPL 協議。GNU LGPL

GNU 的另外一種協議 LGPL(Lesser General Public Licence)。

LGPL 協議允許商業軟體通過類庫引用(link)方式使用 LGPL 類庫,而不需要開源商業軟體的程式碼。這樣就繞過了 GPL 協議的限制,使得采用 LGPL 協議的開原始碼可以被商業軟體作為類庫引用併發布和銷售。

但是如果修改 LGPL 協議的程式碼或者衍生出程式碼,那這些程式碼就都必須採用 LGPL 協議。因此 LGPL 協議的開原始碼很不適合希望以 LGPL 協議程式碼為基礎,通過修改和衍生的方式做二次開發的商業軟體採用。

BSD

BSD(Berkeley Software Distribution)意思就是"伯克利軟體發行版"。

BSD 開源協議是一個給予使用者很大自由的協議,允許使用者修改和重新發布程式碼,也可以將修改後的程式碼作為開源或者專有軟體再發布。很多公司在選用開源產品的時候都首選 BSD 協議,因為可以完全控制這些第三方的程式碼,在必要的時候可以修改或者二次開發。

但是當你釋出使用了 BSD 協議的程式碼,或者以 BSD 協議程式碼為基礎做二次開發自己的產品時,需要滿足以下三個條件:

如果在釋出的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的 BSD 協議。 如果再發布的只是二進位制類庫/軟體,則需要在類庫/軟體的文件和版權宣告中包含原來程式碼中的 BSD 協議。不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。MIT

MIT 源自麻省理工學院(Massachusetts Institute of Technology, MIT),使用 MIT 的軟體專案 jquery、Node.js。MIT 協議可能是幾大開源協議中最寬鬆的一個,該軟體及其相關文件對所有人免費,可以任意處置,包括使用、複製、修改、合併、發表、分發、再授權或者銷售。唯一的限制是必須包含許可宣告外,此外再無任何限制。

總結

這裡就簡單介紹這五種,其餘還有MPL(Mozilla Public License)、EPL (Eclipse Public License)、QPL(The Qt Public License)、IBM(IBM Public License)等很多很多。可以看得出都是為了儘可能地保障原作者的智慧財產權,避免有人利用開原始碼複製並開發類似的產品。使用規則看起來也比較複雜,但是其實早就有大神給我們做了很好的總結,烏克蘭程式設計師 Paul Bagwell 畫了一張分析圖,下圖為阮一峰漢化的版本,圖片應該是說的很明確了的,通俗易懂,這裡像兩位大牛致敬。希望大家有所收穫,在使用開源軟體的時候也可以關注軟體的開源協議使用。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python PyQt5 表格控制元件(QTableWidget)的功能設定