1. 程式人生 > >常用開源許可協議介紹

常用開源許可協議介紹

什麼是許可協議?

  什麼是許可,當你為你的產品簽發許可,你是在出讓自己的權利,不過,你仍然擁有版權和專利(如果申請了的話),許可的目的是,向使用你產品的人提供一定的許可權。

  不管產品是免費向公眾分發,還是出售,制定一份許可協議非常有用,否則,對於前者,你相當於放棄了自己所有的權利,任何人都沒有義務表明你的原始作者身份,對於後者,你將不得不花費比開發更多的精力用來逐個處理使用者的授權問題。

  而開源許可協議使這些事情變得簡單,開發者很容易向一個專案貢獻自己的程式碼,它還可以保護你原始作者的身份,使你至少獲得認可,開源許可協議還可以阻止其它人將某個產品據為己有。越來越多的開發者與設計者希望將自己的產品開源,以便其他人可以在他們的程式碼基礎上做更多事,開源社群也因此充滿生機。在我們所能想到的應用領域,都有開 源軟體存在(象 WordPress,Drupal 這些開源CMS)。然而很多人對開源許可並不瞭解,本文介紹開源領域常用的幾種許可協議以及它們之間的區別。


Apache Licence 2.0

  Apache 協議 2.0 和別的開源協議相比,除了為使用者提供版權許可之外,還有專利許可,對於那些涉及專利內容的開發者而言,該協議最適合(這裡有一篇文章闡述這個問題)。

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

  • 永久權利 一旦被授權,永久擁有。
  • 全球範圍的權利 在一個國家獲得授權,適用於所有國家。假如你在美國,許可是從印度授權的,也沒有問題。
  • 授權免費,且無版稅 前期,後期均無任何費用。
  • 授權無排他性 任何人都可以獲得授權
  • 授權不可撤消 一旦獲得授權,沒有任何人可以取消。比如,你基於該產品程式碼開發了衍生產品,你不用擔心會在某一天被禁止使用該程式碼

  分發程式碼方面包含一些要求,主要是,要在宣告中對參與開發的人給予認可幷包含一份許可協議原文。

  Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵程式碼共享和尊重原作者的著作權,同樣允許程式碼修改,再發布(作為開源或商業軟體)。需要滿足的條件也和BSD類似:

  1. 需要給程式碼的使用者一份Apache Licence
  2. 如果你修改了程式碼,需要再被修改的檔案中說明。
  3. 在延伸的程式碼中(修改和有原始碼衍生的程式碼中)需要帶有原來程式碼中的協議,商標,專利宣告和其他原來作者規定需要包含的說明。
  4. 如果再發布的產品中包含一個Notice檔案,則在Notice檔案中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。

  Apache Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改程式碼來滿足需要並作為開源或商業產品釋出/銷售。

