【51CTO獨家特稿】前段時間在51CTO釋出過的一篇譯文對當下最為流行的五大開源許可協議進行了簡單的介紹。由於參與開源運動的多為開發者與設計者,而開源許可協議的原文往往跟法律條文一樣難懂,導致開源社群的很多參與者並沒有對開源許可協議產生足夠的認識。但事實上,瞭解開源許可協議不僅可以幫助我們更好的做出選擇,並且可以更加深入的參與開源社群的文化。

要了解開源許可協議,當然要從GNU GPL開始說起。這個許可協議究竟是如何誕生,又是如何被社群接受並廣為使用的呢?請看下面的介紹。

GNU GPL條文概述

GNU General Public License,通常簡稱為GPL,是當下最為通用的開源許可協議。GPL的條文最早在1989年由Richard Stallman(RMS)撰寫,用於GNU專案。這位自由軟體之父在當年提出了四大自由的訴求:

◆可以使用軟體做任何事的自由

◆可以根據自己需要任意修改軟體的自由

◆可以與別人分享軟體的自由

◆可以與別人分享自己對軟體所做改動的自由

copyleft

為了有效地保護這些自由,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%。這其中包括很多我們所熟悉的開源專案:

GNU GPL

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這個開源技術都是不可能被扼殺的。

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的訴訟。這一系列訴訟逐漸演變成了一場曠日持久的戰爭。

SCO Unix

這場戰爭的戰場之一就在於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對許可協議的選擇是這樣評論的:

Linus Torvalds

“我相信GPL(尤其是v2)是一個協同工作的絕佳模式——所有的人分享他們的程式碼,同時確保沒有渾水摸魚者能夠利用他人的工作成果來為自己取得好處——你使用自己貢獻的原始碼來為你所獲得的原始碼進行“支付”。我將其稱之為tit-for-tat模式,這種模式不僅適用於軟體界,也同樣在經濟學與博弈論中十分出名。

不過這種tit-for-tat模式並非是所有人的需求。比如說,如果你隸屬標準委員會,你只是希望能夠藉由一段開原始碼的傳播來推廣一個標準,而並不介意這段程式碼是否會被用在專有軟體中盈利,那麼Apache或BSD協議則比較合適。

即使單純是從理性的角度來看,不同許可協議的存在也都是合理的。同時我也要說,程式設計師們並非在任何時刻都是理性的。自負的心理,個人的特殊需求,都是導致眾多有細微差別的許可協議誕生的原因。

不過我們要知道,有選擇是件好事!而且非常流行的許可協議並不是那麼多,所以基本上沒有什麼可困擾的。”

講到這裡,相信大家對於GNU GPL開源許可協議的由來和使用情況已經有了相當的瞭解。當然正如同上面介紹的,在開源運動的發展歷程中,GPL並非是最早誕生的許可協議,而且隨著時間的推移與各種需求的影響,社群中出現了很多其他的開源許可協議,其中也有不少是由GPL修改而來的。這些其他的許可協議是如何誕生,它們和GPL有什麼不同,而社群又為什麼會選擇這些許可協議呢?我們在下一篇文章中會繼續介紹。