首先,我們用壹個相當直觀清晰的關註者的示意圖來劃分各種協議:開源許可GPL、BSD、MIT、Mozilla、Apache和LGPL的區別。
license.jpeg
以下是對上述協議的簡要介紹:
BSD開源協議
BSD開源協議是壹個給用戶很大自由度的協議。基本上,用戶可以“為所欲為”,自由使用和修改源代碼,並將修改後的代碼作為開源或專有軟件進行再分發。
但是,“為所欲為”的前提當妳使用BSD協議發布代碼,或者在BSD協議代碼的基礎上開發自己的產品時,妳需要滿足三個條件:
如果再分發的產品包含源代碼,源代碼中必須包含原代碼中的BSD協議。
如果只重分發二進制類庫/軟件,那麽需要在類庫/軟件的文檔和版權聲明中包含原代碼中的BSD協議。
不能使用開源代碼的作者/組織的名字和原創產品的名字進行營銷。
BSD代碼鼓勵代碼享受,但需要尊重代碼作者的版權。BSD是壹個對業務集成友好的協議,因為它允許用戶修改和重新分發代碼,也允許用戶在BSD代碼上使用或開發商業軟件分發和銷售。很多公司和企業在選擇開源產品的時候更傾向於BSD協議,因為可以完全控制這些第三方的代碼,並且可以在必要的時候進行修改或者重新開發。
Apache許可證2.0
Apache Licence是著名的非營利開源組織Apache采用的協議。與BSD類似,該協議也鼓勵代碼享有並尊重原作者的版權,也允許代碼被修改後發布(作為開源或商業軟件)。需要滿足的條件也與BSD相似:
妳需要給代碼的用戶壹個Apache許可證的副本。
如果修改代碼,需要在修改後的文件中說明。
在擴展代碼(修改後的代碼和來源於源代碼的代碼)中,需要包含原作者在原代碼中指定的協議、商標、專利聲明等說明。
如果重新分發的產品包含通知文件,則通知文件中需要Apache許可證。您可以在通知中添加自己的許可證,但它不能顯示為對Apache許可證的更改。
Apache許可證也是壹種商業友好的許可證。用戶還可以根據需要修改代碼,並將其作為開源或商業產品發布/銷售。
(同gramsperlitre)克/升
我們熟悉的Linux采用了GPL。GPL協議與BSD、Apache Licence和其他鼓勵代碼重用的許可證有很大不同。GPL的出發點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但修改和衍生的代碼不允許作為閉源商業軟件發布和銷售。這就是為什麽我們可以使用各種免費的linux,包括商業公司的linux,以及個人、組織、商業軟件公司在linux上開發的各種免費軟件。
GPL協議的主要內容是,只要在壹個軟件中使用了GPL協議的壹個產品(“使用”是指類庫引用、修改後的代碼或衍生代碼),該軟件產品也必須采用GPL協議,該協議既是開源的,也是免費的。這就是所謂的“傳染性”。GPL協議的產品可以作為單壹產品使用,沒有任何問題,還可以享受免費的優勢。
因為GPL嚴格要求使用GPL類庫的軟件產品必須使用GPL協議,對於使用GPL協議的開源代碼,商業軟件或者對代碼有保密要求的部門,不適合集成/采用作為類庫和二次開發的基礎。
其他細節,比如再分發時需要附帶GPL協議,類似於BSD/Apache。
LGPL
LGPL是壹個主要為類庫使用而設計的GPL開源協議。與GPL要求不同的是,任何使用/修改/派生GPL類庫的軟件都必須采用GPL協議。LGPL允許商業軟件通過類庫引用(鏈接)的方式使用LGPL類庫,無需開源商業軟件的代碼。這使得使用LGPL協議的開源代碼可以作為類庫被商業軟件引用、分發和銷售。
但是,如果修改或派生LGPL協議的代碼,則修改部分涉及的所有修改代碼、額外代碼和派生代碼都必須采用LGPL協議。因此,LGPL協議的開源代碼非常適合被商業軟件作為第三方類庫引用,但不適合那些想基於LGPL協議代碼通過修改和派生進行二次開發的商業軟件。
GPL/LGPL都保護原作者的知識產權,並防止有人使用開源代碼來復制和開發類似的產品。
麻省理工學院(Massachu-setts Institute of Technology)
MIT是和BSD壹樣寬泛的許可協議,作者只想保留版權,沒有任何其他限制。也就是說,無論是以二進制還是源代碼的形式發布,您都必須在發布中包含原始許可協議的聲明。
MasterofPatentLaw專利法碩士
MPL是Mozilla Public License的縮寫,是網景公司Mozilla團隊在1998開頭為其開源軟件項目設計的軟件許可證。MPL許可證出現的最重要原因是網景認為GPL許可證沒有很好地平衡開發者對源代碼的需求和他們從使用源代碼中獲得的利益。與著名的GPL許可證和BSD許可證相比,MPL在權利和義務的許多方面與它們相同(因為它們都是OSIA承認的開源軟件許可證)。但是,與MPL相比,有幾個顯著的區別:
◆雖然MPL要求對MPL license發布的源代碼進行修改要重新獲得MPL license的許可,這樣才能保證其他人在MPL的條款下也能享有源代碼。但是,在MPL許可證中,“分發”的定義是“由源代碼分發的文件”,這意味著MPL允許企業在其現有的源代碼基礎上添加壹個接口。除了接口程序的源代碼以MPL許可的形式對外許可之外,源代碼庫中的源代碼可以在沒有MPL許可的情況下強制對外許可。這些都為自己的商業軟件開發留下了借鑒他人源代碼的空白。
◆MPL許可證第3條第7款允許被許可人將通過MPL許可證獲得的源代碼與其他類型的自己的代碼混合,以獲得自己的軟件程序。
◆關於對待軟件專利的態度,MPL license並沒有像GPL license壹樣明確表示反對軟件專利,但它明確要求源代碼提供者不得提供已經受到專利保護的源代碼(除非他是專利權人,並以書面形式將這些源代碼免費許可給公眾),也不得在以開源許可的形式許可後申請與這些源代碼相關的專利。
◆源代碼的定義
在MPL(版本1.1)許可證中,對源代碼的定義是:“源代碼是指修改作品的最優選形式,它包括所有模塊的所有源程序,加上相關接口的定義,加上控制可執行作品的安裝和編譯的‘原’,或者與原源代碼沒有顯著區別的源代碼。
MPL許可證第三條對描述源代碼修改有壹個特殊的規定,即要求所有的再發行者都有壹個專門的文件來描述源代碼程序的修改時間和方法。