本文部分摘自評論:從射手QQ之爭看開源許可證的選擇
首先,開源并不代表放棄自身的權(quán)力,相反,開源軟件之所以存在,正是它非常注重這種權(quán)力,并且把這種權(quán)力賦予了軟件的所有使用者。小心的選擇許可證是開發(fā)開 源軟件的第一步,也是每一個(gè)開源軟件作者所必須要了解的,這代表了你對你的軟件的最基本態(tài)度。很多的時(shí)候,這背后也隱藏著某種商業(yè)策略,特別是有商業(yè)公司 支持的項(xiàng)目。
比如Android為什么是Apache 2.0而不是LGPL/GPL發(fā)布?為什么Linux是以GPL發(fā)布?其中絕對不是簡簡單單的看哪個(gè)許可證用得多就選擇哪個(gè),而是深思熟慮的結(jié)果。千萬不 要小看這個(gè)選擇,一個(gè)許可證之于軟件就相當(dāng)于價(jià)值觀之于普通人,代表了這個(gè)軟件的基本品性。一個(gè)錯(cuò)誤的許可證選擇可能會(huì)直接導(dǎo)致整個(gè)項(xiàng)目的失 敗,XFree86就是一個(gè)好例子,所以,選擇許可證是一件小心、謹(jǐn)慎的事情。
各種開源的許可證主要的限制還是在redistribution(發(fā)布),所以個(gè)人/商業(yè)公司開發(fā)的軟件包含了GPL的代碼,只要你不發(fā)布,是可以任意使用的。
GPL
這里不想再解釋長篇的GPL譯文和更長的FAQ。 簡單說,GPL軟件的使用者有權(quán)力得到軟件的代碼,只要使用了GPL,在發(fā)布(redistribution)的時(shí)候,整個(gè)項(xiàng)目也必須是GPL的,即主程 序和靜態(tài)鏈接的庫(Linux的.a和Windows的.lib)必須是GPL的,動(dòng)態(tài)鏈接庫(Linux的.so,Windows的.dll)必須是比 GPL兼容的。所謂GPL兼容,也就是GPL軟件中可以使用的庫,這些許可證必須比GPL弱(如LGPL,BSD),而不能是某個(gè)商業(yè)許可證。這里有一個(gè) 兼容列表 List of FSF approved software licenses。正因如此,GPL是帶有很強(qiáng)的傳染性,只要你的軟件使用了GPL的代碼,那么就請以GPL開放源代碼吧,并且你的項(xiàng)目中也不能有任何和GPL不兼容的庫。
LGPL
GPL 帶有很強(qiáng)的傳染性,那么如果一個(gè)庫使用GPL發(fā)布,那么使用這個(gè)庫的所有軟件也必須使用GPL發(fā)布,這對不想開放源代碼的商業(yè)軟件來講是致命的打擊——你 可以不使用其他的庫,但最基本的libc是無論如何繞不開的,如果libc是以GPL發(fā)布,就相當(dāng)于所有軟件必須以GPL發(fā)布了。所 以,LGPL(Lesser GPL)誕生了。LGPL定義為,在以LGPL發(fā)布的庫的基礎(chǔ)上開發(fā)新的庫的時(shí)候,新的庫必須以LGPL發(fā)布,但是如果僅僅是動(dòng)態(tài)鏈接,那么則不受任何限 制。這樣商業(yè)軟件就可以隨意的使用LGPL的庫了。因此,LGPL也具有傳染性,但限制在在其基礎(chǔ)上開發(fā)的庫上,而并不限制使用它的程序本身——它的傳染 性遠(yuǎn)小于GPL。
BSD、Apache 2.0
相對GPL/LGPL的開放源代碼,BSD,Apache 2.0就寬松許多——商業(yè)軟件可以任意的使用BSD,Apache 2.0發(fā)布的軟件代碼,而不需要開放源代碼,只需要提及代碼的原出處就可以了。BSD和Apache 2.0提及的方式稍有不同,具體可以參考協(xié)議的詳細(xì)內(nèi)容。它們是GPL兼容的。
了解了幾種常用許可證的異同,再來看許可證的選擇。
Android 使用寬松的Apache 2.0發(fā)布,因?yàn)镚oogle作為一個(gè)商業(yè)公司,并不想失去商業(yè)軟件的支持,它希望團(tuán)結(jié)一切可以團(tuán)結(jié)的力量加入的Android的開發(fā)中來,壯大自己的陣 營,使用Apache 2.0就無可厚非了。而Google本身,并沒有喪失對Android的控制權(quán),不會(huì)擔(dān)心另外一個(gè)公司拿走了Android的代碼開發(fā)出一個(gè)閉源 Android的對手。因?yàn)椋灰狝ndroid不斷的出新版,社區(qū)不停的跟進(jìn),并且不停的修改API,其他基于Android開發(fā)的公司不得不把自己的 Patch提回到主干上,否則,必然將耗費(fèi)大量人力物力在維護(hù)自己的Patch上(錢這方面你斗得過Google?),得不償失。而且,閉源之后,與整個(gè) 社區(qū)為敵,作為一個(gè)定位軟件平臺(tái)的項(xiàng)目,會(huì)流失大量應(yīng)用軟件開發(fā)者,以小博大,任何一個(gè)商業(yè)公司都不會(huì)干這種勝算不高的蠢事。
在看以 GPL發(fā)布的Linux為什么比以BSD發(fā)布的FreeBSD成功。其實(shí)正是因?yàn)镚PL的傳染性。當(dāng)一個(gè)開發(fā)人員在Linux基礎(chǔ)上開發(fā)一個(gè)新功能之后, 不得不以GPL開放源代碼,貢獻(xiàn)回Linux,這樣Linux本身才能越來也越壯大而且留住了相當(dāng)?shù)拈_發(fā)人員,形成了一個(gè) 優(yōu)秀軟件->很多使用者和貢獻(xiàn)者->貢獻(xiàn)->更優(yōu)秀的軟件->更多的使用者和貢獻(xiàn)者... 的良性循環(huán)。
正如每一個(gè)成功的男人背后都有一個(gè)女人,每一個(gè)成功的開源軟件背后都有一個(gè)符合它策略的開源許可證。許可證明確的版權(quán)劃分,明確的版權(quán)劃分為軟件發(fā)展提供 了一個(gè)良好的環(huán)境。正是因?yàn)槔贤庵匾暟鏅?quán),天天為版權(quán)爭吵,才會(huì)有一個(gè)良好的商業(yè)軟件和自由軟件大環(huán)境。相對的,漠視版權(quán)的中國無論商業(yè)還是開源軟件,才 會(huì)淪落到毫無創(chuàng)新能力,只能給外國打打下手,作點(diǎn)邊角外包的境地。