開源的含義

沒太看明白開源的含義

看懂的就是說

開源必須允許自由地再分發;

至於開源是否一定包含源代碼我則不清楚

開源license

GPL(Gun General Public License)


GPL是目前世界上運用最廣泛的開源協議,它規定了任何從GPL協議授權的源碼衍生的軟件或者任何採用了GPL授權的源碼的軟件,都必須遵循GPL 的協議,即軟件的所有源代碼必須開源。它就像病毒一樣,哪怕只是採用了GPL授權的一個圖標,那麼整個軟件就被GPL感染了,必須遵循GPL的協議。最典型的GPL產物是Linux,所有采用了Linux內核的操作系統,都必須接收開源發佈,不能夠採用其他的開源協議或者閉源發佈。這樣的一個好處是保持了軟件在協議上的一致性,即採用了GPL協議的軟件就不能受其他開源協議所約束,任何人都可以共享它的源碼。所以即便是RedHat這樣的商業公司,在發佈發行版的同時也必須公開它的源代碼。


LGPL


LGPL是從GPL衍生的一種開源協議,它不會像GPL那樣嚴格,僅僅因爲採用了開源協議規定的代碼就必須完全開源軟件會損壞很多開發人員的利益。因此LGPL做了這樣的規定,如果只是以鏈接的方式採用了LGPL授權的源碼,那麼不需要開源整個軟件。如果是在授權的源碼上面做了修改,那麼軟件就必須遵循LGPL的規定開源。


CPL(Common Public License)


CPL是一種自由度很高的開源協議,它允許使用者使用、修改代碼甚至發佈軟件作爲商用。但它必須遵循一些原則:凡是採用了CPL源碼的軟件不能採用其他的開源協議;發佈成商用的時候必須聲明源代碼可以獲得。CPL主要用於IBM或者和IBM相關的一些軟件,如Eclipse。


BSD(Berkeley Software Distribution)


BSD也是一種很自由的開源協議,它允許自由採用和修改BSD授權的源碼,只是在使用的時候必須聲明這部分源碼是遵循BSD協議的。BSD鼓勵代碼共享,但需要尊重代碼作者的著作權。很多公司在選擇開源軟件的時候首選BSD授權的軟件,因爲可以對第三方的軟件完全具有控制權。


Apache


Apache也是一個很受歡迎的開源協議,它跟BSD一樣有很高的自由度,同樣是可以任意使用協議授權的代碼,但是要尊重原作者的著作權,可以不公開修改的代碼,但要聲明代碼的來源。而且,它還可以在發行的時候選擇其他的協議。

 

from http://blog.donews.com/Vega/archive/2006/05/25/886637.aspx

 
開源license總結

(1)Contributors  和  Recipients
Contributors    指的是對某個開源軟件或項目提供了代碼(包括最初的或者修改過的)發佈的人或者實體(團隊、公司、組織等),Contributors  按照參與某個軟件開源的時間先後,可以分爲an  initial  Contributor  和  subsequent  Contributors  。
Recipients指的是開源軟件或項目的獲取者,顯然,subsequent  Contributors  也屬於  Recipients之列。
(2)Source  Code  和  Object  Code
Source  Code  指的是各種語言寫成的源代碼,通過Source  Code,結合文檔, 可以瞭解到整個軟件的體系結構及具體到某個功能函數的實現方法等。
Object  Code  指的是Source  Code  經過編譯之後,生成的類似於“類庫”一樣的,提供各種接口供他人使用的目標碼,按我的理解,它就是像常見的DLL、AtiveX、OCX控件性質的東西。(不知道這樣理解對不對)
分清楚這兩個概念的目的在於,有些開源,只發布Object  Code  ,當然,大多數發佈的是Source  Code。很多協議也對  “你發佈的是哪種Code的時候應該怎樣”,有着明確的約束。
(3)Derivative  Module  和  Separate  Module
Derivative  Module  指的是,依託或包含“最初的”或者“從別人處獲取的”開源代碼而產生的代碼,是原“源代碼”的增強(不等於增加)、改善和延續的模塊,意爲“衍生模塊”。
Separate  Module  指的是,參考或藉助原“源代碼”,開發出的獨立的,不包含、不依賴於原“源代碼模塊”,意爲“獨立的模塊”。
理解這兩個概念的目的在於,很多協議對涉及到商業發佈的時候,會有哪些是衍生的,哪些是獨立的,有着明確的商業發佈規定。
接下來,說說常見的幾種協議吧。其實上面我給出的幾篇文章的鏈接裏面對一些常見的開源協議已經有比較清晰的描述了,我這裏也只是加人了個人的一些理解,希望對接觸得少的人有一定的幫助吧。
GPL(Gun  General  Public  License)  vesion  2.0    1991
最常見的開源協議,使用它作爲授權協議的有大名鼎鼎的  Linux  。GPL最顯著的兩個特點就是網上稱爲的“病毒性傳播”和“不允許閉源的商業發佈”。
所謂的“病毒性傳播”,指的是,GPL規定,所有從GPL協議授權的源碼衍生出來的(即上面提到的DerivativeModule),或者要跟GPL授權的源碼混着用的Project,都要遵循GPL協議,就像病毒一樣,粘上了關係,就“中毒”了。GPL這樣規定的目的是,保證在GPL協議保護下的產品,不會再受到其他協議或者授權的約束。即讓跟GPL有關係的源碼都能免費獲取。舉個例子,如果你的改進的Linux中使用了GPL授權下的開源模塊(也必須使用,你不可能自己重新去做個內核吧,如果做出來了,你也沒必要叫Linux了。),那麼你整個Linux產品也必須遵循  GPL協議去開源,不能以其他方式去開源發佈,更不允許閉源發佈。這樣一來,就不會出現這樣一個Linux--這個功能是GPL協議授權的,可以免費獲取源碼,而另外一個功能是其他協議下的,拿不到源碼。這點規定對使用或者研究該產品的人來說,是一個極大的便利。
而“不允許閉源商業發佈”指的是,在  GPL授權下,你的軟件產品可以商業發佈,拿去賣錢,但是在這同時,你也必須將該產品的源碼以GPL協議方式開源發佈出去,供他人免費獲取。也許有人會迷惑,拿去賣,又同時開源,那誰來買阿?這個產品怎麼賺錢呢??這就涉及到開源產品的商業模式的問題了,想了解相關一些信息的話,可以看看以上我給出鏈接的一些文章。至於後面,可能會寫一篇關於開源項目的商業模式的隨筆。
      GPL協議下的商業發佈的一個關鍵點就像  Java  視線論壇的  Robbin所說的,GPL是針對軟件源代碼的版權,而不是針對軟件編譯後二進制版本的版權。你有權免費獲得軟件的源代碼,但是你沒有權力免費獲得軟件的二進制發行版本。GPL對軟件發行版本唯一的限制就是:你的發行版本必須把完整的源代碼一同提供。
