GNU 通用公共许可证
第 3 版,2007 年 6 月 29 日
版权所有 © 2007 自由软件基金会。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 节规定再授权是不必要的。
3. 保护用户免受反规避法侵害的合法权利。
任何涵盖作品均不得根据任何履行 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条的解释。
如果上述免责声明和责任限制根据其条款不能产生当地法律效力,则审查法院应适用最接近于绝对放弃与本程序有关的所有民事责任的当地法律,除非本程序的副本附带有保证或责任承担,且需支付一定费用。
条款和条件结束
如何将这些术语应用于你的新程序
如果您开发了一个新程序,并且希望它能最大限度地为公众所用,那么实现这一目标的最佳方式就是使其成为免费软件,每个人都可以根据这些条款重新分发和更改它。
为此,请将以下声明附加到程序中。最安全的做法是将它们附加到每个源文件的开头,以最有效地说明免责条款;并且每个文件至少应有“版权”行和指向完整声明所在位置的指针。
版权(C)本程序是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证条款重新分发和/或修改它,无论是许可证第 3 版,还是(根据您的选择)任何更高版本。本程序的分发旨在希望它有用,但不提供任何担保;甚至没有适销性或特定用途适用性的默示担保。有关更多详细信息,请参阅 GNU 通用公共许可证。您应该已随本程序收到一份 GNU 通用公共许可证副本。如果没有,请参阅。
还添加有关如何通过电子邮件和纸质邮件联系您的信息。
如果程序确实进行终端交互,则让它在以交互模式启动时输出如下简短通知:
版权(C)本程序绝对不附带任何保证;有关详细信息,请键入“show w”。这是免费软件,欢迎您在特定条件下重新分发它;有关详细信息,请键入“show c”。
假设的命令“show w”和“show c”应该显示通用公共许可证的相应部分。当然,您的程序的命令可能有所不同;对于 GUI 界面,您可以使用“关于框”。
如果有必要,你还应该让你的雇主(如果你是程序员)或学校(如果有的话)为该程序签署一份“版权免责声明”。有关这方面的更多信息以及如何应用和遵守 GNU GPL,请参阅https://www.gnu.org/licenses/>。
GNU 通用公共许可证不允许将您的程序合并到专有程序中。如果您的程序是子程序库,您可能认为允许将专有应用程序与库链接更有用。如果这是您想要做的,请使用 GNU 宽通用公共许可证而不是此许可证。但首先,请阅读https://www.gnu.org/licenses/why-not-lgpl.html>。