GNU 宽通用公共许可证版本 2.1

版本 2.1 SPDX 短标识符: LGPL-2.1

Open Source Initiative Approved License

版权所有 (C) 1991, 1999 自由软件基金会有限公司。地址:59 Temple Place, Suite 330, Boston, MA 02111-1307 USA。 任何人均被允许复制和分发此许可证文件的完整副本,但不允许更改它。

[这是首个发布的宽通用公共许可证版本。它也被认为是 GNU 库公共许可证版本 2 的后续版本,因此版本号为 2.1。]

序言

大多数软件的许可证旨在剥夺您共享和更改它的自由。 相反,GNU 通用公共许可证旨在保证您共享和更改自由软件的自由——确保软件对所有用户都是自由的。

本许可证,即宽通用公共许可证,适用于一些特别指定的软件包——通常是库——由自由软件基金会和其他决定使用它的作者发布。 您也可以使用它,但我们建议您首先仔细考虑在任何特定情况下,是使用此许可证还是普通的通用公共许可证是更好的策略,这基于以下解释。

当我们谈论自由软件时,我们指的是使用自由,而不是价格。 我们的通用公共许可证旨在确保您有自由分发自由软件的副本(如果您愿意,可以为此服务收费); 确保您收到源代码或可以在需要时获得它; 确保您可以更改软件并在新的自由程序中使用它的片段; 并确保您被告知您可以做这些事情。

为了保护您的权利,我们需要做出限制,禁止分发者拒绝您这些权利或要求您放弃这些权利。 如果您分发库的副本或修改它,这些限制将转化为您必须承担的某些责任。

例如,如果您分发库的副本,无论是免费的还是收费的,您都必须将我们赋予您的所有权利授予接收者。 您必须确保他们也收到或可以获得源代码。 如果您将其他代码与库链接,则必须向接收者提供完整的目标文件,以便他们可以在更改库并重新编译后将其与库重新链接。 并且您必须向他们展示这些条款,以便他们了解自己的权利。

我们用两步方法保护您的权利:(1) 我们对库进行版权保护,以及 (2) 我们为您提供本许可证,授予您复制、分发和/或修改库的法律许可。

为了保护每个分发者,我们要非常清楚地表明,自由库不提供任何保证。 此外,如果库被其他人修改并传递下去,接收者应该知道他们拥有的不是原始版本,这样原始作者的声誉就不会受到其他人可能引入的问题的影响。

最后,软件专利对任何自由程序的生存都构成持续的威胁。 我们希望确保公司不能通过从专利持有人那里获得限制性许可证来有效地限制自由程序的用户。 因此,我们坚持认为,为库的某个版本获得的任何专利许可证都必须与本许可证中规定的完全使用自由相一致。

大多数 GNU 软件,包括一些库,都受普通的 GNU 通用公共许可证的约束。 本许可证,即 GNU 宽通用公共许可证,适用于某些指定的库,并且与普通的通用公共许可证截然不同。 我们对某些库使用此许可证,以便允许将这些库链接到非自由程序中。

当程序与库链接时,无论是静态链接还是使用共享库,从法律意义上讲,两者的组合都是一个组合作品,是原始库的衍生作品。 因此,只有当整个组合符合其自由标准时,普通的通用公共许可证才允许这种链接。 宽通用公共许可证允许更宽松的标准,以便将其他代码与库链接。

我们将此许可证称为“宽”通用公共许可证,因为它与普通的通用公共许可证相比,对用户自由的保护较少。 它也为其他自由软件开发者提供了比竞争的非自由程序更少的优势。 这些缺点是我们对许多库使用普通的通用公共许可证的原因。 然而,在某些特殊情况下,宽许可证提供了优势。

例如,在极少数情况下,可能需要鼓励尽可能广泛地使用某个库,使其成为事实上的标准。 为了实现这一目标,必须允许非自由程序使用该库。 更常见的情况是,一个自由库执行与广泛使用的非自由库相同的工作。 在这种情况下,将自由库限制为仅限自由软件几乎没有什么好处,因此我们使用宽通用公共许可证。

在其他情况下,允许在非自由程序中使用特定库可以使更多人使用大量的自由软件。 例如,允许在非自由程序中使用 GNU C 库使更多人可以使用整个 GNU 操作系统及其变体 GNU/Linux 操作系统。

尽管宽通用公共许可证对用户自由的保护较少,但它确实确保了与库链接的程序的用户拥有自由和能力使用库的修改版本运行该程序。

以下是关于复制、分发和修改的精确条款和条件。 请密切注意“基于库的作品”和“使用库的作品”之间的区别。 前者包含从库派生的代码,而后者必须与库结合才能运行。

复制、分发和修改的条款和条件

