了解开源协议:GPL, LGPL, BSD, MIT, Apache 和 MPL

开源
github中有很多的开源项目,如果是学习使用,并没有什么影响,但是如果是想商用,则一定需要了解不同开源协议的区别,以免踩坑,本文介绍五种开源协议GPL,LGPL,BSD,MIT,Apache,以及如何选择这几种协议。

摘要

github中有很多的开源项目,如果是学习使用,并没有什么影响,但是如果是想商用,则一定需要了解不同开源协议的区别,以免踩坑,本文介绍五种开源协议GPL,LGPL,BSD,MIT,Apache,以及如何选择这几种协议。

BSD开源协议

BSD开源协议赋予使用者极大的自由。基本上,使用者可以随心所欲地使用、修改源代码,并将修改后的代码作为开源或专有软件再发布。

然而,要享受这种自由,当您发布使用了BSD协议的代码或者以BSD协议代码为基础进行二次开发时,需要满足以下三个条件:

  1. 如果再发布的产品包含源代码,必须在源代码中包含原始代码中的BSD协议。
  2. 如果再发布的只是二进制类库或软件,需要在类库或软件的文档和版权声明中包含原始代码中的BSD协议。
  3. 不得使用开源代码的作者或机构的名称和原产品的名称进行市场推广。

BSD协议鼓励代码共享,但同时尊重代码作者的著作权。由于BSD允许使用者修改和重新发布代码,也允许在BSD代码的基础上开发商业软件并进行发布和销售,因此对于商业集成而言非常友好。因此,许多公司在选择开源产品时首选BSD协议,因为他们可以在必要时完全控制这些第三方的代码,进行修改或二次开发。

Apache License 2.0

Apache License是著名的非盈利开源组织Apache采用的协议。该协议与BSD相似,同样鼓励代码共享和尊重原作者的著作权,也允许修改代码并将其作为开源或商业软件再发布。需要满足的条件也类似于BSD:

  1. 需要向代码的用户提供Apache License。
  2. 如果您修改了代码,需要在修改后的文件中进行说明。
  3. 在扩展的代码中(修改和从源代码派生的代码)需要包含原始代码中的协议、商标、专利声明和其他原始作者规定的内容。
  4. 如果再发布的产品包含Notice文件,则Notice文件中需要包含Apache License。您可以在Notice文件中添加自己的许可,但不能做出对Apache License的实质性更改。

Apache License也对商业应用非常友好。使用者可以在需要时修改代码,以满足其需求,并将其作为开源或商业产品发布或销售。

GPL

我们都熟悉Linux采用了GPL协议。GPL协议与BSD、Apache License等鼓励代码重用的许可有很大不同。GPL的核心思想是代码的开源和免费使用,以及对引用、修改和派生代码的开源和免费使用,但不允许将修改后和派生的代码作为闭源的商业软件发布和销售。这就是为什么我们可以使用各种免费的Linux系统,包括商业公司的Linux以及Linux上众多由个人、组织和商业软件公司开发的免费软件。

GPL协议的主要内容是,只要在一个软件中使用GPL协议的产品("使用"包括类库引用、修改后的代码或派生代码),则该软件产品必须同样采用GPL协议,即必须开源和免费。这就是所谓的"传染性"。使用GPL协议的产品作为独立产品使用没有问题,而且可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须采用GPL协议,因此对于使用GPL协议的开源代码、商业软件或者对代码有保密要求的部门来说,不适合将其作为类库或基础进行二次开发。

LGPL

LGPL是为主要用于类库的开源协议。与GPL要求使用/修改/派生的GPL类库的软件必须采用GPL协议不同,LGPL允许商业软件通过类库引用(link)方式使用LGPL类库,而不需要将商业软件的代码开源。

然而,如果修改LGPL协议的代码或进行派生,那么所有修改的代码、涉及修改部分的额外代码和派生的代码都必须采用LGPL协议。因此,LGPL协议的开源代码非常适合作为第三方类库被商业软件引用并进行发布和销售。

但对于希望以LGPL协议的代码为基础,通过修改和派生的方式进行二次开发的商业软件,LGPL协议则不适用。

GPL和LGPL都保护原作者的知识产权,避免他人使用开源代码复制并开发类似的产品。

MIT

MIT许可协议与BSD类似,非常宽松。作者只希望保留版权,而没有其他限制。也就是说,无论是以二进制形式还是以源代码形式发布,您都必须在发行版中包含原许可协议的声明。

MPL

MPL是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那样明确反对软件专利,但它明确规定源代码的提供者不能提供已经受专利保护的源代码,除非他们自己是专利权人并向公众免费许可这些源代码,也不能在将这些源代码以开放源代码许可协议形式许可后再去申请与这些源代码有关的专利。
责任编辑:华轩 来源: 口袋大数据
相关推荐

2010-07-15 11:25:32

开源协议

2021-05-10 16:27:01

μCOSFreeRTOS

2012-08-22 10:44:08

软件开发

2011-05-05 09:41:56

开源软件许可证

2012-07-02 14:47:38

HTML5

2010-03-31 10:31:18

开源许可协议

2009-05-04 17:08:13

开源ApacheGPL

2018-08-15 09:00:00

开源UIGrommet

2010-03-31 10:29:38

开源技术

2015-01-14 10:45:05

Linux

2023-03-03 17:33:16

2017-02-20 17:39:13

开源项目GPL协议

2017-02-20 07:34:29

GPL

2013-07-29 14:04:22

2013-05-06 14:34:42

开源Linux 6.3红帽企业级Linux

2009-06-14 19:24:49

2021-12-15 11:52:34

GPLLinuxGNU

2019-06-28 14:31:03

网络协议栈Flink数据

2013-08-16 11:24:31

开源Hello!Geek

2024-04-15 09:09:54

TimeGPT人工智能算法
点赞
收藏

51CTO技术栈公众号