首页 > 其他分享 >五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

时间:2023-05-09 11:33:40浏览次数:50  
标签:GPL 协议 LGPL 代码 Apache 开源 BSD MIT

当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种。我们在常见的开源协议如BSD,GPL,LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

BSD开源协议

(original BSD license、FreeBSD license、Original BSD license)

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

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

Apache Licence 2.0

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

(Apache License, Version 2.0、Apache License, Version1.1、Apache License, Version 1.0)

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

需要给代码的用户一份Apache Licence,如果你修改了代码,需要在被修改的文件中说明。
在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需
要并作为开源或商业产品发布/销售。

GPL

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

(GNU General Public License)

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD,Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

LGPL

(GNU Lesser General Public License)

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

MIT

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。

原文来自:http://www.ha97.com/833.html

本文地址:https://www.linuxprobe.com/five-open-source.html编辑:张振宇,审核员:逄增宝

本文原创地址:https://www.linuxprobe.com/five-open-source.html

标签:GPL,协议,LGPL,代码,Apache,开源,BSD,MIT
From: https://www.cnblogs.com/linuxpro/p/17384405.html

相关文章

  • AspNetCoreRateLimit应用于MVC项目求助
    AspNetCoreRateLimit应用于MVC项目求助前言之前发过一篇文章:.NETCoreWebApi接口ip限流实践-妙妙屋(zy)-博客园(cnblogs.com)然后应用在前后端分离项目这个组件是非常好用的。但应用于不分离的项目,比如我的个人博客就有点麻烦。就是我的需求是评论接口限流,然后触发限流后......
  • Git:删除所有 Commit 提交记录
    如果想要删除 Git 项目下的所有 Commit 提交,可以使用以下方法。 创建孤立分支,并切换到该分支:gitcheckout--orphanlatest_branch2.暂存所有文件:gitadd-A3.提交所有更改:gitcommit-am"FirstCommit"4.删除主分支 master:gitbranch-Dmaster5.......
  • flume java.lang.OutOfMemoryError: GC overhead limit exceeded
    http://java-boy.iteye.com/blog/463454解决办法:<1>ps-aux|grepflume查看刚才启动的flume进程,发现如下信息/usr/jdk/bin/java-Xmx20m-Dflume.root.logger=INFO-cpconf<2>于是看一个flume-ng的python脚本,发现JAVA_OPTS="-Xmx20m"问题就是出在这里了,然后我把flume-ng脚本......
  • 删除GitHub上的历史commit
    1.背景由于之前的加水印脚本存在问题,在对同一张图片进行加水印时,会有一定的概率产生不一样md5的图片,在git提交的时候,就认为被修改了,从而被提交的github仓库中,如此反反复复,到现在已经有11个G大小了;今天把水印脚本重写了一下,解决了上述问题,所以准备给之前的垃圾提交清理了,让我的博......
  • 如何回退未push的commit?
    如何回退未push的commit?教你一招,简单好用当你写完代码,提交了commit后,才发现分支错了,或者是下面这种情况(其他小伙伴协同开发,在一个分支上push了代码,但你不清楚,在未pull的情况下,先commit了你的代码),当你push代码时,会有以下报错: 提示让你merge,先别管他,此时去看一看git仓库,发现是有......
  • Linux ulimit命令
    Linuxulimit命令一切皆文件对于一些openresty或者nginx服务器,系统默认设置往往是不够用的。我们需要大量的资源提供给我们的nginx使用,就需要扩大资源限制。ulimit其实意义不大,因为它的改动只是当前登录,往往直接修改配置文件。Linuxulimit命令用于控制shell程序的资源。uli......
  • GPL协议原文及中文翻译
    GPL协议原文及中文翻译原文参考链接翻译参考链接原文GNUGENERALPUBLICLICENSEVersion2,June1991Copyright(C)1989,1991FreeSoftwareFoundation,Inc.59TemplePlace-Suite330,Boston,MA02111-1307,USAEveryoneispermittedtocopyanddistrib......
  • MIT协议原文及中文翻译
    MIT协议原文及翻译参考链接原文:Copyright(C)Permissionisherebygranted,freeofcharge,toanypersonobtainingacopyofthissoftwareandassociateddocumentationfiles(the"Software"),todealintheSoftwarewithoutrestriction,includingwith......
  • LGPL协议原文及中文翻译
    LGPL协议原文及中文翻译参考链接原文:GNULESSERGENERALPUBLICLICENSEVersion3,29June2007Copyright(C)2007FreeSoftwareFoundation,Inc.https://fsf.org/Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,butchang......
  • Git - commit a single file
    Use'gitcommit-m<commit_message>--<path_to_file>'tocommitasinglefile. $>gitstatusOnbranchmainYourbranchisuptodatewith'origin/main'.Changestobecommitted:(use"gitrestore--staged<file......