首页 > 其他分享 >Week1.图文并茂解释开源许可证GPL, BSD, MIT, Mozilla, Apache和LGPL的区别

Week1.图文并茂解释开源许可证GPL, BSD, MIT, Mozilla, Apache和LGPL的区别

时间:2023-05-29 14:24:44浏览次数:39  
标签:GPL 协议 LGPL 代码 BSD 开源 Apache

许可证由松到严排序:

  1. MIT
  2. BSD
  3. Apache
  4. LGPL
  5. GPL

图片源自乌克兰程序员Paul Bagwell,由阮一峰汉化。

MIT(MIT)

来源于大学,MIT 许可证是史上最为简洁和慷慨(permissive)的开源协议之一。作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。

用户可以拿你的代码做任何想做的事情
用户在项目副本中要包含版权声明和许可声明
你无需承担任何责任
应用案例有:JQuery、Rails 等

 

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

来源于大学,BSD可证与MIT差不多,也非常简单、慷慨。

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对 商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

Apache(Apache License, Version 2.0、Apache License, Version 1.1、Apache License, Version 1.0)

来自apache,类似MIT许可证,但它重视专利权。

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

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

应用案例有:Apache 家族、SVN、NuGet 等等。

 

LGPL(GNU Lesser General Public License)

来源自由软件联盟GNU,可以翻译为更宽松的GPL协议,也属于传染性开源。

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

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

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

 

GPL(GNU General Public License)

来源自由软件联盟GNU,GPL/LGPL侧重于代码及衍生代码的开源与免费使用。

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

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

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

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

应用案例:Linux

上述内容摘抄自:依然范儿特西

标签:GPL,协议,LGPL,代码,BSD,开源,Apache
From: https://www.cnblogs.com/n77007-bj-duyifan/p/17440270.html

相关文章

  • Apache-DBUtils
    1. Apache—DBUtils  8461.1 先分析一个问题   8461.关闭connection后,resultSet结果集无法使用2.resultSet不利于数据的管理3.示意图1.2 用自己的土方法来解决  847代码在com.stulzl.dbutils_My_DBUtilspackagecom.stulzl.dbutils_;importcom.stulzl.jdbcutils_druid......
  • apache配置文件之虚拟主机配置
    虚拟主机的配置(1)基于IP地址的虚拟主机配置Listen80<VirtualHost172.20.30.40>DocumentRoot/www/example1ServerNamewww.example1.com</VirtualHost><VirtualHost172.20.30.50>DocumentRoot/www/example2ServerNamewww.example2.......
  • apache几种工作模式对比
    apache2主要的优势就是对多处理器的支持更好,在编译时同过使用--with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd-l命令列出apache的所有模块,就可以知道其工作方式:prefork:如果httpd-l列出prefork.c,则需要对下面的段进行配置:<IfM......
  • apache2是什么软件
    Apache2是一种开源的、跨平台的Web服务器软件。它是ApacheHTTPServer的第二个主要版本,通常简称为Apache。Apache2是世界上最流行的Web服务器之一,被广泛用于托管网站和提供Web服务。Apache2提供了一个可靠和稳定的基础架构,用于处理HTTP请求和响应。它支持多种操作......
  • org.apache.jasper.JasperException: Unable to compile class for JSP: An error occ
    org.apache.jasper.JasperException:UnabletocompileclassforJSP:Anerroroccurredatline:16inthejspfile:/monday-01.jspSystem.outcannotberesolvedtoatype13:<body>14:<%15:Stringa=request.getParameter("uname");......
  • 超大型纸业品牌“清风”也用上 Apache SeaTunnel 啦!
    我是韩山峰,来自金红叶纸业集团。今天,我将向大家介绍ApacheSeaTunnel在我们金红叶纸业集团中的应用场景,包括我们为何选择ApacheSeaTunnel,以及我们如何基于其提升我们内部的数据开发效率。文|韩山峰编辑整理|曾辉讲师介绍韩山峰金红叶纸业数据分析师01产品选择历程......
  • 一文教会你用Apache SeaTunnel Zeta离线把数据从MySQL同步到StarRocks
    在上一篇文章中,我们介绍了如何下载安装部署SeaTunnelZeta服务(3分钟部署SeaTunnelZeta单节点Standalone模式环境),接下来我们介绍一下SeaTunnel支持的第一个同步场景:离线批量同步。顾名思意,离线批量同步需要用户定义好SeaTunnelJobConfig,选择批处理模式,作业启动后开始同步数据,当......
  • Apache深入优化
    拓扑图:推荐步骤:在centos01安装Apache服务,配置Apache服务设置网站主页在centos02配置DNS服务使用bdqn域名在centos01配置Apache优化prefork和worker工作模式配置压力测试验证实验步骤:在centos01上安装apache服务配置网站配置apache服务启动服务查看运行状态修改apache网站根目录设置......
  • 表达式语言引擎:Apache Commons JEXL 2.1 发布
    CommonsJEXL2.1发布了,该版本和2.0.1是二进制兼容的,但源码不兼容,因为新增了两个接口:org.apache.commons.jexl2.Scriptorg.apache.commons.jexl2.JexlInfoJEXL2.1改进内容:Amorethorougharithmetic(JexlArithmetic)thatallowsfinecontroloverdecimals(scaleand......
  • Apache Hudi 在袋鼠云数据湖平台的设计与实践
    在大数据处理中,实时数据分析是一个重要的需求。随着数据量的不断增长,对于实时分析的挑战也在不断加大,传统的批处理方式已经不能满足实时数据处理的需求,需要一种更加高效的技术来解决这个问题。ApacheHudi(HadoopUpsertsDeletesandIncrementalProcessing)就是这样一种技术,提供......