跳到主要内容

GNU 宽松通用公共许可证

第2.1版 1999年2月

版权所有 (C) 2007年 自由软件基金会 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

任何人都可以复制和发布本许可证的完整副本,但不允许修改。

(这是宽松通用公共许可证的首次发布。因把之前发布GNU通用公共许可证的版本——第2版计算在内,所以版本为2.1。)

引言

就多数软件而言,许可证被设计用于剥夺你分享和修改软件的自由。相反,GNU通用公共许可证力图保障你分享和修改某程序全部版本的权利——确保自由软件对其用户来说是自由的。我们——自由软件基金会——将GNU通用公共许可证用于我们的大多数软件,并为一些其他作品的作者效仿。你也可以将本许可证用于你的程序。

本许可证——宽松通用许可证是为软件包——最典型的是库——专门设计的,自由软件基金会和其他作者决定采用它。你也可以采用,但是我们建议你根据下午的解释,仔细思考本许可证还是通用公共许可证哪个更适合你采用。

所谓自由软件,强调自由,而非免费。设计GNU通用公共许可证的目的在于确保你享有分发自由软件的自由(你可以为此服务收费),确保你可以在需要的时候获得cd这些软件的源代码,确保你可以修改这些软件或者在新的自由软件中复用其中某些片段,并且确保你在这方面享有知情权。

为了保护你的权利,我们设置了一些限制以防止其他人否定你的权利或者要求你放弃你的权利。这些限制在你分发或者修改这些软件时会成为你的责任。

例如,你分发这类软件的副本,无论是收费或者免费,你必须授予接收者你拥有的所有权利。你必须保证他们也能收到或者能够获得源代码。 如果你将本库链接到其他代码,你必须向接受者提供所有目标文件,以让他们修改本库之后也能重新链接和编译。并且你也要确保他们也知道他们的权利。

我们通过两个步骤保障你的权利:(1)声明本库的版权;(2)通过本许可证授予你合法地复制、分发和修改该软件的权利。

为了保护每位分发者,我们明确声明:本库没有品质担保。另外,如果某人修改和发送本库,接受者应该明白这不是原始版本,因此其他人引入的问题不应该影响原作者的声誉。

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

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

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

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

例如,在极少数情况下,可能特别需要鼓励尽可能广泛地使用某个库,以便它成为事实上的标准。为此,必须允许非自由程序使用本库。更常见的情况是免费库与广泛使用的非免费库做同样的工作。在这种情况下,将免费库仅限于免费软件几乎没有什么好处,因此我们使用较宽松的通用公共许可证。

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

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

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

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

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

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

下面的“库”是指任何根据这些条款分发此类软件库或作品。“基于库的作品”是指库或版权法规定的任何衍生作品:也就是说,包含库或其一部分的作品,无论是逐字还是修改和/或直接翻译成另一种语言。 下文中,翻译包括但不限于术语“修改”。)

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

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

1. 你可以在介质上逐字复制和分发库收到的完整源代码,前提是你在每个副本上明显且适当地发布适当的版权声明和免责声明;保留所有涉及本许可证和不存在任何保证的通知; 随本库一起分发本许可证的副本。

你可以对传输副本的实际行为收取费用,并且你可以选择提供担保以换取费用。

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

  • a) 被修改的作品本身必须是一个软件库。

  • b) 你必须在修改的文件中添加明显的声明,说明你更改的文件和日期。

  • c) 你必须根据本许可证免费地向所有第三方免费许可整个作品。

  • d) 如果修改后的库中的功能引用由使用该功能的应用程序提供的函数或数据,而不是作为调用该功能时传递的参数,那么你必须真诚地努力确保 如果应用程序不提供此功能或数据,该功能仍能执行并且获得有意义的结果。

    (例如,库中计算平方根的函数有一个完全明确定义的独立于应用程序的目的。 因此,第2条d款要求任何应用程序提供的函数或此函数使用的数据必须是可选的:如果应用程序不提供它,平方根函数仍必须计算平方根。)

