天天看點

常見的幾種開源協定

        在學習中經常能看到一些詞,例如:GPL,LGPL等等,自打上學那會就遇見過,對它們的具體含義卻不了解,今天給它們總結一下。

        說到開源協定,不得不提GNU。課本上給的定義是“GNU is Not Unix”,這是官方給出的遞歸定義,永遠也找不到本意,我們可以将它了解為一個自由軟體工程項目或者一種計劃,是由Richard Stallman在1983年9月27公開發起的,它的目标是建立一套完全自由、開放的作業系統。1985年10月Richard Stallman創立了自由軟體基金會(Free Software Foundation ,FSF),其主要工作是執行GNU計劃。為了保證GNU軟體可以自由的“使用、複制、修改、釋出”,同樣也禁止部分人在GNU軟體的基礎上自己修改并釋出的軟體中添加任何限制他人自由使用的條款,在這個情況下就誕生了GNU的許可條款,再後來又産生了其他的(非GNU)許可條款,統稱為開源許可協定。

這裡列舉了最常用的幾種開源協定:

  • GPL (GNU General Public License) :GNU通用公共許可協定
  • LGPL (GNU Lesser General Public License) :GNU寬通用公共許可協定
  • BSD (Berkeley Software Distribution)  :伯克利軟體分發許可協定
  • MIT (Massachusetts Institute of Technology):MIT許可協定之名源自麻省理工學院,又稱“X許可協定”或“X11許可協定”
  • Apache (Apache License) :Apache許可協定
  • MPL (Mozilla Public License) :Mozilla公共許可協定

1.GPL

GNU通用公共許可協定是一個被廣泛使用的自由軟體許可協定條款,GPL 保證了所有開發者的權利,同時為使用者提供了足夠的複制,分發,修改的權利:

  • 可自由複制

    你可以将軟體複制到你的電腦,你客戶的電腦,或者任何地方。複制份數沒有任何限制。

  • 可自由分發

    在你的網站提供他人下載下傳,拷貝到U盤送人。

  • 可以用來盈利

    你可以在分發軟體的時候收費,但你必須在收費前向你的客戶提供該軟體的 GNU GPL 許可協定,以便讓他們知道,他們可以從别的管道免費得到這份軟體,以及你收費的理由。

  • 可自由修改

    如果你想添加或删除某個功能,沒問題,如果你想在别的項目中使用部分代碼,也沒問題,唯一的要求是,使用了這段代碼的項目也必須使用 GPL 協定。

需要注意的是,分發的時候,需要明确提供源代碼和二進制檔案,另外,用于某些程式的某些協定有一些問題和限制,使用 GPL 協定,你必須在源代碼代碼中包含相應資訊,以及協定本身。

2.LGPL

GNU 還有另外一種協定,叫做GNU寬通用公共協定,它對産品所保留的權利比 GPL 少,總的來說,LGPL 适合那些用于非 GPL 或非開源産品的開源類庫或架構。因為GPL要求包含有部分GPL授權代碼的軟體以GPL方式釋出,這樣開發者就無法在收費的專屬軟體裡使用GPL授權代碼。 LGPL正好解決了這一問題:它不要求其它使用LGPL授權代碼的軟體以LGPL方式釋出。注意:LGPL有一特點是LGPL軟體可以被轉換成GPL。這種特性對于在GPL庫或應用程式中直接使用LGPL程式有一定程度之幫助。

3.BSD

BSD 在軟體分發方面的限制比别的開源協定(如 GNU GPL)要少。該協定有多種版本,最主要的版本有兩個,新 BSD 協定與簡單 BSD 協定,這兩種協定經過修正,都和 GPL 相容,并為開源組織所認可。

新 BSD 協定在軟體分發方面,除需要包含一份版權提示和免責聲明之外,沒有任何限制。另外,該協定還禁止拿開發者的名義為衍生産品背書,但簡單 BSD 協定删除了這一條款。

4.MIT

MIT 協定可能是幾大開源協定中最寬松的一個,核心條款是:

該軟體及其相關文檔對所有人免費,可以任意處置,包括使用,複制,修改,合并,發表,分發,再授權,或者銷售。唯一的限制是,軟體中必須包含上述版 權和許可提示。

這意味着:

  • 你可以自由使用,複制,修改,可以用于自己的項目。
  • 可以免費分發或用來盈利。
  • 唯一的限制是必須包含許可聲明。

MIT 協定是所有開源許可中最寬松的一個,除了必須包含許可聲明外,再無任何限制。

5.Apache

Apache 協定 2.0 和别的開源協定相比,除了為使用者提供版權許可之外,還有專利許可,對于那些涉及專利内容的開發者而言,該協定最适合。

Apache 協定還有以下需要說明的地方:

  • 永久權利

    一旦被授權,永久擁有。

  • 全球範圍的權利

    在一個國家獲得授權,适用于所有國家。

  • 授權免費,且無版稅

    前期,後期均無任何費用。

  • 授權無排他性

    任何人都可以獲得授權

  • 授權不可撤消

    一旦獲得授權,沒有任何人可以取消。比如,你基于該産品代碼開發了衍生産品,你不用擔心會在某一天被禁止使用該代碼。

分發代碼方面包含一些要求,主要是,要在聲明中對參與開發的人給予認可并包含一份許可協定原文。

6.MPL

MPL既是得到自由軟體基金會承認的自由軟體許可證,也是得到開放源代碼促進會承認的開源軟體許可證。MPL允許在其授權下的源代碼與其他授權的檔案進行混合,包括私有許可證。但在MPL授權下的代碼檔案必須保持MPL授權,并且保持開源。這樣的條款讓MPL既不像MIT和BSD那樣允許派生作品完全轉化為私有,也不像GPL那樣要求所有的派生作品,包括新的元件在内,全部必須保持GPL。通過允許在派生項目中存在私有子產品,同時保證核心檔案的開源,MPL同時激勵了商業及開源社群來參與幫助開發核心軟體。

使用MPL授權的軟體并不受專利的限制,其可以自由使用,修改,并可自由的重新釋出。帶有專利代碼的版本仍然可以使用,轉讓,甚至出售,但未經許可則不能修改代碼。此外,MPL并不授予使用者對于開發者商标的使用權。

為了滿足MPL的條款限制,使用者必須負擔一些“責任”,主要是關于散發使用MPL授權的軟體。使用者必須確定重新散發的軟體所有源代碼均以MPL授權,即使是以可執行檔案的方式提供或是與其他使用專有軟體授權的源代碼結合也一樣。但若跟以GNU通用公共許可協定、GNU寬通用公共許可證、Affero通用公共許可證授權的源代碼結合則是例外。此時開發者則可選用以上三種更加嚴格的條款來授權。