GNU通用公共许可协议

第2版,1991年6月

版权所有(C)1989,1991 自由软件基金会。
美国马萨诸塞州坎布里奇市675大街 邮编:02139
允许每个人复制和发布本许可协议文件的完整副本,但不允许进行任何修改。

前言

大多数软件许可协议是设计用以剥夺您分享与修改软件的自由。相比之下,GNU通用公共许可协议力图保证您分享与修改自由软件的自由——确保软件对所有的用户都是自由的。通用公共许可协议适用于大多数自由软件基金会的软件,以及任何作者承诺使用本许可协议的软件。(自由软件基金会的其他一些软件受GNU库通用许可协议的保护。)您也可以将其应用至您编写的程序。

当我们谈及自由软件时,我们所指的是自由,而非价格。我们的通用公共许可协议设计用以确保您有发布自由软件副本的自由(您可以对此服务收费),确保您能收到源代码或者在您需要时能得到它,确保您能修改软件或将它的一部分用于新的自由软件;并且确保您了解有权做上述的事情。

为了保障您的权利,我们需要作出限制,即禁止任何人否认您上述的权利,或要求您放弃这些权利。如果您发布此软件的副本,或者修改此软件,这些限制就转化成您的某种责任。

例如,如果您发布此类程序的副本,无论是免费还是收费,必须将您所享有的一切权利赋予接受者。您还必须确保他们能收到或得到源代码。而且您必须向他们展示这些条款的内容,使他们了解所享有的权利。

我们采取两项措施来保护您的权利:
(1)以版权保护软件,以及,
(2)向您提供本许可协议,使您拥有复制、发布及/或修改此软件的法律许可。

同时,为了保护作者与我们自己,我们希望确定每个人都明白,自由软件没有质量担保。如果软件被他人修改并加以发布,我们希望接受者明白,他们所得到的并非原软件,因此由其他人所引入的任何问题不应影响原作者的声誉。

最后,任何自由软件都会不断地受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可协议,从事实上使该程序私有化。为防止上述情况发生,我们在此明确声明,任何专利都必须许可每个人的自由使用,或者根本不予许可。

以下是有关复制、发布及修改的详细条款及条件。

