30.1. GNU通用公共许可证¶
第二版,1991年6月 版权所有 © 1989, 1991 自由软件基金会 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
允许所有人复制和分发本许可证文档的原始副本,但禁止对其进行修改。
30.1.1. 序言¶
大多数软件许可证的设计目的是剥夺您分享和修改软件的自由。相反,GNU通用公共许可证旨在保障您分享和修改自由软件的权利——确保软件对所有用户都是自由的。本通用公共许可证适用于自由软件基金会的大多数软件,以及其他作者承诺使用该许可证的任何程序。(自由软件基金会的其他一些软件受GNU宽通用公共许可证保护。)您也可以将本许可证应用于您的程序。
当我们谈论自由软件时,我们指的是自由,而非价格。我们的通用公共许可证旨在确保您拥有分发自由软件副本的自由(并且可以为此服务收费,如果您愿意),您可以获得源代码或根据需要获取它,您可以修改软件或在新的自由程序中使用其部分代码;并且您知道您可以做这些事情。
为了保护您的权利,我们需要做出限制,禁止任何人否认您的这些权利或要求您放弃这些权利。如果您分发软件的副本或对其进行修改,这些限制将转化为您的某些责任。
例如,如果您分发此类程序的副本,无论是免费还是收费,您必须给予接收者与您相同的权利。您必须确保他们也能获得或获取源代码。并且您必须向他们展示这些条款,以便他们了解自己的权利。
我们通过两个步骤保护您的权利:(1) 对软件进行版权声明,(2) 向您提供本许可证,授予您合法复制、分发和/或修改软件的权利。
此外,为了每位作者和我们自己的保护,我们希望确保每个人都明白此自由软件没有任何担保。如果软件被他人修改并传播,我们希望其接收者知道他们所拥有的并非原始版本,因此由他人引入的任何问题不会影响原始作者的声誉。
最后,任何自由软件都不断受到软件专利的威胁。我们希望避免自由软件的再分发者单独获得专利许可的风险,从而使程序成为专有软件。为防止这种情况,我们明确表示,任何专利必须允许所有人自由使用,否则不得许可。
以下是复制、分发和修改的具体条款和条件。
30.1.2. 复制、分发和修改的条款与条件¶
0. 本许可证适用于任何包含版权声明且声明可根据本通用公共许可证分发的程序或其他作品。下文的“程序”指任何此类程序或作品,“基于程序的作品”指程序或在版权法下的任何衍生作品:即包含程序或其部分内容的作品,无论是原始形式还是经过修改和/或翻译成其他语言的形式。(在下文中,“修改”一词包括翻译但不限于此。)每个被许可人均称为“您”。
除复制、分发和修改外的活动不受本许可证约束;它们超出了本许可证的范围。运行程序的行为不受限制,程序的输出仅在其内容构成基于程序的作品时才受本许可证约束(与通过运行程序生成无关)。这取决于程序的具体功能。
1. 您可以在收到程序的源代码后,以任何媒介复制和分发其原始副本,前提是您在每个副本上显著且适当地发布适当的版权声明和免责声明;保留所有提及本许可证和无任何担保的声明;并随程序向其他接收者提供本许可证的副本。
您可以对实际传输副本的行为收取费用,也可以选择提供担保以换取费用。
2. 您可以修改程序或其任何部分的副本,从而形成基于程序的作品,并根据上述第1条的条款复制和分发此类修改或作品,前提是您同时满足以下所有条件:
a) 您必须使修改后的文件带有明显的声明,说明您更改了文件以及更改的日期。
b) 您必须使您分发或发布的任何作品(全部或部分包含或派生自程序或其任何部分)作为一个整体,根据本许可证的条款免费许可给所有第三方。
c) 如果修改后的程序在运行时通常以交互方式读取命令,您必须使其在开始以最常见的交互方式运行时,打印或显示包含适当版权声明和无担保声明(或说明您提供担保)的公告,并告知用户可以根据这些条件重新分发程序,以及如何查看本许可证的副本。(例外情况:如果程序本身是交互式的但不通常打印此类公告,则基于程序的作品无需打印公告。)
这些要求适用于修改后的作品整体。如果该作品的可识别部分并非派生自程序,并且可以合理地视为独立和单独的作品,则本许可证及其条款在您将它们作为单独作品分发时不适用于这些部分。但当您将这些部分作为基于程序的整体作品的一部分分发时,整体的分发必须遵循本许可证的条款,其许可范围延伸至整个作品,从而适用于每个部分,无论其作者是谁。
因此,本条款的目的并非主张权利或质疑您对完全由您创作的作品的权利;而是行使控制基于程序的衍生作品或集体作品分发的权利。
此外,将另一作品与程序(或基于程序的作品)简单地聚集在存储或分发媒介上,不会使该作品受本许可证约束。
3. 您可以根据上述第1条和第2条的条款,以目标代码或可执行形式复制和分发程序(或其衍生作品),前提是您同时满足以下条件之一:
a) 随附完整的机器可读源代码,这些源代码必须根据上述第1条和第2条的条款,在通常用于软件交换的媒介上分发;或,
b) 随附书面报价,有效期至少三年,以不超过您实际执行源代码分发的成本向任何第三方提供完整的机器可读源代码副本,这些源代码必须根据上述第1条和第2条的条款,在通常用于软件交换的媒介上分发;或,
c) 随附您收到的关于分发对应源代码的报价信息。(此选项仅允许用于非商业分发,并且仅当您以目标代码或可执行形式收到程序时,且符合上述b款的规定。)
作品的源代码指对其进行修改的首选形式。对于可执行作品,完整的源代码包括其包含的所有模块的源代码,以及相关的接口定义文件,以及用于控制可执行文件编译和安装的脚本。但作为特殊例外,分发的源代码无需包含通常随操作系统主要组件(如编译器、内核等)一起分发的任何内容(无论是源代码还是二进制形式),除非该组件本身随可执行文件一起分发。
如果通过提供从指定位置复制目标代码或可执行代码的方式进行分发,则提供从同一位置复制源代码的同等访问权限视为源代码的分发,即使第三方无需强制随目标代码一起复制源代码。
4. 除非本许可证明确允许,否则您不得复制、修改、再许可或分发程序。任何试图以其他方式复制、修改、再许可或分发程序的行为均无效,并将自动终止您在本许可证下的权利。然而,从您处根据本许可证获得副本或权利的各方,只要他们完全遵守规定,其许可不会被终止。
5. 您无需接受本许可证,因为您尚未签署它。然而,没有其他任何授权允许您修改或分发程序或其衍生作品。如果您不接受本许可证,这些行为在法律上是禁止的。因此,通过修改或分发程序(或任何基于程序的作品),您表明您接受本许可证及其所有关于复制、分发或修改程序或基于程序的作品的条款和条件。
6. 每次您重新分发程序(或任何基于程序的作品)时,接收者自动从原始许可方获得许可,可根据这些条款和条件复制、分发或修改程序。您不得对接收者行使此处授予的权利施加任何进一步的限制。您无需对第三方遵守本许可证负责。
7. 如果由于法院判决、专利侵权指控或任何其他原因(不限于专利问题),对您施加了与本许可证条件相冲突的条件(无论是通过法院命令、协议或其他方式),这些条件不能免除您对本许可证条件的遵守。如果您无法分发程序以同时满足本许可证和其他相关义务的要求,那么您可能完全不能分发程序。例如,如果专利许可不允许所有直接或间接通过您获得副本的人免版税重新分发程序,那么您唯一能同时满足专利许可和本许可证的方法是彻底避免分发程序。
如果本条款的任何部分在特定情况下被视为无效或不可执行,其余部分仍适用,并且本条款整体适用于其他情况。
本条款的目的并非诱使您侵犯任何专利或其他财产权声明,或质疑此类声明的有效性;本条款的唯一目的是保护自由软件分发系统的完整性,这是通过公共许可实践实现的。许多人依赖该系统的持续应用,为通过该系统分发的广泛软件做出了慷慨贡献;作者/捐赠者有权决定是否愿意通过其他系统分发软件,被许可人不能强加这一选择。
本条款旨在彻底阐明本许可证其余部分可能带来的后果。
8. 如果由于专利或版权接口的原因,程序在某些国家的分发和/或使用受到限制,将程序置于本许可证下的原始版权持有人可以添加明确的地理分发限制,排除这些国家,从而仅允许在未被排除的国家内或之间进行分发。在这种情况下,本许可证将包含该限制,如同其写入本许可证正文。
9. 自由软件基金会可能不时发布通用公共许可证的修订版和/或新版本。此类新版本在精神上与当前版本相似,但可能在细节上有所不同,以解决新问题或关注点。
每个版本都有一个唯一的版本号。如果程序指定适用于它的本许可证版本号以及“任何后续版本”,您可以选择遵循该版本或自由软件基金会发布的任何后续版本的条款和条件。如果程序未指定本许可证的版本号,您可以选择自由软件基金会发布的任何版本。
10. 如果您希望将程序的部分内容合并到分发条件不同的其他自由程序中,请写信向作者请求许可。对于自由软件基金会拥有版权的软件,请写信给自由软件基金会;我们有时会为此做出例外。我们的决定将基于两个目标:保护我们自由软件的所有衍生作品的自由状态,以及促进软件的共享和重用。
30.1.3. 免责声明¶
11. 由于程序是免费许可的,在适用法律允许的范围内,程序不提供任何担保。除非另有书面声明,版权持有人和/或其他方按“原样”提供程序,不附带任何明示或默示的担保,包括但不限于对适销性和特定用途适用性的默示担保。关于程序质量和性能的全部风险由您承担。如果程序被证明存在缺陷,您应承担所有必要的服务、维修或更正费用。
12. 除非适用法律要求或书面同意,任何版权持有人或任何其他可能根据上述许可修改和/或重新分发程序的方,对您因使用或无法使用程序而导致的任何损害(包括但不限于数据丢失或数据不准确、您或第三方的损失或程序无法与其他程序配合运行的故障)概不负责,即使此类持有人或其他方已被告知此类损害的可能性。
条款和条件结束
30.1.4. 如何将这些条款应用于您的新程序¶
如果您开发了一个新程序,并希望它尽可能对公众有用,最好的方式是将其设为自由软件,使每个人都可以根据这些条款重新分发和修改。
为此,请将以下声明附加到程序中。最安全的做法是将它们附加到每个源文件的开头,以最有效地传达免责声明;每个文件至少应包含“版权”行和指向完整声明的位置。
<一行说明程序的名称和简要功能。> 版权所有 (C) <年份> <作者姓名>
本程序是自由软件;您可以自由地重新分发和/或修改它,根据自由软件基金会发布的GNU通用公共许可证的条款;许可证版本2,或(根据您的选择)任何后续版本。
本程序的分发是希望它有用,但没有任何担保;甚至没有适销性或特定用途适用性的默示担保。详情请参阅GNU通用公共许可证。
您应该已经收到GNU通用公共许可证的副本;如果没有,请写信给自由软件基金会,地址: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA。
同时提供如何通过电子和纸质邮件联系您的信息。
如果程序是交互式的,使其在交互模式下启动时输出类似以下的简短声明:
Gnomovision版本69,版权所有 (C) 年份 作者姓名 Gnomovision不提供任何担保;输入`show w'查看详情。 这是自由软件,欢迎您在特定条件下重新分发;输入`show c'查看详情。
假设的命令`show w`和`show c`应显示通用公共许可证的相应部分。当然,您使用的命令可以不同于`show w'和`show c`;它们可以是鼠标点击或菜单项——任何适合您程序的方式。
如果必要,您还应让您的雇主(如果您是程序员)或学校签署程序的“版权免责声明”。以下是示例;请更改名称:
Yoyodyne公司特此声明对James Hacker编写的程序`Gnomovision'(用于编译器)不享有任何版权利益。
<Ty Coon的签名>, 1989年4月1日 Ty Coon, 副总裁
本通用公共许可证不允许将您的程序合并到专有程序中。如果您的程序是一个子程序库,您可能认为允许专有应用程序链接到库更有用。如果您希望这样做,请使用GNU宽通用公共许可证而非本许可证。