【Git】认识各种开源协议及其关系
開源許可協(xié)議
License是軟件的授權(quán)許可,里面詳盡表述了你獲得代碼后擁有的權(quán)利,可以對別人的作品進(jì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ī)則:
除了這些條件它還有這些好處:
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ā)布,保護(hù)開發(fā)成果不被竊取用作商業(yè)發(fā)售。任何一套軟 件,只要其中使用了受 GPL 協(xié)議保護(hù)的第三方軟件的源程序,并向非開發(fā)人員發(fā)布時,軟件本身也就自動成為受 GPL 保護(hù)并且約束的實體。也就是說,此時它必須開放源代碼。
2、GPL 大致就是一個左側(cè)版權(quán)(Copyleft,或譯為“反版權(quán)”、“版權(quán)屬左”、“版權(quán)所無”、“版責(zé)”等)的體現(xiàn)。你可以去掉所有原作的版權(quán) 信息,只要你保持開源,并且隨源代碼、二進(jìn)制版附上 GPL 的許可證就行,讓后人可以很明確地得知此軟件的授權(quán)信息。GPL 精髓就是,只要使軟件在完整開源 的情況下,盡可能使使用者得到自由發(fā)揮的空間,使軟件得到更快更好的發(fā)展。
3、無論軟件以何種形式發(fā)布,都必須同時附上源代碼。例如在 Web 上提供下載,就必須在二進(jìn)制版本(如果有的話)下載的同一個頁面,清楚地提供源代碼下載的鏈接。如果以光盤形式發(fā)布,就必須同時附上源文件的光盤。
4、開發(fā)或維護(hù)遵循 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ǔ)的代碼進(jìn)行二次開發(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ā)布的只是二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(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)維護(hù)了商業(yè)軟件的利益,它要求基于這種軟件的修改無償貢獻(xiàn)版權(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ī)則:
要點:商業(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é)議。
代碼分享與促進(jìn)
如果你在乎作品的傳播和別人的修改,希望別人也以相同的協(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.jianshu.com/users/2bd9b48f6ea8/latest_articles)
總結(jié)
以上是生活随笔為你收集整理的【Git】认识各种开源协议及其关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过live555实现H264 RTSP
- 下一篇: 解决TIME_WAIT过多造成的问题