GPLv3 快速指南

 [GPLv3 Logo]

[本文亦提供 PDFreStructuredText 格式。]


經過一年半的公開諮詢、數千條評論和四個草案,GNU 通用公共授權條款第 3 版(GPLv3)終於在 2007 年 6 月 29 日發布。自第一個草案出現以來,關於該授權條款的討論已經很多,但很少有人談論它為開發人員帶來的好處。我們發布本指南旨在填補這一空白。我們將首先簡要回顧自由軟體、著作權利保留和 GPL 的目標。然後,我們將回顧授權條款中的主要變更,以了解它們如何推進這些目標並使開發人員受益。

GPL 的基礎

任何人都不應受到他們使用的軟體的限制。每位使用者都應享有四項自由

  • 為任何目的使用軟體的自由,
  • 根據您的需求更改軟體的自由,
  • 與您的朋友和鄰居分享軟體的自由,以及
  • 分享您所做的變更的自由。

當一個程式向使用者提供所有這些自由時,我們稱之為自由軟體

編寫軟體的開發人員可以根據 GNU GPL 的條款發布它。當他們這樣做時,它將成為自由軟體並保持自由軟體,無論誰更改或發布該程式。我們稱之為著作權利保留:軟體受著作權保護,但我們沒有像專有軟體那樣使用這些權利來限制使用者,而是使用它們來確保每位使用者都擁有自由。

我們更新 GPL 以保護其著作權利保留免受法律或技術發展的破壞。最新版本保護使用者免受三個近期威脅

  • Tivoization(綁樁):一些公司創造了各種不同的裝置,這些裝置運行 GPL 授權的軟體,然後操縱硬體,以便他們可以更改正在運行的軟體,但您不能。如果一個裝置可以運行任意軟體,那麼它就是一台通用電腦,其所有者應該控制它的行為。當一個裝置阻止您這樣做時,我們稱之為 tivoization(綁樁)。
  • 禁止自由軟體的法律:《數位千禧年著作權法案》和《歐盟著作權指令》等立法使得編寫或分享可以破解 DRM(數位版權管理;請參閱下方)的軟體成為犯罪行為。這些法律不應干擾 GPL 授予您的權利。
  • 歧視性專利協議:微軟最近開始告訴人們,只要您從向微軟支付特權的供應商那裡獲得軟體,他們就不會因專利侵權起訴自由軟體使用者。最終,微軟試圖收取使用自由軟體的權利金,這會干擾使用者的自由。任何公司都不應能夠這樣做。

第 3 版還進行了許多改進,使授權條款更易於所有人使用和理解。但即使進行了所有這些變更,GPLv3 也不是一個激進的新授權條款;相反,它是先前版本的演進。儘管大量文字發生了變化,但其中大部分只是闡明了 GPLv2 的內容。考慮到這一點,讓我們回顧一下 GPLv3 中的主要變更,並討論它們如何改進使用者和開發人員的授權條款。

中和禁止自由軟體的法律——但不禁止 DRM

您可能熟悉 DVD 和其他媒體上的數位版權管理 (DRM)。您可能也熟悉使編寫您自己的工具來繞過這些限制(如《數位千禧年著作權法案》和《歐盟著作權指令》)成為非法的法律。任何人都不應阻止您編寫您想要的任何程式碼,而 GPLv3 會保護您的這項權利。

始終可以使用 GPL 授權的程式碼來編寫實作 DRM 的軟體。但是,如果有人使用受 GPLv3 保護的程式碼來做到這一點,則第 3 節表示該系統將不被視為有效的技術「保護」措施。這表示如果您破解了 DRM,您將可以自由地發布您自己的軟體來做到這一點,並且您不會受到 DMCA 或類似法律的威脅。

與往常一樣,GNU GPL 不限制人們在軟體中做什麼;它只是阻止他們限制他人。

保護您的修改權

Tivoization(綁樁)是一種危險的企圖,旨在限制使用者的自由:如果您所有的電腦都不讓您修改軟體,那麼修改軟體的權利將變得毫無意義。GPLv3 透過要求發行商向您提供在裝置上安裝修改後的軟體所需的任何資訊或資料來阻止 tivoization(綁樁)。這可能只是一組說明,或者可能包括特殊資料,例如加密金鑰或有關如何繞過硬體中的完整性檢查的資訊。這將取決於硬體的設計方式——但無論您需要什麼資訊,您都必須能夠獲得它。

