你對(duì)開(kāi)源有多少了解呢?如果你是軟件開(kāi)發(fā)者,要開(kāi)源軟件,不單單是開(kāi)放源代碼就可以了,選擇一種許可證很重要,一個(gè)許可證之于軟件就相當(dāng)于價(jià)值觀之于普通人,代表了這個(gè)軟件的基本品性。一個(gè)錯(cuò)誤的許可證選擇可能會(huì)直接導(dǎo)致整個(gè)項(xiàng)目的失 敗,XFree86就是一個(gè)好例子。
各種開(kāi)源的許可證主要的限制還是在redistribution(發(fā)布),所以個(gè)人/商業(yè)公司開(kāi)發(fā)的軟件包含了GPL的代碼,只要你不發(fā)布,是可以任意使用的。
下面是幾個(gè)開(kāi)源許可證的區(qū)別:
GPL
這里不想再解釋長(zhǎng)篇的GPL譯文 和更長(zhǎng)的FAQ 。 簡(jiǎn)單說(shuō),GPL軟件的使用者有權(quán)力得到軟件的代碼,只要使用了GPL,在發(fā)布(redistribution)的時(shí)候,整個(gè)項(xiàng)目也必須是GPL的,即主程 序和靜態(tài)鏈接的庫(kù)(Linux的.a和Windows的.lib)必須是GPL的,動(dòng)態(tài)鏈接庫(kù)(Linux的.so,Windows的.dll)必須是比 GPL兼容的。所謂GPL兼容,也就是GPL軟件中可以使用的庫(kù),這些許可證必須比GPL弱(如LGPL,BSD),而不能是某個(gè)商業(yè)許可證。這里有一個(gè) 兼容列表 List of FSF approved software licenses 。正因如此,GPL是帶有很強(qiáng)的傳染性,只要你的軟件使用了GPL的代碼,那么就請(qǐng)以GPL開(kāi)放源代碼吧,并且你的項(xiàng)目中也不能有任何和GPL不兼容的庫(kù)。
LGPL
GPL 帶有很強(qiáng)的傳染性,那么如果一個(gè)庫(kù)使用GPL發(fā)布,那么使用這個(gè)庫(kù)的所有軟件也必須使用GPL發(fā)布,這對(duì)不想開(kāi)放源代碼的商業(yè)軟件來(lái)講是致命的打擊——你 可以不使用其他的庫(kù),但最基本的libc是無(wú)論如何繞不開(kāi)的,如果libc是以GPL發(fā)布,就相當(dāng)于所有軟件必須以GPL發(fā)布了。所 以,LGPL(Lesser GPL)誕生了。LGPL定義為,在以LGPL發(fā)布的庫(kù)的基礎(chǔ)上開(kāi)發(fā)新的庫(kù)的時(shí)候,新的庫(kù)必須以LGPL發(fā)布,但是如果僅僅是動(dòng)態(tài)鏈接,那么則不受任何限 制。這樣商業(yè)軟件就可以隨意的使用LGPL的庫(kù)了。因此,LGPL也具有傳染性,但限制在在其基礎(chǔ)上開(kāi)發(fā)的庫(kù)上,而并不限制使用它的程序本身——它的傳染 性遠(yuǎn)小于GPL。
BSD、Apache 2.0
相對(duì)GPL/LGPL的開(kāi)放源代碼,BSD,Apache 2.0就寬松許多——商業(yè)軟件可以任意的使用BSD,Apache 2.0發(fā)布的軟件代碼,而不需要開(kāi)放源代碼,只需要提及代碼的原出處就可以了。BSD和Apache 2.0提及的方式稍有不同,具體可以參考協(xié)議的詳細(xì)內(nèi)容。它們是GPL兼容的
看看下面選擇開(kāi)源許可證的案例:
Android 使用寬松的Apache 2.0發(fā)布,因?yàn)镚oogle作為一個(gè)商業(yè)公司,并不想失去商業(yè)軟件的支持,它希望團(tuán)結(jié)一切可以團(tuán)結(jié)的力量加入的Android的開(kāi)發(fā)中來(lái),壯大自己的陣 營(yíng),使用Apache 2.0就無(wú)可厚非了。而Google本身,并沒(méi)有喪失對(duì)Android的控制權(quán),不會(huì)擔(dān)心另外一個(gè)公司拿走了Android的代碼開(kāi)發(fā)出一個(gè)閉源 Android的對(duì)手。因?yàn)?,只要Android不斷的出新版,社區(qū)不停的跟進(jìn),并且不停的修改API,其他基于Android開(kāi)發(fā)的公司不得不把自己的 Patch提回到主干上,否則,必然將耗費(fèi)大量人力物力在維護(hù)自己的Patch上(錢這方面你斗得過(guò)Google?),得不償失。而且,閉源之后,與整個(gè) 社區(qū)為敵,作為一個(gè)定位軟件平臺(tái)的項(xiàng)目,會(huì)流失大量應(yīng)用軟件開(kāi)發(fā)者,以小博大,任何一個(gè)商業(yè)公司都不會(huì)干這種勝算不高的蠢事。
在看以 GPL發(fā)布的Linux為什么比以BSD發(fā)布的FreeBSD成功。其實(shí)正是因?yàn)镚PL的傳染性。當(dāng)一個(gè)開(kāi)發(fā)人員在Linux基礎(chǔ)上開(kāi)發(fā)一個(gè)新功能之后, 不得不以GPL開(kāi)放源代碼,貢獻(xiàn)回Linux,這樣Linux本身才能越來(lái)也越壯大而且留住了相當(dāng)?shù)拈_(kāi)發(fā)人員,形成了一個(gè) 優(yōu)秀軟件->很多使用者和貢獻(xiàn)者->貢獻(xiàn)->更優(yōu)秀的軟件->更多的使用者和貢獻(xiàn)者... 的良性循環(huán)。
聯(lián)系客服