開源漫談之GNU GPL的前世今生
原創【51CTO獨家特稿】前段時間在51CTO發布過的一篇譯文對當下最為流行的五大開源許可協議進行了簡單的介紹。由于參與開源運動的多為開發者與設計者,而開源許可協議的原文往往跟法律條文一樣難懂,導致開源社區的很多參與者并沒有對開源許可協議產生足夠的認識。但事實上,了解開源許可協議不僅可以幫助我們更好的做出選擇,并且可以更加深入的參與開源社區的文化。
要了解開源許可協議,當然要從GNU GPL開始說起。這個許可協議究竟是如何誕生,又是如何被社區接受并廣為使用的呢?請看下面的介紹。
GNU GPL條文概述
GNU General Public License,通常簡稱為GPL,是當下最為通用的開源許可協議。GPL的條文最早在1989年由Richard Stallman(RMS)撰寫,用于GNU項目。這位自由軟件之父在當年提出了四大自由的訴求:
◆可以使用軟件做任何事的自由
◆可以根據自己需要任意修改軟件的自由
◆可以與別人分享軟件的自由
◆可以與別人分享自己對軟件所做改動的自由
為了有效地保護這些自由,RMS將GPL定義為第一個、同時也是最為嚴格的Copyleft許可協議——也就是說,如果你使用了按照GPL發布的項目,那么你的項目也必須按照GPL許可協議發布,不得添加任何其他限制。(不過,Copyleft這個理念卻不是從GPL開始,而是從20世紀70年代起就有人開始實行的。)使用GPL協議的代碼制作的程序并非不能拿來賣錢,事實上RMS開始自由運動的第一筆經費就是通過售賣附在磁碟上的Emacs賺來的。GPL的主要規定在于源代碼必須自由公開。之后為了增強此協議的Copyleft效力以及與專有軟件代碼以及其他協議代碼的兼容性,RMS又先后在1991年和2007年敲定了GPLv2和GPLv3的條文。
使用GPL的知名開源項目
根據Black Duck Open Source Resource Center(直譯為黑鴨子開源資源中心,由Black Duck軟件公司發起建立并維護的數據庫)的調查,目前使用GNU GPLv2的開源項目是最多的。到今天為止(2010年5月)的統計中,GPLv2占據了全部開源項目當中48.54%的比例,而GPLv3的使用率也已經不低,達到了5.61%。這其中包括很多我們所熟悉的開源項目:
Linux:如日中天的操作系統,和Unix以及整個自由軟件運動有著非常深的淵源。目前使用GPLv2(因此在理論上,所有的Linux發行版都遵循GPL許可協議)。
GNU系列:GNU Emacs,GNU調試器,GNU C編譯器等等。當然,GNU項目已經在使用GPLv3。
eMule電驢:眾所周知的P2P下載工具,目前使用GPLv2。有興趣的讀者可以看看他們翻譯的非官方GPL中文文本。
WordPress:流行的博客系統,目前使用GPLv2。
Java:Java的HotSpot技術和Java語言編譯器javac從2006年開始采用GPLv2,不過條款中在GPLv2允許的范圍內使用了linking exception(直譯為連接例外),所以是一個修改過的GPLv2。另外,同屬于Sun的Glassfish和NetBeans IDE也都采用此種許可協議。
MySQL:著名的開源數據庫。MySQL采用的是雙重許可協議——帶有例外的GPLv2,以及專有類型的最終用戶許可協議。這種雙重許可的方式是開源軟件發展多年的一個產物,這種方式允許廠商通過售賣開源軟件的許可證賺錢,為想要使用GPL開源項目而又不想公開自己代碼的用戶提供了另一種選擇。至于這種方法是否有利于開源界,以及是否會被用來鉆空子,目前還無法得出明確的結論。不過可以肯定的一點是,因為MySQL在GPLv2下發布,所以無論之后發生什么事,MySQL這個開源技術都是不可能被扼殺的。
#p#
GPL牽涉的法律案件回顧
須知RMS所做的遠不止是開發了GNU項目以及確定了GNU GPL許可協議。為了自由軟件的推廣,RMS在1985年創建了自由軟件基金會(Free Software Foundation,FSF),并一直致力于解決自由軟件運動相關的法律和結構問題。
可想而知,GPL在推出之后并開始流行的十多年間成為了很多專有軟件廠商的眼中釘。最早的一起直接針對GPL的法律訴訟發生在2003年8月,身為原告方的SCO Group以Linux內核中使用了IBM AIX代碼,而AIX代碼又使用了SCO Unix代碼為由,將IBM告上了法庭。這一舉動激發了Linux社區的公憤,IBM繼而聯手紅帽針對SCO提起反訴與上訴;之后SCO開始恐嚇不愿撤銷SCO Unix使用權的Linux用戶,并更進一步展開了對Novell、AutoZone和DaimlerChrysler的訴訟。這一系列訴訟逐漸演變成了一場曠日持久的戰爭。
這場戰爭的戰場之一就在于GPL:根據SCO的申訴,SCO Unix的源代碼是當時SCO的一些員工私自按照GPL發布的,因此不具備法律效力。SCO的發言人還進一步表示,“GPL違背美國憲法,還有版權,反托拉斯,及出口管制等法令。”但是,整個事情還要更加復雜:Unix原本是AT&T賣給Novell而Novell又賣給SCO的,(這段歷史可參考Unix傳奇一文)因此自由軟件和開源社區反過來質疑SCO是否真正擁有Unix的所有權;而FSF也站出來,依據GPL的條文捍衛Linux用戶不受恐嚇的權利。
美國法院最終并沒有在GPL許可協議上進行定論,但數年間的法律判決基本都對SCO不利,2005年的判決中甚至對SCO沒有提供侵權代碼的證據表示了直白的鄙夷。SCO最終在2007年申請了破產保護,并希望賣出自己的Unix產品線,但這似乎也不可能了:美國法院在那一年宣判Unix屬于Novell,并在最近的2010年3月31日重復了這個判決。
雖然這場戰爭的主戰場與GPL關系不大,但Linux一方的勝利還是為GPL增添了一定力量。在2007年,一個FLOSS一方的叫做SFLC(Software Freedom Law Center,軟件自由法律中心)的法律團體以違反GPL協議為由,代表BusyBox的兩位開發者將Monsoon Multimedia軟件廠商告上了法庭。在此之前,針對違反GPL協議的處理方法一直是由FSF等開源組織私下溝通解決的,因此此案成為了美國第一例因GPL而立案的案件。不過,這宗訴訟最后以雙方庭外和解的方式結束,GPL也因此失去了一次驗證其法律有效性的機會。
為什么社區對GPL如此青睞?
GPL是一個代表了RMS的Copyleft理念的許可協議,在各種開源許可協議中屬于最為嚴格的一個,可以說是直接阻礙了開發者通過販賣版權和專利軟件這種傳統的軟件賺錢營生。但是為什么在這么多的開源項目當中,使用GPL協議的項目占據了一半以上的高比例呢?由于開發者大多數專注于開發本身,而對許可協議這個概念并不十分重視,所以有些項目的發起人在沒有進行深入了解的時候直接選取了流行的GPL協議,這是原因之一。不過有很多社區人士則明確的表達過自己選擇GPL的理由——
“GPL代表了自由。”
“我使用GPL,因為微軟討厭它。我不用BSD,因為微軟喜歡它。”
“GPL意味著分享,而BSD/MIT協議意味著偷竊。當然,這取決于你如何定義分享與偷竊!”
眾多觀點之中,Linux之父Linus Torvalds的說明毫無疑問是值得了解的。在2008年的一次訪談中,Linus對許可協議的選擇是這樣評論的:
“我相信GPL(尤其是v2)是一個協同工作的絕佳模式——所有的人分享他們的代碼,同時確保沒有渾水摸魚者能夠利用他人的工作成果來為自己取得好處——你使用自己貢獻的源代碼來為你所獲得的源代碼進行“支付”。我將其稱之為tit-for-tat模式,這種模式不僅適用于軟件界,也同樣在經濟學與博弈論中十分出名。
不過這種tit-for-tat模式并非是所有人的需求。比如說,如果你隸屬標準委員會,你只是希望能夠借由一段開源代碼的傳播來推廣一個標準,而并不介意這段代碼是否會被用在專有軟件中盈利,那么Apache或BSD協議則比較合適。
即使單純是從理性的角度來看,不同許可協議的存在也都是合理的。同時我也要說,程序員們并非在任何時刻都是理性的。自負的心理,個人的特殊需求,都是導致眾多有細微差別的許可協議誕生的原因。
不過我們要知道,有選擇是件好事!而且非常流行的許可協議并不是那么多,所以基本上沒有什么可困擾的。”
講到這里,相信大家對于GNU GPL開源許可協議的由來和使用情況已經有了相當的了解。當然正如同上面介紹的,在開源運動的發展歷程中,GPL并非是最早誕生的許可協議,而且隨著時間的推移與各種需求的影響,社區中出現了很多其他的開源許可協議,其中也有不少是由GPL修改而來的。這些其他的許可協議是如何誕生,它們和GPL有什么不同,而社區又為什么會選擇這些許可協議呢?我們在下一篇文章中會繼續介紹。
【編輯推薦】