这些要求适用于整个修改后的作品。 如果该作品的可识别部分不是来自本库,并且可以合理地认为它们本身是独立和单独的作品,那么当你将它们作为独立作品分发时,本许可证及其条款不适用于这些部分。 但是,当你将相同的部分作为基于本库的作品的整体的一部分进行分发时,整体的分发必须遵守本许可证的条款,其对其他被许可人的许可扩展到整个整体,从而扩展到每个和每一部分,不管是谁写的。

因此,本条的目的不是声明你的权利或者与由你编写的作品的权利抗辩; 相反,目的是行使控制衍生品发行或发行的权利基于本库的集体作品。

此外,仅将不基于本库的另一作品与本库(或基于本库的作品)聚合在存储或分发介质上不会使其他作品处于本许可证的范围内。

3. 你可以选择将普通GNU通用公共许可证的条款而不是本许可证的条款应用于库的给定副本。为此,你必须更改所有引用此许可证的声明,以便它们引用普通的GNU通用公共许可证第2版,而不是本许可证。(如果出现了比普通GNU通用公共许可证第2版更新的版本,那么你可以根据需要指定该版本。)不要对这些通知进行任何其他更改。

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

当你希望复制本库的部分代码到一个程序而不是库中时,该选项很有用。

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

如果目标代码的分发是通过提供从指定位置复制的访问权限进行的,那么提供同一地址复制源代码的等效访问权限满足分发源代码的要求,即使第三方没有被迫复制源代码连同目标代码。

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

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

当“使用本库的作品”使用作为本库一部分的头文件中的材料时,作品的目标代码可能是本库的衍生品,即使源代码不是。 如果作品可以在没有本库的情况下链接,或者作品本身就是一个库,那么这是否属实尤其重要。 法律并未明确规定这一点的门槛。

如果这样的目标文件仅使用数值参数、数据结构布局和访问器以及小型宏和小型内联函数(长度不超过10行),则目标文件的使用不受限制,无论它是否合法衍生品。 (包含此目标代码和部分库的可执行文件仍在第6条涵盖范围内。)

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

作为上文部分的例外情况,你还可以将“使用本库的作品”与库组合或链接以生成包含本库部分的作品,并根据你选择的条款分发该作品,前提是条款允许修改作品供客户自己使用,以及为了调试等进行逆向工程。

你必须在使用了本库的作品的每份副本中显着声明使用了本库,并且使用本库受本许可证的约束。 你必须提供本许可证的副本。 如果执行过程中的作品显示版权声明,你必须在其中包含本库的版权声明,以及将用户引导至本许可证副本的参考。另外,你必须做下列之一:

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

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

  • c) 随作品附上至少3年有效的书面报价,以向同一用户提供上文第6条a款中指定的材料,费用不超过执行此分发的成本。

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

  • e) 确认用户已经收到这些材料的副本,或者你已经向该用户发送了一份副本。

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

此要求可能会与操作系统通常不附带的其他专有库的许可限制相矛盾。这种矛盾意味着你不能在分发的可执行文件中同时使用它们和库。

7. 你可以将基于本库的作品的库功能与本许可证未涵盖的其他库功能并排放置在一个库中,并分发这样一个库的组合,前提是单独分发基于本库的作品酷和其他库功能是被允许的,前提是做的下列2项:

  • a) 将基于本库的相同作品的副本与合并的库一起提供,但不与任何其他库功能合并。 同时,必须根据上文的条款进行分发。

  • b) 对组合库给予显着通知,说明它的一部分是基于本库的作品,并说明在哪里可以找到同一作品的附带未组合形式。

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

9. 你没有签署本许可证,你也不需要接受它。 但是,除此之外,没有别的方式授予你修改或分发库或其衍生作品的权利。 如果你不接受本许可,这些行为将被法律禁止。因此,通过修改或分发库(或基于库的任何作品),即表示你接受此许可以及复制、分发或修改库或基于库的作品的所有条款和条件。

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

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