GNU通用公共许可协议
复制、发布与修改的条款与条件

  • 凡版权人在其程序或其它著作中声明,该程序或著作在通用公共许可协议条款下发布,本许可协议对其均适用。以下所称的“程序”,系指任何一种此类程序或著作;“基于程序的著作”,系指程序或任何基于版权法产生的衍生著作:换言之系指包含程序全部或一部的著作,不论完整还是经过修改,以及(或)翻译成其他语言(以下“修改”一词包括但不限于翻译)。被许可协议人称为“您”。

    本许可协议不适用于复制、发布以及修改以外的行为;这些行为不在本许可协议范围内。运行程序的行为并不受限制,而程序的输出只有在其内容构成基于程序生成的著作(与运行了程序无关)时,才适用本许可协议。

    至于程序的输出内容是否构成程序的衍生著作,取决于程序的具体用途。

  • 您可以通过任何媒介对接受的程序源代码进行复制并发布其完整副本,只要符合以下条件:以显著及适当的方式在每一份副本中发布适当的版权声明及免责声明;维持所有有关本许可协议的声明以及免责声明的原貌;并将本许可协议的副本与程序一并交予其他任一位程序接受者。

    您可对副本的物理传输行为收取一定费用,您也可以选择提供质量担保以换取费用。

  • 您可以修改全部或部分程序的若干副本,以此形成基于程序的著作,并依前述第一条规定,复制和发布此修改过的程序或著作,只要符合以下要件:

    • 您必须在所修改的文件上附加显著的标示,声明您所做的修改,以及修改日期。
    • 您必须就您所发布或发行的著作,其全部或部分包含或衍生于程序或程序的一部分,基于许可协议条款被完全授予许可,并且不收取费用。
    • 若经过修改的程序运行时通常以交互方式读取命令,您必须在最普遍的交互运行方式开始时,打印或显示以下声明:适当的版权公告以及免责声明(或者声明您提供质量担保)、用户可以依这些条件再发布此程序,以及告知用户如何浏览本许可协议的副本。(例外:若程序本身以交互方式运行,但通常不打印此类声明,则您基于此程序的著作亦无需打印该声明。)

    这些要求对修改过的著作是整体适用的。如著作中可识别的一部分并非衍生自程序,并且可以合理地认为是独立的、单独的著作,则当您将其作为单独著作发布时,本许可协议及其条款不适用。然而当您将上述部分作为基于程序著作的一部分发布时,整个著作的发布必须符合本许可协议条款的规定,对其他许可协议持有人的许可范围将扩大到整个著作、及著作的每个部分,不管此部分的作者是谁。

    因此,本条规定的意图不在于主张或剥夺您对于完全由您所完成著作的权利;应该说,本条规定意在行使对基于程序的衍生著作或著作集合发布行为的控制权。

    此外,非基于程序的其他著作与程序(或基于程序的著作)在同一存储或发布媒介单纯的汇总,并不会使该著作因此受本许可协议条款约束。

  • 您可以依前述第1、2条规定,复制与发布程序(或第2条所述基于程序的著作)的目标码或可执行程序,只要符合以下条件:

    • 在通常用作软件交换的媒介上,附上完整、相对应的机器可读源代码。这些源代码的发布应符合上面第1、2条规定。或者,
    • 在通常用作软件交换的媒介上,与目标码一起,附有给第三方提供相应的机器可读源代码的书面报价。有效期不少于3年,费用不超过完成源程序发布的实际成本。源代码的发布应符合上面第1、2条规定。或者,
    • 和目标码一起,附有您接受的发布源代码的报价信息。(这一条款仅适用于非商业性发布,而且您只收到程序的目标码或可执行代码和按子条款b要求提供的报价)。

    著作的源代码,是指对著作进行修改时优先择取的形式。对于一个可执行的著作而言,完整的源代码是指著作所包含所有模块的全部源代码,加上相关接口的定义文档,还加上用以控制该著作编译与安装的脚本。然而,作为特例,发布的源代码不需要包括通常与可执行文件所运行的操作系统的主要组件(编译器、内核等)一起发布的内容(源代码或二进制格式),除非这些组件本身附有源代码。

    若采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问以复制源代码等同源代码的发布,即使第三方不强求与目标码一起复制源代码。

  • 除本许可协议所明示的方式外,您不得对程序加以复制、修改、再许可或发布。任何试图以其他方式进行复制、修改、再许可或者发布程序的行为均为无效,并且将自动终止您基于本许可协议所享有的权利。然而,依本许可协议规定自您手中接受副本或权利之任一方,只要完全遵守本许可协议规定,其所获得的许可协议并不会因此终止。

  • 因为您并未在本许可协议上签名,所以您可以不接受本许可协议。然而,除此之外您别无其它方式获得许可来修改或发布此类程序或其衍生著作。若您不接受本许可协议,则这些行为在法律上都是被禁止的。因此,一旦您对程序(或任何基于程序的著作)进行修改或发布,即表示您接受本许可协议,以及所有关于复制、发布或修改程序或基于程序著作的条款与条件。

  • 每次您再发布程序(或任何基于程序的著作)时,接受者即自动获得原许可协议人所授予的依本许可协议条款与条件复制、发布或修改程序的许可。您不得就本许可协议所赋予接受者行使的权利附加任何进一步的限制。您无须对第三人遵从本许可协议负责。

  • 如作为法院判决、专利侵权主张或者其他任何理由(不限于专利争议)的结果,使得加诸于您的条件(无论是由法院命令、协议或其他方式造成)与本许可协议规定之条件有所冲突,它们并不能免除您遵从本许可协议的义务。若您无法同时符合依本许可协议所产生之义务及其他相关义务而进行发布,那么其结果便是您不得发布该程序。例如,若专利许可协议不允许直接或间接通过您而取得副本之人以免付权利金的方式再发布该程序时,您唯一能同时满足该专利许可协议及本许可协议的方法是彻底避免进行该程序的发布。

    若本条任一部分在特殊情况下被认定无效或无法执行时,本条其余部分仍应适用,且本条全部于其他情况下仍应适用。

    本条的目的并不在诱使您侵害专利或其他财产权的权利主张,或剥夺此类主张的有效性;本条的核心目的是在保障藉由公共许可协议惯例所实现的自由软件发布系统的完整性。许多人一贯信赖该系统的应用程序,因而对经由此系统发布的大量软件做出了相当多的贡献;作者或贡献者有权决定他或她是否希望经由其他的系统发布软件,而被许可协议人则无该种选择权。

    本条的目的在于明确说明许可协议其余部分可能产生的结果。

  • 若因为专利或享有版权保护的接口问题,而使得程序的发布及/或使用在某些国家受限时,则将程序置于本许可协议之下的原版权人可以增列明确的发布地区限制条款,将此类国家排除在外,使发布的许可仅限在未受排除的国家。在该等情况下,许可协议包含的限制条款和许可协议正文具有同等效力。

  • 自由软件基金会可能随时修订及/或更新通用公共许可协议。新版本在核心思想上与当前版本基本相同,但因新的问题或状况可能在细节上有不同。

    每一个版本都有不同的版本号。若程序指定有许可协议版本号,表示其适用该版本或“任何新版本”时,您可选择遵循该版本或任何由自由软件基金会日后所发布新版本的条款与条件。若程序并未指定许可协议版本号,您可选择任一自由软件基金会所发布的版本。

  • 若您想将部分程序纳入其他自由程序,而其发布的条件有所不同时,请写信取得作者的许可。若为自由软件基金会享有版权的软件,请写信至自由软件基金会;我们有时会以例外方式予以处理。我们的决定取决于两项目标:确保我们自由软件的所有衍生著作均维持在自由的状态,并广泛地促进软件的分享与重用。