GNU GPL

  通用性公開許可證(General Public License,簡稱GPL)。GPL同其它的自由軟體許可證一樣,許可社會公眾享有執行、複製軟體的自由;發行傳播軟體的自由;獲得軟體原始碼的自由,以及改進軟體並將自己作出的改進版本向社會發行傳播的自由。GPL還規定,只要這種修改文字的整體或者其某個部分來源於遵循GPL的程式,則該修改文字的整體就必須按照GPL流通,不僅該修改文字的原始碼必須向社會公開,而且對於這種修改文字的流通不准許附加修改者自己做出的限制。因此,遵循GPL流通的程式不能同非自由的軟體合併。GPL所表達的這種流通規則稱為copyleft,表示與copyright(版權)的概念“相左”。

  GNU General Public Licence (GPL) 有可能是開源界最常用的許可模式。GPL 保證了所有開發者的權利,同時為使用者提供了足夠的複製,分發,修改的權利:

  • 可自由複製 你可以將軟體複製到你的電腦,你客戶的電腦,或者任何地方。複製份數沒有任何限制。
  • 可自由分發 在你的網站提供下載,拷貝到U盤送人,或者將原始碼打印出來從窗戶扔出去(環保起見,請別這樣做)。
  • 可以用來盈利 你可以在分發軟體的時候收費,但你必須在收費前向你的客戶提供該軟體的 GNU GPL 許可協議,以便讓他們知道,他們可以從別的渠道免費得到這份軟體,以及你收費的理由。
  • 可自由修改 如果你想新增或刪除某個功能,沒問題,如果你想在別的專案中使用部分程式碼,也沒問題,唯一的要求是,使用了這段程式碼的專案也必須使用 GPL 協議。

  需要注意的是,分發的時候,需要明確提供原始碼和二進位制檔案,另外,用於某些程式的某些協議有一些問題和限制,你可以看一下 @PierreJoye 寫的 Practical Guide to GPL Compliance 一文。使用 GPL 協議,你必須在原始碼程式碼中包含相應資訊,以及協議本身。

  我們很熟悉的Linux就是採用了GPL。GPL協議和BSD, Apache Licence等鼓勵程式碼重用的許可很不一樣。GPL的出發點是程式碼的開源/免費使用和引用/修改/衍生程式碼的開源/免費使用,但不允許修改後和衍生的代 碼做為閉源的商業軟體釋出和銷售。這也就是為什麼我們能用免費的各種linux,包括商業公司的linux和linux上各種各樣的由個人,組織,以及商 業軟體公司開發的免費軟體了。

  GPL協議的主要內容是隻要在一個軟體中使用(“使用”指類庫引用,修改後的程式碼或者衍生程式碼)GPL 協議的產品,則該軟體產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的“傳染性”。GPL協議的產品作為一個單獨的產品使用沒有任何問題,還可以享受免費的優勢。

  由於GPL嚴格要求使用了GPL類庫的軟體產品必須使用GPL協議,對於使用GPL協議的開原始碼,商業軟體或者對程式碼有保密要求的部門就不適合整合/採用作為類庫和二次開發的基礎。

  GPL許可證是自由軟體的應用最廣泛的軟體許可證,人們可以修改程式的一個或幾個副本或程式的任何部分,以此形成基於這些程式的衍生作品。必須在修改過的檔案中附有明顯的說明:您修改了此一檔案及任何修改的日期。 您必須讓您釋出或出版的作品,包括本程式的全部或一部分,或內含本程式的全部或部分所衍生的作品,允許第三方在此許可證條款下使用,並且不得因為此項授權行為而收費。 (這個似乎最嚴格,需要公開原始碼)

  其它細節如再發布的時候需要伴隨GPL協議等和BSD/Apache等類似。

GNU LGPL(GNU Lesser General Public License)

  GNU 還有另外一種協議,叫做 LGPL (Lesser General Public Licence),它對產品所保留的權利比 GPL 少,總的來說,LGPL 適合那些用於非 GPL 或非開源產品的開源類庫或框架。因為 GPL 要求,使用了 GPL 程式碼的產品必須也使用 GPL 協議,開發者不允許將 GPL 程式碼用於商業產品。LGPL 繞過了這一限制。

  LGPL是GPL的一個為主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟體必須採用GPL協議不同。LGPL 允許商業軟體通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟體的程式碼。這使得采用LGPL協議的開原始碼可以被商業軟體作為類庫引用並 釋出和銷售。

  但是如果修改LGPL協議的程式碼或者衍生,則所有修改的程式碼,涉及修改部分的額外程式碼和衍生的程式碼都必須採用LGPL協議。因此LGPL協議的開源 程式碼很適合作為第三方類庫被商業軟體引用,但不適合希望以LGPL協議程式碼為基礎,通過修改和衍生的方式做二次開發的商業軟體採用。

  GPL/LGPL都保障原作者的智慧財產權,避免有人利用開原始碼複製並開發類似的產品。

BSD

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

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

  BSD開源協議是一個給於使用者很大自由的協議。基本上使用者可以”為所欲為”,可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或者專有軟體再發布。

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

  1. 如果再發布的產品中包含原始碼,則在原始碼中必須帶有原來程式碼中的BSD協議。
  2. 不可以用開原始碼的作者/機構名字和原來產品的名字做市場推廣。

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

MIT

MIT 協議可能是幾大開源協議中最寬鬆的一個,除了必須包含許可宣告外,再無任何限制,核心條款是:

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

這意味著:

  • 你可以自由使用,複製,修改,可以用於自己的專案。
  • 可以免費分發或用來盈利。
  • 唯一的限制是必須包含許可宣告。

  MIT是和BSD一樣寬範的許可協議,作者只想保留版權,而無任何其他了限制。也就是說,你必須在你的發行版裡包含原許可協議的宣告,無論你是以二進位制釋出的還是以原始碼釋出的。

Mozilla Public License

  MPL License,允許免費重發布、免費修改,但要求修改後的程式碼版權歸軟體的發起者。這種授權維護了商業軟體的利益,它要求基於這種軟體得修改無償貢獻版權給該軟體。這樣,圍繞該軟體得所有程式碼得版權都集中在發起開發人得手中。但MPL是允許修改,無償使用得。MPL軟體對連結沒有要求。