GNU 庫通用公共許可證

版本 2,1991 年 6 月

Copyright (C) 1991 Free Software Foundation, Inc.
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

[This is the first released version of the library GPL.  It is
 numbered 2 because it goes with version 2 of the ordinary GPL.]

序言

大多數軟體的許可證旨在剝奪您共享和更改軟體的自由。 相反地,GNU 通用公共許可證旨在保證您共享和更改自由軟體的自由——確保軟體對所有使用者都是自由的。

此許可證,即庫通用公共許可證,適用於某些特別指定的自由軟體基金會軟體,以及任何其他作者決定使用它的庫。 您也可以將其用於您的庫。

當我們談論自由軟體時,我們指的是自由,而不是價格。 我們的通用公共許可證旨在確保您有自由散布自由軟體的副本(如果您願意,可以為此服務收費),確保您收到原始碼或在需要時可以取得原始碼,確保您可以更改軟體或在新自由程式中使用其部分內容;並且讓您知道您可以做這些事情。

為了保護您的權利,我們需要設定限制,禁止任何人剝奪您的這些權利或要求您放棄這些權利。 這些限制轉化為當您散布庫的副本或修改庫時,您必須承擔某些責任。

例如,如果您散布庫的副本,無論是免費的還是收費的,您都必須將我們給予您的所有權利都給予接收者。 您必須確保他們也收到或可以取得原始碼。 如果您將程式與庫連結,您必須向接收者提供完整的目標檔案,以便他們可以在更改庫並重新編譯後將它們與庫重新連結。 而且您必須向他們展示這些條款,以便他們了解自己的權利。

我們保護您權利的方法有兩個步驟:(1) 為庫註冊版權,以及 (2) 向您提供此許可證,讓您擁有複製、散布和/或修改庫的法律許可。

此外,為了保護每個散布者的權益,我們希望確保每個人都了解此自由庫不提供任何擔保。 如果庫被其他人修改並傳遞下去,我們希望其接收者知道他們擁有的不是原始版本,以便其他人引入的任何問題都不會影響原始作者的聲譽。

最後,任何自由程式都 постоянно受到軟體專利的威脅。 我們希望避免這樣一種危險,即散布自由軟體的公司會個別取得專利許可,從而實際上將該程式轉變為專有軟體。 為了防止這種情況發生,我們明確規定,任何專利都必須被許可供所有人免費使用,否則就完全不許可。

大多數 GNU 軟體,包括一些庫,都受普通的 GNU 通用公共許可證的約束,該許可證是為實用程式設計的。 此許可證,即 GNU 庫通用公共許可證,適用於某些指定的庫。 此許可證與普通的許可證截然不同;務必完整閱讀它,不要假設其中的任何內容與普通許可證中的內容相同。

我們為某些庫提供單獨的公共許可證的原因是,它們模糊了我們通常在修改或新增程式與僅僅使用程式之間劃分的界線。 將程式與庫連結,而不更改庫,在某種意義上只是使用庫,並且類似於執行實用程式或應用程式。 然而,從文字和法律意義上來說,連結的可執行檔是一個組合作品,是原始庫的衍生作品,而普通的通用公共許可證將其視為如此。

由於這種模糊的區別,對庫使用普通的通用公共許可證並不能有效地促進軟體共享,因為大多數開發人員不使用這些庫。 我們得出的結論是,較寬鬆的條件可能會更好地促進共享。

然而,不受限制地連結非自由程式將剝奪這些程式的使用者從庫本身的自由狀態中獲得的所有好處。 此庫通用公共許可證旨在允許非自由程式的開發人員使用自由庫,同時保留您作為此類程式的使用者更改其中包含的自由庫的自由。(我們尚未看到如何在標頭檔案的變更方面實現這一點,但我們已在庫的實際功能變更方面實現了這一點。)希望這將導致自由庫的更快發展。

以下是關於複製、散布和修改的精確條款和條件。 請密切注意「基於庫的作品」和「使用庫的作品」之間的區別。 前者包含源自庫的程式碼,而後者僅與庫協同工作。

請注意,庫有可能受普通的通用公共許可證而不是此特殊許可證的約束。

複製、散布和修改的條款和條件