0. 本许可协议适用于任何软件库或其他程序,其中包含版权持有人或其他授权方放置的声明,表明它可以根据本宽通用公共许可证(也称为“本许可证”)的条款分发。 每个被许可人都被称为“您”。

“库”是指为了方便地与应用程序(使用其中一些功能和数据)链接以形成可执行文件而准备的软件功能和/或数据的集合。

以下“库”是指已根据这些条款分发的任何此类软件库或作品。 “基于库的作品”是指库或版权法下的任何衍生作品:也就是说,包含库或其一部分的作品,无论是逐字逐句的还是经过修改和/或直接翻译成另一种语言的。(此后,“翻译”一词包括在“修改”一词中,不受限制。)

“作品的源代码”是指用于对其进行修改的作品的首选形式。 对于库,完整的源代码是指它包含的所有模块的所有源代码,加上任何相关的接口定义文件,以及用于控制库的编译和安装的脚本。

复制、分发和修改以外的活动不在本许可证的范围内; 它们超出其范围。 运行使用库的程序的行为不受限制,并且来自此类程序的输出仅在其内容构成基于库的作品时才受限制(独立于在用于编写它的工具中使用库)。 这是否属实取决于库的功能以及使用库的程序的功能。

1. 您可以按原样复制和分发库的完整源代码副本,以任何媒介形式,前提是您在每个副本上显着且适当地发布适当的版权声明和免责声明; 保留所有提及本许可证和不提供任何保证的声明; 并随库分发本许可证的副本。

您可以对传输副本的物理行为收取费用,并且您可以选择提供有偿的保修保护。

2. 您可以修改您的库副本或库的任何部分,从而形成基于库的作品,并根据以上第 1 节的条款复制和分发此类修改或作品,前提是您也满足所有这些条件

a) 修改后的作品本身必须是软件库。

b) 您必须使修改后的文件带有显着声明,说明您更改了文件以及任何更改的日期。

c) 您必须使整个作品根据本许可证的条款免费授权给所有第三方。

d) 如果修改后的库中的工具引用了应用程序提供的函数或数据表(而不是在调用该工具时传递的参数),则您必须真诚地努力确保,在应用程序未提供此类函数或表的情况下,该工具仍然运行,并执行其目的中仍然有意义的部分。

(例如,库中用于计算平方根的函数具有完全明确的目的,与应用程序无关。 因此,第 2d 小节要求此函数使用的任何应用程序提供的函数或表都必须是可选的:如果应用程序不提供它,则平方根函数仍必须计算平方根。)

这些要求适用于整个修改后的作品。 如果该作品的可识别部分不是从库派生的,并且可以合理地被认为是独立的和单独的作品,那么当您将这些部分作为单独的作品分发时,本许可证及其条款不适用于这些部分。 但是,当您将相同的部分作为整体的一部分(即基于库的作品)分发时,整个作品的分发必须符合本许可证的条款,其对其他被许可人的许可扩展到整个作品,从而扩展到每个部分,无论谁编写的。

因此,本节的目的不是声明权利或质疑您对完全由您编写的作品的权利; 相反,目的是行使控制基于库的衍生作品或集体作品的分发的权利。

此外,仅仅将另一个不基于库的作品与库(或基于库的作品)在存储或分发介质的卷上聚合,并不会使该其他作品受本许可证的约束。

3. 您可以选择对库的给定副本应用普通的 GNU 通用公共许可证条款,而不是本许可证。 为此,您必须更改所有提及本许可证的声明,使其提及普通的 GNU 通用公共许可证版本 2,而不是本许可证。(如果出现了比版本 2 更新版本的普通 GNU 通用公共许可证,那么如果您愿意,您可以指定该版本。) 请勿对这些声明进行任何其他更改。

一旦在给定副本中进行了此更改,对于该副本来说是不可逆转的,因此普通的 GNU 通用公共许可证适用于从该副本制作的所有后续副本和衍生作品。

当您希望将库的部分代码复制到不是库的程序中时,此选项很有用。

4. 您可以根据以上第 1 节和第 2 节的条款,以目标代码或可执行形式复制和分发库(或其一部分或衍生作品,根据第 2 节),前提是您随附完整的相应机器可读源代码,该源代码必须根据以上第 1 节和第 2 节的条款在通常用于软件交换的介质上分发。

如果通过提供从指定位置复制的访问权限来进行目标代码的分发,那么提供从同一位置复制源代码的等效访问权限即可满足分发源代码的要求,即使第三方没有义务随目标代码一起复制源代码。

5. 不包含库任何部分的衍生作品,但旨在通过与库编译或链接来与库一起工作的程序,称为“使用库的作品”。 这样的作品,单独而言,不是库的衍生作品,因此不属于本许可证的范围。

但是,将“使用库的作品”与库链接会创建一个可执行文件,该可执行文件是库的衍生作品(因为它包含库的部分),而不是“使用库的作品”。 因此,该可执行文件受本许可证的约束。 第 6 节规定了分发此类可执行文件的条款。

