几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)

这篇具有很好参考价值的文章主要介绍了几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 作为一名软件开发人员,你一定也是经常接触到开源软件,但你真的就了解这些开源软件使用的开源许可协议吗?

        你不会真的认为,开源就是完全免费吧?那么让我们通过本文来寻找答案。

一、开源许可协议简述


        开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议。它的中文名:开源许可协议;外文名:open source license。

二、开源许可协议之间的区别与联系

几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL),开源软件,开源协议

        通过上图,可以很清晰的了解到6种常见的开源许可协议之间的区别与联系,主要围绕的就是几个核心问题:

  • 修改源代码后,是否允许闭源?
  • 每一个修改过后的文件,是否都必须放置版权说明?
  • 是否需要对每一个修改过的文件提供说明文档?
  • 新增代码是否需要使用同样的许可证?
  • 衍生软件的广告是否可以使用你的名字进行促销? 

 三、几种常见开源许可协议的主要内容


        说起各式各样的开源许可协议,我们不得不提起GNU,它的全称是“GNU's Not Unix!”(GNU并非Unix!)的首字母递归缩写。

        1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的 Cygnus Solutions。

        正因为有了GNU计划的大力推广,后面的Linux才逐渐发展壮大,直至今日,它已经走到30个年头,在服务器领域可谓是一枝独秀。也正因为有了Linux的蓬勃发展,慢慢才看到了越来越多的开源软件走向大众视野,整个软件行业才走向了发展的快车道,今后也会是长盛不衰,勇往直前。下面着重说一下各大流行的开源许可协议的核心内容。

1、Apache开源许可协议


         Apache (Apache License) :Apache许可协议,一般常用是2.0版本,Apache 2.0许可证是ASF(Apache Software Foundation,Apache软件基金会)在2004年发布的,以帮助ASF实现其目标:“通过开源软件开发协作,提供可靠且长久不衰的软件产品”。ASF出品的软件一般都采用Apache 2.0许可证。当然,非ASF的项目也可以使用,Apache许可证设计出来是供所有人使用的。

它的核心内容如下:

  • 可以随便使用,不会因版权和专利找你麻烦!
  • 不能用我的商标!
  • 你分发本作品或衍生作品时,可以不再提供源码!
  • 你在分发时,必须做到:

        1)带上本许可证!

        2)保留本软件的所有版权、专利等说明!

        3)你改过的文件,你得说改了哪!

        4)NOTICE文件中的信息得保留!

        5)在遵循本许可证的条件下,你可以再许可!

        6)本作品就这样了,我不会负任何责任的!你想负责你可以负,但别拉上我!

2、MIT开源许可协议


        MIT (Massachusetts Institute of Technology):MIT许可协议之名源自麻省理工学院,又称“X许可协议”或“X11许可协议”。

        MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。

它的核心内容是:

  • 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。
  • 被授权人可根据程式的需要修改授权条款为适当的内容。
  • 在软件和软件的所有副本中都必须包含版权声明和许可声明。

        此授权条款并非属copyleft的自由软件授权条款,允许在自由/开放源码软件或非自由软件(proprietary software)所使用。此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处。

        MIT条款可与其他授权条款并存。另外,MIT条款也是自由软件基金会(FSF)所认可的自由软件授权条款,与GPL相容。

        相对于BSD开源许可协议,MIT开源许可协议是当下流行的开源许可协议中【最为宽松】的许可协议。

3、BSD开源许可协议 

        BSD原先是用在加州大学柏克利分校发表的各个4.4BSD/4.4BSD-Lite版本上面(BSD是Berkly Software Distribution的简写)的,后来也就逐渐沿用下来。1979年加州大学伯克利分校发布了BSD Unix,被称为开放源代码的先驱,BSD许可证就是随着BSD Unix发展起来的。BSD许可证被Apache和BSD操作系统等开源软件所采纳。

        相较于GPL许可证和MPL许可证的严格性,BSD许可证就宽松许多了,一样是只需要附上许可证的原文,不过比较有趣的是,它还要求所有进一步开发者将自己的版权资料放上去,所以拿到以BSD许可证发行的软件可能会遇到一个小状况,就是这些版权资料许可证占的空间比程序还大。

它的核心内容是:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
  • 可以说BSD开源许可协议是当下流行的开源许可协议中【较为宽松】的许可协议。

4、MPL开源许可协议 


        MPL (Mozilla Public License):Mozilla公共许可协议。MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)

它的核心内容是:

  •  MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个活口。
  • MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
  •  对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
  • 对源代码的定义:而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”

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

5、GPL开源许可协议 


        GPL (GNU General Public License) :GNU通用公共许可协议。GNU通用公共许可协议是一个被广泛使用的自由软件许可协议条款,GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利。

它的核心内容是:

  • 可自由复制:你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
  • 可自由分发:在你的网站提供他人下载,拷贝到U盘送人。
  • 可用来盈利:可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由
  • 可自由修改:如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。

        需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。

6、LGPL开源许可协议


        LGPL (GNU Lesser General Public License) :GNU宽通用公共许可协议。GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制。

LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,它有以下几个核心内容:

  • 可以私有使用LGPL授权的自由软件;
  • 开发出来的新软件可以是私有的而不需要是自由软件;
  • 任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。