0. 本許可協議適用於任何軟體庫,其中包含版權持有者或其他授權方放置的聲明,表明該軟體庫可以根據本庫通用公共許可證(也稱為「本許可證」)的條款散布。 每位被許可人都被稱為「您」。

「庫」是指為了方便與應用程式(使用其中一些功能和資料)連結以形成可執行檔而準備的軟體功能和/或資料的集合。

下文中的「庫」指的是根據這些條款散布的任何此類軟體庫或作品。「基於庫的作品」是指庫或根據版權法的任何衍生作品:也就是說,包含庫或其一部分的作品,無論是逐字逐句的還是經過修改和/或直接翻譯成另一種語言的。(此後,「翻譯」一詞被包括在「修改」一詞中,且不受限制。)

作品的「原始碼」是指對其進行修改的首選形式。 對於庫而言,完整的原始碼是指其包含的所有模組的所有原始碼,加上任何相關的介面定義檔案,以及用於控制庫的編譯和安裝的腳本。

複製、散布和修改以外的活動不在本許可證的範圍內;它們超出其範圍。 執行使用庫的程式的行為不受限制,並且來自此類程式的輸出僅當其內容構成基於庫的作品時才受約束(獨立於在用於編寫它的工具中使用庫)。 這是否屬實取決於庫的功能以及使用庫的程式的功能。

1. 您可以以您收到的任何媒介複製和散布庫完整原始碼的逐字副本,前提是您在每個副本上顯著且適當地發布適當的版權聲明和免責聲明;完整保留所有提及本許可證和不存在任何擔保的聲明;並隨庫散布本許可證的副本。

您可以對轉移副本的實際行為收費,並且您可以選擇提供擔保保護以換取費用。

2. 您可以修改您的庫副本或庫的任何部分,從而形成基於庫的作品,並根據上述第 1 節的條款複製和散布此類修改或作品,前提是您也滿足所有這些條件

這些要求適用於整個修改後的作品。 如果該作品的可識別部分不是衍生自庫,並且可以合理地被視為獨立且單獨的作品,那麼當您將這些部分作為單獨的作品散布時,本許可證及其條款不適用於這些部分。 但是,當您將相同的章節作為整體的一部分散布時,該整體是基於庫的作品,則整個章節的散布必須符合本許可證的條款,本許可證對其他被許可人的許可延伸至整個整體,因此也延伸至每個部分,無論是誰編寫的。

因此,本節的目的不是聲稱對完全由您編寫的作品擁有權利或質疑您的權利;相反,目的是行使控制基於庫的衍生作品或集合作品的散布的權利。

此外,僅僅將另一個不基於庫的作品與庫(或基於庫的作品)在儲存或散布媒體的卷上聚合,並不會使另一個作品處於本許可證的範圍內。

3. 您可以選擇將普通的 GNU 通用公共許可證的條款應用於給定庫副本,而不是本許可證。 為此,您必須更改所有提及本許可證的聲明,以便它們提及普通的 GNU 通用公共許可證版本 2,而不是本許可證。(如果出現了比普通 GNU 通用公共許可證版本 2 更新的版本,那麼如果您願意,您可以指定該版本。)不要對這些聲明進行任何其他更改。

一旦在給定副本中進行此更改,對於該副本而言,它是不可逆轉的,因此普通的 GNU 通用公共許可證適用於從該副本製作的所有後續副本和衍生作品。

當您希望將庫的部分程式碼複製到不是庫的程式中時,此選項非常有用。

4. 您可以根據上述第 1 節和第 2 節的條款,以目標程式碼或可執行形式複製和散布庫(或其一部分或衍生作品,根據第 2 節),前提是您隨附完整的相應機器可讀原始碼,該原始碼必須根據上述第 1 節和第 2 節的條款在通常用於軟體交換的媒體上散布。

如果透過提供從指定位置複製的權限來進行目標程式碼的散布,那麼提供從同一位置複製原始碼的同等權限即可滿足散布原始碼的要求,即使第三方沒有義務隨目標程式碼一起複製原始碼。

5. 不包含庫任何部分的衍生作品,但旨在透過與庫編譯或連結來與庫協同工作的程式稱為「使用庫的作品」。 這樣的作品,就其本身而言,不是庫的衍生作品,因此不屬於本許可證的範圍。

