`
vaqeteart
  • 浏览: 304097 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

关于GNU GPL

 
阅读更多
关于GNU GPL

这里简单介绍关于自由软件的一个重要协议:GNU GPL。具体信息需要参照官方网站(http://www.gnu.org/licenses/)。
主要内容:
1,基本概念
2,与其它协议的比较
3,发展历史
4,授权
5,其它

1,基本概念
==================
GNU 通用公共许可协议(英语:GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议,最初由理查德·斯托曼为GNU计划而撰写。此许可协议最新版本为“第3版”(v3),2007年6月29日发布。GNU宽通用公共许可协议(英语:GNU Lesser General Public License,一般简称LGPL)是改自GPL的另一个版本,其目的是为了应用于一些软件库。GPL给予了电脑程序自由软件的定义,并且使用“Copyleft”来确保程序的自由被完善的保留。

2,与其它协议的比较
==================
这里通过和其它的软件许可协议进行比较,大致了解GPL的特点。
GPL授予程序接受人以下权利,或称“自由”:
* 以任何目的运行此程序的自由;
* 再发行复制件的自由;
* 改进此程序,并公开发布改进的自由(前提是能得到源代码)。
相反地,随版权所有软件的最终用户许可协议几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。
GPL与其他一些更“许可的”自由软件许可协议(比如BSD许可协议)相比,主要区别就在于GPL寻求确保上述自由能在复制件及演绎作品中得到保障。它通过一种由斯托曼发明的叫Copyleft的法律机制实现,即要求GPL程序的演绎作品也要在GPL之下。相反,BSD式的许可协议并不禁止演绎作品变成专有软件。
采用LGPL之计划本身虽然仍有"著作权脱离"("Copyleft")之限制条件,但这些限制不感染仅仅只联结到本计划的软件。不过此等软件仍会受到其他限制。LGPL主要使用之标的为软件函式库("Software Libraries"),虽然其亦可使用于独立存在的应用程式。比较有名的例子为Mozilla跟OpenOffice.Org.LGPL有一特点是LGPL软件可以被转换成GPL(参见Section 3)。这种特性对于在GPL函式库或应用程式中直接使用LGPL程式有一定程度之帮助。

由于某些原因,GPL成为了自由软件和开源软件的最流行许可协议。到2004年4月,GPL已占Freshmeat上所列的自由软件的约75%,SourceForge的约68%。类似的,2001年一项关于Red Hat Linux 7.1的调查显示一般的代码都以GPL发布。著名的GPL自由软件包括Linux核心和GCC。


3,发展历史
==================
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即GPL版本1,即最初的版本,发布于1989年一月,其目的是防止那些阻碍自由软件的行为,而这些阻碍软件开源的行为主要有两种(一种是软件发布者只发布可执行的二进制代码而不发布具体源代码,一种是软件发布者在软件许可加入限制性条款)。因此按照GPLv1,如果发布了可执行的二进制代码,就必须同时发布可读的源代码,并且在发布任何基于GPL许可的软件时,不能添加任何限制性的条款。
GPLv2即GPL版本2,到了1990年,人们普遍认为一个限制性弱的许可协议对于自由软件的发展是有战略意义上的好处的;因此,当GPL的第二个版本(GPLv2)在1991年6月发布时,与此同时第二个许可协议程序库GNU通用公共许可协议(LGPL,the Library General Public License)也被发布出来并且一开始就将其版本定为第2版本以表示其和GPLv2的互补性。这个版本一直延续到1999年,并分支出一个派生的LGPL版本号为2.1,并将其重命名为轻量级通用公共许可协议(又称宽通用公共许可协议)(Lesser General Public License)以反映其在整个GNU哲学中的位置。
GPLv3即GPL版本3,到2005年,GPL版本3正由斯托曼起草。这里不详细介绍了,在所有的改动中,最重要的四个是:
* 解决软件专利问题;
* 与其他许可协议的兼容性;
* 源代码分区和组成的定义;
* 解决数位版权管理(DRM) 问题。


4,授权
==================
1)GPL(GNU General Public License)的授权:
此GPL的条款和条件适用于任何收到GPL下的作品的人(即“许可协议接受人”)。任何接受这些条款和条件的许可协议接受人都有修改、复制、再发行作品或作品的演绎版本的授权。许可协议接受人可以对此项服务收取费用 ,反之亦然。这一点是GPL与其他禁止商业用途的自由软件许可协议最大的不同。Stallman认为自由软件不应限制其商业用途,同时GPL清楚地说明了这一点。但GPL又规定发行者不能限制GPL授予的权利。例如,这禁止对软件在单纯沉默(消极默示)式协议或合同下的发行。GPL下的发行者同时也同意在软件中使用的专利可以在其它GPL软件中使用。
GPL不会授予许可协议接受人无限的权利。再发行权的授予需要许可协议接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可协议。这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可协议接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。
copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。

2)LGPL(GNU Lesser General Public License)的授权:
LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。 LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开 源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品

3)一些问题
一个关于GPL重要的争议是,非GPL软件是否可以动态链接到GPL库。GPL对GPL作品的演绎作品在 GPL下发布规定很明确。但是对于动态链接到GPL库的作品是否是演绎作品就规定得不清楚了。自由和开放源代码社区为此分成两派,自由软件基金会认为这种作品就是演绎作品,但其他专家并不同意。这个问题根本的并不关乎GPL本身,而是一个版权法如何定义演绎作品。美国联邦上诉法院第九巡回审判庭在 Galoob v. Nintendo案对演绎作品尝试定义,但最终没有明确的结果。不幸的是,许多开发者觉得这是个技术问题。但实际上这完全是法律问题。不过由于迄今为止没有案例表明有人以动态链接的方式来绕过GPL的条款或者并被起诉,动态链接的限制已经是事实上地(de facto)有效,不论它是否是法律上地(de jure)有效。
大多数自由软件许可协议,比如MIT/X许可协议、BSD许可协议、LGPL,都是“GPL兼容的”,即它们的代码与GPL代码混用无冲突(但新代码则是GPL下的)。但是有某些开源软件许可协议不是GPL兼容的。通常意见是开发者仅只使用GPL兼容的许可协议,以免法律问题。
GPL的批评者常常认为GPL是有“传染性”的“病毒”,因为GPL条款规定演绎作品也必须是GPL的。由于“演绎作品”通常被解释为包含GPL代码或动态链接到GPL库(如上)的软件,“病毒说”来源于GPL对于许可协议的强制继承的要求。这正是GPL与BSD式许可协议的哲学思想上的差异。 GPL的支持者确信自由软件世界应具有自我保护能力和可持续发展性——确保自由软件的演绎作品同样“自由”,但其他人认为自由软件应给予“所有人”最大的自由。
不同版本之间的 GPL 并不兼容。例如,当原始的作品以 GPLv2 发布,而补丁以 GPLv3 发布时,因为这样的原因,其编译之后产生的二进制版本不可以再行传播。因此,FSF通常会推荐以 “GPLv3 or later” 这样的形式来标示授权许可协议,或 GPLv2 + GPLv3 双许可协议以规避这一问题。


5,其它
==================
精确的信息,需要参考官方网站(参考资料有列出),这里做一个简单的总结:
1)GNU GPL
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利,包括:
*可自由复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
*可自由分发
在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
*可以用来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
*可自由修改
如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。

需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。

2)GNU LGPL
GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。

3)关于GNU LGPL和GNU GPL
GNU计划在使用库时有两个首要的许可证.一个是GNU LGPL(库GPL);另一个是普通的GNU GPL.选择不同的许可有很大的不同:选择LGPL允许在私有程序中使用该库;选择普通的GPL则只允许在自由软件中使用它.
私有软件开发者有金钱上的优势;自由软件开发者需要相互之间利用各自的优势.对一个库采用普通的GPL对自由软件开发者的优势要大于对私有软件开发者: 他们可以使用的库对于私有软件开发者是不可利用的.使用普通的GPL并不是对于所有的库都有好处.在某些情况下更有理由来使用LGPL.最常见的情况就是当一个自由库的特性可以很容易地被私有软件以其他可替代库来实现.在这种情况下,库不能给与自由软件任何特别的优势,因而最好还是为LGPL发布该库。这也就是为什么GNU C 库选择LGPL:有很多的其他C库,如果使用GPL发布该库,将迫使私有软件开发者不得不使用其它的库--对他们来说这不成问题,而对于GNU则有了麻烦.


参考资料:
http://zh.wikipedia.org/wiki/GPL
http://zh.wikipedia.org/wiki/GNU宽通用公共许可证
http://www.gnu.org/licenses/gpl-3.0.html
http://www.cnblogs.com/baizx/archive/2010/07/14/1777210.html
http://www.cnblogs.com/baizx/archive/2010/07/14/1777210.html
http://baike.baidu.com/view/606545.htm


作者:QuietHeart
Email:quiet_heart000@126.com
日期:2011年7月25日
分享到:
评论

相关推荐

    tvnjviewer-2.8.3-bin-gnugpl

    "tvnjviewer-2.8.3-bin-gnugpl" 是一个开源软件包,它基于GNU GPL许可证,主要用于远程桌面访问。这个版本是2.8.3,包含可执行的二进制文件,适用于那些希望在不编译源代码的情况下使用TVNJViewer的用户。TVNJViewer...

    GNU通用公共授权中文版(GPL)PDF格式

    It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that....

    Linux与GNU-GPL协议.pdf

    GNU公共许可证(GNU General Public License,GPL)是GNU计划所采用的主要授权方式,它确保了软件的自由传播和修改权利。GPL规定,任何基于GPL软件的衍生作品都必须同样采用GPL授权,以保持软件的自由性。这种许可...

    本书是在GNU GPL V3许可证下发布的开源免费Unity教程。您可以自由修改和

    本书是在GNU GPL V3许可证下发布的开源免费Unity教程。您可以自由修改和使用本书中的内容和源代码。如果您有任何意见或建议,请随时与我直接沟通_团结简明课程

    cpp-CompCert一个全面核实C编译器支持几乎所有的C89GNUGPL21

    "cpp-CompCert一个全面核实C编译器支持几乎所有的C89GNUGPL21" 这个标题指出我们讨论的是一个名为"CompCert"的C编译器,它经过了全面的验证(formally verified),意味着它的源代码和行为在数学上被证明是正确无误...

    关于GNU的说明 希望有用

    ### 关于GNU的相关知识点 #### 一、GNU项目概述 GNU项目由Richard Stallman发起,旨在创建一套完全自由且开放源代码的操作系统。该项目的核心理念是促进软件共享精神,鼓励用户自由地运行、复制、发布、研究、改进...

    Using GNU CC.pdf

    该文档是关于如何使用GNU CC编译器的详细指南。它涵盖了GCC的各个方面,并提供了使用GCC所需的所有基本信息。 #### 二、版权许可 该文档遵循特定的版权许可,允许用户进行以下操作: - **制作和分发未修改副本**...

    GNU license

    - **链接不同许可证的代码**:通常情况下不允许将使用GPL许可的代码与其他许可证下的代码链接,但有一个例外,即可以将GNU Affero GPL v3与GNU GPL v3链接。 - **网站**:https://gnu.org/licenses/gpl.html #### ...

    GNU计划简介 概述 含义

    除了GPL之外,GNU还推出了GNU宽通用公共许可证(GNU Lesser General Public License, LGPL),适用于库和开发工具,允许它们与其他非GPL软件链接,而不强制整个应用程序遵循GPL。此外,还有GNU自由文档许可证(GNU ...

    GNURADIO编程指南

    Gnuradio [1] 是一个无线电信号处理方案,它遵循GNU 的GPL [2] 的条款分发。它的目的是给普通的软件编制者提供探索电磁波的机会,并激发他们聪明的利用射频电波的能力。 正如所有软件定义无线电系统的定义, 可重构...

    GPL 2.0协议

    GPL 2.0协议带格式文本,估计做计算机的是绕不开该协议了,可以下载下来研究研究。

    GNU Bison 中文手册

    关于使用Bison的条件,用户需要遵守GNU通用公共许可证(GNUGPL),这意味着用户可以自由地使用、复制、修改Bison生成的源文件,但在某些特定情况下需要遵守许可证中的规定。手册中还提供了一些具体的使用例子,以便...

    HDP-GPL-3.1.0.0-centos7-gpl.tar.gz

    GPL(GNU General Public License)则表示这是一个遵循GNU通用公共许可协议的开源软件。版本号3.1.0.0表明这是Ambari的一个较新版本,针对CentOS 7操作系统进行了优化。而".tar.gz"是Linux系统常用的归档压缩格式,...

    MiniCut2d_Software:MiniCut2d_Software 在 CECILL 许可下(GNU GPL 兼容)

    源代码是在 CECILL 许可下提供的(GNU GPL 兼容)。 ###一般信息: MiniCut2d 项目文件 (.mnc) 包含以下信息: 构成项目的序列数量, 每个序列中的针数, X:Y坐标在机架中的每个平面, 材料块的尺寸, 条目类型:0...

    GNU_Document

    6. **GPL(GNU General Public License)**:GNU的许可证策略是其自由软件运动的关键组成部分。文档详细解释了GPL的工作原理,以及如何在自己的软件项目中应用GPL,确保软件的自由性得以保持。 7. **Make工具**:...

    HDP-GPL-3.1.4.0-centos7-gpl.tar.gz

    5. 许可证文件:GPL(GNU General Public License)许可证,规定了开源软件的使用、修改和分发规则。 6. 组件库:可能包含HDP组件的二进制文件和库,用于实际运行服务。 7. 文档:用户指南、API参考、故障排除信息等...

    Specialized_PDF_Editor:打开并加载专门的PDF结构以进行分析和更正; GNU GPL或MIT软件许可证

    本文将围绕“Specialized_PDF_Editor”这一工具,探讨其如何打开并处理专门的PDF结构,以及如何在GNU GPL或MIT软件许可证下进行合法使用。 “Specialized_PDF_Editor”是一款专为PDF文档深度操作设计的软件,它允许...

    ext-7.0.0-gpl.zip

    标题中的"ext-7.0.0-gpl.zip"是一个软件扩展或库的压缩包,遵循GPL(GNU General Public License)开源协议。这通常意味着它是一个免费的、可修改的软件,用户可以查看源代码并根据需要进行定制,但必须保留原始许可...

    Linux起源、GNU简介、发行版本介绍及特点

    RMS的贡献不仅在于GNU项目,他还通过GNU GPL推动了软件版权的新模式,即“Copyleft”,保证了软件的自由传播和修改。Linux和GNU的故事是开源运动的典范,它们体现了技术社区的合作精神和创新力量。

    MistCore:MistCore开源MMO框架-WIP-具有GNU GPL v2的教育项目和开源-支持的版本5.0.5b

    IRC 随时加入irc.rizon.net加入我们-#mist #Reminder MistCore是一个教育项目,它是GNU GPL v2的开源项目。数据库dbc,地图和vmap 您可以使用提取器生成dbc,地图和vmap。要求平台:Linux,Windows或Mac 具有SSE2...

Global site tag (gtag.js) - Google Analytics