加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 运营中心 > 交互 > 正文

常见开源许可协议的差异与联系

发布时间:2022-08-02 16:41:22 所属栏目:交互 来源:互联网
导读:作为一个软件开发人员,你一定也是天天接触一些开源软件,比如一些开源的软件框架,比如开源的操作系统。这里大名鼎鼎就是Linux操作系统了,在服务器领域和嵌入式开发,它决定是大神中的大神级别的存在。 那么,就算我们学会了这么多的开源软件,我们真的就
  作为一个软件开发人员,你一定也是天天接触一些开源软件,比如一些开源的软件框架,比如开源的操作系统。这里大名鼎鼎就是Linux操作系统了,在服务器领域和嵌入式开发,它决定是大神中的大神级别的存在。
 
  那么,就算我们学会了这么多的开源软件,我们真的就了解这些开源软件使用的【开源许可协议】吗?这年代,不会还真有人理解成:【开源就是免费】吧?
 
 
  通过阅读本文,你讲会了解到以下几部分内容:
 
  开源许可协议是什么及它的来源
  开源许可协议之间的区别与联系
  几种常见开源许可协议的主要内容
  学习开源许可协议的意义
  一、开源许可协议是什么及它的来源
  开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议。它的中文名:开源许可协议;外文名:open source license
 
  开源许可协议是怎么来的呢?
 
  自由软件/开源软件是自由的,源代码开放的,我们可自由下载安装和使用。
 
  人们不太容易区分一个软件是否真正开源的根本原因,在于开源研究院认可的许可有60多种。但在这60多种许可中,有一个许可明显主宰着开源世界。迪博纳说:“GPL(General Public License,通用性公开许可协议)是当今开源世界中最重要的许可。”根据迪博纳引述的Google所进行的研究,基于GPL的开源代码在所有开源软件中占45%---50%。
 
  二、开源许可协议之间的区别与联系
  为了能够让大家更加直观地了解到,各种开源许可协议之间的区别与联系,我参考了了一些资料,重新画了这一张图,供大家参考。下面的内容,我将会围绕这张图来展开。
 
  poYBAGDYdXCAWkKMAAAAK8RNs4s030.png
  ​编辑这张就很清晰地描述了6种常见的开源许可协议之间的区别与联系,主要围绕的就是几个核心问题:
 
  修改源代码后,是否允许闭源?
  每一个修改过后的文件,是否都必须放置版权说明?
  是否需要对每一个修改过的文件提供说明文档?
  新增代码是否需要使用同样的许可证?
  衍生软件的广告是否可以使用你的名字进行促销?
  三、几种常见开源许可协议的主要内容
  说起各式各样的开源许可协议,我们不得不提起GNU,它的全称是“GNU's Not Unix!”(GNU并非Unix!)的首字母递归缩写。
 
  1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的 Cygnus Solutions。
 
  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)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。
 
  它的核心内容是:
 
  1)被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。
 
  2)被授权人可根据程式的需要修改授权条款为适当的内容。
 
  3)在软件和软件的所有副本中都必须包含版权声明和许可声明。
 
  此授权条款并非属copyleft的自由软件授权条款,允许在自由/开放源码软件或非自由软件(proprietary software)所使用。
 
  此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处。
 
  MIT条款可与其他授权条款并存。另外,MIT条款也是自由软件基金会(FSF)所认可的自由软件授权条款,与GPL相容。
 
  相对于BSD开源许可协议,MIT开源许可协议是当下流行的开源许可协议中【最为宽松】的许可协议。
 
  3、BSD开源许可协议
  BSD (Berkeley Software Distribution) : 伯克利软件分发许可协议。
 
  BSD开源协议是一个给予使用者很大自由的协议。基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
 
  但"为所欲为"的前提是当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足一些条件。
 
  它的核心内容是:
 
  1)如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
 
  2)如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
 
  3)不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
 
  可以说BSD开源许可协议是当下流行的开源许可协议中【较为宽松】的许可协议。
 
  4、MPL开源许可协议
  MPL (Mozilla Public License):Mozilla公共许可协议。
 
  MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对 源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)
 
  它的核心内容是:
 
  1)允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。
 
  2)这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码得版权都集中在发起开发人得手中。
 
  3)但MPL是允许修改,无偿使用的。
 
  4)MPL软件对链接没有要求。(要求假如你修改了一个基于MPL协议的源代码,则必须列入或公开你所做的修改,假如其他源代码不是基于MPL则不需要公开其源代码)
 
  5、GPL开源许可协议
  GPL (GNU General Public License) :GNU通用公共许可协议。
 
  GNU通用公共许可协议是一个被广泛使用的自由软件许可协议条款,GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利。
 
  它的核心内容是:
 
  1)可自由复制:你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
 
  2)可自由分发:在你的网站提供他人下载,拷贝到U盘送人。
 
  3)可用来盈利:你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
 
  4)可自由修改:如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
 
  需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
 
 
  LGPL是GPL的变种,也是GNU为了得到更多的甚至是商用软件开发商的支持而提出的。与GPL的最大不同是,它有以下几个核心内容:
 
  1)可以私有使用LGPL授权的自由软件;
 
  2)开发出来的新软件可以是私有的而不需要是自由软件;
 
  3)任何公司在使用自由软件之前应该保证在LGPL或其它GPL变种的授权下。
 
  四、学习开源许可协议的意义
  通过对上面几种常见的开源许可协议的学习,至少我们肯定已经打破了【开源就是免费】的固化思想,也了解到了【开源并不是简简单单把源代码公开而已】。
 
  从上面的分析,我们可以简单对上面6中常见开源许可协议在宽松到严谨的方向做个简单排序:
 
  MIT > BSD > Apache > LGPL > Mozalla (MPL) > GPL
 
  在今后使用/学习一些开源软件/框架的时候,多一个心眼,了解一下它使用的是什么开源许可协议,如果你想基于这个开源软件/框架进行一些商业行为,请务必了解清楚该开源许可协议的核心内容,以免将来在版本问题上受到法律的制裁。
 
 
  

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读