BSD(Berkeley  Software  Distribution)
跟GPL有很大的不同,BSD協議是給予人很大的自由的一種開源協議。其最大的特點是,Recipients  幾乎可以對源碼“爲所欲爲”,可以自由地修改,自由地使用,修改後再以其他方式再發布(商業或者開源)。但,你做這些事情的時候,還是得遵循以下規則:
       1. 如果再發布的產品中包含原“源代碼”,則在原“源代碼”中必須帶有原來代碼中的BSD協議。
       2. 如果再發布的只是二進制類庫/軟件(Object  Code  /  Product),則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
       3. 不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。
其實這幾個規則約定的目的也只是達到一個目的:是他人的東西,別人以BSD開源了,你就不能不做任何聲明而佔爲己有,更不能用他人的名義來做商業推廣。你只對你自己的東西擁有絕對控制權。
舉個例子,你用開源代碼(A)修改或做其他增添之後,產生了產品B,這時候,你對B的控制由你自己決定,你可以用任何協議再開源,也可以閉源商業發佈。但,因爲如果B中包含了A或A的一部分(一點都不包含就不叫修改了),那你在B產品的版權聲明中,必須有提到你有使用到A  ,並且附帶上  A  的開源協議。而且不能做商業推廣的時候 將  B  冠以 原開源作者的名義以促進商業推廣。
      BSD代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由於允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上開發商業軟件發佈和銷售,因此是對商業集成很友好的協議。而很多的公司企業在選用開源產品的時候都首選BSD協議,因爲可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發。
Apache  Licence    vesion  2.0  
Apache  Licence  是著名的非盈利開源組織  Apache  採用的協議。該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作爲開源或商業軟件)。需要滿足的條件也和BSD類似:(配備英文原文,方便更準確理解)
1. 需要給  Recipients  一份Apache  Licence  
(You  must  give  any  other  recipients  of  the  Work  or  DerivativeWorks  a  copy  of  this  License)
2. 如果你修改了代碼,需要在被修改的文件中進行說明。
(You  must  cause  any  modified  files  to  carry  prominent  noticesstating  that  You  changed  the  files)
3. 在Derivative  Module中(修改和包含源代碼而衍生的代碼)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
(You  must  retain,  in  the  Source  form  of  any  DerivativeWorks  that  You  distribute,    all  copyright,  patent,  trademark,  and  attribution  noticesfrom  the  Source  form  of  the  Work,    excluding  those  notices  that  do  not  pertain  to  anypart  of  the  Derivative  Works)
4. 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache  Licence。你可以在Notice中增加自己的許可,但不可以表現爲對ApacheLicence構成更改。
   Apache  Licence也是對商業應用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要並作爲開源或商業產品發佈/銷售。
LGPL  
     LGPL  是GPL的一個爲主要爲類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須採用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得采用LGPL協議的開源代碼可以被商業軟件作爲類庫引用併發布和銷售。
但是如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須採用LGPL協議。因此LGPL協議的開源代碼很適合作爲第三方類庫被商業軟件引用,但不適合希望以LGPL協議代碼爲基礎,通過修改和衍生的方式做二次開發的商業軟件採用。
CPL(Common  Public  Liecense)  vesion  1.0
CPL    是  IBM  提出的並通過了OSI(Open  Source  Initiative)批准的開源協議。主要用於一些IBM  或跟  IBM  相關的開源軟件  /項目中。如 很著名的Java開發環境  Eclipse  、RIA開發平臺Open  Laszlo等。

     CPL也是一項對商業應用友好的協議。它允許  Recipients  對源碼進行任意的使用、複製、分發、傳播、展示、修改以及改後做閉源的二次商業發佈,這點跟BSD  很類似,也屬於自由度比較高的開源協議。但是,需要遵循:
     1.當一個Contributors    將源碼的整體或部分再次開源發佈的時候,必須繼續遵循CPL  開源協議來發布,而不能改用其他協議發佈。除非你得到了原“源碼”Owner    的 授權。
     2.CPL協議下,你可以將源碼不做任何修改來商業發佈。但如果你要將修改後的源碼其開源,而且當你再發布的是ObjectCode  的時候,你必須聲明 它的Source  Code  是可以獲取的,而且要告知獲取方法
     3.當你需要將  CPL  下的源碼作爲一部分跟其他私有的源碼混和着成爲一個  Project發佈的時候,你可以將整個Project/Product  以私人的協議發佈,但要聲明哪一部分代碼是CPL下的,而且聲明那部分代碼繼續遵循CPL。

   4.獨立的模塊(Separate  Module),不需要開源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章