作者 | Fsf
譯者 | 薛亮
本文由高階諮詢師薛亮據自由軟體基金會(FSF)的英文原文[1]翻譯而成,這篇常見問題解答澄清了在使用 GNU 許可證中遇到許多問題,對於企業和軟體開發者在實際應用許可證和解決許可證問題時具有很強的實踐指導意義。
4 依據GNU許可證分發程式
4.1 我可以僅用二進位制形式釋出一個遵循 GPL 的程式的修改版本嗎?
不可以。GPL 的要旨是所有修改版本必須是自由軟體——這意味著修改版本的原始碼必須可供使用者使用。
4.2 我從網上下載了二進位制檔案。如果我分發該副本,我必須也要獲取原始碼並分發?
是的。一般規則是,如果您分發二進位制檔案,則還必須分發完整的相應原始碼。您收到索取原始碼書面檔案的例外情況非常有限。
4.3 我想透過物理媒體分發二進位制檔案,但不附帶原始碼。我可以透過 FTP 提供原始碼嗎?
GPL v3 允許這種行為;有關詳細資訊,請參閱條款 6(b)。依據 GPL v2,您可以徑自透過 FTP 提供原始碼,大多數使用者將從那裡獲得。然而,如果他們中的任何人寧願透過郵件獲取以物理媒體承載的原始碼,那麼您需要為之提供。
如果您透過 FTP 分發二進位制檔案,則應透過 FTP 分發原始碼[5]。
4.4 我的朋友獲取了一個遵循 GPL 的二進位制檔案和承諾提供原始碼的書面檔案,併為我提供了副本。我可以自己使用這個書面檔案來獲取原始碼嗎?
是的,你可以。該書面檔案必須對擁有其所相伴的二進位制檔案的所有人開放。這就是為什麼 GPL 說你的朋友必須給你一份這個書面檔案的副本以及這個二進位制檔案的副本,所以你可以使用該書面檔案索取原始碼。
4.5 我可以將二進位制檔案放在我的網際網路伺服器上,並將原始碼放在不同的網站上嗎?
可以。第 6(d)條允許這樣做。但是,您必須提供明確指示,以利於人們依次來獲取原始碼,並且必須註意,只要你的標的程式碼還在分發,就要確保原始碼仍然可用。
4.6 我想以二進位制形式分發一個遵循 GPL 的程式的擴充套件版本,是否分發原始版本的原始碼就足夠了?
不可以,您必須提供與二進位制檔案對應的原始碼。對應的原始碼意味著使用者可以從中重建相同的二進位制檔案。
自由軟體的一部分理念是使用者應該可以訪問他們使用的程式的原始碼。使用您的版本的使用者應該可以訪問您的版本的原始碼。
GPL 的一個主要標的是建立自由世界,確保對自由程式的改進本身是自由的。如果您釋出一個改進版本的遵循 GPL 的程式,您必須依據 GPL 釋出改進的原始碼。
4.7 我想分發二進位制檔案,但不太方便分發完整的原始碼。我是否可以向用戶提供來自與該二進位制檔案對應的“標準”版本的diff?
這是一個很好的想法,但是這種提供原始碼的方法並沒有真正做到這一點。
一年之後想要獲取原始碼的使用者可能無法從當時的其他站點獲取正確的版本。標準分發站點可能有一個較新的版本,但相同的diff 可能無法與該版本一起使用。
所以你需要為二進位制檔案提供完整的原始碼,而不僅僅是 diff。
4.8 我可以在網路伺服器上釋出二進位制檔案,但是僅向索取的使用者傳送原始碼嗎?
如果您在網路伺服器上提供二進位制物件程式碼,則必須在網路伺服器上提供對應原始碼。執行此操作的最簡單方法是將它們釋出在同一臺伺服器上,但如果需要,您可以提供從其它伺服器甚至版本控制系統[6]獲取原始碼的說明。不管你做什麼,原始碼都應該像標的程式碼一樣容易訪問。這些全部在 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[7],該許可證專門為網路伺服器使用場景而設計。
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 更新版本條款的要求。
不需要這樣做意味著你可以用你的專利威脅社群。在許多國家,根據 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 分析、開源軟體智慧財產權風險分析,致力於為網際網路企業、高科技公司提供智慧財產權諮詢服務。