了解开源协议:GPL, LGPL, BSD, MIT, Apache 和 MPL
创始人
2025-07-06 19:30:53
0

摘要

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...