开源软件License汇总
? ? ? 開源軟件英文為Open Source Software,簡稱OSS,又稱開放源代碼軟件,是一種源代碼可以任意獲取的計算機軟件,這種軟件的著作權持有人在軟件協議的規定之下保留一部分權利并允許用戶學習、修改以及以任何目的向任何人分發該軟件。
? ? ? 某些軟件的源代碼只有創建它的個人、團隊或組織(并保持對它的獨占控制)才能修改。人們稱這種軟件為”專有”或”閉源”軟件。只有專有軟件的原始作者才能合法地復制、檢查和更改該軟件。并且為了使用專有軟件,計算機用戶必須同意(通常通過簽署他們第一次運行該軟件時顯示的許可證)他們不會對軟件作者未明確許可的軟件進行操作。
? ? ? 與專有軟件一樣,用戶在使用開源軟件時必須接受許可條款即開源軟件License,但開源許可的法律條款與專有許可的法律條款大不相同。
? ? ? 出于多種原因,人們更喜歡開源軟件而不是專有軟件:
? ? ? (1).他們對這種軟件有更多的控制權。
? ? ? (2).它一般有開源社區,可以幫助他們成為更好的程序員。
? ? ? (3).他們認為它比專有軟件更安全和穩定,因為任何人都可以查看和修改開源軟件。
? ? ? 開源基金會對于開源軟件和開源社區的組織、發展、協同創新提供了主導作用。開源基金會遵循公開、透明、開放等理念,為開源軟件的孵化提供技術、運營、法律等全方位支持,為開源的社區建設和運營提供指導,發揮了孵化器和加速器的作用,開源基金會已成為開源生態最重要的組織者,如:
? ? ? (1).1985年成立的自由軟件基金會(Free Software Foundation, FSF),編寫并維護一些GNU軟件包。
? ? ? (2).1999年成立的Apache軟件基金會(Apache Software Foundation, ASF),托管于ASF的項目均遵循Apache License。
? ? ? (3).2000年成立的Linux基金會(Linux Foundation, LF)。
? ? ? 如果你發現開源軟件中的bug,你可以提交請求來修復它,如開源代碼存放在GitHub上,則操作步驟為:
? ? ? (1).fork這個項目。
? ? ? (2).修改fork的項目。
? ? ? (3).commit并推送到GitHub。
? ? ? (4).發pull request,等待代碼審核。 ?
? ? ? License是軟件的授權許可,里面詳盡表述了你獲得代碼后擁有的權利,可以對別人的作品進行何種操作,何種操作又是被禁止的。軟件協議可分為開源和商業。這里總結下常用的幾種開源軟件License的異同,包括Apache License、MPL、MIT、GPL、LGPL、BSD:
? ? ? 1.?Apache License:是著名的非盈利開源組織Apache采用的協議。該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作為開源或商業軟件)。需要滿足的條件也和BSD類似:
? ? ? (1). 需要給代碼的用戶一份Apache License。
? ? ? (2). 如果你修改了代碼,需要在被修改的文件中說明。
? ? ? (3). 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
? ? ? (4). 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache License。你可以在Notice中增加自己的許可,但不可以表現為對Apache License構成更改。
? ? ? (5). Apache License也是對商業應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業產品發布/銷售。
? ? ? 2.?MPL (Mozilla Public License):1998年初,Netscape的Mozilla小組為其開源軟件項目設計的軟件許可證。MPL許可證出現的最重要原因就是,Netscape公司認為GPL許可證沒有很好地平衡開發者對源代碼的需求和他們利用源代碼獲得的利益。同著名的GPL許可證和BSD許可證相比,MPL在許多權利與義務的約定方面與它們相同(因為都是符合OSIA 認定的開源軟件許可證)。但是,相比而言MPL還有以下幾個顯著的不同之處:
? ? ? (1). MPL雖然要求對于經MPL許可證發布的源代碼的修改也要以MPL許可證的方式再許可出來,以保證其他人可以在MPL的條款下共享源代碼。但是,在MPL 許可證中對”發布”的定義是”以源代碼方式發布的文件”,這就意味著MPL允許一個企業在自己已有的源代碼庫上加一個接口,除了接口程序的源代碼以MPL許可證的形式對外許可外,源代碼庫中的源代碼就可以不用MPL許可證的方式強制對外許可。這些,就為借鑒別人的源代碼用做自己商業軟件開發的行為留了一個豁口。
? ? ? (2). MPL許可證第三條第7款中允許被許可人將經過MPL許可證獲得的源代碼同自己其他類型的代碼混合得到自己的軟件程序。
? ? ? (3). 對軟件專利的態度,MPL許可證不像GPL許可證那樣明確表示反對軟件專利,但是卻明確要求源代碼的提供者不能提供已經受專利保護的源代碼(除非他本人是專利權人,并書面向公眾免費許可這些源代碼),也不能在將這些源代碼以開放源代碼許可證形式許可后再去申請與這些源代碼有關的專利。
? ? ? (4). 對源代碼的定義而在MPL(1.1版本)許可證中,對源代碼的定義是:”源代碼指的是對作品進行修改最優先擇取的形式,它包括:所有模塊的所有源程序,加上有關的接口的定義,加上控制可執行作品的安裝和編譯的’原本’(原文為’Script’),或者不是與初始源代碼顯著不同的源代碼就是被源代碼貢獻者選擇的從公共領域可以得到的程序代碼。”
? ? ? (5). MPL許可證第3條有專門的一款是關于對源代碼修改進行描述的規定,就是要求所有再發布者都得有一個專門的文件就對源代碼程序修改的時間和修改的方式有描述。
? ? ? 3.?MIT(Massachusetts Institute of Technology):源自麻省理工學院(Massachusetts Institute of Technology, MIT),又稱"X條款"(XLicense)或"X11條款"(X11 License)。MIT內容與三條款BSD許可證(3-clause BSD license)內容頗為近似,但是賦予軟體被授權人更大的權利與更少的限制。被授權人有權利使用、復制、修改、合并、出版發行、散布、再授權及販售軟體及軟體的副本。被授權人可根據程式的需要修改授權條款為適當的內容。在軟件和軟件的所有副本中都必須包含版權聲明和許可聲明。此授權條款并非屬copyleft的自由軟體授權條款,允許在自由/開放源碼軟體或非自由軟體(proprietary software)所使用。此亦為MIT與BSD(The BSD license, 3-clause BSD license)本質上不同處。MIT條款可與其他授權條款并存。另外,MIT條款也是自由軟體基金會(FSF)所認可的自由軟體授權條款,與GPL相容。
? ? ? 4.?GPL(General Public License):GPL同其它的自由軟件許可證一樣,許可社會公眾享有:運行、復制軟件的自由,發行傳播軟件的自由,獲得軟件源碼的自由,改進軟件并將自己作出的改進版本向社會發行傳播的自由。Linux就是采用了GPL。GPL還規定:只要這種修改文本在整體上或者其某個部分來源于遵循GPL的程序,該修改文本的整體就必須按照GPL流通,不僅該修改文本的源碼必須向社會公開,而且對于這種修改文本的流通不準許附加修改者自己作出的限制。因此,一項遵循GPL流通的程序不能同非自由的軟件合并。GPL所表達的這種流通規則稱為copyleft,表示與copyright(版權)的概念”相左”。GPL的出發點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代碼做為閉源的商業軟件發布和銷售。GPL 帶有很強的傳染性,那么如果一個庫使用GPL發布,那么使用這個庫的所有軟件也必須使用GPL發布。GPL協議最主要的幾個原則:
? ? ? (1). 確保軟件自始至終都以開放源代碼形式發布,保護開發成果不被竊取用作商業發售。任何一套軟件,只要其中使用了受 GPL 協議保護的第三方軟件的源程序,并向非開發人員發布時,軟件本身也就自動成為受 GPL 保護并且約束的實體。也就是說,此時它必須開放源代碼。
? ? ? (2). GPL大致就是一個左側版權(Copyleft,或譯為”反版權”、”版權屬左”、”版權所無”、”版責”等)的體現。你可以去掉所有原作的版權 信息,只要你保持開源,并且隨源代碼、二進制版附上 GPL 的許可證就行,讓后人可以很明確地得知此軟件的授權信息。GPL精髓就是,只要使軟件在完整開源的情況下,盡可能使使用者得到自由發揮的空間,使軟件得到更快更好的發展。
? ? ? (3). 無論軟件以何種形式發布,都必須同時附上源代碼。例如在Web上提供下載,就必須在二進制版本(如果有的話)下載的同一個頁面,清楚地提供源代碼下載的鏈接。如果以光盤形式發布,就必須同時附上源文件的光盤。
? ? ? (4). 開發或維護遵循GPL協議開發的軟件的公司或個人,可以對使用者收取一定的服務費用。但還是一句老話——必須無償提供軟件的完整源代碼,不得將源代碼與服務做捆綁或任何變相捆綁銷售。
? ? ? 5.?LGPL(Lesser General Public License):是GPL的一個為主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得采用LGPL協議的開源代碼可以被商業軟件作為類庫引用并發布和銷售。但是如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協議。因此LGPL協議的開源代碼很適合作為第三方類庫被商業軟件引用,但不適合希望以LGPL協議代碼為基礎,通過修改和衍生的方式做二次開發的商業軟件采用。GPL/LGPL都保障原作者的知識產權,避免有人利用開源代碼復制并開發類似的產品。
? ? ? 6.?BSD:BSD開源協議是一個給于使用者很大自由的協議。可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。當你發布使用了BSD協議的代碼,或者以BSD協議代碼為基礎做二次開發自己的產品時,需要滿足三個條件:
? ? ? (1). 如果再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議。
? ? ? (2). 如果再發布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
? ? ? (3). 不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。
? ? ? BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發布和銷售,因此是對商業集成很友好的協議。很多的公司企業在選用開源產品的時候都首選BSD協議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發。
? ? ? 下面是六種License簡圖:
? ? ? 如果企業使用最好選擇MIT、BSD、Apache License。
? ? ? 以上內容均整理自網絡,主要參考文獻包括:
? ? ? 1.?http://www.oschina.net/news/74999/how-to-choose-a-license?_t_t_t=0.1511514508165419
? ? ? 2. https://www.oschina.net/question/12_2828
總結
以上是生活随笔為你收集整理的开源软件License汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中前置声明介绍
- 下一篇: Caffe源码中caffe.proto文