免责声明

  • 由于程序采用无偿许可协议,因此在适用法律允许范围内,本许可协议对程序并不做质量担保。非经书面声明,版权人及/或其他提供程序之人,无论明示或默示,均系依“现状”提供程序而并无任何形式的质量担保,其包括但不限于适销性和特定用途默示担保。有关程序质量与性能的全部风险悉由您承担。如程序被证明有缺陷,您应承担所有服务、修复或改正的费用。

  • 非经适用法律要求或书面同意,任何版权人或任何可能依前述方式修改及/或发布程序者,对于您因为使用或不能使用程序所造成的一般性、特殊性、意外性或间接性损失,不负任何责任(包括但不限于数据丢失、数据提供不精确、您或第三方引起的损失、或程序与其他程序协同工作时发生错误),即使上述版权人或其他人已被告知此类损失的可能性时。

条款与条件结束

附录:如何将这些条款应用到您的新程序?

如果您开发一个新程序,并且希望它尽可能地被公开使用,最好的方法就是让它成为自由软件,任何人按照这些条款规定都能够进行再发布及修改。

为了做到这一点,请给程序附上以下声明。最安全的做法,是将声明放在每份源代码文件的起始处,以最有效地传达免责声明;且每份文件至少应有“版权”行以及本份声明全文的位置指示。

<用一行描述程序的名称及其主要作用>
版权所有(c)19xx年<作者姓名>

本程序为自由软件;您可依据自由软件基金会所发表的GNU通用公共许可协议条款规定,对程序进行再发布及/或修改;无论您依据的是本许可协议的第二版或(自行选择)任何后续版本。

本程序被发布以期有实用性,但不负任何质量担保责任;亦无对适销性或特定用途做默示性担保。详情请参照GNU通用公共许可协议。

您应该会随本程序收到GNU通用公共许可协议的副本,若未收到,请写信至自由软件基金会:
美国马萨诸塞州坎布里奇市675大街 邮编:02139

同时附上如何以电子及纸质信件与您联络的信息。

若程序以交互方式运行,请在交互式模式开始时,输出如下简短提示:

Gnomovision第69版,版权所有(c)19xx年 作者姓名
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函数库通用公共许可协议代替本许可协议。