GNU Affero 通用公共许可证

版本 3,2007年11月19日

版权所有 © 2007 自由软件基金会,Inc. https://fsf.org/
任何人都可以复制并分发此许可证文档的原文副本,但不得修改内容。

前言

GNU Affero 通用公共许可证是一个自由的、带有版权保护的许可证,适用于软件和其他类型的作品,特别设计用于确保在网络服务器软件的情况下与社区的合作。

大多数软件和其他实用作品的许可证设计用于剥夺您共享和修改作品的自由。相比之下,我们的通用公共许可证旨在确保您有自由共享和修改所有版本的程序——确保它对所有用户始终是自由软件。

当我们谈论自由软件时,我们指的是自由,而非价格。我们的通用公共许可证旨在确保您有自由分发自由软件的副本(如果愿意,您可以收取费用),您可以接收源代码或在需要时获取它,您可以修改软件或将其部分用于新的自由程序,并且您知道自己可以这样做。

使用我们通用公共许可证的开发者通过两步保护您的权利:(1)声明软件的版权,和(2)向您提供该许可证,赋予您合法的复制、分发和/或修改软件的权限。

保护所有用户自由的一个附加好处是,如果程序的不同版本得到了广泛使用,所做的改进将变得可供其他开发者采纳。许多自由软件的开发者因此获得了合作的鼓励与支持。然而,在网络服务器上使用的软件的情况下,这一结果可能不会实现。GNU 通用公共许可证允许您创建修改版本并将其公开提供在服务器上,而无需将源代码发布给公众。

GNU Affero 通用公共许可证特别设计用于确保,在这种情况下,修改后的源代码可以提供给社区。它要求网络服务器的操作员向该服务器的用户提供正在运行的修改版本的源代码。因此,修改版本的公共使用(在公开可访问的服务器上)使公众可以访问该修改版本的源代码。

一种较早的许可证,称为 Affero 通用公共许可证,由 Affero 发布,旨在实现类似的目标。这是一个不同的许可证,不是 Affero GPL 的版本,但 Affero 已发布了一个新的 Affero GPL 版本,允许在此许可证下重新授权。

以下是复制、分发和修改的具体条款和条件。

条款和条件

0. 定义

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

“版权”还包括适用于其他类型作品的类似版权法律,如半导体掩模。

“程序”指任何根据本许可证授权的、可以获得版权保护的作品。每个许可证持有者被称为“你”。“许可证持有者”和“接收者”可以是个人或组织。

“修改”作品是指以需要版权许可的方式复制或改编作品的全部或部分,除了制作一个完全相同的副本外。修改后的作品被称为“修改版本”或“基于”原作品的作品。

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

“传播”作品是指在没有许可的情况下,进行任何可能使你直接或间接因侵权而负有责任的行为,除非是在计算机上执行作品或修改私人副本。传播包括复制、分发(无论是否修改)、公开提供以及某些国家的其他活动。

“传送”作品是指使他人能够制作或接收副本的任何传播行为。仅通过计算机网络与用户交互,并不涉及副本的传输,不算作传送。

交互式用户界面展示“适当的法律通知”,如果界面包含一个便捷且显眼的功能,显示(1)适当的版权声明,(2)告知用户作品不提供任何保证(除非有规定提供保证),许可证持有者可以根据本许可证传送作品,并说明如何查看本许可证的副本。如果界面呈现用户命令或选项的列表,如菜单,列表中的显著项目符合此标准。

1. 源代码

“源代码”指的是修改作品时使用的首选格式。“目标代码”指作品的任何非源代码形式。

“标准接口”指的是由公认的标准组织定义的官方标准接口,或在某一特定编程语言中广泛使用的接口。

“可执行作品的系统库”包括在正常包装一个主要组件时包含的任何东西,但不是该主要组件的一部分,并且仅用于使作品与该主要组件一起使用,或用于实现一个已公开实现的标准接口。“主要组件”指的是特定操作系统(如果有的话)的主要组成部分(内核、窗口系统等),或用于生成作品的编译器,或用于运行作品的目标代码解释器。

“对应源代码”指生成、安装以及(对于可执行作品)运行目标代码并修改作品所需的所有源代码,包括控制这些活动的脚本。它不包括作品的系统库、通用工具或一般免费程序,这些程序在执行这些活动时以未修改的形式使用,但不构成作品的一部分。例如,包含与作品源文件关联的接口定义文件,以及作品特定要求的共享库和动态链接子程序的源代码。

对应源代码不需要包括用户可以从对应源代码的其他部分自动重新生成的内容。

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

2. 基本权限

根据本许可证授予的所有权利在程序的版权期内有效,并在满足规定条件时不可撤销。本许可证明确确认你对运行未修改程序的无限制许可。只有当运行覆盖作品的输出其内容构成覆盖作品时,输出才会受到本许可证的保护。本许可证承认你在版权法下的合理使用或其他类似权利。

你可以制作、运行和传播未传送的覆盖作品,前提是你的许可证仍然有效。你可以将覆盖作品传送给他人,唯一目的是让他们为你做修改,或为你提供运行这些作品的设施,但前提是你在传送所有不受你版权控制的材料时,遵守本许可证的条款。为你制作或运行覆盖作品的人必须仅代表你、在你的指导和控制下进行,并且必须有禁止他们在与你的关系以外复制你版权材料的条款。

在其他情况下的传送仅在以下条件下允许。子许可是不允许的;第10节使其变得不必要。

3. 保护用户合法权利免受反规避法律影响

任何覆盖作品都不应被视为任何适用法律下的有效技术措施的一部分,这些法律履行1996年12月20日通过的WIPO版权条约第11条的义务,或类似的禁止或限制规避此类措施的法律。

当你传送覆盖作品时,你放弃禁止规避技术措施的法律权力,前提是此类规避是通过行使根据本许可证的权利来进行的,并且你声明没有意图通过限制操作或修改作品的方式来执行,针对作品的用户,限制你或第三方禁止规避技术措施的法律权利。

4. 传送原文副本

你可以在任何介质上传送你收到的程序源代码的原文副本,前提是你显著而恰当地在每个副本上发布适当的版权声明;保持完整所有说明本许可证适用以及第7节添加的非许可条款的通知;保持完整所有没有任何保证的通知;并且将本许可证的副本随程序一并提供给所有接收者。

你可以为每个传送的副本收取任何价格或不收费,也可以为提供支持或保修服务收费。

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

你可以根据第4节的条款,将基于程序的作品或从程序修改得到的作品以源代码形式传送,前提是你还必须满足以下所有条件:

a) 作品必须显著注明你已对其进行修改,并给出相关日期。
b) 作品必须显著注明它是根据本许可证发布的,并注明第7节中附加的任何条件。此要求修改了第4节中的“保持完整所有通知”的要求。
c) 你必须将整个作品作为一个整体根据本许可证授权给任何获得副本的人。这样,本许可证将适用于整个作品及其所有部分,不论它们如何打包。
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通用公共许可证一起使用

尽管本许可的其他条款可能有所不同,如果您修改了程序,则您的修改版本必须显著地向通过计算机网络与之远程互动的所有用户(如果您的版本支持这种互动)提供获取您版本的对应源代码的机会,方法是通过某种标准或通常的方式从网络服务器提供访问,无偿提供该源代码以方便软件复制。这个对应源代码应包括根据以下段落整合的任何受版本3 GNU通用公共许可证覆盖的作品的对应源代码。

尽管本许可的其他条款可能有所不同,您有权将任何受本许可覆盖的作品与根据版本3的GNU通用公共许可证许可的作品链接或组合成一个单一的组合作品,并传播这个组合作品。本许可的条款将继续适用于作为受覆盖作品的部分,但与其组合的作品将继续受版本3的GNU通用公共许可证约束。

14. 本许可的修订版本

自由软件基金会可能会不时发布GNU Affero通用公共许可证的修订版和/或新版本。

这些新版本在精神上将与当前版本类似,但可能在细节上有所不同,以应对新的问题或关注点。

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

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

后续的许可证版本可能会为您提供额外的或不同的权限。然而,选择遵循后续版本不会对任何作者或版权持有者施加额外的义务。

15. 免责声明

程序不提供任何形式的担保,在适用法律允许的范围内,除非以书面形式另有说明,版权持有者和/或其他各方以“原样”方式提供程序,不提供任何形式的担保,无论是明示或暗示的,包括但不限于对适销性和特定用途适用性的暗示担保。程序的质量和性能的全部风险由您承担。

如果程序存在缺陷,您承担所有必要的服务、修理或更正费用。

16. 责任限制

在任何情况下,除非适用法律要求或书面同意,否则任何版权持有者或任何其他根据上述许可修改和/或传播程序的方,对您不承担任何损害赔偿责任,包括因使用或无法使用程序而产生的任何一般性、特殊性、附带性或后果性损害(包括但不限于数据丢失、数据失真、您或第三方遭受的损失,或程序未能与任何其他程序兼容运行),即使该持有者或其他方已被告知此类损害的可能性。

  1. 第15和16条的解释
    如果上述的免责声明和责任限制无法根据其条款在当地法律中生效,则审查法院应适用最接近绝对放弃与程序相关的所有民事责任的当地法律,除非在返回费用的交换条件下提供了担保或责任假设。

条款和条件的结束


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

如果您开发了一个新程序,并且希望它能最大限度地为公众所用,最好的方式是将其作为自由软件,允许每个人在这些条款下重新分发和修改它。

为此,您需要将以下通知附加到程序中。最安全的方法是在每个源文件的开头附加这些通知,以最有效地声明免责声明;每个文件至少应该包含“版权”行,并指向完整通知的位置。

<简要说明程序的名称和功能。>
版权所有 (C) <年份>  <作者姓名>

该程序是自由软件:您可以在自由软件基金会发布的GNU Affero通用公共许可证的条款下重新分发和/或修改它,版本为许可证的第3版,或(根据您的选择)任何更高版本。

该程序是以希望它能有所帮助的目的发布的,但不提供任何形式的担保;甚至没有关于适销性或适合特定用途的默示担保。详细信息请参阅GNU Affero通用公共许可证。

您应该已收到一份GNU Affero通用公共许可证的副本。如果没有,请参见<https://www.gnu.org/licenses/>。

此外,您还应提供有关如何通过电子邮件和纸质邮件与您联系的信息。

如果您的软件能够通过计算机网络与用户进行交互,您还应确保它提供一种方式让用户获得源代码。例如,如果您的程序是一个Web应用,它的界面可以显示一个“源代码”链接,指向代码的档案。您可以有多种方式提供源代码,不同的程序适合不同的解决方案;具体要求请参阅第13条。

如果您是程序员工作在公司或学校,您还应该确保您的雇主(如果适用)或学校签署“版权免责声明”,如有必要。有关更多信息以及如何应用和遵循GNU AGPL,请参见https://www.gnu.org/licenses/

参考资料

https://www.gnu.org/licenses/agpl-3.0.html