但是,將「使用庫的作品」與庫連結會建立一個可執行檔,該可執行檔是庫的衍生作品(因為它包含庫的部分內容),而不是「使用庫的作品」。 因此,該可執行檔受本許可證的約束。 第 6 節規定了散布此類可執行檔的條款。

當「使用庫的作品」使用來自作為庫一部分的標頭檔案的材料時,該作品的目標程式碼可能是庫的衍生作品,即使原始碼不是。 如果該作品可以在沒有庫的情況下連結,或者如果該作品本身是一個庫,則這尤其重要。 實現這一點的門檻尚未由法律精確定義。

如果此類目標檔案僅使用數值參數、資料結構佈局和存取器,以及小型巨集和小型的內聯函數(少於十行),則對目標檔案的使用不受限制,無論它是否在法律上是衍生作品。(包含此目標程式碼加上庫部分的執行檔仍將屬於第 6 節的範圍。)

否則,如果該作品是庫的衍生作品,您可以根據第 6 節的條款散布該作品的目標程式碼。 任何包含該作品的可執行檔也屬於第 6 節的範圍,無論它們是否直接與庫本身連結。

6. 作為上述各節的例外,您也可以編譯或連結「使用庫的作品」與庫,以產生包含庫部分內容的作品,並根據您選擇的條款散布該作品,前提是這些條款允許修改該作品以供客戶自己使用,並允許進行逆向工程以偵錯此類修改。

您必須在每個作品副本上顯著聲明其中使用了庫,並且庫及其使用受本許可證的約束。 您必須提供本許可證的副本。 如果作品在執行期間顯示版權聲明,您必須在其中包含庫的版權聲明,以及引導使用者查看本許可證副本的參考。 此外,您必須執行以下操作之一

對於可執行檔,「使用庫的作品」的所需形式必須包括從其重現可執行檔所需的任何資料和實用程式。 但是,作為一個特殊例外,散布的原始碼不需要包括通常隨執行檔運行的作業系統的主要組件(編譯器、核心等等)一起散布的任何內容(以原始碼或二進位形式),除非該組件本身隨執行檔一起提供。

可能發生這種情況,即此要求與通常不隨作業系統一起提供的其他專有庫的許可證限制相矛盾。 此類矛盾意味著您不能在您散布的可執行檔中同時使用它們和庫。

7. 您可以將基於庫的作品的庫設施與不受本許可證約束的其他庫設施並排放置在單一庫中,並散布此類組合庫,前提是基於庫的作品和其他庫設施的單獨散布在其他方面是允許的,並且前提是您執行以下兩項操作

8. 除非本許可證明確規定,否則您不得複製、修改、再許可、與之連結或散布庫。 任何以其他方式複製、修改、再許可、與之連結或散布庫的嘗試均為無效,並將自動終止您在本許可證下的權利。 但是,根據本許可證從您那裡收到副本或權利的各方,只要這些各方保持完全遵守,其許可證就不會終止。

9. 您無需接受本許可證,因為您沒有簽署它。 但是,如果沒有其他任何內容授予您修改或散布庫或其衍生作品的許可。 如果您不接受本許可證,法律禁止這些行為。 因此,透過修改或散布庫(或任何基於庫的作品),您表示您接受本許可證來執行此操作,以及所有關於複製、散布或修改庫或基於庫的作品的條款和條件。

10. 每次您重新散布庫(或任何基於庫的作品)時,接收者都會自動收到原始許可人授予的許可證,以根據這些條款和條件複製、散布、與之連結或修改庫。 您不得對接收者行使本文授予的權利施加任何進一步的限制。 您不負責強制第三方遵守本許可證。

11. 如果由於法院判決或專利侵權指控或任何其他原因(不限於專利問題),對您施加了與本許可證條款相矛盾的條件(無論是透過法院命令、協議還是其他方式),它們都不能免除您遵守本許可證的條款。 如果您無法同時滿足您在本許可證下的義務和任何其他相關義務的方式進行散布,那麼作為後果,您可能根本無法散布庫。 例如,如果專利許可證不允許所有直接或間接透過您收到副本的人免版稅地重新散布庫,那麼您可以同時滿足專利許可證和本許可證的唯一方法就是完全避免散布庫。