此要求範圍有限。發行商仍然被允許將加密金鑰用於任何目的,並且他們僅在您需要它來修改他們提供給您的裝置上的 GPL 授權軟體時才需要披露金鑰。GNU 計劃本身使用 GnuPG 來證明其 FTP 網站上所有軟體的完整性,而諸如此類的措施對使用者有利。GPLv3 不會阻止人們使用加密技術;我們不希望它這樣做。它只是阻止人們奪走授權條款提供給您的權利——無論是透過專利法、技術還是任何其他方式。

更強大的專利威脅保護

自 GPLv2 發布以來的 17 年中,軟體專利格局發生了巨大變化,自由軟體授權條款也開發了新的策略來應對這些變化。GPLv3 也反映了這些變化。每當有人傳達他們編寫或修改的 GPLv3 涵蓋的軟體時,他們都必須向每位接收者提供行使 GPL 賦予他們的權利所需的任何專利授權。除此之外,如果任何被授權人試圖使用專利訴訟來阻止另一位使用者行使這些權利,他們的授權將被終止。

這對使用者和開發人員意味著,他們將能夠使用 GPLv3 涵蓋的軟體,而無需擔心絕望的貢獻者稍後會嘗試因專利侵權起訴他們。透過這些變更,GPLv3 為其使用者提供了比任何其他自由軟體授權條款都更多的專利侵權防禦措施。

釐清授權條款相容性

如果您找到一些程式碼並想將其併入 GPL 授權的專案中,GPLv2 表示其他程式碼上的授權條款不得有任何 GPLv2 中尚未存在的限制。只要情況如此,我們就說該授權條款與 GPL 相容。

但是,某些授權條款的要求實際上並非限制性,因為它們非常容易遵守。例如,某些授權條款聲明它們不授予您使用某些商標的許可。這實際上不是額外的限制:如果沒有該條款,您仍然沒有權限使用該商標。我們一直表示這些授權條款也與 GPLv2 相容。

現在,GPLv3 明確允許所有人使用具有此類要求的程式碼。這些新條款應有助於消除關於哪些授權條款與 GPL 相容、為什麼相容以及您可以使用 GPL 相容程式碼做什麼的誤解。

新的相容授權條款

除了釐清關於已經與 GPL 相容的授權條款的規則外,GPLv3 也新近與其他一些授權條款相容。《Apache 授權條款 2.0》就是一個主要的例子。許多優秀的自由軟體都根據此授權條款提供,並擁有強大的社群圍繞它。我們希望 GPLv3 中的此項變更將促進自由軟體社群內更多的合作和分享。下表有助於說明不同自由軟體授權條款之間的一些常見相容性關係

A chart illustrating compatibility relationships between different free software licenses.  For details, see the FSF's license list page.

從一個授權條款指向另一個授權條款的箭頭表示第一個授權條款與第二個授權條款相容。即使您遵循多個箭頭從一個授權條款到達另一個授權條款也是如此;因此,例如,《ISC 授權條款》與 GPLv3 相容。如果程式允許您選擇 GPL 的「任何後續版本」(大多數根據此授權條款發布的軟體都是這種情況),則 GPLv2 與 GPLv3 相容。此圖表並不全面(有關與 GPLv2 和 GPLv3 相容的授權條款的更完整列表,請參閱我們的授權條款頁面),但清楚地說明 GPLv3 與 GPLv2 相容的所有內容以及更多內容。

《GNU Affero GPL 第 3 版》也被納入其中。最初的《Affero GPL》旨在確保 Web 應用程式的所有使用者都能夠接收其原始碼。《GNU Affero GPL 第 3 版》擴展了此目標:它適用於所有網路互動軟體,因此它也適用於遊戲伺服器等程式。額外條款也更靈活,因此如果有人在沒有網路介面的應用程式中使用 AGPL 授權的原始碼,他們只需以與 GPL 一直要求的相同方式提供原始碼。透過使這兩個授權條款相容,網路互動軟體的開發人員將能夠加強其著作權利保留,同時仍然建立在可供他們使用的成熟 GPL 授權程式碼之上。

開發人員提供原始碼的更多方式

GPL 的基本要求之一是,當您向使用者發布目標碼時,您還必須向他們提供一種獲取原始碼的方式。GPLv2 為您提供了幾種方法來做到這一點,而 GPLv3 在澄清的基礎上保留了這些方法。當您透過網路傳達目標碼時,它還為您提供了提供原始碼的新方法。例如,當您在 Web 或 FTP 伺服器上託管目標碼時,您可以簡單地提供說明,告訴訪客如何從第三方伺服器獲取原始碼。由於這個新選項,對於許多僅對大型原始碼主體進行少量更改的小型發行商來說,滿足此要求應該更容易。

