開源早已成為很多科技企業關注的焦點,我們也常會發現部分開源技術后面標注了某種協議,這意味著這些開源代碼被框上了某種束縛,或者說這些代碼將必須遵循這些規則,否則可能會觸及法律。
總的來看,如今比較流行的開源軟件協議包括:GPL,LGPL,Apache License(2.0)和BSD。一般來講,如果使用了GPL許可證的軟件,就意味著你的軟件必須“自由”,相比之下,其他協議大多只要求使用者尊重原作就可以了,更適用于商業軟件之中,只有區分了這些開源軟件協議的含義,才能更好的利用和回饋開源軟件。
你需要了解的開源許可證
GPL(GNU General Public License Versions)
GPL協議一般還可以分為GPL2.0和GPL3.0兩種,而GPL3.0是更新一代的開源標準,在對用戶專利的保護和DRM的限制方面有所更改。GPL協議同其它的自由軟件許可證一樣,許可社會公眾享有:運行、復制軟件的自由,發行傳播軟件的自由,獲得軟件源碼的自由,改進軟件并將自己作出的改進版本向社會發行傳播的自由。 而GPL協議就像一種開源“病毒”,任何一款沾染上他的軟件都不得不保持開源和免費。
GPL許可證
根據國外論壇Robbin的解釋:“GPL是針對軟件源代碼的版權,而不是針對軟件編譯后二進制版本的版權。你有權免費獲得軟件的源代碼,但是你沒有權力免費獲得軟件的二進制發行版本。GPL對軟件發行版本唯一的限制就是:你的發行版本必須把完整的源代碼一同提供。”
LGPL
LGPL是GNU Lesser General Public License(GNU寬通用公共許可證)的縮寫形式,LGPL是GPL的一個為主要為類庫使用設計的開源協議。與上面的GPL不同的是,LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。使采用LGPL協議的開源代碼可以被商業軟件作為類庫引用并發布和銷售。
我們也可以簡單理解為:LGPL協議的開源代碼商業軟件可以使用,但不能修改LGPL協議的代碼。
Apache License
Apache Licence是著名的非盈利開源組織Apache采用的協議。該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作為開源或商業軟件)。他需要滿足的條件包括:
○需要給代碼的用戶一份Apache Licence
○如果你修改了代碼,需要在被修改的文件中說明。
○在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
○如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。
BSD開源協議(Berkerley Software Distribution)
目前BSD開源協議分為BSD 3-Clause和BSD 2-Clause兩種,分別代指兩個條款和三個條款的BSD協議。應該說,BSD開源協議是一個給于使用者很大自由的協議。基本上使用者可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。但是,不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。
這就不難理解,很多的公司企業在選用開源產品的時候都首選BSD協議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發。
除了上面的集中開源協議,還有MIT許可證(源自麻省理工,是與BSD一樣寬范的許可協議)和Mozilla許可證等,具體可參照下圖。
開源許可證(圖片來自:阮一峰blog)