為何升級至 GPLv3

GNU 通用公共授權條款(GNU GPL)第 3 版已發布,使自由軟體套件能夠從 GPL 第 2 版升級。本文解釋了為何升級授權條款很重要。

首先,重要的是要注意升級是一種選擇。GPL 第 2 版將仍然是有效的授權條款,如果某些程式保持在 GPLv2 下,而其他程式升級到 GPLv3,也不會發生災難。這兩個授權條款不相容,但這並不是根本性的問題。

當我們說 GPLv2 和 GPLv3 不相容時,這意味著沒有合法的辦法可以在單個程式中組合 GPLv2 下的程式碼和 GPLv3 下的程式碼。這是因為 GPLv2 和 GPLv3 都是著作權保護(copyleft)授權條款:它們各自都聲明:「如果您在一個較大的程式中包含了在此授權條款下的程式碼,則該較大的程式也必須在此授權條款下。」沒有辦法使它們相容。我們可以在 GPLv3 中添加 GPLv2 相容性條款,但這不會奏效,因為 GPLv2 也需要類似的條款。

幸運的是,授權條款不相容性僅在您想要將兩個不同程式的程式碼連結、合併或組合到單個程式中時才重要。在作業系統中並排擁有 GPLv3 涵蓋的程式和 GPLv2 涵蓋的程式沒有問題。例如,TeX 授權條款和 Apache 授權條款與 GPLv2 不相容,但這並不能阻止我們在同一個系統中與 Linux、Bash 和 GCC 一起執行 TeX 和 Apache。這是因為它們都是獨立的程式。同樣地,如果 Bash 和 GCC 轉移到 GPLv3,而 Linux 仍然在 GPLv2 下,也不會發生衝突。

將程式保持在 GPLv2 下不會產生問題。遷移的原因是因為 GPLv3 將解決現有的問題。

GPLv3 將阻止的一個主要危險是 tivoization(防修改鎖)。Tivoization 指的是某些「設備」(內部有電腦)包含 GPL 涵蓋的軟體,但您無法有效地更改,因為如果設備偵測到修改過的軟體,它就會關閉。Tivoization 的常見動機是軟體具有製造商知道人們會想要更改的功能,並且旨在阻止人們更改它們。這些電腦的製造商利用自由軟體提供的自由,但他們不允許您也這樣做。

有些人認為,自由市場中設備之間的競爭應該足以將惡劣的功能保持在較低的水平。也許僅僅是競爭就可以避免任意的、毫無意義的惡劣功能,例如「每週二下午 1 點到 5 點之間必須關閉」,但即便如此,在眾多主人中選擇一個也不是自由。自由意味著控制您的軟體做什麼,而不僅僅是您可以乞求或威脅其他人來為您做決定。

在數位版權管理(DRM)的關鍵領域——旨在限制您使用電腦中資料的惡劣功能——競爭沒有幫助,因為相關的競爭是被禁止的。根據《數位千禧年著作權法案》和類似的法律,在美國和許多其他國家,除非 DVD 播放器根據 DVD 陰謀集團的官方規則限制使用者(其網站是 www.dvdcca.org/,但這些規則似乎沒有在那裡發布),否則分發 DVD 播放器是違法的。公眾無法透過購買非 DRM 播放器來拒絕 DRM,因為根本沒有非 DRM 播放器可供購買。無論您可以從多少產品中選擇,它們都具有相同的數位手銬。

GPLv3 確保您可以自由地移除手銬。它不禁止 DRM 或任何類型的功能。它對您可以添加到程式或從程式中移除的實質功能沒有任何限制。相反,它確保您與您的副本發行商一樣自由地移除惡劣的功能。Tivoization 是他們剝奪您這種自由的方式;為了保護您的自由,GPLv3 禁止 tivoization。

禁止 tivoization 適用於任何預期消費者會使用的產品,即使只是偶爾使用。GPLv3 僅容忍幾乎完全用於企業和組織的產品的 tivoization。

GPLv3 抵制的另一個威脅是像 Novell-微軟協議這樣的專利交易。微軟希望利用其數千項專利,讓使用者為執行 GNU/Linux 的特權向微軟付費,並制定了這項協議以嘗試實現這一目標。該協議為 Novell 的客戶提供了相當有限的針對微軟專利的保護。

微軟在 Novell-微軟協議中犯了一些錯誤,而 GPLv3 的設計目的是將這些錯誤轉化為對微軟不利,從而將這種有限的專利保護擴展到整個社群。為了利用這種保護,程式需要使用 GPLv3。

微軟的律師並不愚蠢,下次他們可能會設法避免這些錯誤。因此,GPLv3 表示他們沒有「下次」機會。以 GPL 第 3 版發布程式可以保護它免受微軟未來試圖讓經銷商向程式的使用者收取微軟專利權使用費的企圖。

GPLv3 也為使用者提供了來自程式貢獻者和經銷商的明確專利保護。對於 GPLv2,使用者依賴於隱含的專利許可,以確保向他們提供副本的公司不會因專利侵權而起訴他們,或起訴他們重新經銷副本的人。

GPLv3 中的明確專利許可並未達到我們可能希望的程度。理想情況下,我們會讓每個重新經銷 GPL 涵蓋程式碼的人放棄所有軟體專利,以及每個不重新經銷 GPL 涵蓋程式碼的人也放棄,因為不應該有軟體專利。軟體專利是一種惡毒而荒謬的制度,它使所有軟體開發人員都面臨被他們從未聽說過的公司以及該領域所有大型企業起訴的危險。大型程式通常結合了數千個想法,因此如果它們實作了數百項專利涵蓋的想法,也就不足為奇了。大型企業收集了數千項專利,並利用這些專利來欺負較小的開發人員。專利已經阻礙了自由軟體的開發。

使軟體開發安全的唯一方法是廢除軟體專利,我們的目標是有一天實現這一目標。但我們無法透過軟體授權條款來做到這一點。任何程式,無論是否自由,都可能被不相關方手中的軟體專利扼殺,而程式的授權條款無法阻止這種情況。只有法院判決或專利法的變更才能使軟體開發免受專利的影響。如果我們嘗試用 GPLv3 來做到這一點,那將會失敗。

因此,GPLv3 旨在限制和引導危險。特別是,我們試圖將自由軟體從比死亡更糟的命運中拯救出來:透過專利使其實際上變成專有軟體。GPLv3 的明確專利許可確保了使用 GPL 向使用者提供四項自由的公司不能轉過頭來利用他們的專利來告訴某些使用者,「這不包括您」。它也阻止他們與其他專利持有人勾結來做到這一點。

GPLv3 的其他優點包括更好的國際化、更溫和的終止、對 BitTorrent 的支援以及與 Apache 授權條款的相容性。總而言之,有很多理由升級。

一旦 GPLv3 發布,變更不太可能停止。如果使用者自由面臨新的威脅,我們將不得不開發 GPL 第 4 版。重要的是要確保程式在我們編寫 GPLv4 時能夠輕鬆升級到 GPLv4。

一種方法是以「GPL 第 3 版或任何後續版本」發布程式。另一種方法是讓程式的所有貢獻者聲明一個代理人,該代理人可以決定升級到未來的 GPL 版本。第三種方法是讓所有貢獻者將著作權轉讓給一個指定的著作權持有人,該持有人將能夠升級授權條款版本。無論如何,程式都應為未來的 GPL 版本提供這種彈性。