                    GNU 通用公共许可证
                        第 3 版，2007 年 6 月 29 日

版权所有 (C) 2007 自由软件基金会 <https://fsf.org/>
任何人都可以复制和分发本许可证的完整副本，但不允许修改它。

                            引言

    GNU 通用公共许可证是一份适用于软件和其他类型的作品的，自由的 copyleft 许可证。

    大多数软件和其他实用性作品的许可证，都设法剥夺你的自由，让你无法修改和分享作品。相反，GNU 通用公共许可证力图保障你能自由地分享和修改一个程序的全部版本——确保该程序对每一位用户来说都是自由软件。我们自由软件基金会为我们的大多数软件采用了 GNU 通用公共许可证；本许可证也适用于其他任何类型的作品，只要其作者也以这种方式发布作品。你也可以将本许可证应用于你的程序。

    所谓自由软件，强调的是自由，而与价格无关。我们设计通用公共许可证，是为了确保你能够自由地分发自由软件的副本（你可以为此收费）、确保你能够接收到或在需要时索取到源代码、确保你能够修改软件或把它的一部分复用在新的自由的程序中，并确保你知道你可以做这些事。

    为了保障你的权利，我们不能让他人拒绝你的这些权利，也不能让他人要求你放弃这些权利。因此，在分发软件的副本时或修改它时，你有责任尊重其他人的自由。

    例如，如果分发了这样一个程序，无论是否收费，你必须把你获得的自由同样地给予至接收者。你必须确保他们也能接收到或索取到源代码。并且你必须给他们展示这些条款，让他们知道自己有这些权利。

    开发者使用 GNU GPL，通过以下两步来保障你的权利：（1）主张软件的版权，并（2）通过本许可证授予你复制、分发及修改本软件的合法权利。

    为保护开发者和作者，GPL 明确声明本自由软件没有品质担保。为用户和作者着想，GPL 需要修改版有修改过的标记，以防修改版出现的问题归结至先前版本的作者。

    有些设备设计出来，使用户无法安装或运行其内部软件的修改版，但厂商却能这么做。这根本上违背了保障用户能自由修改软件这一目标。这种滥用模式出现在了个人用品领域，而这恰是最不可接受的。因此，我们设计了此版本的 GPL 来禁止这些产品的这种行为。如果类似问题在其他领域也大量出现，我们会准备在未来的 GPL 版本中，将这样的阻止条款也扩展到这些领域，以保障用户的自由。

    最后，每个程序都常常受到软件专利的威胁。国家不应该允许专利去限制开发和使用通用计算机上的软件。但是，在那些实际允许了此类限制的国家，我们希望避免自由的程序因受到专利覆盖而专有化的危险。为阻止这种特殊的危险，GPL 确保专利不会被用于使该程序非自由化。

    以下是关于复制、分发和修改的条款和条件细则。

                            条款与条件

    0. 定义

    “本许可证”指 GNU 通用公共许可证第 3 版。

    “版权”也指适用于其他类型作品的类版权法律，例如适用于半导体掩模的相关法律。

    “本程序”指任何在本许可证下发布的有版权的作品。每位许可获得者都称作“你”。“许可获得者”和“接收者”可以是个人或组织。

    “修改”一份作品指需要版权许可才能进行的复制这份作品或改编这份作品的全部或一部分的行为，这些行为不同于制作完全相同的副本。所产生的作品称为前作的“修改版”，也称“基于”前作的作品。

    “涵盖作品”指未修改的本程序或基于本程序的作品。

    “传播”作品指那些在适用版权法律下，未经许可就会构成直接或间接侵权的行为，不包括在计算机上运行或进行私下修改。传播包括复制、分发（无论修改与否）、向公众公开，以及在某些国家的其他行为。

    “输送”一份作品指任何让他方能够制作或者接收副本的传播行为。仅仅通过计算机网络来与用户交互，但是没有传输副本，则不算输送。

    一个显示“适当的法律声明”的交互式用户界面，应包括一个便捷且显著的视觉特性，它满足以下要求：（1）显示适当的版权声明；且（2）告诉用户本作品没有品质担保（除非提供了品质担保）、许可获得者可以在本许可证约束下输送该作品、及查看本许可证副本的方法。如果该界面提供一个用户命令列表或选项列表，例如菜单，则此列表应有一个显著的选项符合上述规范。

    1. 源代码

    作品的“源代码”指作品首选的便于修改的形式，“目标代码”指作品的任何非源代码形式。

    “标准接口”指标准化组织定义的官方标准中的接口，或针对某种编程语言设定的接口中，此语言的开发者广泛使用的接口。

    可执行作品的“系统库”不涉及程序整体，而是一切符合以下要求的内容：（a）以通常形式和主要部件打包在一起，却并非主要部件的一部分，且（b）仅用于配合主要部件来使作品可以使用，或仅用于实现以源代码形式公开了实现的标准接口。“主要部件”在这里指可执行作品运行依赖的操作系统（如果存在）的必要部件（内核、窗口系统等），或生成该作品所使用的编译器，或运行该作品所使用的目标代码解释器。

    目标代码形式的作品，其“对应源代码”指生成、安装、运行（对于可执行作品而言）目标代码和修改该作品所需的所有源代码，包括控制上述行为的脚本。但是，其中不包括作品的系统库、通用工具、未修改便直接用于进行上述行为却不是该作品一部分的通常可得的自由程序。例如，对应源代码包括配合作品源文件的接口定义文件，以及该作品专门依赖的共享库和动态链接子程序的源代码。这种依赖行为，可能表现为那些子程序与该作品其他部分发生的密切数据通信或控制流。

    对应源代码不必包括那些用户可以通过对应源代码其他部分自动生成的内容。

    源代码形式的作品的对应源代码即其本身。

    2. 基本许可

    通过本许可证授予的一切权利都是对本程序的版权而言的，并且在所述条件都满足时，这些权利不可收回。本许可证明确授权你不受限制地运行本程序的未修改版。涵盖作品的输出，仅当其内容构成一个涵盖作品时，才会为本许可证所约束。本许可证承认版权法赋予你的正当使用或与之等价的权利。

    只要你获得的许可仍有效，你可以无条件地制作、运行和传播涵盖作品，但输送行为有另行约束。如果你向他人输送涵盖作品的唯一目的，是让他们专门为你进行修改或为你提供运行那些作品的工具，并且你遵守了本许可证中关于输送你不占有版权的材料的条款，那么你可以以这种方式输送。那些以此方式替你制作或运行这些涵盖作品的人，必须专门代表你在你的指引和管理下做这些事情，即禁止他们在双方关系之外制作任何你的有版权材料的副本。

    仅当满足下文所述条件时，才允许在其他任何情况下输送。分许可是不允许的，且第 10 条已使分许可没有必要了。

    3. 保护用户的合法权利免受反规避法限制

    在任何响应了 1996 年 12 月 20 日通过的世界知识产权组织版权条约第 11 条所要求的法律，或类似的禁止或限制技术措施规避的法律下，涵盖作品不应该视为有效技术措施的一部分。

    当你输送一份涵盖作品时，你即放弃行使任何法律权利来禁止对技术措施的规避行为，乃至于通过行使本许可证所予权利实现的规避。你即已表明不会企图通过限制用户操作或修改涵盖作品来确保你或第三方的禁止技术措施规避的法定权利。

    4. 输送完整副本

    你可以通过任何媒介输送你接收到的本程序的源代码的完整副本，但要做到：为每一个副本醒目而恰当地发布版权声明；完整保留所有关于本许可证及按第 7 节加入的任何非许可性条款将应用于本代码的声明；完整地保留所有关于不提供品质担保的声明；并随同本程序给所有接收者一份本许可证的副本。

    你可以免费或收费输送每一份副本，也可以提供支持或担保以换取收入。

    5. 输送修改过的源代码版本

    你可以以源代码形式输送基于本程序的作品或用以从本程序生成修改版的改动，除满足第 4 节的条款外，还需要同时满足以下所有条件：

        a）该作品必须带有醒目的声明，说明你修改了它，并给出相应的修改日期。

        b）该作品必须带有醒目的声明，说明其在本许可证及任何通过第 7 节加入的条件下发布。这项要求修正了第 4 节关于“完整保留”的要求。

        c）你必须按照本许可证将该作品整体向获得副本的人授权，本许可证及第 7 节的任何适用的附加条款就此适用于整个作品，及其每一部分，不管打包方式如何。本许可证不允许以其他任何形式授权该作品，但如果你单独受到了这样的许可，则本许可证不否认该许可。

        d）如果该作品有交互式用户界面，则每个交互式用户界面必须显示适当的法律声明。但是，如果本程序有交互式用户界面却不显示适当的法律声明，你的作品也不必如此。
    一个位于存储媒介或分发媒介之中的，由涵盖作品与其他分离或独立的作品组成的联合体，在既不是涵盖作品的自然扩展、也不是为构筑更大的程序而组合的、同时其本身及其产生的版权不会用于限制该联合体的用户被单体作品授予的法律权利时，称为“聚合版”。在聚合版中包含涵盖作品并不会使本许可证影响聚合版的其他部分。

    6. 输送非源代码的形式

    你可以在第 4 节和第 5 节的条款下输送涵盖作品的目标代码形式，前提是你要在本许可证下以如下方式之一输送机器可读的对应源代码：

        a）输送位于或包含于一个物理产品（包括物理分发媒介）中的目标代码时，随之附带一个写入了对应源代码的常用于交换软件的耐用物理媒介。

        b）输送位于或包含于一个物理产品（包括物理分发媒介）中的目标代码时，随之附带一份书面承诺——承诺的有效期至少为三年，且如果你后续仍提供该产品模型的配件或客户服务，则有效期相应延长；承诺的内容为向每一位目标代码的持有者提供以下二者之一：（1）一个常用于交换软件的耐用物理媒介，其中存入了该产品中本许可证涵盖的所有软件的对应源代码，且此项的收费不得超过你通过物理方式进行该输送所需的合理成本，或（2）通过网络服务器免费获得对应源代码的途径。

        c）输送单独的目标代码副本时，随之附带一份提供对应源代码的书面承诺的副本。这种情况只允许偶尔出现且不能盈利，并且仅限在你以第 6 节 b 项的方式收到了目标代码及这样的承诺之时。

        d）以在指定地点提供目标代码获取服务（无论是否收费）的形式输送目标代码时，在同一地点以同样的方式提供同等的对应源代码获取权，并不得额外收费。你不必要求接收者在复制目标代码的同时复制源代码。如果提供复制目标代码的地点为网络服务器，对应源代码可以提供在另一个支持相同复制功能的（由你或者第三方运营的）服务器上，不过你要在目标代码处指出对应源代码的确切路径。不管托管源代码使用了什么服务器，你有义务要确保服务器在需要时持续可用以满足这些要求。

        e）通过点对点传输来输送目标代码时，告知其他对等体目标代码和源代码在何处以第 6 节 d 项的形式向大众免费提供。

    “用户产品”指（1）“消费品”，即用于个人、家庭或日常用途的有形的个人财产，或（2）以家用为目的而设计或销售的物品。在判断一款产品是否为消费品时，应尽量从覆盖范围这一方面来决定，以解决引起争议的情况。就特定用户接收到的特定产品而言，“正常使用”指对此类产品的典型或一般使用，不管该用户的身份，也不管该用户对该产品的实际使用方法，或该用户预期使用该产品的方法，或该产品预期的被用户使用的方法。无论产品是否实质上具有商业上的、工业上的或非面向消费者的用途，它都视为消费品，除非以上用法代表了它唯一的主要使用模式。

    用户产品的“安装信息”，指使用涵盖作品的对应源代码的修改版来将涵盖作品的修改版安装和运行于该用户产品这一过程所需的所有方法、流程、认证密钥或其他信息。这些信息必须足以保证修改过的目标代码不会仅仅因为被修改过而不能或难以继续工作。

    如果你输送一份位于、或伴随着、或尤其用于一个用户产品的目标代码作品，且该输送体现为该用户产品的所有权和使用权永久或在一定时期内转移到了接收者（无论转移形式如何），则根据本节输送的对应源代码必须伴有安装信息。不过，如果你和第三方都没有保留在该用户产品上安装修改后的目标代码的能力（如作品安装在 ROM 上），则这项要求不成立。

    要求提供安装信息并不要求为用户修改或安装的作品，以及其载体产品继续提供支持服务、品质担保或升级。当修改本身对网络运行有实质上的负面影响，或违背了网络通信规则和协议时，可以拒绝其联网。

    根据本节输送的源代码及安装信息，必须使用公共的文件格式（并且存在可用的公开源代码的处理工具），同时不得对解包、读取和复制要求任何密码。

    7. 附加条款

    “附加许可”用于补充本许可证，可在本许可证的一种或多种条件下基于例外情况。只要符合适用法律，应用于本程序整体的附加许可应被视为本许可证的内容。如果附加许可只应用于程序的某部分，则该部分可以在那些许可下单独适用，但本程序整体仍受本许可证管理，且没有附加许可。

    当你输送涵盖作品的副本时，你可以选择性删除来自该副本的或来自该副本任何部分的任何附加许可。（附加许可可以写明在某些情况下要求你修改时删除该许可。）在你为一份涵盖作品添加的材料中，你可以为你拥有或可授予版权的材料增加附加许可。

    尽管本许可证存在其他规定，对于你添加到涵盖作品的材料，你可以（如果你获得该材料版权持有人的授权）以如下条款补充本许可证的条款：

        a）以异于第 15 和第 16 条的方式来拒供品质担保或限制责任；或

        b）要求在该材料中或在包含了该材料的作品所显示的适当的法律声明中，保留特定的合理法律声明或作者贡献信息；或

        c）禁止歪曲材料的来源，或要求合理标记修改版，说明其不是原版；或

        d）限制将该材料的作者或授权人的名字用于宣传目的；或

        e）拒绝在商标法下授予某些商品名、商标或服务标识的使用权；或

        f）要求任何输送该材料（或其修改版）并对接收者提供契约性责任承诺的人，保证这种许诺不会给作者或授权者带来连带责任。

    此外的所有非许可性附加条款都被视作第 10 节所说的“进一步的限制”。如果你接收到的程序或其部分，声称受本许可证约束，却补充了这种进一步的限制条款，你可以去掉它们。如果某许可证文档包含进一步的限制条款，但允许通过本许可证再许可或输送，那你可以为一份涵盖作品添加受那份许可证文档的条款所管理的材料，前提是进一步的限制在再许可或输送时不会生效。

    如果你根据本节向涵盖作品添加了条款，你必须在相关的源文件中声明应用于那些文件的附加条款，或者指出哪里可以找到适用的条款。

    附加条款，不管是许可性的还是非许可性的，可以以独立的书面许可证出现，也可以声明为例外情况，两种做法都可以实现上述要求。

    8. 终止许可

    除非本许可证明确授权，你不得传播或修改涵盖作品。其他任何传播或修改涵盖作品的企图都是无效的，并将自动终止你通过本许可证获得的权利（包括第 11 节第 3 段中授予的一切专利许可）。

    然而，当你不再违反本许可证时，你的许可将从特定版权持有人处以如下方式恢复：(1)暂时恢复，直到版权持有人明确终止你的许可；及(2)永久恢复，如果版权持有人没能在许可终止后 60 天内以合理的方式通知你的违反行为。

    再者，如果你第一次收到了特定版权持有人关于你违反本许可证（对任意作品）的通告，且在收到通知后 30 天内改正了该违反行为，那你可以继续享有此许可。

    当你享有的权利在本节下被中止时，他方已经从你那通过本许可证获得的副本或权利的许可不会因此终止。如果你的权利已被终止且未被永久恢复，你没有资格凭第 10 节重新获得同一材料的授权。

    9. 持有副本无需接受本许可证

    你不必为接收或运行本程序而接受本许可证。类似地，仅仅因为点对点传输来接收副本而引发的对涵盖作品的辅助性传播，并不要求接受本许可证。但是，除本许可证外没有什么可以授权你传播或修改任何涵盖作品。如果你不接受本许可证，这些行为就侵犯了版权。因此，一旦你修改或传播一份涵盖作品，你即表明接受了本许可证。

    10. 对下游接收者的自动授权

    每当你输送一份涵盖作品，其接收者自动获得来自初始授权人的许可，批准你依照本许可证运行、修改和传播该作品。你没有要求第三方遵守本许可证的义务。

    “实体交易”指转移一个组织的控制权或基本全部资产、或拆分一个组织或将组织合并的交易行为。如果实体交易导致一份涵盖作品的传播，则交易中收到作品副本的各方，都将如上一自然段所述，获得前人享有或可以提供的对该作品的任何许可，以及从前人处获得并拥有对应源代码的权利，如果前人享有或可以通过合理的努力获得此源代码。

    你不可以对本许可证所申明或授予的权利的行使施以进一步的限制。例如，你不可以索要授权费或版税，或就行使本许可证所授权利征收其他费用；你也不能发起诉讼（包括交互诉讼和反诉），宣称制作、使用、零售、批发、引进本程序或其部分的行为侵犯了任何专利。

    11. 专利

    “贡献者”指在本许可证下授予本程序或本程序基于的作品的使用权的版权持有人。授权作品称为贡献者的“贡献者版”。

    贡献者的“实质专利权”指该贡献者拥有或掌控的，无论是已获得的还是将获得的全部专利权中，在通过本许可证允许的某种方式来制作、使用或销售其贡献者版作品时可能会侵犯的专利权，但不包括仅在修改该贡献者版时才会侵犯的权利。此项定义中，“掌控”所指包括符合本许可证要求的对专利进行分许可的权利。

    每位贡献者皆就其实质专利权，授予你一份非独占的、全球有效的免版税专利许可，允许你制作、使用、零售、批发、引进，及运行、修改、传播其贡献者版的内容。

    在以下三自然段中，“专利许可”指通过任何方式明确说明的不行使专利权（例如对使用专利的明确许可或不起诉专利侵权的契约）的协议或承诺。对某方“授予”专利许可，指达成这种协议或承诺，不对该方强制执行专利权。

    如果你输送的涵盖作品已知依赖于某专利许可，且该作品的对应源代码并不是任何人都能根据本许可证从公开的网络服务器上或其他地方免费获得，那你必须做到以下之一：（1）以上述方式提供对应源代码；或（2）放弃从该程序的该专利许可中获得利益；或（3）以某种和本许可证相一致的方式将专利许可扩展到下游接收者。“已知依赖于”指你实际上知道若没有专利许可，你在某国家输送涵盖作品的行为，或者接收者在某国家使用涵盖作品的行为，会侵犯一项或多项该国认定的专利，而你有理由相信这些专利是有效的。

    在依照或涉及某一次交易或协定时，如果你输送一份涵盖作品或得到了输送的涵盖作品而构成了传播，并且为该作品的一些接收方授予了专利许可，以使他们可以使用、传播、修改或输送该作品的特定副本，则你授予的专利许可将自动延伸至每一个收到本作品或其修改版的接收者。

    如果某专利许可在其涵盖范围内不包含本许可证专门授予的一项或多项权利，或禁止行使上述权利，或以不行使上述权利为前提，则该专利许可是“歧视性”的。如果你和经营软件分发的第三方商业机构有合作，合作要求你更具涵盖作品的输送范围向其付费，并授予从你这里接收涵盖作品的第三方一份歧视性专利许可，且该专利许可（a）与你输送的涵盖作品副本（或在此基础上制作的副本）有关，或（b）针对且涉及包含了该涵盖作品的产品或联合体，那么你不得输送涵盖作品，除非你参加此项合作的时间或该专利许可的授予时间早于 2007 年 3 月 28 日。

    本许可证的任何部分不应被解释成在排斥或限制任何暗含的授权，或者其他在适用法律下对抗侵权的措施。

    12. 不得抛弃他人的自由

    即便你面临与本许可证条款相冲突的条款（无论来自于法庭要求、协议还是其他地方），你也不能以此为由违背本许可证的条款。如果你不能在输送该涵盖作品的同时满足来自本许可证的要求和其他相关的要求，那么你就不能输送该涵盖作品。例如，当你同意了某些需要你在再输送时向你的输送对象收取版税的条款时，唯一能同时满足这些条款和本许可证要求的做法便是不输送本程序。

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

    尽管本许可证存在其他规定，你有权将任何涵盖作品与通过 GNU Affero 通用公共许可证授权的作品关联或组合成一份联合作品，及输送该联合作品。本许可证对其中的涵盖作品部分仍然有效，但 GNU Affero 通用公共许可证第 13 节的关于网络交互的特别要求适用于整个联合作品。

    14. 本许可证的修订版

    自由软件基金会可能会不定时发布 GNU 通用公共许可证的修订版和/或新版。新版将秉承当前版本的精神，但在细节上会有差异，以应对新的问题或事项。

    每一版都会有不同的版本号。如果本程序指定其使用 GNU 通用公共许可证的特定版本“或任何后续的版本”，你可以选择遵守该版本或者自由软件基金会发布的任何后续版本的条款与条件。如果本程序没有指定 GNU 通用公共许可证的版本，你可以选用自由软件基金会发布的任意版本。

    如果本程序指定一位代理人来决定使用哪个将来的 GNU 通用公共许可证版本，则该代理人通过公开声明采用的版本，永久许可你为本程序使用该版本。

    新的许可证版本可能会给予你额外或不同的许可。但是，任何作者或版权持有人的义务，不会因为你选择新的版本而增加。

    15. 不提供品质担保

    本程序在适用法律范围内不提供品质担保。除非另作书面声明，版权持有人和/或第三方“一概”不提供任何显示或隐式的品质担保，品质担保所指包括而不仅限于有经济价值和适合特定用途的保证。全部风险，如程序的质量和性能问题，皆由你承担。若程序出现缺陷，你将承担所有必要的服务费、修复费和更正费。

    16. 责任范围

    除非受适用法律或书面协议要求，任何版权持有人或任何在本许可证下修改和/或输送本程序的第三方，都不对你的损失负有责任，包括由于使用或者不能使用本程序造成的任何一般的、特殊的、偶发的或必然的损失（包括但不限于数据丢失、数据失真、你或第三方的后续损失、其他程序无法与本程序协同运作的问题），即使版权持有人或第三方受到过要求要对这样的损失负责。

    17. 第 15 节和第 16 节的解释

    如果上述不提供品质担保的声明和责任范围声明不为地方法律所支持，复审法庭应采用最接近于完全放弃本程序相关民事责任的地方法律，除非本程序附带收费的品质担保或责任许诺。

                            条款和条件至此结束

            如何将上述条款应用到你的新程序

    如果你开发了一个新程序，并希望它能最大限度地为公众所使用，最好的办法是使其成为自由软件，使每个人都能通过上述条款对其再分发及修改。

    为此，请为程序附上以下声明。最安全的做法是将其附在每份源文件的开头，以便于最有效地传递免责信息；且每个文件至少应包含一行“版权”声明并告知许可证全文的位置。

        <用一行来标明程序名及其作用。>
        版权所有 (C) <年份> <作者名称>

        本程序为自由软件：在自由软件基金会发布的 GNU 通用公共许可证的约束下，
        你可以对其进行再分发及修改。许可证版本为第三版或（你可选的）后续版本。

        我们希望发布的这款程序有用，但其不带任何担保；甚至不默认保证它有经济
        价值和适合特定用途。详情参见 GNU 通用公共许可证。

        你理当已收到一份 GNU 通用公共许可证的副本。如果你没有收到它，请查阅
        <https://www.gnu.org/licenses/>。

同时提供你的电子及书面邮件联系方式。

    如果该程序是在终端交互式操作的，则让它在交互模式开始时输出类似下面的一段声明：

        <程序名> 版权所有 (C) <年份> <作者名称>
        本程序不提供任何品质担保，输入 'show w' 可查看详情。
        本程序是自由软件，欢迎你在满足一定条件后对其再发布；
        输入 'show c' 可查看详情。

例子中的命令 'show w' 和 'show c' 应该用于显示 GNU 通用公共许可证相应的部分。当然，你也可以为程序选用其他命令，对图形界面，你可以使用“关于”提示框。

    如果你之上存在雇主（你是程序员）或校方，你还应当让他们在必要时为此程序签署“放弃版权声明”。欲知这方面的详情，以及如何应用和遵守 GNU GPL，请参见 <https://www.gnu.org/licenses/>。

    本 GNU 通用公共许可证不允许把你的程序并入专有程序。如果你的程序是一个子程序库，你可能会认为允许它被专有应用程序链接会使之更有用。如果你想允许这种行为的话，请使用 GNU 宽通用公共许可证。但在此之前，请先阅读 <https://www.gnu.org/philosophy/why-not-lgpl.html>。