瞭解開源的許可證GPL、LGPL、BSD、Apache 2.0的區別 【轉】

 

原文來自:http://blog.sina.com.cn/s/blog_6870d1e00100lhlv.htmlhtml

 

你對開源有多少了解呢?若是你是軟件開發者,要開源軟件,不僅僅是開放源代碼就能夠了,選擇一種許可證很重要,一個許可證之於軟件就至關於價值觀之於普通人,表明了這個軟件的基本品性。一個錯誤的許可證選擇可能會直接致使整個項目的失 敗,XFree86就是一個好例子。redis

各類開源的許可證主要的限制仍是在redistribution(發佈),因此我的/商業公司開發的軟件包含了GPL的代碼,只要你不發佈,是能夠任意使用的。
下面是幾個開源許可證的區別:app

GPL
這裏不想再解釋長篇的GPL譯文和更長的FAQ。 簡單說,GPL軟件的使用者有權力獲得軟件的代碼,只要使用了GPL,在發佈(redistribution)的時候,整個項目也必須是GPL的,即主程 序和靜態連接的庫(Linux的.a和Windows的.lib)必須是GPL的,動態連接庫(Linux的.so,Windows的.dll)必須是比 GPL兼容的。所謂GPL兼容,也就是GPL軟件中可使用的庫,這些許可證必須比GPL弱(如LGPL,BSD),而不能是某個商業許可證。這裏有一個 兼容列表 List of FSF approved software licenses。正因如此,GPL是帶有很強的傳染性,只要你的軟件使用了GPL的代碼,那麼就請以GPL開放源代碼吧,而且你的項目中也不能有任何和GPL不兼容的庫。

LGPL
GPL 帶有很強的傳染性,那麼若是一個庫使用GPL發佈,那麼使用這個庫的全部軟件也必須使用GPL發佈,這對不想開放源代碼的商業軟件來說是致命的打擊——你 能夠不使用其餘的庫,但最基本的libc是不管如何繞不開的,若是libc是以GPL發佈,就至關於全部軟件必須以GPL發佈了。所 以,LGPL(Lesser GPL)誕生了。LGPL定義爲,在以LGPL發佈的庫的基礎上開發新的庫的時候,新的庫必須以LGPL發佈,可是若是僅僅是動態連接,那麼則不受任何限 制。這樣商業軟件就能夠隨意的使用LGPL的庫了。所以,LGPL也具備傳染性,但限制在在其基礎上開發的庫上,而並不限制使用它的程序自己——它的傳染 性遠小於GPL。

BSD、Apache 2.0

相對GPL/LGPL的開放源代碼,BSD,Apache 2.0就寬鬆許多——商業軟件能夠任意的使用BSD,Apache 2.0發佈的軟件代碼,而不須要開放源代碼,只須要說起代碼的原出處就能夠了。BSD和Apache 2.0說起的方式稍有不一樣,具體能夠參考協議的詳細內容。它們是GPL兼容的spa

 

看看下面選擇開源許可證的案例:開放源代碼

Android 使用寬鬆的Apache 2.0發佈,由於Google做爲一個商業公司,並不想失去商業軟件的支持,它但願團結一切能夠團結的力量加入的Android的開發中來,壯大本身的陣 營,使用Apache 2.0就無可厚非了。而Google自己,並無喪失對Android的控制權,不會擔憂另一個公司拿走了Android的代碼開發出一個閉源 Android的對手。由於,只要Android不斷的出新版,社區不停的跟進,而且不停的修改API,其餘基於Android開發的公司不得不把本身的 Patch提回到主幹上,不然,必然將耗費大量人力物力在維護本身的Patch上(錢這方面你鬥得過Google?),得不償失。並且,閉源以後,與整個 社區爲敵,做爲一個定位軟件平臺的項目,會流失大量應用軟件開發者,以小博大,任何一個商業公司都不會幹這種勝算不高的蠢事。

在看以 GPL發佈的Linux爲何比以BSD發佈的FreeBSD成功。其實正是由於GPL的傳染性。當一個開發人員在Linux基礎上開發一個新功能以後, 不得不以GPL開放源代碼,貢獻回Linux,這樣Linux自己才能越來也越壯大並且留住了至關的開發人員,造成了一個 優秀軟件->不少使用者和貢獻者->貢獻->更優秀的軟件->更多的使用者和貢獻者... 的良性循環。htm

相關文章
相關標籤/搜索