GNU GPL 許可證常見問題解答(四)
![](https://linuxstory.org/wp-content/uploads/2024/06/183238pwdizyg4mngqswyn.png)
本文由高級諮詢師薛亮據自由軟體基金會(FSF)的英文原文翻譯而成,這篇常見問題解答澄清了在使用 GNU 許可證中遇到許多問題,對於企業和軟體開發者在實際應用許可證和解決許可證問題時具有很強的實踐指導意義。
- 關於 GNU 項目、自由軟體基金會(FSF)及其許可證的基本問題
- 對於 GNU 許可證的一般了解
- 在您的程序中使用 GNU 許可證
- 依據GNU許可證分發程序
- 在編寫其他程序時採用依據 GNU 許可證發布的程序
- 將作品與依據 GNU 許可證發布的代碼相結合
- 關於違反 GNU 許可證的問題
4 依據GNU許可證分發程序
4.1 我可以僅用二進位形式發布一個遵循 GPL 的程序的修改版本嗎?
不可以。GPL 的要旨是所有修改版本必須是自由軟體——這意味著修改版本的源代碼必須可供用戶使用。
4.2 我從網上下載了二進位文件。如果我分發該副本,我必須也要獲取源代碼並分發?
是的。一般規則是,如果您分發二進位文件,則還必須分發完整的相應源代碼。您收到索取源代碼書面文件的例外情況非常有限。
4.3 我想通過物理媒體分發二進位文件,但不附帶源代碼。我可以通過 FTP 提供源代碼嗎?
GPL v3 允許這種行為;有關詳細信息,請參閱條款 6(b)。依據 GPL v2,您可以徑自通過 FTP 提供源代碼,大多數用戶將從那裡獲得。然而,如果他們中的任何人寧願通過郵件獲取以物理媒體承載的源代碼,那麼您需要為之提供。
如果您通過 FTP 分發二進位文件,則應通過 FTP 分發源代碼。
4.4 我的朋友獲取了一個遵循 GPL 的二進位文件和承諾提供源代碼的書面文件,並為我提供了副本。我可以自己使用這個書面文件來獲取源代碼嗎?
是的,你可以。該書面文件必須對擁有其所相伴的二進位文件的所有人開放。這就是為什麼 GPL 說你的朋友必須給你一份這個書面文件的副本以及這個二進位文件的副本,所以你可以使用該書面文件索取源代碼。
4.5 我可以將二進位文件放在我的互聯網伺服器上,並將源代碼放在不同的網站上嗎?
可以。第 6(d)條允許這樣做。但是,您必須提供明確指示,以利於人們依次來獲取源代碼,並且必須注意,只要你的目標代碼還在分發,就要確保源代碼仍然可用。
4.6 我想以二進位形式分發一個遵循 GPL 的程序的擴展版本,是否分發原始版本的源代碼就足夠了?
不可以,您必須提供與二進位文件對應的源代碼。對應的源代碼意味著用戶可以從中重建相同的二進位文件。
自由軟體的一部分理念是用戶應該可以訪問他們使用的程序的源代碼。使用您的版本的用戶應該可以訪問您的版本的源代碼。
GPL 的一個主要目標是建立自由世界,確保對自由程序的改進本身是自由的。如果您發布一個改進版本的遵循 GPL 的程序,您必須依據 GPL 發布改進的源代碼。
4.7 我想分發二進位文件,但不太方便分發完整的源代碼。我是否可以向用戶提供來自與該二進位文件對應的「標準」版本的diff?
這是一個很好的想法,但是這種提供源代碼的方法並沒有真正做到這一點。
一年之後想要獲取源代碼的用戶可能無法從當時的其他站點獲取正確的版本。標準分發站點可能有一個較新的版本,但相同的diff 可能無法與該版本一起使用。
所以你需要為二進位文件提供完整的源代碼,而不僅僅是 diff。
4.8 我可以在網路伺服器上發布二進位文件,但是僅向索取的用戶發送源代碼嗎?
如果您在網路伺服器上提供二進位對象代碼,則必須在網路伺服器上提供對應源代碼。執行此操作的最簡單方法是將它們發布在同一台伺服器上,但如果需要,您可以提供從其它伺服器甚至版本控制系統獲取源代碼的說明。不管你做什麼,源代碼都應該像目標代碼一樣容易訪問。這些全部在 GPL v3 的第 6(d)節中進行了具體說明。
您提供的源代碼必須完全對應於二進位文件。特別是,您必須確保它們是相同版本的程序——不是舊版本,也不是新版本。
4.9 如何確保每個下載二進位文件的用戶都能獲得源代碼?
你不必確定這一點。只要您使源代碼和二進位文件可用,以便用戶可以看到可用的內容並獲取所需的內容,那麼您已經完成了所需的操作。是否下載源代碼取決於用戶。
我們對再分發者的要求旨在確保用戶可以獲得源代碼,而不是強迫用戶即使在不需要的情況下也要下載源代碼。
4.10 GPL 要求我提供可以構建成與我正在分發的二進位文件的精確哈希值相匹配的二進位文件的源代碼嗎?
完全對應的源代碼意味著二進位文件依賴該源代碼生成,但這並不意味著您的工具必須能夠創建一個與您正在分發的二進位文件的精確哈希值相同的二進位文件。在某些情況下,可能(幾乎)不可能使用正在分發的二進位文件的精確哈希值從源代碼構建二進位文件——考慮以下示例:系統可能會將時間戳放在二進位文件中;或者程序可能是針對不同的(甚至未發行的)編譯器版本構建的。
4.11 我是否可以發布一個遵循某許可證的程序,該許可證表示您可以依據 GPL 分發修改後的版本,但是您不能分發遵循 GPL 的原始版本?
不可以,這樣的許可證是自相矛盾的。我們來看看它對用戶的影響。
假設我從原始版本(稱為版本 A)開始,添加一些代碼(讓我們假設它是 1000 行),並依據 GPL 發布修改版本(稱為 B 版本)。GPL 說任何人都可以再次更改 B 版本,並依據 GPL 發布修改結果。我(或其他人)可以刪除那 1000 行代碼,生成與版本 A 代碼相同的但遵循 GPL 的 C 版本。
通過在許可證中明確表示我不允許刪除版本 B 中的那些行,重製成與遵循 GPL 的 A 版本相同的東西,您可以嘗試阻止該路徑。但實際上許可證表示現在我不能完全以 GPL 允許的所有方式使用版本 B。換句話說,許可證實際上不允許用戶發布諸如遵循 GPL 的 B 版本這樣的修改版本。
4.12 我剛剛發現一家公司有一份 GPL 程序的副本,獲取該副本需支付費用。他們會因為不能在互聯網上提供副本而違反 GPL 嗎?
不會,GPL 不要求任何人使用互聯網進行分發。它也不要求任何人特意去再分發程序。而且(一個特殊情況之外),即使有人決定再分發該程序,GPL 也不會要求他必須特意向您或其他人分發副本。
GPL 要求的是,如果他願意,他必須有權將副本分發給你。一旦版權所有者將程序的副本分發給某人,如果某人認為合適,那麼該人可以將程序再分發給您或任何其他人。
4.13 一家公司正在網站上運行一個 GPL 程序的修改版本。GPL 規定他們是否必須發布修改後的源代碼?
GPL 允許任何人進行修改並使用修改版本,而無需將其分發給他人。(這裡所說的)這家公司的做法是一個特例。 因此,公司不必發布修改後的源代碼。
人們必須能夠自由地對程序進行修改並自用,而無需發布這些修改。然而,將程序放在伺服器上以供公眾訪問很難說是「自用」,因此要求在這種特殊情況下發布源代碼是合法的。希望解決這個問題的開發人員可以為其程序適用 GNU Affero GPL,該許可證專門為網路伺服器使用場景而設計。
4.14 在一個組織或公司中製作和使用多個副本構成「分發」嗎?
不構成,在這種情況下,組織只是為自己製作副本。因此,公司或其他組織可以開發修改後的版本,並通過自己的設施安裝該版本,但不得允許員工向外發布該修改版本。
但是,當組織將副本轉移給其他組織或個人時,即構成分發。特別是,向承包商提供副本以便在場外使用,構成了分發。
4.15 如果有人竊取包含 GPL 程序的 CD,GPL 是否授予小偷再分發該版本的權利?
如果該版本已經在其他地方被發布,那麼依據 GPL,這個小偷可能確實有權利製作副本並將其再分發,但是如果小偷因為竊取 CD 而被監禁,那麼他們可能必須等到釋放才能這樣做。
如果相關版本未被公開發布並被公司視為其商業秘密,則根據其他情況,發布該版本可能會違反商業秘密法。GPL 對此沒有進行改變。如果公司試圖發布其版本,並仍將其視為商業秘密,則會違反 GPL,但如果公司尚未發布此版本,則不會發生此類違規。
4.16 如果一家公司將副本作為商業秘密分發會構成違規嗎?
如果該公司向您分發副本並聲稱是商業秘密,則該公司違反了 GPL,必須停止分發。請注意這與上述盜竊案有何不同;該公司沒有故意在副本被盜後分發副本,所以在這種情況下,該公司沒有違反 GPL。
4.17 我在使用 GPL 程序的源代碼時是否具有 「合理使用」 許可權?
是的,您有。「合理使用」是在沒有任何特別許可的情況下允許的使用。 由於您不需要開發人員的許可來進行這種使用,無論開發人員在許可證或其他地方對此怎麼說,您都可以執行此操作,無論該許可證是 GNU GPL 還是其他自由軟體許可證。
但是,請注意,沒有全世界範圍普適的合理使用原則;什麼樣的用途被認為「合理」因國而異。
4.18 將副本移至控股的附屬公司會構成分發嗎?
副本移至/移自附屬公司是否構成「分發」需要根據恰當管轄區的版權法依據個案確定。GPL 沒有也不能逾越當地法律。美國版權法關於這一點的規定並不完全清楚,但似乎並不將此視為分發。
如果在某些國家,這被視為分發,而附屬公司必須得到再分發程序的權利,這不會有實際的區別。附屬公司由母公司控制;無論有沒有權利,除非母公司決定這樣做,否則附屬公司不會再分發該程序。
4.19 軟體安裝程序可以要求用戶通過點擊來同意 GPL 協議嗎?如果我獲得一些遵循 GPL 的軟體,我必須同意什麼嗎?
一些軟體安裝系統有一個地方要求您點擊或以其他方式表示同意 GPL 的條款。這不是必須的,也不是禁止的。無論是否點擊, GPL 的規則保持不變。
只是同意 GPL 不要求您承擔任何義務。僅使用依據 GPL 進行許可的軟體,您不需要同意任何事項。只有您修改或分發軟體時,您才有義務。如果點擊同意 GPL 真的打擾了你,沒有任何東西能阻止你修改該 GPL 軟體把這個步驟刪除掉。
4.20 我想將 GPL 軟體與某種安裝軟體捆綁在一起。該安裝程序是否需要具有與 GPL 兼容的許可證?
不需要。安裝程序及其安裝的文件是單獨的作品。因此,GPL 的條款不適用於安裝軟體。
4.21 GPL 軟體的一些分發者要求將我囊括在其傘式的最終用戶許可協議(EULA)中或作為下載過程的一部分,以「代表和保證」我位於美國,或者我打算依據相關出口管制法律分發軟體。為什麼他們這樣做,是否違反了分發者在 GPL 下的義務?
這不違反 GPL。那些分發者(幾乎都是銷售自由軟體分發版本和相關服務的商業企業)正在努力降低自己的法律風險,而不是控制您的行為。如果分發者故意將軟體出口到某些國家或將軟體提供給可能會進行這種出口行為的第三方,美國的出口管制法可能會要求分發者承擔責任。分發者通過向客戶和被分發軟體的其他人要求做出這些聲明,一旦被監管機構問及他們是否知道其分發的軟體流至何方,分發者可以藉此保護自己。分發者並不限制您可以用軟體做什麼,只是避免他們對您所做的任何事情負責。因為分發者沒有對軟體施加額外的限制,所以他們不違反 GPL v3 的第 10 節或 GPL v2 的第 6 節。
自由軟體基金會(FSF)反對將美國出口管制法律適用於自由軟體。這些法律不僅與軟體自由的總體目標不符,而且達不到合理的政府目的,因為目前幾乎每個國家都可以使用自由軟體並且應該一直都能使用,包括沒有出口管制法律的國家以及參與美國領導的貿易禁運的國家。所以沒有一個國家的政府實際上被美國的出口管制法律剝奪了使用自由軟體的權利,就我們而言,不管其政府的政策如何,每個國家的公民都不應該被剝奪使用自由軟體的權利。自由軟體基金會發布的所有 GPL 軟體的副本可以通過我們獲得,而不對您居住地點或您打算做什麼進行任何限制。同時,自由軟體基金會理解位於美國的商業分發者遵守美國法律的願望。他們有權選擇將自由軟體的特定副本分發給誰;該權利的行使不違反 GPL,除非他們增加超出 GPL 許可的合同限制。
4.22 GPL v3 第 6 節的開頭說,如果我也符合第 6 節的條件,我可以「按照第 4 節和第 5 節的規定」,以目標代碼的形式傳遞其覆蓋的作品。這是什麼意思?
這意味著您傳遞源代碼的所有許可權和條件也適用於傳遞目標代碼:您可以收取費用,您必須保持版權聲明不變,等等。
4.23 我公司擁有很多專利。多年來,我們遵循「GPL 第 2 版或更新版本」的項目提供了代碼,項目本身已按相同的條款進行了分發。如果用戶決定將項目代碼(包含我公司的貢獻)適用 GPL v3,那意味著我已經自動向該用戶授予 GPL v3 中的明確專利許可?
不是,當您 傳遞 遵循 GPL 的軟體時,您必須遵守該許可證特定版本的條款和條件。當您這樣做時,該版本定義了您擁有的義務。如果用戶也可以選擇使用更新版本的 GPL,那僅僅是他們擁有的額外許可權——它不需要您滿足 GPL 更新版本條款的要求。
不要因為答案是 NO 就認為可以用你的專利來威脅社區(LCTT 譯註:感謝「西米宜家」的指正)。在許多國家,根據 GPL v2 分發軟體為接收人提供了隱含的專利許可,以行使 GPL 中的權利。即使沒有,任何考慮強制執行專利的人都是社區的敵人,我們將捍衛自己免受這種攻擊。
4.24 如果我分發了一個遵循 GPL v3 的程序,我可以提供一個一旦用戶修改程序則無效的保修嗎?
可以。就像用戶一旦修改設備中的軟體就不需要保證設備安全一樣,您不需要提供涵蓋所有可能通過遵循 GPL v3 的軟體進行的活動的保修。
4.25 如果我給公司同事一份遵循 GPL v3 的程序的副本,是否構成了我將該副本 「傳遞」 給該同事?
只要您在公司的工作中使用軟體,而不是個人使用該軟體,那麼答案是否定的。副本屬於公司,不屬於您或同事。這種複製是 傳播 而不是 傳遞 ,因為公司沒有將副本提供給他人。
4.26 如果我通過鏈接至版本控制系統(例如 CVS 或 Subversion)中的源代碼存儲庫方式提供源代碼,而在 FTP 伺服器上提供二進位文件,這種做法符合 GPL v3 嗎?
只要源碼簽出過程不會變得繁重或存在其他限制,這是可以接受的。任何可以下載目標代碼的人也應該可以使用公開的自由軟體客戶端從版本控制系統中籤出源代碼。應向用戶提供清晰方便的說明,說明如何獲取其下載的確切目標代碼的源代碼——畢竟,他們可能不一定需要最新的開發代碼。
4.27 在 用戶產品 中傳遞遵循 GPL v3 的軟體的用戶,是否可以使用遠程認證來防止用戶修改該軟體?
不可以。當軟體在用戶產品中傳遞時,必須與源文件一起提供的「安裝信息」的定義中明確表示:「該信息必須足以確保修改的目標代碼的繼續運行在任何情況下都不會僅僅因為修改過而被阻止或干擾。「如果設備以某種方式使用遠程認證,則安裝信息必須為您修改的軟體報告自身的合法性提供一些方法。
4.28 GPL v3 中的「通過網路進行通信的規則和協議」是什麼意思?
這是指可以通過網路發送的流量規則。例如,如果每天可以發送到伺服器的請求數量或者您可以在某處上傳的文件大小有限制,如果不遵守這些限制,則可能會拒絕您對這些資源的訪問。
這些規則不包括任何與網路上傳播的數據無關的內容。例如,如果網路上的伺服器將用戶消息發送到您的設備,則您對網路的訪問無法被拒絕,因為您修改了該軟體以使其不顯示消息。
4.29 依據 GPL v3 提供安裝信息的分發者不需要為產品提供「支持服務」。 所謂的「支持服務」具體是指哪些?
這其中包括設備製造商提供的幫助您安裝、使用或排除故障的服務。如果設備依賴於訪問 Web 服務或類似技術才能正常運行,則通常仍然可以使用修改版本,但須符合第 6 節中關於訪問網路的條款。
譯者介紹:薛亮,集慧智佳知識產權諮詢公司高級諮詢師,擅長專利檢索、專利分析、競爭對手跟蹤、FTO 分析、開源軟體知識產權風險分析,致力於為互聯網企業、高科技公司提供知識產權諮詢服務。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive