20221210-终于有点明白GPL,LGPL,MPL,BSD,MIT,Apache这几个协议的区别了

本文主要结合各种典型的场景或者产品帮助区分GPL,LGPL,MPL,BSD,MIT,Apache这几种开源协议。

一、MIT(Massachusetts Institute of Technology)协议

典型场景: PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono

⇒适合商用软件,对商业软件最友好

原则1:只要程序的开发者在修改后的源代码中保留原作者的许可信息即可

二、BSD(Berkeley Software Distribution,伯克利软件发布版)协议

典型场景:BSD许可证是随着加州大学伯克利分校发布BSD UNIX发展起来的,其最典型的商业应用是Mac OS X就是利用基于该协议,国内银河麒麟应该也是。BSD协议允许不开源,所以说Mac OS X和银河麒麟是可以闭源的,但是银河麒麟宣称自己有自主知识产权却是违反协议的。

⇒适合商用软件,对商业软件非常友好

原则1:如果再发布的软件中包含源代码,则源代码必须继续遵循 BSD 许可协议。

原则2:如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了 BSD 协议。

原则3:不允许用原始软件的名字、作者名字或机构名称等进行市场推广。

三、Apache 许可证版本(Apache License Version)协议

典型场景:Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可协议研发的。

⇒适合商用软件,对商业软件非常友好

原则1:基于此协议的软件及其衍生品必须继续使用 Apache 许可协议。

原则2:如果修改了基于此协议的程序源代码,需要在文档中进行声明。

原则3:若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。

原则4:如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议。

原则5:永久权利|一旦被授权,永久拥有。

原则6:全球范围的权利|在一个国家获得授权,适用于所有国家。

原则7:授权免费,且无版税**|前期,后期均无任何费用。

原则8:授权无排他性|任何人都可以获得授权

原则9:授权不可撤消|一旦获得授权,没有任何人可以取消。

⇒你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。

四、GNU GPL(GNU General Public License,GNU通用公共许可证)

典型场景:包括Linux 系统在内的大多数的开源软件都是基于这个协议的。

原则1:只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议

⇒必须开源免费,不能闭源收费

⇒不适合商用软件

原则2:复制自由|允许把软件复制到任何人的电脑中,并且不限制复制的数量。

原则3:传播自由|允许软件以各种形式进行传播。

原则4:收费传播|允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

⇒比如Red Hat Enterprise Linux

原则5:修改自由|允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。

⇒比如Linux的各种发行版本

五、GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证)

典型场景:大多数Linux程序库,包括C程序库(libc.a)都属于 LGPL 范畴

⇒适合作为第三方类库被商业软件引用,但不适合直接作为商业软件。

原则1:LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。

原则2:如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。

六、MPL(Mozilla Public License)协议

典型场景:RabbitMQ、Mozilla Firefox、Mozilla Thunderbird、Adobe(Flex产品线)、LibreOffice4.0

⇒适合商用,但不是太友好

原则1:源代码必需公开。

原则2:在代码中保留作者提供的协议和版权信息。

原则3:允许商用、分发、修改、专利授权、私用、附加协议

原则3:MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。

原则4:MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。

原则5:对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。

原则6:MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

七、商业应用选择

商业应用怎么选-参考1

商业应用怎么选-参考2

商用性(自由度):MIT>BSD>Apache>Mozilla >LGPL>GPL

参考URL:

https://jishuin.proginn.com/p/763bfbd4c8f7

http://www.zzbaike.com/wiki/LGPL

https://cloud.tencent.com/developer/article/1432026

https://zhuanlan.zhihu.com/p/118582418

你可能感兴趣的:(20221210-终于有点明白GPL,LGPL,MPL,BSD,MIT,Apache这几个协议的区别了)