四、结尾


        通过上文,你肯定已经打破了开源就是免费的思想了吧?并且我们可以简单对上面6中常见开源许可协议在宽松到严谨的方向做个简单排序:MIT > BSD > Apache > LGPL > Mozalla (MPL) > GPL 

        另外,在今后使用/学习一些开源软件/框架的时候,需要了解一下它使用的是什么开源许可协议,如果你想基于这个开源软件/框架进行一些商业行为,请务必了解清楚该开源许可协议的核心内容,以免将来在版本问题上受到法律的制裁。文章来源地址https://www.toymoban.com/news/detail-728194.html

到了这里,关于几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源的协议(GPL和MIT的区别)

    开源不仅能够帮助整个生态共同进步,也能够帮助个人开发者提升技术和名气,但是,开源的意思并不是没有规则,全部无条件的免费提供给别人用,必须要遵循一定的规则。 这个规则就是开源协议(Open Source License)。常用的只有5、6种,网络上的很多文章只是笼统的介绍,

    2024年02月06日
    浏览(29)
  • Qt:开源与商业版区别,以及LGPL和闭源程序

    Qt:开源与商业版区别,以及LGPL和闭源程序 Qt是一个跨平台的C++应用程序框架,使用简单、功能强大。Qt分为开源版本和商业版本,两个版本之间有很多不同之处。本文将详细介绍Qt的开源版本和商业版本的区别,以及两种许可证——LGPL和闭源程序。 一、Qt的开源版本与商业

    2024年02月15日
    浏览(96)
  • Qt5.12安装教程+组件选择MinGW+开源协议LGPL

    今天重装了一下QT,发现以前忽略的点,mark一下。 安装QT或者平时新建项目的时候,常常碰到组件选择界面,让人头疼。找到别人整理的文档,为了自己以后搞清楚,摘自https://www.cnblogs.com/lixuejian/p/10903088.html 如下图所示,安装Qt时有选择组件这一步,全部安装未免太占磁盘控

    2024年02月15日
    浏览(32)
  • BSD-3-Clause是一种开源软件许可协议

    BSD-3-Clause是一种开源软件许可协议,也称为BSD三条款许可证。它是BSD许可证家族中的一种,是一种宽松的许可证,允许软件自由使用、修改和重新分发,同时也保留了一些版权和责任方面的规定。 BSD-3-Clause许可证的主要特点包括以下三个条款: 再分发条款 :允许在任何目的

    2024年04月23日
    浏览(46)
  • 调用GPL 开源库的法律问题

    调用 GPL(General Public License)开源库通常是合法的,但是需要遵守 GPL 协议的规定。使用 GPL 开源库可能会涉及到一些问题,以下是一些你可能需要考虑的方面: 遵守 GPL 协议 : 使用 GPL 开源库时,你需要遵守 GPL 协议的规定。这包括在你的项目中使用 GPL 开源库时,必须将你

    2024年03月11日
    浏览(34)
  • 【多商户开源-BSD- Fecmall 电商平台】

    关于Fecmall Fecmall 关于,Fecmall介绍 Fecbbc开源BSD多商户系统,真正开源,商用免费授权的多商户系统 Fecmall系统简介 : 全称为Fancy ECommerce Shop, 着重于 电商架构 的 研发优化 , 全新定义 商城的 架构体系 ,是基于php Yii2框架之上开发的一款优秀的开源电商系统,易于系统升级

    2024年01月25日
    浏览(40)
  • 有的开发者用Apache-2.0开源协议,但是不允许商用?合理吗

    Apache 2.0开源协议是设计用来允许商业使用的。该协议明确授予了使用者在遵守许可条款的情况下,对软件进行复制、修改、分发以及商业使用的权利。这包括但不限于: 1. 永久、全球性的版权许可:允许复制、准备衍生作品、公开展示、公开演出、从属许可证,并以源或对

    2024年02月19日
    浏览(33)
  • MIT Cheetah开源代码仿真环境搭建

    参考文章:长乐未央https://zhuanlan.zhihu.com/p/537013183 电脑系统:Ubuntu18.04 ROS版本: ROS Melodic 首先更新一下 安装依赖项 首先是QT5.14.2,下载地址友情链接:QT5.14.2 下载完成后选中下载的QT5文件,右键点击属性,点击权限,勾选允许作为程序执行文件,如下图所示: 然后在该文件

    2023年04月17日
    浏览(33)
  • MIT Cheetah-Software开源项目流程分析

    摘要:MIT Cheetah-Software是四足机器人的开源项目,理清程序流程是进一步理解和研究项目的必要条件。Cheetah-Software开源项目包含robot、common、sim和user等四个部分的源码,本文以user/MIT_Controller下的子项目来介绍Cheetah-Software的程序流程。         主函数定义在main.cpp文件中,源

    2024年02月02日
    浏览(26)
  • Apache的反向代理有以下几种方式

    Apache的反向代理的几种方式 : mod_proxy:这是Apache的一个标准模块,它提供了反向代理的功能。您可以使用ProxyPass和ProxyPassReverse指令来配置反向代理。 mod_jk:这是一个连接Apache和Tomcat的模块,它提供了反向代理的功能。您可以使用JkMount指令来配置反向代理。 mod_proxy_balancer:

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包