軟體授權協議有什麼作用,例如GPL、Apache License、CDDL、EPL這些協議有什麼區別?
1、授權協議有什麼作用:
授權協議就是授予你使用或修改軟體等權利,由於軟體受到著作權保護,未經授權使用即是侵犯著作權,屬於違法行為,所以同意或簽署軟體授權協議是你使用或修改軟體的前提條件。既然是授權協議,我們可以知道,這個東西分為兩部分:授權和協議。你可以簡單的理解為權利和義務。授權即是指權利,指出你有哪些權利,例如在自己的電腦上安裝、使用、重新編譯發布、作為一部分嵌入在自己的軟體項目中一併發布、或是修改再發布。協議即是指義務,指出你有哪些義務,例如不允許反向工程,不允許開外掛,不允許修改,不允許作為自己軟體項目的一部分發布,必須在使用此軟體的項目中標註使用了這項技術。
如果你不遵守自己的義務(違背協議),那麼你的授權就是無效的,即涉嫌侵犯著作權了。2、授權協議有哪些種類?
大體上如 @larry 說的一樣,主要可以分為開源和不開源(事實上收費和不收費的軟體授權協議區別不大,下文詳談),下面分兩種情況分別討論:2.1 閉源軟體許可協議
不開源的軟體,一般都有一個類似於最終用戶許可協議的東西,這個協議大體上都會包含這樣一些內容:禁止把軟體給別人用、禁止對軟體反向工程、禁止或允許將軟體作為自己項目的一部分發布,以及免責條款,例如操作不當導致自己的數據丟失等等。免費收費共享之間的區別主要是授權協議的取得,例如免費軟體一般是自由下載,然後安裝的時候同意協議(下一步、下一步、下一步)即行安裝。收費軟體一般不提供自由下載,或者下載後,必須通過付費獲得授權,且同意授權協議,才能繼續使用。共享軟體提供自由下載,到一定期限後,或者需要使用額外的功能,通過付費獲得擴展授權使用。2.2 開源軟體許可協議
問題中列舉的協議主要都是開源協議。對於不開源軟體而言,雖然授權協議都大同小異,但每個公司的授權協議,甚至不同的發行地的協議都有所不同。這是因為這些商業軟體公司都擁有專業的銷售和法律團隊,授權協議關係到他們的核心業務,所以聘用非常專業的團隊處理。但對於開源軟體而言,作者大多數是苦逼的程序員,根本沒有能力聘用專業的法律顧問,有程序員搞出了一個比較完善的授權許可協議,大家就都拿來用,把裡面的軟體名字改改就好了。所以後來逐漸形成了幾大開源授權協議,如GPL、Apache、BSD等。值得注意的是,這些開源授權協議文本本身也受著作權法保護,不過他們一般又都以開放的協議發布,允許大家隨意拿來當作自己軟體的授權協議。
比起不開源軟體,大多數開源授權協議都比較簡單,開源的特點就是開放源代碼,這裡的開放,並不是指隨軟體一併附上源代碼的意思,而是源代碼也給你了,你看著辦吧。
允不允許修改源代碼,是開源軟體和不開源軟體的根本的區別。這裡順便談一下還有一種灰色地帶的軟體,即隨軟體一併附上源代碼,但你只能看不能摸,這類軟體一般不認為是開源軟體。譬如說Windows就對政府開放了部分源代碼,或是.NET Framework之前使用的MS-RL。開源軟體的授權協議必須包含的權利是軟體源代碼的修改、演繹權,否則不是開源軟體。所以各大協議主要是在義務上各有區別,譬如說GPL協議要求,基於該軟體開發的任何軟體,都必須以GPL協議發布,這也就是開源感染。也就是說你要用這個開源軟體,就必須把你自己的軟體變成開源的。
GPL這種感染太狠了,會限制使用GPL協議發布的軟體所適用的範圍,全部的商業軟體,和大部分的免費軟體都不能使用GPL協議發布的東西。這與開源的精神開放相悖。所以大家又提出了很多不那麼嚴苛的協議。如Apache就不強求基於該協議軟體開發的軟體以相同協議發布,僅僅要求署名。這樣,以Apache發布的軟體就可以作為商業軟體的一部分。
開源協議之間的區別,可以參考下圖:
軟體授權協議的目的,簡單的可以區分為版權保護和版許可權制,甚至還會包含軟體中的專利和商標的保護和限制。
從法律角度來說,軟體是通過版權保護的,所以只要是軟體一經完成,甚至是部分完成,都是受到法律保護的,至於法律保護那些部分,可以參看《著作權法》,軟體中的專利和商標可以參看《商標法》和《專利法》。 因為軟體的複雜性,我國又專門出台了《計算機軟體保護條例》,算是進一步補充。 軟體簡單可以分為四種,開源,共享,免費,收費。 開源就是能找到源代碼的,如kvm,linux kernel;共享其實就是試用免費,下載軟體時候經常會看到;免費就是不要錢,如QQ;收費比如office。 但是從版權保護角度的話,開源是一大類,其他的為一大類,注意:共享,免費,收費,一般在版權的說明部分,都有一段,all copyright reserved,他的權力一點都沒少,除了極少數放棄的部分。有些人,特別是國外的很多人和公司,他們也許沒有中國人生活壓力這麼大,總是喜歡對這個世界做出點貢獻,但是呢,又想告訴別人,我真的不要錢的,你們放心用去吧,於是就出現了一些開源license,類似於對copyright的限制。
當然,版許可權制的時候,也會有些對後手的要求,比如我好不容易貢獻了個軟體,您在上邊做的點創新,或者修改,但是我希望你也開開源,於是有個GPL,但是有些人比較大度,希望商業公司也能使用,並且可以不開源,就有個LGPL,MIT,Apache, BSD, Aristic, etc. 當然不是說只有開源的才有license,商用的也有。 關於你問的這幾個license,我簡單談一下我的看法。 GPL,以GPL為基礎的軟體也要用GPL,或者跟GPL兼容。有一個種方式可以做到不用GPL,把該軟體版權持有者的公司,收購了,這是後話。目前GPL的主要流行版本是GPLv2 和GPLv3, 至於區別,可以理解為GPLv3有專利報復條款。 Apache License 比較寬鬆一些,簡單可以理解為,在該授權軟體基礎上的軟體可以不開源。 CDDL 可以理解為GPL 和Apache的折中,在一個軟體中用不同幾個包,在一個包裡邊,就是該比較完整的模塊必須用CDDL,其他的可以用別的,甚至,不開源。 EPL則是因為後來IBM將Eclipse IDE交由名為「Eclipse基金會 (Eclipse Foundation)」來管理,對CPL為小部分修改為成的授權條款。EPL可以理解為在EPL授權的軟體基礎上的工作,如果新開的軟體是源軟體獨立,就可以用其他的license,否則,只能用EPL。舉個例子,你對EPL授權的軟體,修正的bug,添加的性能提升,都不算獨立的部分。 估計有很多地方說的不清楚,內容比較繁雜,因為工作比較忙,就分享這麼多,有問題,咱們可以進一步討論。 謝謝。如何選擇開源許可證? http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
非常通俗易懂A simple picture about how to choose an open source license
Yo! 感謝@Ivony的全面解釋。我所要說的不是解釋具體的license的法律效率以及內容,而是闡述如何軟體本身的角度去選擇的OSS License。(希望我是理解樓主的初衷的)
現在OSS比較主流的license有:1. Apache V22. MIT3. GPL (v2,v3)
4. BSD等等。License的目的都是受copyright保護的前提下,提供(使用,分發,copy等等)授權以及一些獲得授權的額外約束。用普通直白的話來說就是:我允許你做某件事情,但是(總是有但是)你需要遵守我所提及的條約。這些不同的OSS lincense所授權的內容非常相似,而不同之處就在於獲得這些授權的額外約束(形成這些不同約束的原因很多,我主要把他歸結於不同組織的對於OSS的不同觀點)。那麼不同主要以下一點:使用OSS license授權的軟體是否需同樣需要以OSS的形態出現。針對這一點不同,就可以將這些license分類了。 1.使用Apache V2, MIT, BSD授權軟體的項目,可以是盈利,非盈利,開源,閉源的任何方式。2. 使用GPL授權軟體的項目,必須是以開源(GPL是由free software foundation推出的,因此這種license繼承了「free」的血脈)的方式出現。最後,回到樓主的問題,我想要問樓主,您希望你的軟體可以被任何商業項目使用並且允許存在於閉源項目中呢,或者任何使用您的軟體的產品也必須同您一樣開源?我想您的答案已經在您心中了。更多資料:Choosing an OSS license doesn』t need to be scary
推薦閱讀: