跳至内容

GNU 通用公共许可证

版本 3,2007 年 6 月 29 日

版权所有 (C) 2007 自由软件基金会,Inc. https://fsf.org/

任何人都可以复制和分发本许可证文件的逐字副本,但不得更改。

前言

GNU 通用公共许可证是适用于软件和其他类型作品的免费复制许可证。

大多数软件和其他实用作品的许可证旨在剥夺您共享和更改作品的自由。相比之下,GNU 通用公共许可证旨在保证您共享和更改程序所有版本的自由——确保它对所有用户保持免费软件。我们,自由软件基金会,将 GNU 通用公共许可证用于我们的大部分软件;它也适用于其作者以这种方式发布的任何其他作品。您也可以将其应用于您的程序。

当我们谈论免费软件时,指的是自由,而不是价格。我们的通用公共许可证旨在确保您有权分发免费软件的副本(如果您愿意,可以收费),您可以收到源代码或在需要时获取源代码,您可以更改软件或将其部分用于新的免费程序,并且您知道您可以执行这些操作。

为了保护您的权利,我们需要防止其他人剥夺您的这些权利或要求您放弃这些权利。因此,如果您分发软件的副本或修改软件,您需要承担某些责任:尊重他人自由的责任。

例如,如果您分发此类程序的副本,无论免费还是收费,您都必须将您收到的相同自由传递给接收者。您必须确保他们也能收到或获得源代码。并且您必须向他们展示这些条款,以便他们了解自己的权利。

使用 GNU GPL 的开发者通过两个步骤来保护您的权利:(1) 对软件进行版权声明,以及 (2) 提供本许可证,授予您复制、分发和/或修改软件的法律许可。

为了开发人员和作者的保护,GPL 清楚地解释说,此免费软件没有保证。为了用户和作者的利益,GPL 要求对修改后的版本进行标记,以便不会错误地将他们的问题归因于先前版本的作者。

某些设备旨在拒绝用户访问安装或运行其内部修改后的软件版本,尽管制造商可以这样做。这从根本上与保护用户更改软件自由的目标不符。这种滥用的系统性模式发生在个人使用产品的领域,这正是最不可接受的地方。因此,我们设计了此版本的 GPL 来禁止这些产品的这种做法。如果此类问题在其他领域大量出现,我们将随时准备根据需要将此条款扩展到这些领域,以便在 GPL 的未来版本中保护用户的自由。

最后,每个程序都受到软件专利的持续威胁。国家不应允许专利限制在通用计算机上开发和使用软件,但在那些允许的国家,我们希望避免将专利应用于免费程序可能使其有效地成为专有软件的特殊危险。为了防止这种情况,GPL 确保专利不能用于使程序变得不自由。

复制、分发和修改的确切条款和条件如下。

条款和条件

0. 定义。

"本许可证"指的是 GNU 通用公共许可证版本 3。

"版权"也指适用于其他类型作品(如半导体掩模)的类似版权的法律。

"程序"指的是根据本许可证许可的任何受版权保护的作品。每个被许可人均称为“您”。“被许可人”和“接收者”可以是个人或组织。

"修改"作品意味着以需要版权许可的方式复制或改编作品的全部或部分,而不是制作精确副本。产生的作品称为早期作品的“修改版本”或“基于”早期作品的作品。

"受保护作品"是指未修改的程序或基于程序的作品。

"传播"作品意味着对其进行任何操作,如果未经许可,将使您根据适用的版权法直接或间接地承担侵权责任,但以下情况除外:在计算机上执行它或修改私有副本。传播包括复制、分发(无论是否修改)、提供给公众以及在某些国家/地区的其他活动。

"传送"作品意味着任何能够让其他方制作或接收副本的传播方式。仅通过计算机网络与用户交互,而无需传输副本,不属于传送。

交互式用户界面显示“适当的法律声明”,因为它包含一个方便且醒目的可见功能,该功能 (1) 显示适当的版权声明,以及 (2) 告知用户作品没有保证(除非提供保证),被许可人可以在本许可证下传送作品,以及如何查看本许可证的副本。如果界面显示用户命令或选项列表(如菜单),则列表中的突出项目符合此标准。

1. 源代码。

"作品的源代码"是指修改作品的首选形式。"目标代码"是指作品的任何非源代码形式。

"标准接口"是指由公认的标准机构定义的正式标准接口,或者,对于特定编程语言指定的接口,是指在该语言中工作的开发人员中广泛使用的接口。

可执行作品的“系统库”包括除整个作品之外的任何内容,这些内容 (a) 包含在主要组件的正常打包形式中,但不是该主要组件的一部分,以及 (b) 仅用于启用使用主要组件的作品,或实现标准接口,而该接口的实现可供公众以源代码形式使用。"主要组件"在此上下文中是指可执行作品运行的特定操作系统(如果有)的主要基本组件(内核、窗口系统等),或用于生成作品的编译器,或用于运行它的目标代码解释器。

"对应源代码"对于目标代码形式的作品而言,是指生成、安装和(对于可执行作品)运行目标代码以及修改作品所需的所有源代码,包括控制这些活动的脚本。但是,它不包括作品的系统库,或在执行这些活动时未经修改使用的通用工具或普遍可用的免费程序,但这些程序不是作品的一部分。例如,对应源代码包括与作品的源文件关联的接口定义文件,以及作品专门设计为需要共享库和动态链接子程序的源代码,例如通过这些子程序与作品其他部分之间的数据通信或控制流。

对应源代码不必包含用户可以从对应源代码的其他部分自动重新生成的任何内容。

源代码形式作品的对应源代码是同一作品。

2. 基本权限。

本许可证授予的所有权利均授予程序版权期限,并且只要满足规定的条件,这些权利就是不可撤销的。本许可证明确确认您无限制地运行未修改程序的权限。运行受保护作品的输出仅在输出(根据其内容)构成受保护作品时才受本许可证的约束。本许可证承认您根据版权法享有的合理使用权或其他等效权利。

您可以制作、运行和传播您不传送的受保护作品,无需任何条件,只要您的许可证在其他方面仍然有效。您可以将受保护作品传送给他人,以使其仅为您进行修改,或为您提供运行这些作品的设施,前提是您在传送您不控制版权的所有材料时遵守本许可证的条款。因此,为您制作或运行受保护作品的人员必须专门代表您,在您的指示和控制下,按照禁止他们在与您的关系之外制作您版权材料的任何副本的条款行事。

在任何其他情况下进行传送仅在以下规定的条件下允许。不允许再许可;第 10 条使其变得没有必要。

任何受保护作品均不得被视为根据任何适用的法律(履行 1996 年 12 月 20 日通过的 WIPO 版权条约第 11 条规定的义务或类似禁止或限制规避此类措施的法律)有效技术措施的一部分。

当您传送受保护作品时,您放弃任何禁止规避技术措施的法律权力,在此范围内,规避是通过行使关于受保护作品的本许可证下的权利来实现的,并且您声明无意限制作品的操作或修改作为手段针对作品的用户执行您或第三方禁止规避技术措施的合法权利。

4. 传递逐字副本。

您可以以您收到的任何媒介形式,传播程序源代码的逐字副本,前提是您在每个副本上显眼且适当地发布适当的版权声明;保留所有声明本许可证以及根据第 7 节添加的任何非许可条款适用于代码的通知;保留所有关于不存在任何保证的通知;并将本许可证的副本与程序一起提供给所有接收者。

您可以对您传播的每个副本收取任何价格或不收取任何价格,并且您可以收取费用提供支持或保修保护。

5. 传递修改后的源代码版本。

您可以根据第 4 节的条款,以源代码的形式传播基于程序的作品,或从程序生成它的修改,前提是您还满足所有这些条件

  • a) 该作品必须带有醒目的声明,说明您已对其进行了修改,并提供相关日期。
  • b) 该作品必须带有醒目的声明,说明它是根据本许可证以及第 7 节中添加的任何条件发布的。此要求修改了第 4 节中“保留所有通知”的要求。
  • c) 您必须将整个作品作为整体,根据本许可证许可给任何获得副本的人。因此,本许可证以及任何适用的第 7 节附加条款将适用于整个作品及其所有部分,无论它们如何打包。本许可证未授予以任何其他方式许可该作品的权限,但如果您已单独获得此类权限,则不会使其失效。
  • d) 如果该作品具有交互式用户界面,则每个界面都必须显示适当的法律声明;但是,如果程序具有不显示适当法律声明的交互式界面,则您的作品无需强制其显示。

如果包含覆盖作品与其他独立作品的汇编,这些作品本质上不是覆盖作品的扩展,并且未与之结合形成更大的程序,存储或分发介质上的卷中,则称为“聚合”,如果汇编及其产生的版权未被用于限制汇编用户访问或法律权利,超出各个作品允许的范围。包含覆盖作品的聚合不会导致本许可证适用于聚合的其他部分。

6. 传递非源代码形式。

您可以根据第 4 节和第 5 节的条款以目标代码形式传播覆盖作品,前提是您还以以下方式之一根据本许可证的条款传播机器可读的对应源代码

  • a) 传播包含在物理产品(包括物理分发介质)中或体现于物理产品中的目标代码,并附带固定在通常用于软件交换的持久物理介质上的对应源代码。
  • b) 传播包含在物理产品(包括物理分发介质)中或体现于物理产品中的目标代码,并附带书面要约,该要约有效期至少三年,并且在您为该产品型号提供备件或客户支持的期间内有效,以向任何拥有目标代码的人提供 (1) 该产品中受本许可证涵盖的所有软件的对应源代码的副本,在通常用于软件交换的持久物理介质上,价格不超过您实际执行此源代码传送的合理成本,或 (2) 免费访问从网络服务器复制对应源代码。
  • c) 传播目标代码的单个副本,并附带一份书面要约,以提供对应源代码。此替代方案仅在偶尔和非商业情况下才允许,并且只有在您根据第 6b 款获得了带有此类要约的目标代码时才允许。
  • d) 通过提供来自指定位置的访问(免费或收费)来传播目标代码,并通过相同位置以相同方式免费提供对对应源代码的等效访问。您无需要求接收者与目标代码一起复制对应源代码。如果复制目标代码的位置是网络服务器,则对应源代码可以在不同的服务器(由您或第三方运营)上,该服务器支持等效的复制功能,前提是您在目标代码旁边保留清晰的指示,说明在哪里可以找到对应源代码。无论哪个服务器托管对应源代码,您仍有义务确保其在满足这些要求所需的时间内可用。
  • e) 使用点对点传输传播目标代码,前提是您通知其他对等体在何处免费向公众提供该作品的目标代码和对应源代码,根据第 6d 款。

目标代码的可分离部分,其源代码作为系统库从对应源代码中排除,无需包含在传播目标代码作品中。

“用户产品”是指 (1) “消费产品”,即任何通常用于个人、家庭或家庭用途的有形个人财产,或 (2) 任何设计或出售用于融入住宅的产品。在确定产品是否为消费产品时,应将有疑问的情况解决为涵盖范围。对于特定用户收到的特定产品,“通常使用”是指该类产品的典型或常见用途,无论特定用户的身份或特定用户实际使用、预期使用或预期使用产品的方式如何。产品是消费产品,无论该产品是否具有大量的商业、工业或非消费用途,除非此类用途代表该产品的唯一重要使用方式。

用户产品的“安装信息”是指从其对应源代码的修改版本安装和执行覆盖作品的修改版本的任何方法、过程、授权密钥或其他信息。信息必须足以确保修改后的目标代码的持续运行绝不会仅仅因为进行了修改而被阻止或干扰。

如果您根据本节在用户产品中、与用户产品一起或专门用于用户产品中传播目标代码作品,并且该传播作为交易的一部分发生,在该交易中,用户产品的占有权和使用权永久或固定期限地转让给接收方(无论交易如何表述),则根据本节传播的对应源代码必须附带安装信息。但是,如果既您也不存在任何第三方保留在用户产品上安装修改后的目标代码的能力(例如,该作品已安装在 ROM 中),则此要求不适用。

提供安装信息的义务不包括继续为接收方修改或安装的作品或已修改或安装了该作品的用户产品提供支持服务、保修或更新的义务。当修改本身实质上和不利地影响网络的操作或违反跨网络通信的规则和协议时,可能会拒绝访问网络。

根据本节传播的对应源代码和提供的安装信息必须采用公开记录的格式(并且其实现以源代码形式公开提供),并且无需任何特殊的密码或密钥即可解包、读取或复制。

7. 附加条款。

“附加权限”是指通过从一个或多个条件中排除例外来补充本许可证条款的条款。适用于整个程序的附加权限应视为已包含在本许可证中,只要它们在适用法律下有效。如果附加权限仅适用于程序的一部分,则该部分可以在这些权限下单独使用,但整个程序仍受本许可证约束,而与附加权限无关。

当您传播覆盖作品的副本时,您可以选择从该副本或其任何部分中删除任何附加权限。(在您修改作品的某些情况下,可以编写附加权限以要求自行删除。)您可以对您添加到覆盖作品的材料放置附加权限,对于这些材料,您拥有或可以授予适当的版权许可。

尽管本许可证的任何其他条款另有规定,但对于您添加到覆盖作品的材料,您可以(如果获得该材料的版权持有人的授权)用以下条款补充本许可证的条款

  • a) 以不同于本许可证第 15 节和第 16 节条款的方式否认保证或限制责任;或
  • b) 要求保留该材料或包含它的作品显示的适当法律声明中指定的合理的法律声明或作者署名;或
  • c) 禁止歪曲该材料的来源,或要求以合理的方式将该材料的修改版本标记为与原始版本不同;或
  • d) 限制将许可方或作者的姓名用于宣传目的;或
  • e) 拒绝授予使用某些商品名称、商标或服务商标的商标法下的权利;或
  • f) 要求任何传播该材料(或其修改版本)并对接收方承担合同责任的人赔偿该材料的许可方和作者,以承担这些合同假设直接强加给这些许可方和作者的任何责任。

所有其他非许可附加条款均被视为第 10 节含义内的“进一步限制”。如果您收到的程序或其任何部分包含一条通知,声明它受本许可证以及进一步限制条款的约束,则您可以删除该条款。如果许可证文档包含进一步限制,但允许根据本许可证重新许可或传播,则您可以向受该许可证文档条款约束的覆盖作品中添加材料,前提是进一步限制在重新许可或传播后不会继续存在。

如果您根据本节向覆盖作品添加条款,则必须在相关的源文件中放置一个关于适用于这些文件的附加条款的声明,或一个指示在哪里可以找到适用条款的通知。

附加条款(许可或非许可)可以以单独编写的许可证的形式陈述,也可以以例外的形式陈述;上述要求无论哪种方式都适用。

8. 终止。

除非本许可证明确规定,否则您不得传播或修改受版权保护的作品。任何其他传播或修改的尝试均无效,并将自动终止您在本许可证下的权利(包括第 11 条第三段授予的任何专利许可)。

但是,如果您停止所有违反本许可证的行为,则您从特定版权持有者处获得的许可将被恢复:(a)暂时恢复,除非并且直到版权持有人明确且最终终止您的许可;以及(b)永久恢复,如果版权持有人在停止违规行为后 60 天内未以某种合理的方式通知您违规行为。

此外,如果您从特定版权持有人处获得的许可将被永久恢复,前提是版权持有人以某种合理的方式通知您违规行为,这是您第一次从该版权持有人处收到关于违反本许可证(针对任何作品)的通知,并且您在收到通知后 30 天内纠正了违规行为。

根据本节终止您的权利不会终止已根据本许可证从您处收到副本或权利的各方的许可。如果您的权利已被终止且未永久恢复,则您无资格根据第 10 条获得同一材料的新许可。

9. 拥有副本无需接受。

您无需接受本许可证即可接收或运行程序副本。仅因使用对等传输接收副本而发生的受版权保护作品的辅助传播也不需要接受。但是,除了本许可证之外,没有任何其他内容允许您传播或修改任何受版权保护的作品。如果您不接受本许可证,则这些行为构成侵犯版权。因此,通过修改或传播受版权保护的作品,您表示接受本许可证以这样做。

10. 下游接收者的自动许可。

每次您传送受版权保护的作品时,接收方都会自动从原始许可方获得运行、修改和传播该作品的许可,但须遵守本许可证。您不负责执行第三方对本许可证的遵守。

“实体交易”是指转移组织控制权、或实质上转移一个组织的所有资产、或细分组织、或合并组织的交易。如果受版权保护作品的传播源于实体交易,则参与该交易并收到作品副本的每一方还将收到其前任利益相关方在上一段中拥有或可以授予的任何作品许可,以及从前任利益相关方处获取相应源代码的权利,如果前任利益相关方拥有该源代码或可以通过合理努力获得该源代码。

您不得对根据本许可证授予或确认的权利的行使施加任何进一步的限制。例如,您不得对根据本许可证授予的权利的行使收取许可费、特许权使用费或其他费用,并且您不得提起诉讼(包括诉讼中的交叉诉讼或反诉),声称任何专利权利因制造、使用、销售、要约出售或进口程序或其任何部分而被侵犯。

11. 专利。

“贡献者”是指授权根据本许可证使用程序或程序所基于的作品的版权持有人。因此获得许可的作品称为贡献者的“贡献者版本”。

贡献者的“基本专利权利”是指贡献者拥有或控制的所有专利权利,无论这些权利是已经获得的还是以后获得的,这些权利会被本许可证允许的制造、使用或销售其贡献者版本的方式所侵犯,但不包括仅因进一步修改贡献者版本而被侵犯的权利。出于本定义的目的,“控制”包括以与本许可证的要求一致的方式授予专利许可的权利。

每个贡献者都授予您一项非独占的、全球性的、免版税的专利许可,根据贡献者的基本专利权利,制造、使用、销售、要约出售、进口以及以其他方式运行、修改和传播其贡献者版本的内容。

在以下三段中,“专利许可”是指任何明示协议或承诺,无论其如何命名,均不执行专利(例如,明示许可实施专利或不因专利侵权而起诉的契约)。“授予”一方此类专利许可意味着就不要对该方执行专利做出此类协议或承诺。

如果您传送受版权保护的作品,明知依赖专利许可,并且该作品的相应源代码不能通过公开可用的网络服务器或其他易于访问的方式供任何人免费复制和根据本许可证的条款使用,则您必须(1)使相应源代码可用,或者(2)安排剥夺您在本许可证下针对此特定作品的专利许可的利益,或者(3)以与本许可证的要求一致的方式安排将专利许可扩展到下游接收方。“明知依赖”是指您实际知道,如果没有专利许可,您在某个国家/地区传送受版权保护的作品,或者您的接收方在某个国家/地区使用受版权保护的作品,将侵犯该国家/地区一个或多个您有理由相信有效的可识别的专利。

如果您根据或与单笔交易或安排相关,传送或通过获取传送传播受版权保护的作品,并向接收受版权保护作品的一些方授予专利许可,授权他们使用、传播、修改或传送受版权保护作品的特定副本,则您授予的专利许可将自动扩展到所有接收受版权保护作品及其衍生作品的方。

如果专利许可不包括在其涵盖范围之内、禁止行使或以不行使本许可证明确授予的一项或多项权利为条件,则该专利许可为“歧视性”许可。如果您与从事软件分销的第三方存在安排,根据该安排,您根据传送作品的活动程度向第三方付款,并且根据该安排,第三方向您将传送受版权保护作品的任何一方授予歧视性专利许可(a)与您传送的受版权保护作品副本(或从这些副本制作的副本)相关,或(b)主要针对并与包含受版权保护作品的特定产品或汇编相关,除非您在 2007 年 3 月 28 日之前签订了该安排或授予了该专利许可。

本许可证中的任何内容均不应被解释为排除或限制您根据适用的专利法可能可获得的任何默示许可或其他抗辩侵权的理由。

12. 不放弃他人的自由。

如果您受到与本许可证条件相矛盾的条件(无论是法院命令、协议还是其他)的约束,则这些条件不会使您免除本许可证的条件。如果您无法传送受版权保护的作品以同时满足您在本许可证下以及任何其他相关义务下的义务,则因此您根本不得传送它。例如,如果您同意必须从您传送程序的人员那里收取进一步传送的特许权使用费的条款,则您同时满足这些条款和本许可证的唯一方法是完全避免传送程序。

13. 与 GNU Affero 通用公共许可证一起使用。

尽管本许可证的任何其他条款另有规定,但您有权将任何受版权保护的作品与根据 GNU Affero 通用公共许可证版本 3 获得许可的作品链接或组合成一个组合作品,并传送生成的组合作品。本许可证的条款将继续适用于受版权保护的作品部分,但 GNU Affero 通用公共许可证第 13 条关于通过网络交互的特殊要求将适用于组合本身。

14. 本许可证的修订版本。

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

每个版本都分配了一个不同的版本号。如果程序指定 GNU 通用公共许可证的某个编号版本“或任何更高版本”适用于它,则您可以选择遵循该编号版本的条款和条件,或遵循自由软件基金会发布的任何更高版本的条款和条件。如果程序未指定 GNU 通用公共许可证的版本号,则可以选择自由软件基金会发布的任何版本。

如果程序指定代理可以决定可以使用 GNU 通用公共许可证的哪些未来版本,则该代理公开接受某个版本的声明将永久授权您为程序选择该版本。

更高版本的许可证可能会为您提供其他或不同的权限。但是,由于您选择遵循更高版本,不会对任何作者或版权持有人施加任何额外的义务。

15. 免责声明。

在适用法律允许的范围内,程序不提供任何保证。除非书面另有规定,否则版权持有人和/或其他方按“原样”提供程序,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性和适用于特定目的的暗示保证。程序的质量和性能的所有风险由您承担。如果程序出现缺陷,您将承担所有必要维护、修理或纠正的费用。

16. 责任限制。

除非适用法律要求或书面同意,否则在任何情况下,版权持有人或任何其他根据上述规定修改和/或传送程序的方均不对您承担任何损害赔偿责任,包括因使用或无法使用程序而产生的任何一般性、特殊性、偶然性或间接损害(包括但不限于数据丢失或数据变得不准确或您或第三方遭受的损失或程序无法与任何其他程序一起运行),即使此类持有人或其他方已被告知此类损害的可能性。

17. 第 15 和 16 条的解释。

如果上述免责声明和责任限制不能根据其条款在当地产生法律效力,则审查法院应适用最接近于与程序相关的全部民事责任的绝对放弃的当地法律,除非与程序副本一起以付费方式提供保证或承担责任。

条款和条件结束

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

如果您开发了一个新程序,并且希望它能够最大程度地为公众所用,实现这一目标的最佳方法是将其设为自由软件,以便每个人都可以在这些条款下重新分发和更改它。

为此,请将以下通知附加到程序中。最安全的方法是将它们附加到每个源文件的开头,以便最有效地说明免责声明;并且每个文件至少应包含“版权”行以及指向完整通知的指针。

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

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

    This program 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://gnu.ac.cn/licenses/>.

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

如果程序进行终端交互,则在以交互模式启动时,使其输出类似以下的简短通知

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

假设的命令`show w`和`show c`应该显示通用公共许可证的相应部分。当然,您的程序的命令可能有所不同;对于 GUI 界面,您将使用“关于”框。

如有必要,您还应请您的雇主(如果您是一名程序员)或学校(如有)为该程序签署“版权免责声明”。有关此方面以及如何应用和遵循 GNU GPL 的更多信息,请参阅 https://gnu.ac.cn/licenses/

GNU 通用公共许可证不允许将您的程序合并到专有程序中。如果您的程序是一个子程序库,您可能会认为允许将专有应用程序与该库链接更有用。如果您希望这样做,请使用 GNU 小通用公共许可证代替本许可证。但在开始之前,请先阅读 https://gnu.ac.cn/licenses/why-not-lgpl.html