如果本条规定的任何部分在任何特定情况下被认定为无效或不可执行,则本条款的其余部分将适用,而本条款作为一个整体将适用于其他情况。

本条款的目的不是怂恿你违反任何专利或者其他权利要求,或者与它们抗辩。本条款的目的纯粹是保护自由软件分发系统的完整性,即通过公共许可证来实现。通过一致地应用该分发系统,很多人已经向通过该系统分发的大量软件做出了慷慨的贡献;作者/贡献者也可以决定是否愿意通过其他渠道分发,被授权人无权干涉该决定。

本条款旨在彻底阐明本许可其他条款所带来的当然后果。

12. 如果本程序的分发和/或使用收到一些国家专利或者著作权的限制,权利人可以在通过本许可证授权的软件中明确添加受限的地理范围,以排除那些受限的国家,因此分发仍然可以在其他国家进行。这种情况下,本许可将这些限制纳入许可范围内。

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

每个版本都有一个唯一的版本号。如果本库指定了具体的版本号和“任何后续版本”,你可以选择遵守该版本或者后续版本。如果软件没有指定具体的许可证版本号,你可以选择自由软件基金会发布的任何版本。

14. 如果你希望将本库的部分并于分发条件不同的其他自由软件,应对书面请求作者的许可。对于自由软件基金会拥有著作权的软件,写信给自由软件基金会。我们有时会例外处理。我们的处理此类事情是有两个目标:保持所有自由软件衍生作品的自由属性以及促进软件共享和重用。

免责声明

15. 本库免费许可,因此在适用法律范围内不提供品质保证。除非另有书面声明,本库著作权人和/或其他作者按“原样”提供本库,不提供任何形式的显示的或隐式的品质保证,包括但不限于经济价值和适合特定用途的保证。本库的全部品质和性能风险均由你承担。如果本库出现缺陷、你将承担所有必要服务、修复和更正的成本。

16. 在任何情况下,除非适用的法律要求或者书面协议,任何版权方和/或任何按照上述条款修改或/和分发本库的第三方都不对你的损失负责,包括任何一般的、特殊的、偶发的或者重大损失(包括但不限于因你或者第三方,或操作不当、或无法与其他软件错误协同造成的数据丢失,数据失真、失效),即使那些持有方或者其他人已被告知此类损失的可能性。

条款和条件结束

如何将上述条款应用于你的新库

如果你开发一个新库,并且希望它尽可能地为公众所用,我们建议将其设为自由软件,让每个人都可以重新分发和更改。你可以通过根据这些条款(或者,也可以根据普通GNU通用公共许可证的条款)允许重新分发来实现。

要应用这些条款,请将以下通知附加到本库。 最安全的做法是将它们附加到每个源文件的开头,以最有效地传达排除保证的信息; 每个文件都应该至少有“版权”行和一个指向完整通知所在位置的指针。

一行给出本库的名字和它做什么的想法。

版权所有 (C) 年份 作者姓名

本库是自由软件,你可以根据自由软件基金会发布的GNU宽松通用许可证自由地再分发或者修改。本程序适用第2.1版或者后续版本(具体随你)。

我们希望本库有用,但是不提供任何保证,甚至不保证它的经济价值或者适合特定目的。具体细节参加GNU宽松通过公共许可证。

你应当随本程序收到了GNU宽松通用公共许可证的副本,如果没有请致信自由软件基金会: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

同时提供你的电子邮件或者纸质邮件地址。

如有必要,你还应该得到你的雇主(如果你是一名程序员)或者学校(如果有的话)签署该本程序的放弃版权声明。如下例所示(你需要修改名字):

Yoyodyne有限公司特此声明放弃由James Random Hacker 编写的库“Frob”(用于调整旋钮的库)的所有版权权益。

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

全文结束!


翻译:赵振华 zhao.zhenhua@gmail.com

发布日期: 2023年1月23日

地址:https://github.com/zRich/gpl/blob/main/lgplv2.1/lgplv2.1.pdf

如有修改建议欢迎发邮件或者到 https://github.com/zRich/gpl 讨论。