背景说明:对于软件开发者来说,无论是个人还是商业组织,为了分享自己的优秀作品、为了扩大自身影响力,多多少少都有想把自己的软件作品以开源的形式公之于众的想法。但无论是开源自己的软件,还是使用已开源的软件,出于商业和法律因素的考虑,我们都应该搞清楚:当我们使用开源软件或者将自己的作品开源时,我们保留了啥权力?我们又放弃了啥权力?
主流的开源许可协议有以下几种: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)。
首发公众号【战神波波】,欢迎来交流~