5W1H聊開源之What——開源協議有哪些?

sincermc發表於2021-07-31

  開源許可協議是指開源社群為了維護作者和貢獻者的合法權利,保證軟體不被一些商業機構或個人竊取,影響軟體的發展而開發的協議。開源協議規定了使用者在使用開源軟體時的權利和責任,雖然不一定具備法律效力,但是當涉及軟體版權糾紛時,也是非常重要的證據之一。

  軟體在追求“自由”的同時,不能犧牲程式設計師的利益,否則將會影響程式設計師的創造激情,因此世界上現在有 90 多種被開源促進組織(Open Source Initiative)認可的開源許可協議來保證開源工作者的權益(詳細列表見:)。

  對於準備編寫一款開源軟體的開發人員,也非常建議先了解一下當前最熱門的開源許可協議,選擇一個合適的開源許可協議來最大限度保護自己的軟體權益。

  由寬鬆到嚴緊排序,常用的開源許可證有:

  MIT許可證

  BSD許可證

  Apache許可證

  LGPL許可證

  GPL許可證

  MIT、BSD 許可證都源自大學,體現了簡單、開放和包容的特點。

  MIT、BSD、Apache 三者都支援閉源的後續開發。

  GPL、LGPL 傳染性開源,編譯的程式碼裡用了這裡的程式碼,都必須開源。

  具體選擇可以參照烏克蘭程式設計師 Paul Bagwell的這張分析圖(阮一峰、小魚周凌宇翻譯):

  MIT協議

  MIT 是十分寬鬆的許可協議,來源於大學,可以說是史上最為簡潔和慷慨(permissive)的開源協議之一。

  使用者可以拿自己的程式碼做任何想做的事情;

  使用者在專案副本中要包含版權宣告和許可宣告;

  使用者無需承擔任何責任。

  作者只想保留版權,而無任何其他限制。也就是說,無論是以二進位制釋出的還是以原始碼釋出的,都必須在發行版裡包含原許可協議的宣告,。採用MIT協議的應用案例有JQuery、Rails 等。

  BSD協議

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

  如果再發布的軟體中包含原始碼,則原始碼必須繼續遵循 BSD 許可協議。

  如果再發布的只是二進位制類庫/軟體,則需要在類庫/軟體的文件和版權宣告中包含原來程式碼中的BSD協議。

  不允許用原始開原始碼軟體的名稱、作者名字或機構名稱進行市場推廣。

  BSD程式碼鼓勵程式碼共享,但需要尊重程式碼作者的著作權。BSD由於允許使用者修改和重新發布程式碼,也允許使用或在BSD程式碼上開發商業軟體釋出和銷售,因此是對商業整合很友好的協議,很受大公司的歡迎,因為可以完全控制這些第三方的程式碼,甚至在必要的時候可以修改或者二次開發。

  Apache協議

  Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣適用於商業軟體,鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,但它更重視專利權。

  如果修改了程式原始碼,需要在文件中進行宣告;

  若軟體是基於他人的原始碼編寫而成的,則需要保留原始程式碼的協議、商標、專利宣告及其他原作者宣告的內容資訊;

  如果再發布的軟體中有宣告檔案,則需在此檔案中標註 Apache 許可協議及其他許可協議。

  Apache Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。現在熱門的 Hadoop、Apache 家族、SVN、MongoDB 等專案都是基於該許可協議研發的。

  GPL協議

  GPL協議來源自由軟體聯盟GNU,GPL/LGPL都側重於程式碼及衍生程式碼的開源與免費使用。GPL是傳染性開源,只要軟體中包含了遵循 GPL 協議的產品或程式碼,該軟體就必須也遵循 GPL 許可協議,也就是必須開源免費,不能閉源收費,因此這個協議並不適合商用軟體。

  複製自由:允許把軟體複製到任何人的電腦中,並且不限制複製的數量。

  傳播自由:允許軟體以各種形式進行傳播。收費傳播允許在各種媒介上出售該軟體,但必須提前讓買家知道這個軟體是可以免費獲得的;因此,一般來講,開源軟體都是透過為使用者提供有償服務的形式來盈利的。

  修改自由:允許開發人員增加或刪除軟體的功能,但軟體修改後必須依然基於GPL許可協議授權。

  遵循 GPL 協議的開源軟體數量極其龐大,包括 Linux 系統在內的大多數的開源軟體都是基於這個協議的。

  LGPL開源協議

  LGPL 是 GPL 的一個衍生版本,也被稱為 GPL V2,該協議主要是為類庫設計的開源協議,同樣來源於自由軟體聯盟GNU,可以翻譯為更寬鬆的GPL協議,也屬於傳染性開源。

  使用者如果只是對LGPL軟體的程式庫的程式進行呼叫而不是包含其原始碼時,相關的源程式無需開源。

  LGPL允許商業軟體透過類庫引用(link)方式使用LGPL 類庫而不需要開源商業軟體的程式碼。這使得采用LGPL協議的開原始碼可以被商業軟體作為類庫引用併發布和銷售。GPL/LGPL都保障原作者的智慧財產權,避免有人利用開原始碼複製並開發類似的產品。

  apache


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69999012/viewspace-2784436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章