對于軟件產品,無論是免費發布還是出售,制定一份許可協議都非常有用。否則,對于前者,你相當于放棄了自己所有的權利,任何人都沒有義務表明你的原始作者身份,對于后者,你將不得不花費比開發更多的精力用來逐個處理授權問題。許可,就是提供給使用你產品的人有一定的權限,不過你仍然擁有版權和專利(如果申請了的話)。開源許可證使得我們發布開源軟件產品變得簡單。
現今存在的開源許可證很多,多數人搞不清楚他們之間的區別。很多程序員在開源代碼的時候不知如何選擇開源許可證,或者使用別人的開源代碼時未遵循其原始許可證。如何選擇開源許可證,這是一個問題。
通過OSI(Open Source Initiative)組織批準的許可證目前有78種。當前流行的6種GPL,LGPL,Apache,MIT,BSD和MPL都是OSI批準的許可證。GitHub建了一個很贊的網站Choose an open source license,提供了各主流許可證的協議文本,并對它們作了詳細的介紹和比較。國內阮一峰的BLOG也提供了一張簡潔的分析圖(GPL,LGPL和MPL許可證描述有誤)。
MIT許可證
MIT許可證是一個簡短、寬松的許可證,唯一的要求就是保留原始版權和許可聲明。你可以:
- 商業使用。軟件及衍生產品可以用于商業目的。
- 自由地修改、發布。軟件可以被自由地拷貝、修改、發布。
BSD許可證
BSD許可證是一個給予使用者很大自由的許可證。使用者可以自由的使用、修改源代碼,也可以將修改后的代碼作為開源或專有軟件再發布,只須滿足:
- 如果再發布的產品是源代碼,則在源代碼中必須包含原始版權和許可聲明。
- 如果再發布產品是二進制形式,則需要在其文檔和版權申明包含原始版權和許可聲明。
- 未經事先書面許可,不得使用原作者/機構的名字和原產品名字進行衍生產品的推廣。
Apache許可證
Apache許可證是一個寬松且專業的許可證,相比于其他許可證,軟件產品可以自由修改、發布和商用,該許可證還為用戶提供專利許可,只須滿足以下條件:
- 包含一份原始許可聲明和版權聲明
- 如果修改了源代碼,包含一份代碼修改說明。
- 不得使用其原始商標
GPL許可證
GPL(GNU General Public License)許可證是一個開放源碼許可證,只要在軟件產品中使用(“使用”指類庫引用,修改后的代碼或者衍生代碼)GPL許可證的產品,則該軟件產品也必須采用GPL許可證發布,并且不論以何種形式發布,都必須同時附上源代碼。這就是所謂的“傳染性”。其他細節與Apache許可證類似,如:
- 軟件及衍生產品可以用于商業目的。
- 產品可以被自由地分發、修改。
- 同時提供額外的專利授權。
- 產品再發布時包含一份原始許可聲明和版權聲明。
- 如果修改了源代碼,包含一份代碼修改說明。
LGPL許可證
LGPL( GNU Lesser General Public License)許可證是一個主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得采用LGPL協議的開源代碼可以被商業軟件作為類庫引用并發布和銷售。但是如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協議。因此LGPL協議的開源代碼很適合作為第三方類庫被商業軟件引用,但不適合希望以LGPL協議代碼為基礎,通過修改和衍生的方式做二次開發的商業軟件采用。其他細節與GPL許可證類似,如:
- 同時提供額外的專利授權。
- 產品再發布時包含一份原始許可聲明和版權聲明。
- 如果修改了源代碼,包含一份代碼修改說明。
MPL許可證
MPL(Mozilla Public License)許可證是1998年初Netscape的 Mozilla小組為其開源軟件項目設計的軟件許可證。MPL許可證出現的最重要原因就是,Netscape公司認為GPL許可證沒有很好地平衡開發者對源代碼的需求和他們利用源代碼獲得的利益。MPL同著名的GPL許可證和BSD許可證相比。MPL在許多權利與義務的約定方面與它們相同,但是,相比而言MPL還有以下幾個顯著的特點:
- MPL雖然要求對于經MPL許可證發布的源代碼的使用、修改也要以MPL許可證的方式再許可出來(開源),以保證其他人可以在MPL的條款下共享源代碼。但是,在MPL許可證對于衍生代碼沒有要求,這就意味著MPL允許一個企業在自己已有的源代碼庫上加一個接口,除了接口程序的源代碼以MPL許可證的形式對外許可外,源代碼庫中的源代碼就可以不用MPL許可證的方式強制對外許可。這些,就為借鑒別人的源代碼用做自己商業軟件開發的行為留了一個豁口。
- 軟件產品再發布時包含一份原始許可聲明和版權聲明。
- 提供快速的專利授權。
- 不得使用其原始商標。
- 如果修改了源代碼,包含一份代碼修改說明。
注:以上所有許可證都支持私有使用,即使用和修改軟件但不對外發布。
The Unlicense
The Unlicense是一個放棄所有權利的許可證,沒有任何限制,它一般用在致力于公有領域的產品。
注:開源許可證也可用于非軟件產品,尤其是那些能夠被當做源碼編輯和管理的產品,如開源硬件設計等。
如果你的產品不是軟件產品(數據、多媒體等),也有一些開源許可證可供選擇。
Creative Commons許可證
Creative Commons簡稱CC,中國大陸正式名稱為知識共享。傳統的著作權通常為兩種極端,一種是”保留所有權利”,另一種是“不保留任何權利”(即公有領域,public domain)。知識共享則試圖在兩者中間廣大的灰色地帶保有彈性,使創作者可以“保留部分權利”。創作者可與大眾分享創作,授予其他人再散布的權利,卻又能保留其他某些權利。知識共享一般用于設計,攝影,圖片作品的開放式分享,并提供多種可供選擇的授權形式及條款組合:
- 署名(Attribution,簡寫為BY):必須提到原作者。
- 非商業用途(Noncommercial,簡寫為NC):不得用于盈利性目的。
- 禁止演繹(No Derivative Works,簡寫為ND):不得修改原作品,不得再創作。
- 相同方式共享(Share Alike,簡寫為SA):允許修改原作品,但必須使用相同的許可證發布。
注:許可協議不能同時包含“相同方式共享”和“禁止演繹”許可要素,“相同方式共享”要素僅適用于演繹作品。
這些授權形式可以結合起來用,如CC BY,CC BY-NC-SA等。
參考: