imtoken钱包下载20版本|gpl
关于GNU GPL - 知乎
关于GNU GPL - 知乎首发于小知识切换模式写文章登录/注册关于GNU GPLQuietHeart关于GNU GPL这里简单介绍关于自由软件的一个重要协议:GNU GPL。具体信息需要参照官方网站(http://www.gnu.org/licenses/)。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、授权GPL(GNU General Public License)的授权此GPL的条款和条件适用于任何收到GPL下的作品的人(即“许可协议接受人”)。 GPL授予接受人使用自由的权利(保证使用自由)任何接受这些条款和条件的许可协议接受人都有修改、复制、再发行作品或作品的演绎版本的授权 。 GPL授予接受人商用的权利(保证商业发展)许可协议接受人可以对此项服务收取费用 ,反之亦然。这一点是GPL与其他禁止商业用途的自由软件许可协议最大的不同。Stallman认为自由软件不应限制其商业用途,同时GPL清楚地说明了这一点。但 GPL又规定发行者不能限制GPL授予的权利 。例如,这禁止对软件在单纯沉默(消极默示)式协议或合同下的发行。GPL下的发行者同时也同意在软件中使用的专利可以在其它GPL软件中使用。GPL不会授予许可协议接受人无限的权利(强制开源传播GPL的CopyLeft)再发行权的授予需要许可协议接受人开放软件的源代码,及所有修改 。且 复制件、修改版本,都必须以GPL为许可协议 。这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可协议接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。copyleft只在程序再发行时发生效力 。 对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。LGPL(GNU Lesser General Public License)的授权LGPL是GPL的一个为主要为类库使用设计的开源协议。允许对LGPL库引用的商业软件不开源和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。 LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码 。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。强制修改LGPL代码或衍生的第三方库遵循LGPL如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议 。 因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。其它问题GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。关于演绎作品一个关于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、其它精确的信息,需要参考官方网站(参考资料有列出),这里做一个简单的总结:GNU GPLGNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利,包括:可自由复制: 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。可自由分发: 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。可以用来盈利: 你可以在分发软件时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。可自由修改: 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。GNU LGPLGNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。关于GNU LGPL和GNU GPLGNU计划在使用库时有两个首要的许可证:一个是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发布于 2020-04-03 20:01赞同 222 条评论分享喜欢收藏申请转载文章被以下专栏收录
开源协议专题(六):GPL、LGPL、MPL - 知乎
开源协议专题(六):GPL、LGPL、MPL - 知乎首发于技术人生切换模式写文章登录/注册开源协议专题(六):GPL、LGPL、MPL战神波波健康,自律,系统思考~背景说明:对于软件开发者来说,无论是个人还是商业组织,为了分享自己的优秀作品、为了扩大自身影响力,多多少少都有想把自己的软件作品以开源的形式公之于众的想法。但无论是开源自己的软件,还是使用已开源的软件,出于商业和法律因素的考虑,我们都应该搞清楚:当我们使用开源软件或者将自己的作品开源时,我们保留了啥权力?我们又放弃了啥权力?主流的开源许可协议有以下几种:GPL、MPL、LGPL、BSD、MIT、Apache License。从 Link 依赖、修改源码、版权说明、源码软件是否可用于产品广告,这几个维度,可以将以上几个主流开源协议的宽松程度,做如下图所示的梳理:开源协议的权限解析(一)本文主要介绍 GPL、MPL、LGPL ,下篇文章介绍 BSD、MIT、Apache。一、GPL:1、概念:GPL,即GNU通用公共许可协议,是 GNU General Public License 的简写。它是由自由软件基金会(FSF)公布的自由软件许可证。2、版本演进历史:GPLv1:1989年2月25日发布。GPLv2:1991年6月发布。GPLv3:2007年6月29日发布。3、协议特点:GPL协议最大的一个特征是具有传染性,即GPL对于许可证有强制继承的要求,这也是GPL与其他许可证在哲学思想上最大的差异。4、权利和义务:GPL 规定了使用遵循了GPL协议软件时,使用者的权力和义务如下:权力:获取源码的权力;修改源码的权利;自由处理衍生作品的权利。义务:使用了遵循GPL协议发布的软件,自身也必须遵守GPL协议。这也是GPL被人称为有传染性的原因。必须开放源代码;允许使用者自由获取(复制)、修改、发布的产品,即拥有获取源码、修改源码、分发软件的自由。5、GPL 自由权利的描述:GPL的条款和条件必须提供给任何接受GPL应用的作品的副本(“被许可人”)的人员。任何遵守条款和条件的被授证人员都有权修改作品,以及复制和重新分发作品或任何派生版本。GPL下的软件可以用于所有目的,包括商业目的,甚至作为创建专有软件的工具,例如使用GPL许可的编译器时,分发GPL许可作品(如软件)的用户或公司可能会收取副本费用或无偿提供费用。6、分析说明:这里被授权人,可以理解为,是使用了遵循GPL协议软件的作品的作者或者组织。第三点将GPL与禁止商业再分发的软件许可区分开来,也与共享软件许可证区分开来。FSF认为自由软件不应该限制商业使用和发布(包括再发布)。GPL明确规定,GPL作品可能以任何价格出售。许可只依赖于使用的库和软件组件,而不是依赖于底层平台。例如,作为GPL许可操作系统(如Linux)下的应用程序运行的软件不需要根据GPL进行许可或者以源代码可用性分发。7、官方网址:https://www.gnu.org/licenses/gpl-3.0.html二、LGPL:1、概念:LGPL,即GNU宽通用公共许可证,是 GNU Lesser General Public License 的简称。它是由自由软件基金会(FSF)公布的自由软件许可证。2、版本演进历史:第一版(2.0):1991年发布,第一个字母 L 定义为 Library,为与 GPLv2 保持一致而采用 2.0 版的编号。第二版(2.1):1999年发布,第一个字母 L 定义为 Lesser,以显示 FSF 认为并不是所有程序库都应当采用该许可证的态度。第三版(3.0):2007年发布,它以在 GPL 第3版之上附加应用一系列许可的方式表现。3、协议特点:LGPL和GPL不同,GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同,LGPL允许商业软件通过引用(link)的方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。4、LGPL的发展和分析:从第一版的 L 表示 Library 的含义以及其版本号直接和GPL保持一致(第一版就是2.0)可知,该协议是GPL的补充协议,是一个主要为开源类库使用设计的开源协议,因为FSF逐渐意识到,GPL协议的强制传染性在某些场景下太过苛刻,会阻碍开源产品被更广泛的传播和使用,实际上很多软件开发过程中使用开源软件的场景,仅仅是把某个开源软件当做底层的库来引用,针对此种场景,FSF在1991年发布GPL第二版时,发布了LGPL第一版。LGPL的含义可以理解为:它允许企业与软件开发者将LGPL授权的软件以依赖库链接的形式集成至他们自己的软件内(即使该软件是私有软件也被允许),同时不会受到类似于GPL传染特性的许可证强制对软件开源的限制。但如果修改LGPL协议的代码而产生的衍生代码,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。采用LGPL的项目本身虽然仍有“Copyleft”的限制条件,但这些限制不会感染到仅仅只链接到本项目的软件。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。LGPL为了在GPL与其他许可式许可证之间获取折衷,常被用于一些GNU程序库,亦可使用于独立存在的应用程序中,比较有名的例子为 Mozilla 跟 http://OpenOffice.Org。三、MPL:1、概念:MPL,即 Mozilla公共许可证,是 Mozilla Public License 的简称,由Mozilla基金会开发并维护。2、版本演进历史:第一版,1.0版本,1998年发布。第二版,1.1版本,其主要变更是理清了关于专利部分的条款,以及允许多个许可证之间共存。第三版,2.0版本,2012年1月3日发布。该版本使许可协议更加清晰,更加方便应用,同时也兼容于GPL及Apache许可证。从1.1版本开始,允许遵循MPL许可证的项目里多个许可证的共存,这一特性旨在鼓励与偏好使用GPL许可的开发者合作。1.1版本的结构,法律切合度,以及其对专利权的明确态度都深深的影响了后来流行的许可协议,有点像是第三版的GPL。很多项目都以此派生出他们自己的许可协议,如Sun Microsystems的通用开发与散布许可证。3、协议特点:MPL允许在其授权下的源代码与其他授权的文件进行混合,包括私有许可证,但在MPL授权下的代码文件必须保持MPL授权,并且保持开源。可以理解为:遵循MPL的项目允许使用者对于MPL作品进行二次开发和发布,但MPL的部分、以及修改的部分,需要遵循MPL协议,并对修改部分作出说明,但允许衍生项目中有私有模块的存在。这样的条款让MPL既不像MIT和BSD那样允许派生作品完全转化为私有,也不像GPL那样要求所有的派生作品包括新的组件在内的作品全部必须保持GPL。一句话,MPL协议通过允许在派生项目中存在私有模块,同时保证核心文件的开源,同时激励了商业及开源社区来参与帮助开发核心软件。4、发展与应用:MPL既是得到自由软件基金会(FSF)承认的自由软件许可证,也是得到开放源代码促进会(OSF)承认的开源软件许可证。该协议融合了BSD许可证和GNU通用公共许可协议的特性,追求平衡专有软件和开源软件开发者之间的顾虑。MPL用于 Mozilla Firefox、Mozilla Thunderbird 及其他 Mozilla软件的许可,也被其他产品所用,如Adobe以此为Flex产品线许可,还有LibreOffice 4.0(同时使用LGPLv3)。首发公众号【战神波波】,欢迎来交流~编辑于 2021-02-17 16:46开源许可证GPLLGPL赞同 651 条评论分享喜欢收藏申请转载文章被以下专栏收录技术人生希望通过努力,我们都能按照自己的方式自由的生
GPL、MIT、Apache...一文讲清楚开源协议间的区别 - 知乎
GPL、MIT、Apache...一文讲清楚开源协议间的区别 - 知乎切换模式写文章登录/注册GPL、MIT、Apache...一文讲清楚开源协议间的区别走神的阿圆个人开发者到底选择GPL协议还是MIT协议?为什么小米可以避开开源协议?安卓是开源的,为什么华为还要自己造鸿蒙?你知道史上最奇葩的开源协议吗?...这些问题,都将在这篇文章中找到答案。开源,是很多个人开发者选择的道路。开源不仅能够帮助整个生态共同进步,也能够帮助个人开发者提升技术和名气,这一点从vue就能看出来。但是,开源的意思并不是没有规则,全部无条件的免费提供给别人用,必须要遵循一定的规则,这个规则就是开源协议(Open Source License)。世界上的开源协议大概有上百种,但是常用的只有5、6种,网络上的很多文章只是笼统的介绍,并没有说清楚这些协议的关键区别,以及每种协议对开发者的好处和限制。为了帮助开发者区别这些协议,这篇文章对常见的几种协议进行介绍,包括需要遵循的原则以及目前使用这些协议的代码库。GPL-强制开源-linuxGPL(GNU General Public License):GNU通用公共许可协议。GPL协议的目的就是强制代码开源和免费使用。其最大的特点就是“开源的传染性”。也就是说,假设某公司使用了具有GPL协议的代码库,那么他理论上也必须把自己的代码库开源。注意,这里是理论上。实际上,大公司可以有很多方法避开这个限制。比如,2015年的时候,小米被指责违反了GPL协议,MIUI系统是基于Android开发的,而内核Linux遵循的是GPL协议,那么小米也必须对自己的MIUI系统进行开源。但是小米方面给出的答复是“很快就会开源”。这个很快,就慢慢拖着,反正我也不否认未来会开源。另外,大公司还会选择为自己维护一套闭源的商业代码。比如最著名的AOSP (Android Open-Source Project) 和Android。AOSP是开源的安卓系统,而Android这个词已经变成了谷歌的一个商标,以及附加了GMS等一些软件的大系统。什么意思呢,我们认为开源的那套系统,实际上就像一个毛坯房,而真正附加了谷歌全家桶等软件的Android,是精装房,精装的部分是不开源的。这也就是华为为什么非要自己基于AOSP开发一套操作系统,你要不这么干的话,只要谷歌禁止你使用Android,马上就死。正好说个笑话,GPL协议没有限制你卖钱。也就是说理论上,你可以把原汁原味的开源linux系统卖给别人,当然有没有买家就另说了。LGPL-让公司能够拿GPL卖钱-Qt由于GPL协议的“开源传染性”,一些公司肯定无法接受将自己的代码开源出去,这还怎么赚钱呢?于是出现了LGPL( GNU Lesser GPL),也就是限制更少(针对想闭源卖钱的公司)的GPL。如果公司只是想白嫖某个LGPL协议的代码库,而不需要对其及进行修改,那就可以使用此协议。具体来说就是,如果使用动态链接LGPL代码库,则你不需要开源。如果使用静态链接,则你可以通过封装一层的方式避免开源,可以简单理解为只需要开源直接调用LGPL库的那部分代码就可以了。是不是有些难以理解,没关系,我们举个例子。假设有一个LGPL库,名为LibA,现在你在源文件main.cpp中使用了此库,如下:int main() {
LibA.init();
LibA.DoSomething();
}
按照LGPL协议,你的这个源文件必须要开源,因为它直接调用了LibA的代码。如何避免呢?封装!你再写一个封装文件wrapper.cpp,如下:void my_libA_init() {
LibA.init();
}
void my_libA_DoSomething() {
LibA.DoSomething();
}
接下来,在你的main.cpp中这么使用:int main() {
my_libA_init();
my_libA_DoSomething();
}
那么,你只需要开源wrapper.cpp,而不需要开源main.cpp了,这就避免了把想要隐藏的上层逻辑开源出去,也就能够作为商业软件卖钱了。著名的GUI开发框架Qt使用了LGPL协议。MIT-受公司欢迎的宽松协议-vueMIT(The Massachusetts Institute of TechnologyLicense,麻省理工学院许可协议)是众多协议条款中,被广泛使用的其中一种。与其他常见的软件许可协议相比,MIT是相对宽松的软件许可协议。MIT协议允许你任意的使用、复制、修改原MIT代码库,随便你卖钱还是开源,唯一需要遵循的原则就是在你的软件中声明你也使用的是MIT协议就行了。而很多的公司企业在选用开源产品的时候都首选MIT协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。UI框架VUE、脚本语言Lua使用的就是MIT协议。BSD-别借我的名气做宣传!协议几经变种,和MIT协议区别已经不大,唯一的小区别是BSD要求开发者不能利用前人的名义做宣传。比如我不能以某某升级版,某某加强版的名义来宣传我的软件。Apache-加强法制宣传-PaddlePaddleMIT和BSD协议有一个特点:简洁。这个特点具有两面性,一方面,作为个人开发者,可以放心的使用MIT或BSD协议而不太需要担心背后的法律风险,第二方面,大公司在开源自己软件时,会担心由于“过度宽松”导致产生一些法律纠纷。因此,Apache协议出现了。 在保持较为宽松的开源基础上,加上了一些避免法律冲突的限制。比如,要求在每个许可文件中,必须保留再分发代码中的任何原始著作权、专利、商标等。因此,大公司往往倾向于使用Apache协议而不是稍微模糊的MIT协议。百度的深度学习框架PaddlePaddle使用了Apache协议。WTFPL-我甚至不敢写全称的奇葩协议如果你觉得上面的协议没一个自由的,你崇尚绝对的自由开源,那么这条协议就太适合你了。WTFPL协议是目前最奇葩的协议,奇葩在两点。第一点是,这个协议实际上没有任何内容,这里是这个协议的内容。鉴于这里面敏感词太多我就不逐字翻译了。大致意思就是:你想干什么就干什么吧,你可以随便改代码,你也可以随便改协议内容,。第二个奇葩点在于。这个协议是已经被认证了的协议......现在,你搞清楚不同开源协议之间的区别了吗?公众号【走神研究所】,旨在用简单的语言把复杂的技术讲清楚,欢迎关注!B站、抖音、快手【走神的阿圆】,旨在露个脸编辑于 2022-01-14 13:15GPL开源麻省理工学院 (MIT)赞同 11211 条评论分享喜欢收藏申请
严格遵守 GPL 的代码如何商用? - 知乎
严格遵守 GPL 的代码如何商用? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册代码管理严格遵守 GPL 的代码如何商用?项目中用到 GPL 协议的库,没有修改源码,只是引用库。商业发布是否也要遵循 GPL 协议,开源?免费?显示全部 关注者103被浏览288,054关注问题写回答邀请回答好问题 21 条评论分享8 个回答默认排序知乎用户 GPL 只是规定用户在获取你的程序的时候必须可以获得源代码,但并没有规定必须免费,因此理论上说,你仍然可以收取费用。不过,由于 GPL 规定你不得阻止用户再分发,因此用户完全可以从你这里买来代码之后再免费送给所有其它人,因此对于 GPL 代码想要收费发布难度是很大的,目前比较可行的办法是像 Redhat 那样,通过提供订阅和服务的方式来收费,提供一些额外的增值服务吸引用户交费。当然,如果你的程序只是自己内部使用,并没有分发给用户的话,那就不存在必须开源的问题了。程序的生成物是不被看作程序的一部分的,因此你使用一个开源的库搭建了一个网站,如果仅仅将生成物,也就是生成的 HTML 页面,展示给用户,而不出售网站本身的代码的话,是不需要开源的。如果你的确需要发布你的程序,但又不想开源,规避 GPL 的方法是通过 LPC 或者 RPC 间接调用库里的接口。只要库和你的程序不运行在同一进程下,就不需要开源。另外,你需要区分 GPL 和 LGPL。LGPL 的要求比 GPL 低,你可以动态链接一个 LGPL 的库而不需要开源你自己的程序,而 GPL 是不行的。 编辑于 2013-08-28 03:30赞同 1048 条评论分享收藏喜欢收起码农1995 关注这个主要看2c卖产品还是2b卖服务了。gpl不排斥商用,而且我记得gpl的faq还鼓励盈利。gpl主要限制了在分发时必须附带源码,没有分发行为就没有义务开源。所以你想改改gpl发布一个工具类的软件,卖给用户,你当然可以收费,但必须附带源码给用户。问题是gpl还规定不得阻止用户在gpl下再分发,那么收费就没有什么意义了,没有多少人有意愿会再付费。所以做这类软件靠捐款比较靠谱,也就是情怀。比较成熟的商业模式就是外包,服务,咨询这些了。你可以帮客户基于gpl代码定制开发一个网站,系统之类项目,并收取一定费用了。客户可以公开源码,但一般不会这么做,这样反而导致自己的损失,竞争对手使用,安全问题等。还有就是红帽公司了,主要卖服务,售后咨询,红帽这么卖力开源,就是为了推广自己那套标准,争夺话语权。发布于 2019-05-05 08:20赞同 93 条评论分享收藏喜欢
如何在你的软件中使用 GNU 许可证 - GNU 工程 - 自由软件基金会
如何在你的软件中使用 GNU 许可证 - GNU 工程 - 自由软件基金会
跳转到正文
自由软件支持者:
加入 FSF
GNU操作系统
由自由软件基金会资助
Site
navigation 跳过
关于 GNU
哲学
=
许可证
=
教育
软件
发行版
文档
恶意软件
帮助 GNU
音视频
GNU 艺术
欢乐
GNU 人物
软件目录
硬件
网站地图
这是针对英文原版页面的中文翻译。
如何在你的软件中使用 GNU 许可证
本文简介如何让你的程序使用 GNU 通用公共许可证、GNU 宽通用公共许可证或者 GNU Affero 通用公共许可证。对 GNU 自由文档许可证,请参看我们的 独立页面。
更多信息,请参看我们的 许可证常见问题解答。
如果你考虑使用 GNU 宽通用公共许可证,请先阅读 “为什么你的下一个库不应该使用
LGPL”。该文章解释了为什么使用普通的 GPL 更好,以及我们会如何决定。
以下总结了在选择按照我们的许可证发布程序时,你需要做的事项:
从你的雇主或学校获取一份版权免除声明。
为每个文件提供适当的版权声明。确保 用户可用的许可证版本被清晰地标识出来。
添加一个带有 GNU GPL 或 GNU AGPL 副本的 COPYING 文件。
如果使用了 GNU LGPL,那么再添加一个带有 GNU LGPL 副本的 COPYING.LESSER 文件。
每个文件都要有许可证声明。
(可选项)程序开始时显示一个声明。
(如果使用 AGPL)让程序带有提供源代码的选项。
这意味着每个程序都要添加两个单元:版权声明(比如 “Copyright 1999 Terry
Jones”)和拷贝授权声明,说明本程序按照 GNU 通用公共许可证(或 LGPL、Affero GPL)的条款发布。
目录
版权免责声明
版权声明
许可证文件
许可证声明
为什么要有许可证声明?
起始声明
Affero 声明
其他
版权免除声明
如果你是个人,并且你有雇主或你在校学习,请你的雇主或学校就你的程序签署一份版权免除声明是明知之举,这样他们以后就不能再对此主张版权而彻底剥夺你发布程序的权利。这个真的和
GNU GPL 无关——无论你的程序使用何种自由软件许可证,你都要考虑这个版权免除声明。
以下是一个版权免除声明的式样;你只需适当修改名字、题目和程序说明就好了:
Yoyodyne 公司,现在声明放弃所有与由 James Hacker 编写的程序
“Woodpecker”(该程序分解树形结构)有关的版权利益。
Moe Ghoul 签署 1989 年 4 月 1 日
Moe Ghoul,副总裁
如果你是大学生,我们建议你 在编写程序的早期
就要求版权免除声明以减少阻力。如果你不是研究助理或助教,那么有可能学校对你的工作并不能主张版权,不过最好还是咨询一下律师来确认此事。
如果你受雇,最好 在商讨雇佣合约时,就讨论发布自由软件的许可。
版权声明
版权声明应该包含你完成许可证的年份(如果你是 1998 年准备好许可证的,但是在 1999 年才使用,那么请使用 1998
年)。你还应该提供每个发布版本的年份;比如,如果在你 1998 年发布了一些版本,在 1999 年也发布了一些版本,那么你应该写上
“Copyright 1998, 1999 Terry Jones”。如果代码包含多个人的贡献,那么请写上所有人的名字。
如果在连续多年都有软件发布,那么你可以使用一个年限范围(“2008-2010”)而无需列出单个年份(“2008,
2009, 2010”),除非其中有单个 “版权”
年份需要单独列出;而且你要在文档中明确说明这一点。
按照国际惯例,请使用英文的 “Copyright” 一词;即使文档使用的是其他语言。如果愿意(并且字符集支持),加上版权的图标
“©” 也没问题,但并不是必须的。使用 “(C)” 并没有特别的法律效果,但是也无伤大雅。
如果你拷贝的其他程序的代码也使用同样的许可证,那么把它们的版权声明也拷贝过来。请把一个文件的所有版权声明放在一起,并放在文件的一开始。
许可证文件
你应该在程序中包含一份许可证的拷贝。所有程序,无论是 GPL,还是 LGPL,都应该包含 GPL
的纯文本版。对 GNU 程序来说,我们的惯例是把许可证放在一个叫做 COPYING 的文件里。
如果你的程序按照 GNU AGPL 发布,那么请使用 GNU AGPL
的纯文本版,而不是 GNU GPL 的纯文本版。
如果你的程序按照 Lesser GPL 发布,那么你还要包含一份 LGPL
的纯文本版,通常放在叫做 COPYING.LESSER 的文件里。请注意,LGPL 是在 GPL 基础上的一些额外授权,所以你的程序包含
LGPL 和 GPL 两个许可证拷贝非常关键,这样用户才能够全面了解他们的权利。
许可证声明
每个文件的复制许可声明(又称为许可证声明)应当紧跟在版权声明之后。对由单个文件构成的程序,该声明(对 GPL)应该类似以下内容,使用 GPL 版本 3
或以后版本:
本程序是自由软件:你可以再分发之和/或依照由自由软件基金会发布的 GNU 通用公共许可证修改之,无论是版本 3
许可证,还是(按你的决定)任何以后版都可以。
发布该程序是希望它能有用,但是并无保障;甚至连可销售和符合某个特定的目的都不保证。请参看 GNU 通用公共许可证,了解详情。
你应该随程序获得一份 GNU 通用公共许可证的复本。如果没有,请看
对由多个文件构成的程序,最好将其中的 “this program” 替换为程序的名字,并以 “This file
is part of NAME” 为开头。例如,
本文件是 Foobar 的一部分。
Foobar 是自由软件:你可以再分发之和/或依照由自由软件基金会发布的 GNU 通用公共许可证修改之,无论是版本 3
许可证,还是(按你的决定)任何以后版都可以。
发布 Foobar 是希望它能有用,但是并无保障;甚至连可销售和符合某个特定的目的都不保证。请参看 GNU 通用公共许可证,了解详情。
你应该随程序获得一份 GNU 通用公共许可证的复本。如果没有,请看
如果要使用一个不同版本的 GPL,你需要改写一些第一段的末尾部分。例如,如果使用的是版本 2 或者其以后版本,你需要把 “3”
替换为 “2”。
该声明应当放在每个源文件的开头,就在版权声明下面。当使用 LGPL 时,请在 三处 出现 “General”
一词的前面插入 “Lesser”。当使用 GNU AGPL 时,请在 三处 出现
“General” 一词的前面插入 “Affero”。
为什么要有许可证声明?
自由软件许可证的意义在于给所有软件用户应有的权利。如果你给予的权利没有清晰的描述,那么就是无的放矢。我们的做法就是避免任何不确定性。
如果一个程序在其源代码里复制了一份 FOO 许可证,但是并没有明确声明 “This program is released under
license FOO,”那么这里就有 FOO 许可证是否会应用到该程序的不确定性漏洞。
如果一个发布版在诸如 README 文件里声明了 “This program is released under license
FOO,”那么对 该发布版
就是清楚的。然而,程序员经常会把源文件从一个程序复制到另一个程序。如果一个源文件不包含许可证声明,那么文件拷贝就会让源文件失去许可证信息。这就会造成混淆和错误。
起始声明
对于有交互的程序,让程序在开始时显示简要的版权声明和拷贝许可通常是一个不错的主意。请参看 GNU GPL 末节 来了解更多信息。
Affero 声明
如果你要使用 GNU AGPL
发布程序,并且程序通过网络和用户交互,那么该程序应当为其用户提供源代码。例如,如果程序是网络应用,那么用户界面应当显示用户可以访问的
“源代码” 链接。GNU AGPL 接受非常宽泛的源代码访问手段,请 —参看其第 13 节。
其他
从实用的原因来看,在比如 README 文件里,包含你的联系方式是非常重要的,但是对实施许可证的法律问题来说,这个并不相关。
没有法律要求你需要登记版权;编写程序就意味着有了版权。不过,在美国,通过 US Registry of Copyrights
注册版权是一个好主意,因为这样的话,如果有人在美国违反了许可证,你就处在非常有利的地位。大多数国家并没有此类版权注册的机构。
我们想要在自由软件目录下列出所有的自由软件,包括所有使用 GPL (无论版本)的自由软件。因此,当你的程序达到一定的可用度时,请提交一个说明条目。请参看
自由软件目录
Wiki 来了解更多信息以及在线提交的格式。
你的程序也可以变成 GNU 软件包,作为 GNU 工程的一部分。如果你有兴趣加入 GNU 工程,请参看 GNU 软件评价页面 来了解更多信息并完成一个问卷。我们会联系你并和你讨论此事。
即使你的程序不是 GNU
软件包,你也可以使用我们的许可证;实际上,我们很期待你使用我们的许可证,无论哪个版本都行。它们是为所有人准备的。如果你想对你使用的许可证做推广,请放心使用
我们的许可证标识。
▲
返回顶部
设置语言
本页可选语言:
[en] English
[ca] català
[de] Deutsch
[es] español
[fr] français
[it] italiano
[ja] 日本語
[pl] polski
[pt-br] português
[ru] русский
[ta] தமிழ்
[tr] Türkçe
[zh-cn] 简体中文
返回顶部▲
“自由软件基金会(FSF)是一个非盈利组织。我们的使命是在全球范围内促进计算机用户的自由。我们捍卫所有软件用户的权利。”
加入 捐助 购物
请将有关自由软件基金会(FSF) & GNU的一般性问题发送到
我们尽最大努力来提供精准和高质量的翻译,但难免会存在错误和不足。如果您在这方面有评论或一般性的建议,请发送至
《译者指南》。
Copyright © 2001, 2007-2009, 2011, 2017, 2018, 2022, 2023 Free Software
Foundation, Inc.
本页面使用 Creative Commons
Attribution-NoDerivatives 4.0 International License授权。
版权侵权通知
翻译团队:
最后更新:
$Date: 2023/11/30 10:13:51 $
这6种开源协议(GPL,LGPL,BSD,MIT,Apache)的说明和选择-腾讯云开发者社区-腾讯云
源协议(GPL,LGPL,BSD,MIT,Apache)的说明和选择-腾讯云开发者社区-腾讯云辉哥这6种开源协议(GPL,LGPL,BSD,MIT,Apache)的说明和选择关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网辉哥首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >这6种开源协议(GPL,LGPL,BSD,MIT,Apache)的说明和选择这6种开源协议(GPL,LGPL,BSD,MIT,Apache)的说明和选择辉哥关注发布于 2019-05-25 08:35:4616.8K0发布于 2019-05-25 08:35:46举报文章被收录于专栏:区块链入门区块链入门1,摘要本文介绍五种开源协议GPL,LGPL,BSD,MIT,Apache,以及如何选择这几种协议。2,开源协议的选择逻辑图如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种,很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。
乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别【阮一峰语】。3,开源协议(GPL,LGPL,BSD,MIT,Apache)的说明3.1 BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。3.2 Apache Licence 2.0Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:需要给代码的用户一份Apache Licence如果你修改了代码,需要再被修改的文件中说明。在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。3.3 GPL我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。3.4 LGPLLGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品3.5 MITMIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.3.6 MPLMPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:◆ MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。
◆ MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
◆ 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
◆ 对源代码的定义
而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
◆ MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。4.参考(1) 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
(2) 如何选择开源许可证?本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2019.05.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看开源apache面向对象编程本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!开源apache面向对象编程评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录1,摘要2,开源协议的选择逻辑图3,开源协议(GPL,LGPL,BSD,MIT,Apache)的说明3.1 BSD开源协议3.2 Apache Licence 2.03.3 GPL3.4 LGPL3.5 MIT3.6 MPL4.参考领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00
The GNU General Public License v3.0 - GNU Project - Free Software Foundation
The GNU General Public License v3.0
- GNU Project - Free Software Foundation
Skip to main text
Free Software Supporter:
JOIN THE FSF
GNU Operating System
Supported by the
Free Software Foundation
Site navigation
Skip
ABOUT GNU
PHILOSOPHY
=
LICENSES
=
EDUCATION
SOFTWARE
DISTROS
DOCS
MALWARE
HELP GNU
AUDIO & VIDEO
GNU ART
FUN
GNU'S WHO?
SOFTWARE DIRECTORY
HARDWARE
SITEMAP
GNU General Public License
Skip to license text
A Quick Guide to GPLv3
Why Upgrade to GPLv3
Frequently Asked Questions about
the GNU licenses
How to use GNU licenses for your
own software
Translations
of the GPL
The GPL in other formats:
plain text,
Texinfo,
LaTeX,
standalone HTML,
ODF,
Docbook v4 or
v5,
reStructuredText,
Markdown, and
RTF.
GPLv3 logos to use
with your project
Old
versions of the GNU GPL
What to do if you see a
possible GPL violation
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
“This License” refers to version 3 of the GNU General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this
License. Each licensee is addressed as “you”. “Licensees” and
“recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a “modified version” of the
earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based
on the Program.
To “propagate” a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices”
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The “source code” for a work means the preferred form of the work
for making modifications to it. “Object code” means any non-source
form of a work.
A “Standard Interface” means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
“Major Component”, in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
“keep intact all notices”.
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
“aggregate” if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A “User Product” is either (1) a “consumer product”, which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, “normally used” refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
“Installation Information” for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered “further
restrictions” within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A “contributor” is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's “contributor version”.
A contributor's “essential patent claims” are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, “control” includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To “grant” such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. “Knowingly relying” means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is “discriminatory” if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License “or any later version” applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the “copyright” line and a pointer to where the full notice is found.
Copyright (C)
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
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
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.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a “copyright disclaimer” for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
▲
BACK TO TOP
Set language
Available for this page:
[en] English
[ar] العربية
[ca] català
[de] Deutsch
[fr] français
[ja] 日本語
[nl] Nederlands
[pt-br] português
[ru] русский
[tr] Türkçe
[uk] українська
[zh-cn] 简体中文
[zh-tw] 繁體中文
BACK TO TOP ▲
“The Free Software Foundation (FSF) is a nonprofit with a worldwide
mission to promote computer user freedom. We defend the rights of all
software users.”
JOIN
DONATE
SHOP
Please send general FSF & GNU inquiries to
There are also other ways to contact
the FSF. Broken links and other corrections or suggestions can be sent
to
Please see the Translations
README for information on coordinating and contributing translations
of this article.
Copyright notice above.
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
Copyright Infringement Notification
Updated:
$Date: 2023/11/30 09:46:01 $
许可证 - GNU 工程 - 自由软件基金会
许可证 - GNU 工程 - 自由软件基金会
跳转到正文
自由软件支持者:
加入 FSF
GNU操作系统
由自由软件基金会资助
Site
navigation 跳过
关于 GNU
哲学
=
许可证
=
教育
软件
发行版
文档
恶意软件
帮助 GNU
音视频
GNU 艺术
欢乐
GNU 人物
软件目录
硬件
网站地图
这是针对英文原版页面的中文翻译。
许可证
目录
评估许可证
自由软件许可证的常用资源
GNU 通用公共许可证
GNU 宽通用公共许可证
GNU Affero 通用公共许可证
GNU 自由文档许可证
GNU 许可证的例外情况
许可证链接
许可证的非官方翻译
逐字复制与分发
自由软件许可证列表
什么是Copyleft?
其它类型作品的许可证
任何软件都应当以自由软件发布。要让一个软件成为自由软件,您需要把它以自由软件许可证发布。我们通常使用GNU通用公共许可证(GNU GPL)发布软件,指定是第3版或更新的版本,但有时我们也使用其他的自由软件许可证发布软件。在GNU软件包中,我们只使用与GNU
GPL兼容的许可证。
自由软件的文档应当是 自由文档
,以便人们可以随着软件的改进去更新它或是重新发布它。若要把文档以自由文档的形式发布,您需要使用自由文档许可证。我们通常使用 GNU 自由文档许可证 (GNU FDL) ,但少数情况下我们也使用 其他的自由文档许可证 。
如果您开展了一个新的项目,但不太确定应该选用何种许可证,那么 “如何为您的作品选择许可证”
一文可以以一种简单且容易遵循的方式给您以帮助。如果您只是需要一个用于快速参考的许可证列表,可以访问我们的 推荐的 Copyleft 许可证 页面。
我们还专门开设了一个页面讲述 BSD 许可证的问题。
评估许可证
如果你碰到没有在我们的许可证列表里提到的许可证,你可以要求我们评估该许可证是否为自由许可证。请将该许可证的拷贝(以及你遇到该许可证的链接)发邮件到licensing@fsf.org。我们的许可证专家和董事会成员会审查该许可证。如果该许可证带有不寻常的条款,那么它会是个棘手的哲学问题,所以我们无法保证做出快速决定。
自由软件许可证的常用资源
我们列出以下资源帮助人们理解和使用我们的各种许可证:
有关 GNU 许可证的常见问题
如何为您自己的软件使用 GNU 许可证
发现违反 GNU 许可证的情况您该怎么做
许可证兼容性和再授权
自由软件许可证列表
如果您在高校工作,请发布自由软件
为什么自由软件基金会可以从自由软件贡献者获得版权
在您的项目中使用 GNU 许可证标识
自由软件基金会许可证及合规团队
咨询许可证相关的各种问题,请联系
GNU 通用公共许可证
GNU 通用公共许可证常常被缩写为 GNU GPL,大部分 GNU 的程序和超过一半的自由软件使用这种许可证。GNU GPL 的最新版本是3。
GNU 通用公共许可证有以下几种格式:HTML、纯文本、ODF、Docbook
v4或者v5、Texinfo、LaTeX、Markdown和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
GPLv3 快速指南
GNU GPL 的早期版本
GNU 宽通用公共许可证
一小部分(不是全部)的GNU库使用GNU宽通用公共许可证 (GNU LGPL)。GNU LGPL 的最新版本是3。
GNU 宽通用公共许可证文本有以下格式:HTML、纯文本、Docbook、Texinfo、Markdown、ODF和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
为什么我们不应该在新的开发库中使用 LGPL
GNU LGPL 的早期版本
GNU Affero 通用公共许可证
GNU Affero 通用公共许可证 (GNU AGPL) 基于 GNU
GPL,但它添加了一些条款以允许用户获取那些通过网络访问的应用的源代码。我们建议考虑对于那些通过网络被他人使用的软件采用GNU AGPL。GNU
AGPL 的最新版本是3。
GNU Affero 通用公共许可证文本有以下格式:HTML、纯文本、Docbook、Texinfo、LaTeX、Markdown、ODF和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
为什么要使用 Affero GPL
GNU 自由文档许可证
GNU 自由文档许可证 (GNU FDL)
是Copyleft的一种形式,用于在手册、教材或其它文档上以保证任何人都可以自由地复制和发布它们,不管是否对它们进行了修改,也不管是不是进行商业化使用。GNU
FDL 的最新版本是1.3。
GNU 自由文档许可证的文本有以下几种格式:HTML、纯文本、Docbook v4或者v5、Texinfo、LaTeX、Markdown、ODF和RTF。这些文档的格式不是为了单独发布使用,它们的目的是嵌入其他文档。
为什么出版商应当使用 GNU FDL
如何对您自己的文档使用 GNU FDL
GNU FDL 使用技巧
如何使用 GNU FDL 的额外功能
GNU FDL 的早期版本
GNU 许可证的例外情况
一些 GNU 程序在其主许可证规定的条款外增加了一些额外的许可或例外。我们把此类常用的情况、或者是问题多多的情况收集汇总在 许可证例外情况 页面。
许可证相关链接
当需要链接到我们的许可证时,应当链接到最新的版本。因此,标准的链接地址中都不包含版本号,比如:https://www.gnu.org/licenses/gpl.html
。然而,在少数情况下,也许您需要链接到某种许可证的指定版本。在这种情况下,您可以使用下面的链接地址 [跳过链接]:
GNU 通用公共许可证 (GPL)
GPLv3, GPLv2, GPLv1
GNU 宽通用公共许可证 (LGPL)
LGPLv3, LGPLv2.1
GNU Affero 通用共公许可证 (AGPL)
GNU AGPLv3(Affero
通用公共许可证第一版 不是一个 GNU 许可证,但它设计的目标与 GNU AGPL 相似。)
GNU 自由文档许可证 (FDL)
FDLv1.3, FDLv1.2, FDLv1.1
指向每种许可证的其它格式的固定链接可在各许可证页面上找到。不是每个许可证的每个版本都能找到其对应的每一种格式。如果您需要的某种格式的文本缺失,请 发邮件给我们。
请同时参看 许可证早期版本的页面。
许可证的非官方翻译
从法律意义上,GNU 程序或其他软件使用的 GNU
许可证条款应当以原始的语言版本(英语)为准。但是,为了帮助更多的人理解我们的许可证,我们允许在我们的规范下发布经过翻译的其他语言版本的非官方许可证文本。
FSF
不会批准许可证的翻译版为正式版本。原因是翻译版的核准困难而且昂贵(需要他国的双语律师协助)。如果有错误没有被发现,就会更糟,其结果对整个自由软件社区可能会是灾难性的。只要翻译版不是正式的版本,那么在法律上它们就不会造成伤害。
为了强调翻译版不是正式版,我们不会发布翻译版。确切得说,我们不在 gnu.org 贴出翻译版,也不会在其他 GNU 和 FSF
网站发布翻译版。我们只会提供链接。
许可证非官方翻译的列表
如何进行许可证的非官方翻译
逐字复制与分发
GNU 网页的标准版权条款现在是 Creative Commons
Attribution-NoDerivs 4.0 International License。过去是(现在有个别网页还是):
在全世界范围内的任何媒体上,逐字复制和分发本文的完整内容是被允许的,并且没有版税,条件是需要保留本声明。
请注意Eben Moglen关于本“逐字复制许可证”的评论:
“我们使用‘在任何媒体上不变更内容的全文复制’这个表述的目的并不要求必须保留类似页面标题、脚注或者其他格式化特性。但是要求在超链接或者非超链接媒体(如非HTML媒体中的说明或者其他印刷形式的链接)上保留网页链接。”
自由软件许可证列表
自由软件许可证列表
如果您正在考虑撰写一份新的许可证,请发送邮件至
以联系自由软件基金会。不断创造新的许可证会让用户花费更多的精力去理解,我们也许可以帮助您找到一个现有的自由软件许可证来满足您的需求。
如果您确实需要一种新的许可证,我们可以帮助您确保它是一份真正的自由软件许可证以避免各种现实中的问题。
什么是 Copyleft?
Copyleft
是一种让程序或其它作品保持自由的通用方法,它要求所有对 Copyleft 程序的修改和扩展都保持自由。
让程序成为自由软件的最简单的方法是放弃版权、并把它放到 公有领域
。这使得他人在需要的时候可以共享这个软件以及对它的改进。但这也使得一些不合作的人把它们转变成 专有软件
。他们可以或多或少地进行修改,并把成果作为商业产品来发布。这些修改过的程序不再像其原始作者所期望的那样给予用户自由,这种自由被中间商剥夺了。
在 GNU 工程 中,我们的目标是让 所有的
用户可以自由地重新分发或修改 GNU 软件。如果中间商可以剥夺自由,我们或许会有很多的用户,但这些用户不再拥有自由。所以我们并不把 GNU
软件发布到公有领域,我们对它保留“Copyleft”。所谓 Copyleft
是指任何人都可以重新分发软件,不管有没有进行修改,但必须同时保留软件所具有的自由特性。Copyleft是为了保证所有用户都拥有自由的权利。
Copyleft 同时也 鼓励 其他程序员加入自由软件开发的行列。像
GNU C++ 编译器这样的重要自由软件之所以存在,正是因为这一点。
除此之外,Copyleft 也帮助那些希望对 完善 自由软件
作出贡献的程序员得到贡献的许可。这些程序员通常是为那些一心想挣钱的公司或大学工作。程序员可能希望把她的努力贡献到自由软件社区,但其雇主可能希望把这些工作变成商业的软件产品。
当我们向其雇主解释说,如果不把这些改进的版本作为自由软件发布是非法的时候,他们往往会决定把它们作为自由软件发布而不是把它们抛弃。
一个程序遵循
Copyleft,我们首先声明它是有版权的;然后,我们给它加上发布的规则,这个规则就是一个法律声明,它赋予所有人有使用、修改和重新发布程序的代码
及其衍生作品 的权利,但要求在这个过程中发布规则是不可以改变的。这样的话,代码和自由权利在法律上就不可分割了。
商业软件开发人员通过版权剥夺了用户的自由,我们使用版权来给予他们自由。这就是为什么我们把“版权(Copyright)”改称为“Copyleft”。
Copyleft 是一个通用的概念,有很多方法来细化它。在 GNU 工程中,我们使用 GNU 通用公共许可证、GNU 宽通用公共许可证和 GNU
自由文档许可证来定义和发布这个概念的具体条款。
相应的许可证应当与所有的 GNU 软件源代码和手册一同发布。
假如您是著作权所有人的话,您可以很容易地在您的作品中使用设计好的 GNU GPL。您不用去修改 GNU GPL,您只需要在源代码文件中添加对 GNU
GPL 的适当引用就可以了。请注意如果您要使用 GPL ,您必须使用该许可证的全文。GPL 许可证(LGPL、AGPL 和 FDL
也一样)是一个整体,不允许只使用它的一部分。
对许多不同的程序使用相同的发布条款将使得在这些程序中相互复制代码变得容易。因为它们都具有相同的发布条款,您就不需要去考虑这些条款是否相互兼容。LGPL
第二版许可证允许您把发布条款改为标准的 GPL 许可证,所以您可以把 LPGL 的代码应用到其它 GPL 的程序中去。
其它类型作品的许可证
我们认为所有软件或文档应当以 自由软件和自由文档
形式发布。我们建议各种教育和参考资源也应该是自由的,对它们应当使用 GNU 自由文档许可证 (GNU FDL)。
对于观点论述或科技论文,我们建议使用与本页面一样的 Creative Commons
Attribution-NoDerivs 3.0 United States License
许可证授权,或者上面所描述过的简要的“仅允许逐字全文复制”许可证。
我们不认为艺术作品和娱乐作品也必须是自由的,但如果您希望把它自由发布,我们建议您参考 自由艺术许可证 。
▲
返回顶部
设置语言
本页可选语言:
[en] English
[ar] العربية
[ca] català
[de] Deutsch
[el] ελληνικά
[es] español
[fr] français
[it] italiano
[ja] 日本語
[nl] Nederlands
[pl] polski
[pt-br] português
[ru] русский
[sq] Shqip
[sr] српски
[tr] Türkçe
[zh-cn] 简体中文
[zh-tw] 繁體中文
返回顶部▲
“自由软件基金会(FSF)是一个非盈利组织。我们的使命是在全球范围内促进计算机用户的自由。我们捍卫所有软件用户的权利。”
加入 捐助 购物
请将有关自由软件基金会(FSF) & GNU的一般性问题发送到
我们尽最大努力来提供精准和高质量的翻译,但难免会存在错误和不足。如果您在这方面有评论或一般性的建议,请发送至
《译者指南》。
Copyright © 2014, 2015, 2016, 2018, 2020, 2021, 2022 Free Software
Foundation, Inc.
本页面使用Creative Commons
Attribution-NoDerivatives 4.0 International License授权。
版权侵权通知
翻译: Christopher Meng,李凡希,2010-2013。
审校: 李凡希,Nan Deng
翻译团队:
最后更新:
$Date: 2022/04/13 03:30:35 $
GNU通用公共许可证_百度百科
用公共许可证_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心GNU通用公共许可证播报讨论上传视频自由软件基金会发行的用于计算机软件的协议证书收藏查看我的收藏0有用+10GNU通用公共许可证简称为GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。大部分 GNU 的程序和超过一半的自由软件使用这种许可证。下面的正文是自由软件基金会GNU通用公共许可证原始文档的副本。Linux操作系统以及与它有关的大量软件是在GPL的推动下开发和发布的。中文名GNU通用公共许可证所属学科计算机科学目录1证书介绍2适用性3应用证书介绍播报编辑1991.6 第二版版权所有(C)1989,1991 Free Software foundation, Inc.675 Mass Ave, Cambridge, MA02139, USA允许每个人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。序言大多数软件许可证决意剥夺你的共享和修改软件的自由。对比之下,GNU通用公共许可证力图保证你的共享和修改自由软件的自由。——保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。当我们谈到自由软件(free software)时,我们指的是自由而不是价格。我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且将这些条款给他们看,使他们知道他们有这样的权利。我们采取两项措施来保护你的权利。(1)给软件以版权保护。(2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引入的任何问题,不应损害原作者的声誉。最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。下面是有关复制,发布和修改的确切的条款和条件。GNU通用公共许可证有关复制,发布和修改的条款和条件0. 此许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL条款的约束下发布。下面提到的“程序”指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版权法约束的衍生作品。也就是说包含程序或程序的一部分的作品。可以是原封不动的,或经过修改的和/或翻译成其他语言的(程序)。在下文中,翻译包含在修改的条款中。每个许可证接受人(licensee)用你来称呼。许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。适用性播报编辑是否普遍适用取决于程序具体用来做什么。1. 只要你在每一副本上明显和恰当地出版版权声明和不承担担保的声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。2. 你可以修改程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。(a) 你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。(b) 你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。(c) 如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当你将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。因此,本条款的意图不在于索取权利;或剥夺全部由你写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。3. 你可以以目标码或可执行形式复制或发布程序(或符合第2款的基于程序的作品),只要你遵守前面的第1,2款,并同时满足下列3条中的1条。(a)在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的源码。这些源码的发布应符合上面第1,2款的要求。或者(b)在通常用作软件交换的媒体上,和目标码一起,附有给第三方提供相应的机器可读的源码的书面报价。有效期不少于3年,费用不超过实际完成源程序发布的实际成本。源码的发布应符合上面的第1,2款的要求。或者(c)和目标码一起,附有你收到的发布源码的报价信息。(这一条款只适用于非商业性发布,而且你只收到程序的目标码或可执行代码和按(b)款要求提供的报价)。作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的script。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序,内核等)。除非这些组成部分和可执行作品结合在一起。如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。4. 除非你明确按许可证提出的要求去做,否则你不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制,修改,转发许可证和发布程序是无效的。而且将自动结束许可证赋予你的权利。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。5. 你没有在许可证上签字,因而你没有必要一定接受这一许可证。然而,没有任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证,这些行为是法律禁止的。因此,如果你修改或发布程序(或任何基于程序的作品),你就表明你接受这一许可证以及它的所有有关复制,发布和修改程序或基于程序的作品的条款和条件。6. 每当你重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的许可证。你不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履行许可证条款的义务。7. 如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题)的结果,强加于你的条件(不管是法院判决,协议或其他)和许可证的条件有冲突。他们也不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及其他相关的义务时,作为结果,你可以根本不发布程序。例如,如果某一专利许可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分。并将条款作为整体用于其他环境。本条款的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过通用公共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大量自由软件作出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统发布软件。许可证持有人不能强制这种选择。本节的目的在于明确说明许可证其余部分可能产生的结果。8. 如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受到限止,将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的条款,将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情况下,许可证包含的限止条款和许可证正文一样有效。9. 自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差别。每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及“任何更新的版本”。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。10. 如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同。写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导。这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态。以及从整体上促进软件的共享和重复利用。没有担保11. 由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其他提供程序的人们“一样”不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由你来承担。如果程序出现缺陷,你承担所有必要的服务,修复和改正的费用。12. 除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者程序不能和其他程序协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。最后的条款和条件如何将这些条款用到你的新程序如果你开发了新程序,而且你需要它得到公众最大限度的利用。要做到这一点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进行修改和重新发布。应用播报编辑为了做到这一点,给程序附上下列声明。最安全的方式是将它放在每个源程序的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”行以及在什么地方能看到声明全文的说明。<用一行空间给出程序的名称和它用来做什么的简单说明>版权所有(C) 19XX <作者姓名>这一程序是自由软件,你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你的选择)用任何更新的版本。发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,写信给:The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,MA02139, USA还应加上如何和你保持联系的信息。如果程序以交互方式进行工作,当它开始进入交互方式工作时,使它输出类似下面的简短声明:Gnomovision 第69版, 版权所有(C) 19XX, 作者姓名,Gnomovision绝对没有担保。 要知道详细情况,请输入‘show w’。这是自由软件,欢迎你遵守一定的条件重新发布它,要知道详细情况,请输入‘show c’。假设的命令‘show w’和‘show c’应显示通用公共许可证的相应条款。当然,你使用的命令名称可以不同于‘show w’和‘show c’。根据你的程序的具体情况,也可以用菜单或鼠标选项来显示这些条款。如果需要,你应该取得你的上司(如果你是程序员)或你的学校签署放弃程序版权的声明。下面只是一个例子,你应该改变相应的名称:Yoyodyne公司以此方式放弃James Harker所写的 Gnomovision程序的全部版权利益。,1989.4.1Ty coon付总裁这一许可证不允许你将程序并入专用程序。如果你的程序是一个子程序库。你可能会认为用库的方式和专用应用程序连接更有用。如果这是你想做的事,使用GNU库通用公共许可证代替本许可证。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000科普一下GPL和开源软件 - 知乎
科普一下GPL和开源软件 - 知乎首发于软件架构设计切换模式写文章登录/注册科普一下GPL和开源软件知乎用户G0K17q最近关于“自主”的话题很热,我个人对现在的主流论调不以为然,但也不想纠正他们,策略性的东西,说多错多,如果你非要问我,我宁愿说你该干嘛干嘛去,不关你的事,你自己虚心实腹,“智者”才不敢为。但我想科普一下关于开源的基础知识,作为真想干点正事的人的参考。我们先来理解一下到底什么是GPL开源协议。GPL是一种版权授权声明。我们平时看电影,里面往往会有一个声明:“版权所有,侵权必究,XXXX有限公司”。什么是版权呢?它是用来保护知识产权的。比如你写了一本小说,每本卖100块钱,这其中,可能有纸的成本,有印刷的成本,有渠道的成本,但那个不值100块钱,真正值的,是你的“创作”,因为你的劳动,读者应该给你付钱。什么是侵犯版权呢?有个人,买了你一本书,然后拿着这个内容,重新印了1000本,每本50块钱卖出去,他只付出了纸和渠道的成本,就借你的知识产权获得利益。这就是侵犯版权。侵犯版权,违反法律,也违反道德,你利用了别人的劳动成果获得收益,挤占了人家的收益。版权是自动拥有的,你写了一篇日记,作了一首歌曲,演绎了一段(即使是其他人作曲的)钢琴曲,写了一段程序,你就自动拥有这个“作品(work)”的版权。大部分国家的版权法(所有加入WTO的国家都必须有类似的版权法),保护期限是100年,如果你的作品经过了修改,新的作品会延长保护期。所以你经常看到软件代码的版权声明中,都这样写:Copyright 2000-2018 by XXX Ltd. All Rights Reserved这就是说,这个作品第一次创作是2000年,2018年经过了修改,版权属于XXX公司,保留所有权利(比如署名权,收益权,不被修改的权利等)。如果你要使用这个作品,你需要取的版权拥有者的认可,否则你就侵犯了这个公司的权利。这样,这个作品在应用到特定国家的法律的时候,都可以从这个声明上来进行计算。国内不少程序员能写出Copyright 2000-2050这样的声明,这属于完全不知道版权声明是什么的。专利也是一种知识产权,但它和版权是不同的,专利是一种方法(或者用特定方法设计的装置和改进),或者说是一组方法的特征。比如我的程序使用了特定的算法获得一组数据的特征,从而优化了cache的预期效果,这就可以申请为一种“专利”。专利是一组特征,而版权是一个“实现”;专利需要申请,版权不需要;专利申请后需要每年付钱来维持,版权也不需要;专利如果被人证明,在你提出前,已经有人公开类似的方法了,就会失效,版权没有这个问题;专利的保护年限很短(很多国家只有20年左右),版权则长得多;等等。对此,读者可以先Keep in mind,我们后面谈GPL的具体问题的时候会涉及到。GPL又称为Copyleft,这是一种英语的调侃,因为Copyright的那个right,有多个含义。用作copyright的时候,right是权利的意思,但它同时还是“右边”的意思。所以叫它Copyleft,表示这是和Copyright是走另一边的。但Copyleft确确切切是一种Copyright!如果有人写了一个代码,他自动就拥有这个代码的Copyright了,但他说,我希望更多人来使用它,你们不用跟我协商了,直接用就好了。这不表示他放弃了这个作品的版权,这只是说,他做了授权,授权你使用这个作品而已。有时我们看到,一个作品可以是双授权的,比如一方面是GPL的,同时又是商业授权的,这一点问题没有。因为作品的创作人拥有对自己作品做任何授权的权利。GPL授权对被授权者是有要求的,它重点强调:第一,和大部分开源软件一样,这个作品提供给你AS IT IS,作者不为任何物理损失负责。这个是开源授权的一个优势。作者可以少负责很多东西。所以,其实如果你给别人提供一个作品,而且不想负责任,简单使用一个开源授权协议,可以保护你自己的。对公司来说,这背后还有很多游戏可以玩,但那个属于商业机密,我就不在这里说了。第二,如果你,基于这个作品衍生了新的作品,那么这个新的“作品”,必须符合GPL协议,否则你就失去原作品的授权。第三,符合GPL协议的作品,在提供给它的使用者的时候,必须同时提供该作品的GPL部分的源代码。不能对该源源代码的使用作出限定。这第二点是最难解释的,也是现在大量误解的原因。首先,这个授权没有说明新的作品是否免费,你愿意卖多少钱其实都是可以的。但根据第三条,无论你多少钱卖出去,你的用户应该拿到这个产品的源代码。至于用户是否非要这个源代码,其实这个是两者之间可以协商的,其他人管不着。所以你现在看到的GPL侵权例子大部分都在消费者市场,因为消费者市场的用户无数,你没有办法协商,而且你不能在销售条款中要求消费者接受不找你要源代码,否则你就侵犯了被你衍生的原作品的版权。一旦你侵犯了原作品的版权,原版权拥有者就可以用“侵犯版权”来告你,这在西方国家,下场就是罚款和禁售,这个对商业公司来说,常常是致命的。我还看过案例,即使不是原版权拥有者也可以用“侵犯版权”来告倒侵权者。这相当于“我在路上看到别人偷东西,虽然不是偷我,我也可以告他”。但不是每个国家都支持这种方式。所以,GPL主张的是“让产品的使用者真正拥有对产品的控制权”,而不是主张“共产主义,代码属于所有人”。GPL并不要求免费,也不要求别人代码开源,他只是要求你保证:你把产品传递给用户了,用户应该真正拥有这个产品,也就是说,他必须有能力修改它,所以你必须提供源代码给这个用户,这还不仅仅要求代码,你还应该保证这个代码的GPL部分可以被修改后重建,所以,你还需要提供Makefile,可获取的编译器等辅助设施,否则都可以视为侵权的。更重要的是,这个用户基于GPL拿到一个代码后,如何处置这个代码,提供者无权干涉。这个在细节上也会引起很多问题,比如硬件只能运行签过名的二进制,那么为了满足这个要求,就会要求提供签名的密钥,但一个商业公司,怎么可以给你提供它签名的密钥呢?这个是对用户的不负责任,GPLv3的很多问题,都是从这里来的。接着我们来讨论一下什么是“共同作品”。GPL的说法是:如果你的代码和GPL的代码构成“共同作品”,那么你的代码也必须是GPL的。但什么叫共同作品呢?这就看个人看法了……从广义的“作品”的角度来说,两个东西关联很多,我们就认为它们构成“共同作品”,但多少关联叫“很多”关联呢?这个说不清楚的,这完全看法庭怎么判。有人简单说,如果两个程序在同一个地址空间内,就构成共同作品了。但如果我把Linux运行在nommu模式,岂不是所有代码必须是GPL版权的?(实际上一个Linux发行版里面有很多软件都不是GPL的)。还有,如果我用一个开源的库,我把它放在一个独立的MMU空间里,然后每次调用的时候都切换一下页表,这难道就应该认为这不是“共同作品”?这其实不符合我们一般对“一个独立著作”的认识的。所以,法庭并不使用简单的“是否同一个地址空间”这样的逻辑来判断“共同作品”的。但确实,如果程序在两个进程中,我们一般认为他们是两个作品。但如果你恶意地靠地址空间把两个程序隔开,实现所谓的“GPL隔离”,那么法庭很可能不会接受你的“两个作品”的辩护的。有些公司,还曾经用过这样一个手段:他们把一个不开源的代码用二进制提供,提供给用户,在用户的系统上把这个二进制和一些其他简单的源代码一同编译,建立和Linux内核的“关联”,让用户自己插入到Linux内核中。这样,理论上,他们并没有建立和Linux内核的关联,所以没有义务向用户提供源代码,而用户建立了这个关联,所以用户的代码应该是GPL的,但因为用户没有向第三方提供这个“产品”,所以用户没有向任何人开源的义务。这种小聪明用过很多年,现在怎么样了我不知道,但它带来多少问题我是知道的:),无论如何吧,从这个例子,我们可以更深入了解GPL的版权保护是如何实现的。其实,很多商业公司也是身不由己的。比如你做了一个解决方案,当初不流行开源的时候,他们没有考虑更多的问题,很多软件是来自第三方的,他们取得了第三方的版权授权,加入到自己的产品中。但现在你给他说要开源,原来的授权怎么办?就算有心去要那家公司的授权,人家在不在都不一定啊。还有一个问题就是专利了。我版权给你可以,但专利怎么说?专利给你吗?这专利也不一定是我的呀,是我的一个兄弟公司的怎么办?所以,GPLv2是不讨论这个问题的,用户自己看着办。v3想讨论这个问题,所以也有很多的分歧,现在都没有吵清楚。从用户的角度来说——我要不要担心我用了你的代码,以为占点什么便宜,结果等我做大了,你跑来找我要“专利费”?这背后也有很多的技巧。所以,我常常说,不要用情怀来说话,做事你才能体会细节。站队,激情,什么屁用没有,只是当“智者”的棋子。最后,我们来谈谈开源软件的盈利模式,以便读者更容易理解这里面的细节。比如你做一个Linux发行版,卖给某个客户,你每个实例可以卖1万块钱,但你必须同时提供所有GPL软件的源代码。这样,用户确实是可以这样的:买你一个版本,然后重新编译100份,用于自己的内部网络,这样,用户用了100分拷贝,只给了一份的钱,而且用户还可以接着把这个产品重新卖出去,收5000块钱。这一点问题没有,因为GPL协议说了,你无权阻止用户如何使用这个源代码。但是,我可能每个星期都会出补丁,你能够一次次这样升级吗?而且你只买了了一个拷贝,你内部拷贝的其他版本出了问题,我可是不负责的。你愿意这样做吗?——实际上很多人是不愿意的,比如大部分的银行,矿山等企业。这样Linux发行版提供的就不是“版权授权”了,而是“Subscription”,我卖你的重点不是那个软件,而是基于这个软件为你提供的服务(这就叫“软件即服务”)。这种模式现在这个阶段养活几家大发行版,却无法在数据中心市场实现开拓,因为这些市场都是买一个版本(甚至不买,某些开发者已经干这种事情了),然后自己维护的主。但其实这个到最后也是个博弈的关系,如果发行版发展不下去了,原来他们负责的那些特性,就没有发展了,这时这个锅会重新烧到云运营商头上。所以国外的运营商对这些发行版提供商还是客客气气的,就国内某些运营商反而傲慢得莫名其妙。等真得打到白热化的时候,你们就知道问题出在哪里了。其实,真正领头的Linux发行版提供商对此是表现得很大度的,他们明确说你可以这样做,但有一点,你不能使用人家的商标,人家的代码是授权给你的,你要用这个代码人家不会拦你,但你不能使用人家的商标(这又是一个知识产权问题了),不能声称:我这个其实就是XXXX了。这样你就侵犯别人的商标权了。这是一种模式,其实还有另一种模式,我们知道有些商业发行版是完全免费的,不对客户服务收钱,这种发行版的盈利模式是从硬件提供商哪里收钱:我拥有一大堆的客户,他们的业务建立在我的发行版上,所以你要我的版本支持你的硬件吗?给钱啊。这又是一种思路,比如某“标准AI计算平台”,就是这样取得竞争优势的。好了,我们建立了一个基本的模型脉络,让读者大概理解开源是什么样的,被什么样的法律和现实力量左右着。我们现在可以进入主题,来讨论什么是开源,和为什么要开源了。最近很多人谈“自主”,但他们常常把“自主”当作一个名了,似乎“我做的”才是“自主”,使用“开源软件”,不叫“自主”。这和我以前谈《道德经》中常举的“失败的架构师”例子如出一辙:某个系统应该使用方案A,工程师t提出来了,架构师会很不爽:这个名怎么让你占了?我要千方百计证明“A”是不好的,宁愿用一个更差一点的“B”方案来解决这个问题。这明显是“求名”,对不对?还有“求礼”的:t,你这么厉害,我看来需要退位了,你上,我冰清玉洁,不能把你的名给遮盖了,闪耀吧,t君!他妈的还是求名,换个形式而已。如果你理解开源协议,你就应该明白,一旦一个作品被授权出来了,本来人家就给你授权了,你要求名不用它?然后把这些事情重新做一遍?这是求名求到根子上了,怎么说你好?你迟早变成污泥拿来填池塘。所以,你用不用一个开源作品,不是因为它是不是开源的,不是因为它是不是签着你的名字,不是因为它是不是签着中国人的名字,而是它是否符合你的要求!好了,这里涉及我要讨论的核心了:国内大部分公司,都不具备主线维护能力。开源最早的时候,也许是因为一些个人的情怀和期望。但到今天,它早就不是了,开源是保证构架演进的关键手段。你们可以看看我这里写的一个设计讨论:这是我们要给我们的加速器做一个统一的软件引擎,我已经写好这个代码很久了,也在实际的产品中使用了,但我仍需要这样公开表达出来,因为在我写我的引擎的时候,其他公司也在做他们的加速引擎,做IOMMU构架定义的公司在修改iommu框架,做GPU的公司在加mdev,做网卡的公司在用这个东西取代DPDK的全用户态驱动。我确实可以保证我自己的应用场景,但当我的场景向下展开的时候,他们面对的困难,我同样需要面对。我提早和他们对齐,我做错的可能性就低得多。因为我个人面对的世界太小了。实际情形是,我写完,拿出来讨论,就马上收到反馈——有人面对的场景不是这样的。他们会利用我的“设计”,但同时他们有他们的考量,我的设计会在这一次次的冲刷中逐渐逼近那个可以生存下去的“道”,这里没有任何道理,只是你有你的要求,我有我的要求,我们形成一个更贴近现实的合作模式而已。在你看到我这个文档的时候,那个文档更新过5个版本了,几乎每个版本都是完全重写的。这就叫架构引导。它的目的就是让每个增加的代码都是夯实的,不会向下增加代码的时候,很多逻辑之间就互相冲突了。当你进行架构引导的时候,你需要考量的是未来怎么活下去,而不是眼前怎么实现功能。很多人想不明白为什么国内做不出操作系统,我看过很多人的策略,他们不可能成功的。因为我们大部分开发组织还处于“求名”的阶段。构架是没有立即的收益的,是没有名的,它是走一条没有立即收益的道路,期望可以“活下去”,“活的更久”。我们很多组织,使用Linux,使用OpenStack,觉得自己也是“做开源的”,“懂开源的”,“为开源做贡献的”,但他们没有真正懂过开源,所以他们纠缠于“我有情怀,我有责任”,或者“这些人就知道情怀,不知道公司运营”,看来针锋相对,各有观点,其实统统失道。根本就没有搞清楚开源的目的是什么。我们不少人醉心于拿到一个开源的版本,然后针对自己的场景进行优化,觉得“我做得比开源好,他们根本就不懂”,却不知道自己其实是在消耗构架——是因为有开源在前面稳住了一个架构,才有你现在消耗的机会。你把这个作为你牛逼的原因?——现在你是否明白为什么你总是使用别人的架子?所以,很多人担心比如Android的代码不能用了怎么办。这根本就不是这么个问题,开源的代码没有什么特别,开给你了,你随时就可以拿来用。关键在于,你如果要开始独立为这个架子的发展负责了,以你这种求礼的心态,你是不是可以稳得住这个架子?所以,不要老想着要怎么努力获得竞争优势了,你求“竞争优势”这个名,你就不会有竞争优势,做好你本来应该做的。如果你真要做长远投资,找些不那么求名的人来运作……而国内不少发行版,把代码唔得死死的,以为是“核心竞争力”,其实门都没有入,这种关起门来自High还差不多,拿去竞争?——市场不相信眼泪。其实这个和开源没有什么关系,只是“架构版本”,现在的最优实践,是开源版本。但不表示你开源了,你就能撑得住这个架构,也不表示你不开源,你就能撑得住这个架构。但开源,是我们最容易理解这个“架构版本”是怎么回事的一个实例。编辑于 2018-04-30 10:52开源开源项目赞同 21338 条评论分享喜欢收藏申请转载文章被以下专栏收录软件架构设计分享软件构架设计的各种感想