首页 > 代码库 > GNU GPL介绍

GNU GPL介绍

如何在程序中使用GNU许可证
      无论使用哪种许可证,使用时需要在每个程序的源文件中添加两个元素:一个版权声明和一个复制许可声明,说明该程序使用GNU许可证进行授权。另外在声明版权前应该说明文件的名称以及用途,在复制许可声明之后,最好写上作者的联系信息,使得用户可以联系到你,如果对源文件进行了修改,最好使用简短的信息描述修改的内容。通用的格式如下所示:
        <one line to give the program‘s name and a brief idea of what it does.>
            Copyright (C) <year>  <name of author>
 
            This program is free software: you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation, either version 3 of the License, or
            (at your option) any later version.
 
            This program is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.
 
            You should have received a copy of the GNU General Public License
            along with this program.  If not, see http://www.gnu.org/licenses/.
      版权声明中请务必使用英文单词“Copyright”,且其中的年份是完成发布版本的时间,如若1998年完成了发布版本直到1999年才发布出去,那么使用1998年。需要明确说明使用的是GNU GPL的那个版本,是版本2还是版本3。

      i2c-core.c文件中的GNU许可描述如下所示:
              /* i2c-core.c - a device driver for the iic-bus interface      */
              /* ------------------------------------------------------------------------- */
              /*   Copyright (C) 1995-99 Simon G. Vogl
                   This program is free software; you can redistribute it and/or modify
                   it under the terms of the GNU General Public License as published by
                   the Free Software Foundation; either version 2 of the License, or
                   (at your option) any later version.
                   This program is distributed in the hope that it will be useful,
                   but WITHOUT ANY WARRANTY; without even the implied warranty of
                   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                   GNU General Public License for more details.
                   You should have received a copy of the GNU General Public License
                   along with this program; if not, write to the Free Software
                   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
                   MA 02110-1301 USA.      */
             /* ------------------------------------------------------------------------- */
            /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi>.
                All SMBus-related things are written by Frodo Looijaard <frodol@dds.nl>
                SMBus 2.0 support by Mark Studebaker <mdsxyz123@yahoo.com> and
                Jean Delvare <khali@linux-fr.org>
                Mux support by Rodolfo Giometti <giometti@enneenne.com> and
                Michael Lawnick <michael.lawnick.ext@nsn.com> */
 
      如果程序以终端方式运行,请在交互模式开始时,输出以下提示:
            <program>  Copyright (C) <year>  <name of author>
                   This program comes with ABSOLUTELY NO WARRANTY; for details type `show w‘.
                   This is free software, and you are welcome to redistribute it
                   under certain conditions; type `show c‘ for details.
      所假设的指令‘show w’与‘show c’应显示通用公共授权的相对应条款。你也可以使用着两个指令以外
的指令名称;对于图形用户界面,你可以使用“about box”来替代此功能。
 
历史
      GPL由斯托曼撰写,用于GNU计划。它以GNU Emacs、GDB、GCC的许可证的早期版本为蓝本。这些许可证都包含有一些GPL的版权思想,但仅针对特定的程序。斯托曼的目标就是创造出一种四海之内皆可使用的许可证,这样就能为许多源代码共享计划带来福音。GPL版本1就是这样,在1989年1月诞生。

      到1990年时,因为一些共享库而出现了对比GPL更宽松的许可证的需求。所以当GPL版本2在1991年6月发布时,另一许可证——库通用许可证(Library General Public License,简称LGPL)也随之发布,并记作“版本2”以示对GPL的补充。版本好LGPL版本2.1发布时不再相同,而LGPL也被重命名为GNU宽通用公共许可证(Lesser General Public License)以体现GNU哲学观。
 
GPLv1
      GPL1
      GPL版本1,即最初的版本,发布于1989年一月,其目的是防止那些阻碍自由软件的行为,而这些阻碍软件开源的行为主要有两种(一种是软件发布者只发布可执行的二进制代码而不打不具体源代码,一种是软件发布者在软件许可加入限制性条款)。因此按照GPLv1,如果发布了可执行的二进制代码,就必须同时发布可读的源代码,并且在发布任何基于GPL许可的软件时,不能添加任何限制性的条款。
 
GPLv2
      GPL2
      理查德.斯托曼在Gplv2中所做的最大的改动就是增加了“自由还是死亡”(“Liberty or Death”)这章条款,即第七章liberty-or-death Presentation。这章中声明道,如果哪个人在发布源于GPL的软件的时候,同时添加强制的条款,以在一定程度上保障和尊重其他一些人的自由和权益(也就是说在一些国家里,人们只能以二进制代码的形式发布软件,以保护开发者的版权),那么他将根本无权发布该软件。

      到了1990年,人们普遍认为一个限制性弱的许可证对于自由软件的发展是有战略意义上的好处的;因此,当GPL的第二个版本GPLv2在1991年6月发布时,与此同时第二个许可证程序库GNU通用公共许可证(LGPL,the Lesser General Public License)也被发布出来并且一开始就将其版本定为第二版以表示其和GPLv2的互补性。这个版本一直延续到1999年,并分支出一个派生的LGPL版本号为2.1,并将其重命名为轻量级通用公共许可证(又称宽通用公共许可证)(Lesser General Public License)以反映其在整个GNU哲学中的位置。
 
GPLv3
      理查德.斯托曼起草了第一份GNU GPLv3草案,在美国麻州剑桥市的MIT大学。到2005年,GPL版本3正式由斯托曼起草,由伊本.莫格林和软件自由法律中心(Software Freedom Law Center)提供法律咨询。
      斯托曼在2006年2月25日自由及开源软件开发者欧洲会议的演讲上说:“
      在所有的改动中,最重要的四个是:
            解决软件专利问题;
            与其他许可证的兼容性;
            源代码分区和组成的定义;
            解决数位版权管理(DRM)问题。”
 
      2006年,自由软件基金会针对GPL的可能的修改开始了12个月的公共咨询。在公共咨询的过程中,有962条评论被提交给第一稿草稿。最终总共有2,636条评论被提交。GPLv3草稿 于2006年1月16日开始可用。2007年3月28日正式启用。
      2007年6月29日,自由软件基金会正式发布了GPL第三版。
 
GPLv2与GPLv3的一些差别
      GPLv3新版本的思想性和可执行性相比GPLv2版本有了很大的提高。
      (1)版权赋予者
                我们用两个步骤来保护你的权利:1.给软件赋予版权;2.向你提供本许可证,给你拷贝、修改和发行软 
          件的合法许可权。GPLv2中的“we”,指的是FSF(自由软件基金会)。
                但是GPLv3中是这样描述的“任何使用GUN GPL 规则来保护自己权利的开发者可采用两个步骤:1.声明
          软件的版权;2.向你提供本授权文件以给你复制、发布并且/或修改软件的法律许可”。软件版权的主张者就是
          软件的开发者自己,而不再是FSF。GPLv3新版本让广大自由软件开发者当上了自由软件的主人,成为真正的
          自由软件的版权拥有者。
     (2)权利终止
                GPLv2版本第四条中“除本授权所明示的方式外,您不得对本程序加以复制、修改、在授权或散布。任何
          试图以其他方式进行复制、修改、在授权或者散布本程序的行为均为无效,并且将自动终止您基于本授权所得
          享有的权利”。一项权利被“自动终止”,貌似没有什么约束力。
                GPLv3中,将此条款进行了进一步的说明“一旦出现任何(违反许可证的情况),版权拥有者都可以采用
          任何合理的手段通知你违反了本许可证,并在60天以后的任何时间终止你的权利”。而这个版权拥有者就是自
          由软件的开发者。
     (3)GPLv3中包含明确的专利认可条款,意味着任何向GPL项目捐赠代码的实体同意将软件包含的专利永久性免
          费许可给该项目。
 
 
GPLv2详细条款
      虽然现在已经发布了GPLv3,但是仍然存在一些分歧,目前用的多的还是GPLv2,详细条款的描述如下所示。
声明
      这是一份GNU通用公共授权非正式的中文翻译。它并非由自由软件基金会所发表,亦非使用GNU通用公共授权的软件的法定散布条款——只有GUN通用公共授权英文原文的版本始具有此等效力。然而,我们希望这份翻译能帮助中文的使用者更了解GNU通用公共授权。
 
前言
      大多数软件授权声明是设计用以剥夺您分享与修改软件的自由。相反地,GNU通用公共授权力图保证您分享与修改自由软件的自由——确保软件对所有的使用者而言都是自由的。通用公共授权适用于大多数自由软件基金会的软件,以及任何作者制定使用本授权的其他软件。(有些自由软件基金会的软件,则适用GUN函数库通用公共授权规定。)您也可以让您的软件适用本授权规定。

      当我们在谈论自由软件时,我们所指的是自由,而非价格。我们的通用公共授权是设计用以确保使您保有散布自由软件重制物的自由(以及您可以决定此一服务是否收费),确保您能收到源码或者在您需要时便能得到它,确保您能变更软件或将它一部分用于新的自由软件;并且确保您知道您可以从事上述的事情。

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

      例如,假如您散布此类程序的副本,无论是免费或收取费用,您必须将您所享有的一切权利交付收受者。您也必须确保他们能收到或得到源码。而且您必须向他们展示这些条款的内容,使他们知悉他们所享有的权利。

      我们采取两项措施来保护您的权利:(1)以著作权保护软件,以及(2)提供您本授权,赋予您复制、散布或修改软件的法律许可。

      同时,为了保护作者与我们(指自由软件基金会),我们希望确定每个人都明了,自由软件是没有担保责任的。如果软件杯他人修改并加以传递,我们需要其收受者知道,他们所得到的并非原软件,因此由他人所引出的任何问题对原作者的声誉将不会有任何的影响。

      最后,所有自由软件不断地受到软件专利的威胁。我们希望能避免自由软件的在散布者以个人名义取得专利授权而使程序转优化的风险,为了防止上述的事情发生,我们在此明确声明:任何专利都必须为了每个人的自由使用而核准,斗则就不应授予专利。

以下是有关复制、散布以及修改的明确条款及条件
复制、散布与修改的条款与条件
      0、凡著作权人在其程序或其他著作中声明,该程序或著作得在通用公共授权条款下散布,本授权对其均有适用。以下所称的“本程序”,是指任何一种适用通用公共授权的程序或著作;“基于本程序所生的著作”,则指本程序或任何基于著作权法所产生的衍生著作,换言之,是指包含本程序全部或一部的著作,不论是完整的或经过修改的程序,以及(或)翻译成其他语言的程序(以下“修改”一词包括但不限于翻译行为在内)。被授权人则成为“您”。

      本授权不适用于复制、散布与修改以外的行为;这些行为不在本授权范围内。执行本程序的行为并不受限制,而本程序的输出只有在其内容构成基于本程序所生的著作(而非只是因为执行本程序所造成)时,始受本授权约束。至于程序的输出内容是否构成本程序的衍生著作,则取决于本程序的具体用途。

      1.您可以对所收受的本程序源码,无论以何种媒介,复制于散布其完整的重制物,然而您必须符合以下条件:以显著及适当的方式在每一分重制物上发布适当的著作权标示以及无担保声明;维持所有有关本授权以及无担保声明的原貌;并将本授权的副本连同本程序一并交付予其他任一位本程序的收受者。

      您可以对让重制物的实际行为请求一定的费用,您也可以自由决定是否提供担保以作为对价的交换。

      2.您可以修改本程序的一个或数个重制物或者本程序的任何部分,以此形成基于本程序所生的著作,并依前述第一条规定,复制于散布此一修改过的程序或著作,但您必须符合以下要件:
     (a)您必须在所修改的文件上附加显著的标示,叙明您修改过这些文件,以及修改日期。
     (b)您必须就您所散布或发行的著作,无论是包含本程序全部或一部的著作,或者是自本程序或其他任何部分所
             衍生的著作,整体授权所有第三人依本授权规定使用,且不得因此项授权行为而收取任何费用。
     (c)若经过修改的程序在执行时通常以互动方式读取命令时,您必须在最常被使用的方式下,于开始进入这种互
            动式使用时,列印或展示一下宣言:适当的著作权标示及无担保声明(或者声明您提供担保)、使用者可以
            依这些条件在散布此程序,以及告知使用者如何浏览本授权的副本。(例外:若本程序本身是以互动的方式 
            执行,然而通常却不会列印该宣告时,则您基于本程序所生的著作便无需列印该宣告。)

            这些要求对修改过的著作是整体适用的。尚著作中可识别的一部分并非衍生自本程序,并且可以合理地认为
            是一个独立的、个别的著作,则当您将其作为个别著作加以散布时,本授权及条款将不适用于该部分。然而
            当您上述部分,作为基于本程西所生著作的一部而散布时,整个著作的散布必须符合本授权条款的规定,而
            本授权对于其他被授权人所为的许可及著作整体。

            因此,本规定的意图不在于主张或剥夺您对于完全由您所完成著作的权利;应该说,本条规定意在行使对基
            于程序所生的衍生著作或集合著作散布行为控制权。
            此外,非基于本程序所生的其他著作与本程序(或基于本程序所生的著作)在同一储存或散布的媒介上的单
            纯聚集行为,并不会使该著作因此受本授权条款拘束。

     3.您可以依前述第一、二条规定,复制与散布本程西(或第二条所述基于本程序所产生的著作)的目的码或可执行形式,但您必须符合以下要件:
     (a) 附上完整、相对应的机器可判读源码,而这些源码必须依前述第一、二条规定在经常用以作为软件交换的媒
           介物上散布;或
     (b) 附上至少三年有效的书面报价文件,提供任何第三人在支付不超过实际散布源码所需成本的费用下,取得相
           同源码的完整机器可读重制物,并依前述第一、二条规定在经常用以作为软件交换的媒介物上散布该重制
           物;或
     (c) 附上您所收受有关散布相同源码的报价信息。(本项选择仅在飞赢利散布、且仅在您依前述b项方式自该书
           面报价文件收受程序目的码或可执行形式时,始有适用。)

                著作的源码,是指对著作进行修改时适用的形式。对于一个可执行的著作而言,完整的源码是指著作中所包
           含所有模组的全部源码,加上相关接口的定义档,还加上用以控制该著作编译于安装的描述。然而,特别的
           例外情况是,所散布的源码并不需包含任何通常会随着所执行作业系统的主要组成部分(编译器、核心等
           等)而散布的软件( 无论以源码或二进制格式),除非该部分本身即附加在可执行程序中。

           若可执行码或目的嘛的散布方式,是以指定的地点提供存取位置供人复制,则提供可自相同地点复制源码的
           使用机会,视同对于源码的散布,然而第三人并不因此而负有将目的码连同源码一并复制的义务。

      4.除本授权所明示的方式外,您不得对本程序加以复制、修改、在授权或散布。任何试图以其他方式进行复制、修改、在授权或者散布本程序的行为均为无效,并且将自动终止您基于本授权所得享有的权利。然而,依本授权规定 自您手中收受重制物或权利之人,只要遵守本授权规定,他们所获得的授权并不会因此终止。

      5.因为您并未在本授权上签名,所以您无须接受本授权。然而,除此之外您别无其他修改或散布本程序或其衍生著作的授权许可。若您不接受本授权,则这些行为在法律上都是被禁止的。因此,藉由对本程序(或任何基于本程序所生的著作)的修改或散布行为,您表示了对于本授权的接受,以及接受所有关于复制、散布或修改本程序或基于本程序所生著作的条款与条件。

      6.每当您在散布本程序(或任何基于本程序所生的著作)时,收受者即自动获得原授权人所授予依本授权条款与条件复制、散布、或修改本程序的权利。您不得就本授权所赋予收受者行使的权利附加任何进一步的限制。您对于第三人是否履行本授权一事,无需负责。

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

      若本条任一部分在特殊情况下被认定无效或无法执行时,本条其余部分仍适用,且本条全部于其他情况下仍应适用。本条的目的并不在诱使您侵害专利或其他财产权的权利主张,或就此类主张的有效性加以争执;本条的唯一目的,是在保障藉由公共授权惯例所执行自由软件散布系统的完整性。许多人信赖该系统一贯使用的应用程序,而对经由此系统散布的大量软件有相当多的贡献;作者/贡献者有权决定他或她是否希望经由其他的系统散布软件,而被授权人则无该种选择权。
      本条的用亦在于将本授权其他不确定的部分彻底解释清楚。

      8.若因为专利或享有著作权保护的接口问题,而使得本程序的散布或使用局限于某些国家时,则将本程序置于本授权规范之下的原著作权人得增列明确的散布地区限制条款,将该等国家排出在外,而使散布的许可只限在未受排除的国家之内或之中。在该等情况下,该限制条款如同以书面方式订定与本授权内容中,而成为本授权的条款。

      9.自由软件基金会得随时发表通用公共授权的修正版或新版本。新版本在精神上将近似于目前的版本,然而在细节上或所不同以因应新的问题或状况。
      每一个版本都有个别的版本号码。若本程序制定有授权版本号码,表示其适用该版本或是“任何新版本”时,您得选择遵循该版本或任何自由软件基金会日后所发表新版本的条款与条件。若本程序并未制定授权版本号码时,您便得选择任一自由软件基金会所发表的版本。

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

      11.由于本程序是无偿授权,因此法律许可范围内,本授权对本程序并不负担保责任。非经书面声明,著作权人与(或)其他提供程序之人,无论明示或默示,均是依“现况”提供本程序而并无任何形式的担保责任,其包括但不限于,就适售性以及特定目的的适用性为默示性担保。有关本程西品质与效能的全部风险是由您承担。如本程序被证明有瑕疵,您应承担所有服务、修复或改正的费用。


      12.非经法律要求或书面同意,任何著作权人或任何可能依前述方式修改与(或)散布本程序者,对于您因为使用或不能使用本程序所造成的一般性、特殊性、意外性或间接性损失,不负任何责任(包括但不限于,资料损失,资料执行不明确,或应由您或第三人承担的损失,或本程序无法与其他程序运作等),即便前述的著作权人或其他人已被告知该等损失的可能性时,亦同。

GNU GPL介绍