首頁>技術>

開源軟體在追求“自由”的同時,不能犧牲程式設計師的利益,否則將會影響程式設計師的創造激情,因此世界上現在有 60 多種被開源促進組織(Open Source Initiative)認可的開源許可協議來保證開源工作者的權益。 開源協議規定了你在使用開源軟體時的權利和責任,也就是規定了你可以做什麼,不可以做什麼。 開源協議雖然不一定具備法律效力,但是當涉及軟體版權糾紛時,開源協議也是非常重要的證據之一。 對於準備編寫一款開源軟體的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟體權益。

1) GNU GPL(GNU General Public License,GNU通用公共許可證)

只要軟體中包含了遵循 GPL 協議的產品或程式碼,該軟體就必須也遵循 GPL 許可協議,也就是必須開源免費,不能閉源收費,因此這個協議並不適合商用軟體。 遵循 GPL 協議的開源軟體數量極其龐大,包括 Linux 系統在內的大多數的開源軟體都是基於這個協議的。

GPL 開源協議的主要特點 特點 說明 複製自由 允許把軟體複製到任何人的電腦中,並且不限制複製的數量。 傳播自由 允許軟體以各種形式進行傳播。 收費傳播 允許在各種媒介上出售該軟體,但必須提前讓買家知道這個軟體是可以免費獲得的;因此,一般來講,開源軟體都是通過為使用者提供有償服務的形式來盈利的。 修改自由 允許開發人員增加或刪除軟體的功能,但軟體修改後必須依然基於GPL許可協議授權。

2) BSD(Berkeley Software Distribution,伯克利軟體釋出版)協議

BSD 協議基本上允許使用者“為所欲為”,使用者可以使用、修改和重新發布遵循該許可的軟體,並且可以將軟體作為商業軟體釋出和銷售,前提是需要滿足下面三個條件:

如果再發布的軟體中包含原始碼,則原始碼必須繼續遵循 BSD 許可協議。如果再發布的軟體中只有二進位制程式,則需要在相關文件或版權檔案中宣告原始程式碼遵循了 BSD 協議。不允許用原始軟體的名字、作者名字或機構名稱進行市場推廣。

BSD 對商業比較友好,很多公司在選用開源產品的時候都首選 BSD 協議,因為可以完全控制這些第三方的程式碼,甚至在必要的時候可以修改或者二次開發。

3) Apache 許可證版本(Apache License Version)協議

Apache 和 BSD 類似,都適用於商業軟體。Apache 協議在為開發人員提供版權及專利許可的同時,允許使用者擁有修改程式碼及再發布的自由。 現在熱門的 Hadoop、Apache HTTP Server、MongoDB 等專案都是基於該許可協議研發的,程式開發人員在開發遵循該協議的軟體時,要嚴格遵守下面的四個條件:

該軟體及其衍生品必須繼續使用 Apache 許可協議。如果修改了程式原始碼,需要在文件中進行宣告。若軟體是基於他人的原始碼編寫而成的,則需要保留原始程式碼的協議、商標、專利宣告及其他原作者宣告的內容資訊。如果再發布的軟體中有宣告檔案,則需在此檔案中標註 Apache 許可協議及其他許可協議。4) MIT(Massachusetts Institute of Technology)協議

目前限制最少的開源許可協議之一(比 BSD 和 Apache 的限制都少),只要程式的開發者在修改後的原始碼中保留原作者的許可資訊即可,因此普遍被商業軟體所使用。 使用 MIT 協議的軟體有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。

5) GUN LGPL(GNU Lesser General Public License,GNU 寬通用公共許可證)

LGPL 是 GPL 的一個衍生版本,也被稱為 GPL V2,該協議主要是為類庫設計的開源協議。 LGPL 允許商業軟體通過類庫引用(link)的方式使用 LGPL 類庫,而不需要開源商業軟體的程式碼。這使得采用 LGPL 協議的開原始碼可以被商業軟體作為類庫引用併發布和銷售。 但是如果修改 LGPL 協議的程式碼或者衍生品,則所有修改的程式碼,涉及修改部分的額外程式碼和衍生的程式碼都必須採用 LGPL 協議。因此LGPL協議的開原始碼很適合作為第三方類庫被商業軟體引用,但不適合希望以 LGPL 協議程式碼為基礎,通過修改和衍生的方式做二次開發的商業軟體採用。

如何選擇開源協議

世界上的開源協議有上百種(有興趣的讀者請猛擊這裡了解),很少有人能徹底搞清它們之間的區別,即使在最流行的六種開源協議——GPL、BSD、MIT、Mozilla、Apache 和 LGPL——之中做選擇,也很複雜。 烏克蘭程式設計師 Paul Bagwell 畫了一張分析圖,說明應該怎麼選擇開源協議,大家看了一目了然,真是清爽。

圖片來自於阮一峰部落格:如何選擇開源協議

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 通過IOS APP連線MySQL資料庫的最佳解決方案(上)