如果本節的任何部分在任何特定情況下被認定為無效或不可執行,則本節的其餘部分旨在適用,並且本節整體旨在在其他情況下適用。

本節的目的不是誘導您侵犯任何專利或其他財產權主張或質疑任何此類主張的有效性;本節的唯一目的是保護透過公共許可證實踐實施的自由軟體散布系統的完整性。 許多人基於對該系統一致應用的信賴,為透過該系統散布的各種軟體做出了慷慨的貢獻;作者/捐贈者可以自行決定是否願意透過任何其他系統散布軟體,而被許可人不能強加該選擇。

本節旨在徹底闡明人們認為是本許可證其餘部分的一個結果。

12. 如果庫的散布和/或使用在某些國家/地區受到專利或受版權保護的介面的限制,則將庫置於本許可證下的原始版權持有者可以新增明確的地域散布限制,排除這些國家/地區,以便僅在未被如此排除的國家/地區或在這些國家/地區之間允許散布。 在這種情況下,本許可證將該限制納入,如同寫入本許可證正文一樣。

13. 自由軟體基金會可能會不時發布修訂和/或新版本的庫通用公共許可證。 此類新版本在精神上將與當前版本相似,但在細節上可能有所不同,以解決新問題或疑慮。

每個版本都給出一個可區分的版本號。 如果庫指定了適用於它的本許可證的版本號以及「任何後續版本」,您可以選擇遵循該版本或自由軟體基金會發布的任何後續版本的條款和條件。 如果庫未指定許可證版本號,您可以選擇自由軟體基金會發布的任何版本。

14. 如果您希望將庫的部分內容併入其他自由程式中,而這些自由程式的散布條件與這些條件不相容,請寫信給作者請求許可。 對於自由軟體基金會擁有版權的軟體,請寫信給自由軟體基金會;我們有時會為此做出例外。 我們的決定將以維護我們自由軟體的所有衍生作品的自由狀態以及促進軟體的共享和重用這兩個目標為指導。

無擔保

15. 由於庫是免費授權的,因此在適用法律允許的範圍內,庫不提供任何擔保。 除非版權持有者和/或其他方另有書面聲明,否則庫以「現狀」提供,不提供任何明示或暗示的擔保,包括但不限於對適銷性和特定用途適用性的暗示擔保。 關於庫的品質和效能的全部風險由您承擔。 如果庫被證明有缺陷,您將承擔所有必要的維修、修理或更正的費用。

16. 在任何情況下,除非適用法律要求或書面同意,否則任何版權持有者或任何其他可能按照上述許可修改和/或重新散布庫的方均不對您的損失承擔責任,包括因使用或無法使用庫而引起的任何一般性、特殊性、偶然性或後果性損害(包括但不限於資料遺失或資料被呈現為不準確或您或第三方遭受的損失或庫未能與任何其他軟體一起運作),即使此類持有者或其他方已被告知可能發生此類損害。

條款和條件結束

如何將這些條款應用於您的新庫

如果您開發了一個新庫,並且您希望它對公眾發揮最大的作用,我們建議將其設為自由軟體,以便所有人都可以重新散布和更改。 您可以透過允許根據這些條款(或替代地,根據普通的通用公共許可證的條款)重新散布來做到這一點。

要應用這些條款,請將以下聲明附加到庫中。 將它們附加到每個原始檔的開頭是最安全的,以便最有效地傳達免除擔保;並且每個檔案都應至少包含「版權」行和指向完整聲明位置的指標。

one line to give the library's name and an idea of what it does.
Copyright (C) year  name of author

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, see
<https://gnu.dev.org.tw/licenses/>.

還要新增有關如何透過電子郵件和紙本郵件與您聯絡的資訊。

如果需要,您還應該讓您的雇主(如果您是程式設計師)或您的學校(如果有的話)簽署庫的「版權免責聲明」。 這是一個範例;更改名稱

Yoyodyne, Inc., hereby disclaims all copyright interest in
the library `Frob' (a library for tweaking knobs) written
by James Random Hacker.

signature of Moe Ghoul, 1 April 1990
Moe Ghoul, President of Vice

就這樣了!