怎样在程序中使用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介绍的更多相关文章

  1. This program may be freely redistributed under the terms of the GNU GPL

    在centos中安装Google浏览器时 执行[root@server1 opt]# rpm ivh install google-chrome-stable_current_x86_64.rpm 爆 ...

  2. GNU/Linux 介绍

    在了解Linux之前要先了解什么是GNU / GNU官方解释? GNU是一个自由软件操作系统.就是说,它尊重其使用者的自由.GNU操作系统包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的 ...

  3. GNU Autotool介绍

    参考文档: automake(GNU教程) 几句话说清楚17:用Makefile.am和configure.ac构建一个专业的Hello World Creatingamhello-1.0.tar.g ...

  4. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  5. Linux、GUN/Linux、GUN、GPL以及各个发行版本详细介绍

    学习Linux很久了,却对GUN,Linux,Linux发行版等无所了解,是不是觉得很对不起自己啊.呵呵,所以我就在网上找了些资料,总结在一起,还算是比较能说明问题的. 什么是Linux? 也许很多人 ...

  6. 开源协议介绍(GPL,LGPL,BSD,MIT,Apache)

    http://blog.csdn.net/zhulinu/article/details/7419068   什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥 ...

  7. 五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍

    商业化的软件应该主要选用MIT或者Apache license的开源系统作为插件. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的 ...

  8. GNU Readline 库及编程简介

    用过 Bash 命令行的一定知道,Bash 有几个特性: TAB 键可以用来命令补全 ↑ 或 ↓ 键可以用来快速输入历史命令 还有一些交互式行编辑快捷键: C-A / C-E 将光标移到行首/行尾 C ...

  9. linux下内存泄露检测工具Valgrind介绍

    目前在linux开发一个分析实时路况的应用程序,在联合测试中发现程序存在内存泄露的情况. 这下着急了,马上就要上线了,还好发现了一款Valgrind工具,完美的解决了内存泄露的问题. 推荐大家可以使用 ...

随机推荐

  1. java组装json和提取一个json的例子

    package jsonparsed; import net.sf.json.JSONException; import net.sf.json.JSONObject; import net.sf.j ...

  2. mysql中IN和EXITS效率

    mysql中的in语句是把外表和内表作hash 连接.而exists语句是对外表作loop循环,每次loop循环再对内表进行查询.一直大家都觉得exists比in语句的效率要高.这样的说法事实上是不准 ...

  3. 使用linq对字符串1,2,3,4,5,6,7,8,9,10求和

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SumI ...

  4. android中获取 bitmap 像素的颜色 之吸管取色功能

    本功能是参考android API colorPickerView修改,实现类似与PS中吸管取色功能.也就是可以对图片的任意位置取该位置的RGB.本demo中,完成了色盘取色功能.当点击色盘的某个位置 ...

  5. CloudStack全局配置參数

    參数 描写叙述 类型 默认值 account.cleanup.interval 清除用户账户所须要等待的时间(秒) 整数 86400 agent.lb.enabled If agent load ba ...

  6. perl学习(10) 字符串处理函数和排序

    1.1.index Perl 查找子串第一次在大字符串中出现的地方,返回第一个字符的位置. . . my $stuff = “Howordy world!”; my $where3 = index($ ...

  7. ORACLE11.2.0 SQLPLUS 报 error while loading shared libraries

    相应的环境平台: OS: Linux TEST11G 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux ...

  8. perl 获取文件内容里第一个AAA和最后一个AAA

    <pre name="code" class="html">[root@wx03 ~]# cat -n aaa 1 3`13 2 edqae 3 d ...

  9. iOS学习——ViewController(六)

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图. iOS的SDK中提供很多原生ViewControlle ...

  10. Duanxx的C++学习: 使用类没有被定义 原因及解决方法

    今天,随着C++写的神经网络算法.我发现了一个很令人费解的问题,下面的描述一般地描述,例如: 我有两个类ClassA和ClassB,它们分别有成员变量a.b; ClassA有一个函数是这种:Funct ...