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

跳到许可证文本

这个 GNU 宽通用公共许可证被认为是 GNU 库通用公共许可证的后继者。有关为什么需要进行此更改的解释,请阅读为什么你不应该为你的下一个库使用宽通用公共许可证文章。

目录


GNU 宽通用公共许可证

版本 2.1,1999 年 2 月

Copyright (C) 1991, 1999 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 Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 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 版,而不是本许可证。(如果出现了比普通 GNU 通用公共许可证第 2 版更新的版本,您也可以根据需要指定该版本。)请勿对这些声明进行任何其他更改。

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

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

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

如果通过提供从指定地点复制的访问权限来分发目标代码,那么提供从同一地点复制源代码的等效访问权限就满足了分发源代码的要求,即使第三方没有义务将源代码与目标代码一起复制。

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

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

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

如果这样的目标文件仅使用数值参数、数据结构布局和访问器,以及小型宏和小型内联函数(长度为十行或更少),则该目标文件的使用不受限制,无论它在法律上是否属于衍生作品。(包含此目标代码加上本库部分的执行文件仍然属于第 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. 在任何情况下,除非适用法律要求或另有书面约定,任何版权持有人或任何其他可能按照上述许可修改和/或再发行本库的一方,均不对您因使用或无法使用本库而造成的损害承担责任,包括任何一般性、特殊性、偶然性或后果性损害(包括但不限于数据丢失或数据变得不准确,或您或第三方遭受的损失,或本库无法与其他任何软件一同运行),即使该持有人或其他方已被告知存在此类损害的可能性。

条款和条件结束

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

如果您开发了一个新的库,并且希望它尽可能地对公众有用,我们建议您将其作为自由软件发布,以便每个人都可以再发行和更改它。您可以通过允许按照这些条款进行再发行(或者,也可以按照普通通用公共许可证的条款)来实现这一点。

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

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 Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 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
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see
<https://gnu.ac.cn/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

这就是全部内容!