開源許可協(xié)議
License是軟件的授權(quán)許可聋庵,里面詳盡表述了你獲得代碼后擁有的權(quán)利饱苟,可以對別人的作品進行何種操作,何種操作又是被禁止的编矾。
開源協(xié)議的種類
現(xiàn)今存在的開源協(xié)議很多熟史,而經(jīng)過Open Source Initiative 組織通過批準(zhǔn)的開源協(xié)議目前有60多種http://www.opensource.org/licenses/alphabetical勺馆。我們在常見的開源協(xié)議如BSD, GPL, LGPL,MIT等都是OSI批準(zhǔn)的協(xié)議举反。
Apache License, 2.0(Apache-2.0)
Apache Lience允許使用者修改和重新發(fā)布代碼(以其他協(xié)議形式),允許閉源商業(yè)發(fā)布和銷售蚤认。
Apache Lience鼓勵代碼共享和尊重原作者的著作權(quán)凹蜈。
使用Apache Licence協(xié)議限寞,需要遵守以下規(guī)則:
- 需要給代碼的用戶一份Apache Lience;
- 如果你修改了代碼仰坦,需要在被修改的文件中說明履植;
- 在延伸的代碼中(修改或衍生的代碼)需要帶有原來代碼中的協(xié)議、商標(biāo)悄晃、專利聲明和其他原來作者規(guī)定需要包含的說明玫霎。
- 如果再發(fā)布的產(chǎn)品中包含了Notice文件,則需要在Notice文件中帶有Apache Lience妈橄。你可以在Notice中增加自己的許可鼠渺,但不可以表現(xiàn)為對Apache Lience構(gòu)成更改。
除了這些條件它還有這些好處:
1)永久權(quán)利 一旦被授權(quán)眷细,永久擁有拦盹。
2)全球范圍的權(quán)利 在一個國家獲得授權(quán),適用于所有國家溪椎。假如你在美國普舆,許可是從印度授權(quán)的,也沒有問題校读。
3)授權(quán)免費 無版稅沼侣, 前期、后期均無任何費用歉秫。
4)授權(quán)無排他性 任何人都可以獲得授權(quán)
5)授權(quán)不可撤消 一旦獲得授權(quán)蛾洛,沒有任何人可以取消。比如,你基于該產(chǎn)品代碼開發(fā)了衍生產(chǎn)品轧膘,你不用擔(dān)心會在某一天被禁止使用該代碼
使用apache Licence vesion 2.0協(xié)議的開源軟件有:Hadoop 钞螟、apache httpserver、Spring Framework谎碍、MongoDB 鳞滨。
GPL (GNU General Public License)
它的主要內(nèi)容為:只要在一個軟件中使用(“使用”指類庫引用或者修改后的代碼) GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議蟆淀,既必須也是開源和免費拯啦。這個協(xié)議就不太適合商用軟件,或者準(zhǔn)備使用GPL開源組件的商用項目熔任“矗基于這個協(xié)議的項目,極大的提高了開源軟件的數(shù)量疑苔。
使用GPL協(xié)議碱蒙,需要遵守以下規(guī)則:
1、確保軟件自始至終都以開放源代碼形式發(fā)布夯巷,保護開發(fā)成果不被竊取用作商業(yè)發(fā)售赛惩。任何一套軟 件,只要其中使用了受 GPL 協(xié)議保護的第三方軟件的源程序趁餐,并向非開發(fā)人員發(fā)布時喷兼,軟件本身也就自動成為受 GPL 保護并且約束的實體。也就是說后雷,此時它必須開放源代碼季惯。
2、GPL 大致就是一個左側(cè)版權(quán)(Copyleft臀突,或譯為“反版權(quán)”勉抓、“版權(quán)屬左”、“版權(quán)所無”候学、“版責(zé)”等)的體現(xiàn)藕筋。你可以去掉所有原作的版權(quán) 信息,只要你保持開源梳码,并且隨源代碼隐圾、二進制版附上 GPL 的許可證就行,讓后人可以很明確地得知此軟件的授權(quán)信息掰茶。GPL 精髓就是暇藏,只要使軟件在完整開源 的情況下,盡可能使使用者得到自由發(fā)揮的空間濒蒋,使軟件得到更快更好的發(fā)展盐碱。
3、無論軟件以何種形式發(fā)布,都必須同時附上源代碼瓮顽。例如在 Web 上提供下載县好,就必須在二進制版本(如果有的話)下載的同一個頁面,清楚地提供源代碼下載的鏈接趣倾。如果以光盤形式發(fā)布聘惦,就必須同時附上源文件的光盤某饰。
4儒恋、開發(fā)或維護遵循 GPL 協(xié)議開發(fā)的軟件的公司或個人,可以對使用者收取一定的服務(wù)費用黔漂。但還是一句老話——必須無償提供軟件的完整源代碼诫尽,不得將源代碼與服務(wù)做捆綁或任何變相捆綁銷售。
目前用的多的是GPLV1炬守,GPLV2牧嫉。這兩個什么區(qū)別看后面那張樹形圖。采用這個協(xié)議的開源軟件有:Linux减途、 MySQL酣藻。
LGPL (GNU Library or "Lesser" General Public License)
由于GPL太嚴(yán)格,限制了很多商用軟件使用GPL組件才推出了這個LGPL鳍置。LGPL允許商業(yè)軟件通過引用類庫的方式使用LGPL組件(不直接使用源代碼)辽剧,這樣可以不需要開源商業(yè)軟件的代碼。但是如果要修改原始組件的代碼税产,則涉及修改部分的代碼和基于原來代碼衍生的代碼都必須采用LGPL協(xié)議怕轿。LGPL不適合以LGPL協(xié)議為基礎(chǔ)的代碼進行二次開發(fā)的商業(yè)軟件,但是商用軟件可以采用編譯后的類庫引用就不需要公開源代碼了辟拷。
采用這個協(xié)議的開源軟件有: JBoss撞羽、 FCKeditor 、 Hibernate衫冻。之前extjs就因為從LGPL轉(zhuǎn)換到GPL帶來了不少的震動诀紊。
BSD開源協(xié)議(Berkerley Software Distribution)
目前分為BSD 3-Clause和BSD 2-Clause。顧名思義隅俘,3-Clause包含3個條款渡紫,2-Clause只有兩個。
這個協(xié)議相對上面兩個協(xié)議寬松很多考赛,允許使用者修改和重新發(fā)布代碼惕澎,也允許使用或在BSD代碼基礎(chǔ)上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是適用于商業(yè)軟件的颜骤。
使用者別太高興唧喉,使用時還必須做到滿足三個條件(2-Clause則不帶第3條):
1)如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。
2)如果再發(fā)布的只是二進制類庫/軟件八孝,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議董朝。
3)不可以用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣。適用BSD協(xié)議的開源軟件有: nginx干跛、CruiseControl子姜、Redis。
要點:商業(yè)軟件可以使用楼入,也可以修改使用BSD協(xié)議的代碼哥捕。
MIT (MIT license)
源自麻省理工學(xué)院(Massachusetts Institute of Technology, MIT),又稱X11協(xié)議嘉熊。MIT與BSD類似遥赚,但是比BSD協(xié)議更加寬松,是目前最少限制的協(xié)議阐肤。這個協(xié)議唯一的條件就是在修改后的代碼或者發(fā)行包包含原作者的許可信息凫佛。適用商業(yè)軟件。使用MIT的軟件項目有:jquery孕惜、Node.js愧薛。
要點:商業(yè)軟件可以使用,也可以修改MIT協(xié)議的代碼衫画,甚至可以出售MIT協(xié)議的代碼毫炉。
MPL (Mozilla Public License 1.1)
MPL協(xié)議允許免費重發(fā)布、免費修改碧磅,但要求修改后的代碼版權(quán)歸軟件的發(fā)起者 碘箍。這種授權(quán)維護了商業(yè)軟件的利益,它要求基于這種軟件的修改無償貢獻版權(quán)給該軟件鲸郊。這樣丰榴,圍繞該軟件的所有代碼的版權(quán)都集中在發(fā)起開發(fā)人的手中。但MPL是允許修改秆撮,無償使用得四濒。MPL軟件對鏈接沒有要求。
要點:商業(yè)軟件可以使用职辨,也可以修改MPL協(xié)議的代碼盗蟆,但修改后的代碼版權(quán)歸軟件的發(fā)起者。
EPL (Eclipse Public License 1.0)
EPL允許Recipients任意使用舒裤、復(fù)制喳资、分發(fā)、傳播腾供、展示仆邓、修改以及改后閉源的二次商業(yè)發(fā)布鲜滩。
使用EPL協(xié)議,需要遵守以下規(guī)則:
- 當(dāng)一個Contributors將源碼的整體或部分再次開源發(fā)布的時候,必須繼續(xù)遵循EPL開源協(xié)議來發(fā)布,而不能改用其他協(xié)議發(fā)布.除非你得到了原“源碼”O(jiān)wner 的授權(quán)节值;
- EPL協(xié)議下,你可以將源碼不做任何修改來商業(yè)發(fā)布.但如果你要發(fā)布修改后的源碼,或者當(dāng)你再發(fā)布的是Object Code的時候,你必須聲明它的Source Code是可以獲取的,而且要告知獲取方法徙硅;
- 當(dāng)你需要將EPL下的源碼作為一部分跟其他私有的源碼混和著成為一個Project發(fā)布的時候,你可以將整個Project/Product以私人的協(xié)議發(fā)布,但要聲明哪一部分代碼是EPL下的,而且聲明那部分代碼繼續(xù)遵循EPL;
- 獨立的模塊(Separate Module),不需要開源搞疗。
要點:商業(yè)軟件可以使用嗓蘑,也可以修改EPL協(xié)議的代碼,但要承擔(dān)代碼產(chǎn)生的侵權(quán)責(zé)任匿乃。
協(xié)議的選擇
簡單寬松的協(xié)議
如果你只想要一個簡單點的協(xié)議不想太麻煩的話桩皿。
MIT協(xié)議相對寬松但還是抓住了要點的。此協(xié)議允許別人以任何方式使用你的代碼同時署名原作者扳埂,但原作者不承擔(dān)代碼使用后的風(fēng)險业簿,當(dāng)然也沒有技術(shù)支持的義務(wù)瘤礁。jQuery和Rails就是MIT協(xié)議阳懂。
考慮有專利的情況
如果你的作品中涉及到專利相關(guān)。
Apache協(xié)議也是個相對寬松與MIT類似的協(xié)議柜思,但它簡單指明了作品歸屬者對用戶專利上的一些授權(quán)(我的理解是軟件作品中含有專利岩调,但它授權(quán)你可以免費使用)。Apache服務(wù)器赡盘,SVN還有NuGet等是使用的Apache協(xié)議号枕。
代碼分享與促進
如果你在乎作品的傳播和別人的修改,希望別人也以相同的協(xié)議分享出來陨享。
GPL(V2或V3)是一種版本自由的協(xié)議(可以參照copy right來理解葱淳,后者是版本保留,那copyleft便是版權(quán)自由抛姑,或者無版權(quán)赞厕,但無版權(quán)不代表你可以不遵守軟件中聲明的協(xié)議)。此協(xié)議要求代碼分發(fā)者或者以此代碼為基礎(chǔ)開發(fā)出來的衍生作品需要以同樣的協(xié)議來發(fā)布定硝。此協(xié)議的版本3與版本2相近皿桑,只是多3中加了條對于不支持修改后代碼運行的硬件的限制(沒太明白此句話的內(nèi)涵)。
協(xié)議的區(qū)別
下面的樹形圖很好闡述了當(dāng)前主流許可協(xié)議的區(qū)別:
這里是目前github上項目采用的開源協(xié)議的比例分布:
轉(zhuǎn)載請注明作者Jason Ding及其出處
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.reibang.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354進入我的博客主頁