新授權條款也使透過 BitTorrent 傳達目標碼變得容易得多。首先,僅下載或做種 torrent 的人員免於授權條款關於傳達軟體的要求。然後,啟動 torrent 的任何人都可以透過簡單地告訴其他 torrent 使用者原始碼在公共網路伺服器上的位置來提供原始碼。

這些新選項有助於使 GPL 與社群提供原始碼的標準保持一致,而不會使使用者更難獲取原始碼。

更少的要發布的原始碼:新的系統程式庫例外

兩個版本的 GPL 都要求您提供建置軟體所需的所有原始碼,包括支援程式庫、編譯腳本等。它們也劃定了系統程式庫的界限:您無需提供作業系統某些核心組件(例如 C 程式庫)的原始碼。

GPLv3 調整了系統程式庫的定義,以包括可能不是直接與作業系統一起提供的軟體,但所有軟體使用者都可以合理預期擁有的軟體。例如,它現在還包括常見程式語言(如 Python 和 Ruby)的標準程式庫。

新定義還明確表示,您可以將 GPL 授權的軟體與 GPL 不相容的系統程式庫(例如 OpenSolaris 的 C 程式庫)組合在一起,並將它們一起發布。這些變更將使希望向其使用者提供這些組合的自由軟體發行商的生活更輕鬆。

全球授權條款

GPLv2 大量談論「發布」——當您與其他人分享程式時,您就是在發布它。授權條款從未說明發布是什麼,因為該術語是從美國著作權法借用的。我們預期法官會在那裡尋找定義。但是,我們後來發現,其他國家的著作權法也使用相同的詞,但賦予它不同的含義。因此,這些國家的法官可能會以不同於美國法官的方式分析 GPLv2。

GPLv3 使用了一個新術語「傳達」,並為該術語提供了定義。「傳達」具有我們為「發布」預期的相同含義,但現在這已直接在授權條款中解釋,各地的人們應該很容易理解我們的意思。授權條款中還有其他細微的變更,這也有助於確保在全球範圍內一致地應用它。

當規則被打破時:通往合規的順暢途徑

根據 GPLv2,如果您以任何方式違反授權條款,您的權利將自動且永久喪失。恢復它們的唯一方法是向著作權持有人請願。雖然強有力的防範違規行為的措施很有價值,但當有人不小心違反規則時,此政策可能會導致很多麻煩。要求所有著作權持有人正式恢復授權條款可能既繁重又昂貴:典型的 GNU/Linux 發行版利用了數千人的工作成果。

GPLv3 為良好行為提供了暫緩:如果您違反授權條款,一旦您停止違規行為,您將會恢復您的權利,除非著作權持有人在 60 天內與您聯繫。在您收到此類通知後,如果您是初次違規者並在 30 天內糾正違規行為,您可以完全恢復您的權利。否則,您可以與與您聯繫的著作權持有人逐案解決問題,您的權利將在之後恢復。

遵守 GPL 一直是 FSF 合規實驗室和其他在全球範圍內執行授權條款的團體的首要任務。這些變更確保合規性仍然是執法者的首要任務,並為違規者提供遵守的誘因。

最新和最棒的

其中一些變更對您來說可能不如其他變更重要。沒關係。每個專案都不同,並且對其授權條款有不同的需求。但很可能其中許多改進將對您和您的工作有所幫助。

綜觀整體,所有這些升級都代表著更多:我們製作了更好的著作權利保留。它在保護使用者自由方面做得更多,但也促進了自由軟體社群中更多的合作。但更新授權條款只是工作的一部分:為了讓人們獲得它提供的好處,開發人員也需要在他們的專案中使用 GPLv3。透過根據新授權條款發布您自己的軟體,與之相關的每個人——使用者、其他開發人員、發行商,甚至律師——都將受益。我們希望您在您的下一個版本中使用 GPLv3。

如果您想了解更多關於將您的專案升級到 GPLv3 的資訊,FSF 合規實驗室很樂意為您提供協助。在 gnu.orgfsf.org 上,您都可以找到使用授權條款的基本說明,以及解決人們對它的常見疑慮的常見問題解答。如果您的情況比這更複雜,請聯繫我們,我們將盡我們所能幫助您完成轉型。齊心協力,我們可以幫助保護所有使用者的自由。