当“使用库的作品”使用来自库一部分的头文件中的材料时,该作品的目标代码可能是库的衍生作品,即使源代码不是。 如果作品可以在没有库的情况下链接,或者如果作品本身是一个库,则这尤其重要。 这为真的门槛在法律上没有精确定义。

如果这样的目标文件仅使用数值参数、数据结构布局和访问器,以及小型宏和小型内联函数(长度不超过十行),则目标文件的使用不受限制,无论它是否在法律上是衍生作品。(包含此目标代码加上库部分的exe文件仍将属于第 6 节。)

否则,如果作品是库的衍生作品,您可以根据第 6 节的条款分发该作品的目标代码。 包含该作品的任何可执行文件也属于第 6 节,无论它们是否直接与库本身链接。

6. 作为对以上各节的例外,您也可以将“使用库的作品”与库组合或链接,以生成包含库部分的作品,并根据您选择的条款分发该作品,前提是这些条款允许客户为自己的使用而修改作品,并允许为调试此类修改而进行逆向工程。

您必须在作品的每个副本上显着声明,其中使用了库,并且库及其使用受本许可证的约束。 您必须提供本许可证的副本。 如果作品在执行期间显示版权声明,您必须在其中包含库的版权声明,以及将用户引导至本许可证副本的参考。

a) 随作品附带库的完整相应机器可读源代码,包括作品中使用的任何更改(必须根据以上第 1 节和第 2 节分发); 并且,如果作品是与库链接的可执行文件,则附带完整的机器可读“使用库的作品”,以目标代码和/或源代码的形式,以便用户可以修改库,然后重新链接以生成包含修改后的库的修改后的可执行文件。(可以理解,更改库中定义文件内容的用户不一定能够重新编译应用程序以使用修改后的定义。)

b) 使用合适的共享库机制与库链接。 合适的机制是 (1) 在运行时使用用户计算机系统上已存在的库副本,而不是将库函数复制到可执行文件中,以及 (2) 如果用户安装了库的修改版本,只要修改后的版本与作品制作的版本接口兼容,就可以正常运行。

c) 随作品附带一份书面报价,有效期至少三年,以不超过执行此分发的成本的价格向同一用户提供以上第 6a 小节中规定的材料。

d) 如果通过提供从指定位置复制的访问权限来进行作品的分发,则提供从同一位置复制上述指定材料的等效访问权限。

e) 验证用户是否已收到这些材料的副本,或者您是否已将副本发送给该用户。

对于可执行文件,所需的“使用库的作品”的形式必须包括从其再现可执行文件所需的任何数据和实用程序。 但是,作为特殊例外,要分发的材料无需包括通常与可执行文件运行的操作系统的主要组件(编译器、内核等)一起分发的任何内容(以源代码或二进制形式),除非该组件本身随可执行文件一起提供。

可能出现这种情况,即此要求与通常不随操作系统一起提供的其他专有库的许可证限制相矛盾。 这种矛盾意味着您不能在您分发的可执行文件中同时使用它们和库。

7. 您可以将基于库的作品的库工具与未受本许可证约束的其他库工具并排放在单个库中,并分发此类组合库,前提是基于库的作品和其他库工具的单独分发在其他方面是允许的,并且前提是您执行以下两项操作

a) 随附组合库,附带同一基于库的作品的副本,该副本未与任何其他库工具组合。 这必须根据以上各节的条款分发。

b) 在组合库中显着声明,其中一部分是基于库的作品,并解释在哪里可以找到同一作品的随附未组合形式。

8. 除非本许可证明确规定,否则您不得复制、修改、再许可、链接或分发库。 任何其他尝试复制、修改、再许可、链接或分发库的行为均无效,并将自动终止您在本许可证下的权利。 但是,根据本许可证从您那里收到副本或权利的各方,只要这些方保持完全合规,其许可证就不会终止。

9. 您无需接受本许可证,因为您尚未签署它。 但是,如果您不接受本许可证,则法律禁止您修改或分发库或其衍生作品。 因此,通过修改或分发库(或任何基于库的作品),您表明您接受本许可证这样做,以及其所有关于复制、分发或修改库或基于库的作品的条款和条件。

10. 每次您重新分发库(或任何基于库的作品)时,接收者都会自动从原始许可人那里获得许可,以复制、分发、链接或修改库,但须遵守这些条款和条件。 您不得对接收者行使此处授予的权利施加任何进一步的限制。 您不负责强制第三方遵守本许可证。

11. 如果由于法院判决或专利侵权指控或任何其他原因(不限于专利问题),对您施加了与本许可证的条件相矛盾的条件(无论是通过法院命令、协议或其他方式),它们都不会免除您遵守本许可证的条件。 如果您无法分发以同时满足您在本许可证下的义务和任何其他相关义务,那么作为结果,您可能根本无法分发库。 例如,如果专利许可证不允许所有直接或间接通过您接收副本的人免版税地重新分发库,那么您能够同时满足专利许可证和本许可证的唯一方法是完全避免分发库。

如果本节的任何部分在任何特定情况下被认定为无效或不可执行,则本节的其余部分旨在适用,并且本节作为一个整体旨在在其他情况下适用。

本节的目的不是诱导您侵犯任何专利或其他产权主张或质疑任何此类主张的有效性; 本节的唯一目的是保护自由软件分发系统的完整性,该系统通过公共许可证实践实施。 许多人基于对该系统一致应用的信赖,为通过该系统分发的广泛软件做出了慷慨的贡献; 是否愿意通过任何其他系统分发软件由作者/捐赠者决定,被许可人不能强加该选择。

本节旨在彻底明确地说明被认为是本许可证其余部分的后果。

12. 如果库的分发和/或使用在某些国家/地区受到专利或受版权保护的接口的限制,则将库置于本许可证下的原始版权持有人可以添加明确的地域分发限制,排除这些国家/地区,以便仅在或在未被如此排除的国家/地区之间允许分发。 在这种情况下,本许可证将该限制纳入,如同写入本许可证的正文中一样。

13. 自由软件基金会可能会不时发布宽通用公共许可证的修订版和/或新版本。 此类新版本在精神上将与当前版本相似,但在细节上可能有所不同,以解决新问题或疑虑。

每个版本都给出了一个可区分的版本号。 如果库指定了适用于它的本许可证的版本号以及“任何更高版本”,您可以选择遵循该版本或自由软件基金会发布的任何更高版本的条款和条件。 如果库未指定许可证版本号,您可以选择自由软件基金会发布的任何版本。

14. 如果您希望将库的部分内容纳入到其他自由程序中,而这些自由程序的分发条件与这些条件不兼容,请写信给作者请求许可。 对于自由软件基金会拥有版权的软件,请写信给自由软件基金会; 我们有时会为此做出例外。 我们的决定将以维护我们自由软件的所有衍生作品的自由状态以及促进软件的共享和重用这两个目标为指导。

无保证

15. 由于库是免费许可的,因此在适用法律允许的范围内,库不提供任何保证。 除非版权持有人和/或其他方另有书面声明,否则“按原样”提供库,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于对适销性和特定用途适用性的暗示保证。 关于库的质量和性能的全部风险由您承担。 如果库被证明有缺陷,您将承担所有必要的维修、修理或更正的费用。

16. 在任何情况下,除非适用法律要求或以书面形式同意,否则任何版权持有人或任何其他可能根据上述许可修改和/或重新分发库的方均不对您承担任何损害赔偿责任,包括因使用或无法使用库而引起的任何一般、特殊、偶然或后果性损害(包括但不限于数据丢失或数据变得不准确或您或第三方遭受的损失或库未能与任何其他软件一起运行),即使此类持有人或其他方已被告知可能发生此类损害。

条款和条件结束

如何将这些条款应用于您的新库

如果您开发了一个新库,并且希望它对公众具有最大的用途,我们建议将其制成自由软件,以便每个人都可以重新分发和更改。 您可以通过允许根据这些条款(或,或者,根据普通的通用公共许可证的条款)重新分发来做到这一点。

要应用这些条款,请将以下声明附加到库中。 最安全的方法是将它们附加到每个源文件的开头,以便最有效地传达不提供保证; 并且每个文件应至少包含“版权”行以及指向完整声明所在位置的指针。

<一行文字,给出库的名称和对其功能的想法。> 版权所有 (C) <年份> <作者姓名>

本库是自由软件; 您可以根据自由软件基金会发布的 GNU 宽通用公共许可证的条款重新分发和/或修改它; 可以是许可证的 2.1 版本,或者(由您选择)任何更高版本。

分发本库是希望它有用,但没有任何保证; 甚至没有对适销性或特定用途适用性的暗示保证。 有关更多详细信息,请参阅 GNU 宽通用公共许可证。

您应该已收到与本库一起分发的 GNU 宽通用公共许可证的副本; 如果没有,请写信给自由软件基金会有限公司,地址:59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

还要添加有关如何通过电子和纸质邮件与您联系的信息。

如果需要,您还应该让您的雇主(如果您是程序员)或您的学校(如果有)签署库的“版权免责声明”。 这是一个样本; 更改名称

Yoyodyne, Inc. 特此声明放弃对 James Random Hacker 编写的库“Frob”(一个用于调整旋钮的库)的所有版权权益。

Ty Coon 的签名,1990 年 4 月 1 日
Ty Coon,副总裁

这就是全部内容!