首页 > 其他分享 >GPL、AGPL、LGPL和MPL许可证

GPL、AGPL、LGPL和MPL许可证

时间:2023-03-24 13:56:32浏览次数:40  
标签:GPL LGPL MPL 开源 许可证 源代码

一、开源许可证的分类开源许可证分为2种类型:宽松型和著佐权型。1、宽松型(Permissive):该类许可证往往只要求被许可方保留原作品的版权信息,对用户施加的限制较少,衍生软件可以成为私有软件,如Apache、MIT、BSD系列许可证。由于这类许可证允许衍生软件闭源,对商业化非常友好,因此广受欢迎。2、著佐权型(copyleft):也称为互惠型、强保护型,要求对软件的修改和扩展,必须按照获得该软件的许可证进行开源,旨在促进开发人员的合作,保护源代码的自由共享,如GPL系列许可证。对于强制开源的许可证,使用要慎重,因为违反开源许可证被起诉已经有很多判例。进一步,可以区分为强著佐权和弱著佐权,前者包括AGPL、SSPL、GPL许可证等;后者包括LGPL系列许可证、MPL许可证等。强著佐权要求对软件的修改和扩展,必须按照获得该软件的许可证进行开源,且不得违背原作品的限制条款。弱著佐权要求对软件的修改、重新分发必须按照获得该软件的许可证进行开源,但合并这些软件代码的大型作品可以成为私有作品。

GPL(GNU General Public License,通用公共许可证)是一种著佐权许可证。基于GPL的软件允许商业化销售,但不允许封闭源代码。如果对遵循GPL的软件进行任何改动和/或再次开发并予以发布,只要包含了GPL的代码,则产品必须继承GPL协议,不允许封闭源代码。GPL先后发布了有3个版本,常用的GPL许可证为GPL v2 和GPL v3 。

AGPL(GNU Affero General Public License,Affero通用公共许可证)许可证是一种强著佐权许可证。该许可证可以说是对GPL的一次“查漏补缺”,它继承了GPL所有条款,并在此基础上增加了一条:如果其许可下的软件与用户通过网络进行交互,那么就需要提供源代码给用户,所有的修改也同样要提供给用户。AGPL和GPL协议是兼容的。

LGPL(GNU Lesser General Public License,宽通用公共许可证)是一种弱著佐权许可证,LGPL与GPL相比更为宽松,允许商业化销售,不允许封闭源代码。对遵循 LGPL的软件进行任何改动和/或再次开发并予以发布时,产品必须继承LGPL许可证,不允许封闭源代码。LGPL许可证的初衷在于扩大开源组织库函数的影响力,使GNU库函数的广泛应用,成为事实的软件开发标准,因此LGPL允许商业软件在一定条件下使用GNU库函数,而不受开源的影响。LGPL许可证,适用于特殊设计的函数库。准许非自由的程序可以与这些函数库连结。在以LGPL发布的库的基础上开发新的库的时候,新的库必须以LGPL发布,但是如果仅仅是动态链接,那么则不受限制。这个许可证以前被称为GNU库(Library)通用公共许可证。此许可证最新版本为“版本3”,2007年6月29日发布,较早的版本有2.0和2.1版。详细信息可参考:www.gnu.org/licenses/lgpl.html

MPL(The Mozilla Public License)是一种弱著佐权许可证,1998年初由Netscape的 Mozilla小组为其开源软件项目设计。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。MPL许可证允许在其授权下的源代码与开发者个人文件进行混合,闭源商用,但在MPL授权下的代码文件必须遵守MPL许可证,并且保持开源。MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。MPL许可证有V1.1和V2两个版本。详细信息可参考:https://mozilla.org/MPL/2.0/.

标签:GPL,LGPL,MPL,开源,许可证,源代码
From: https://www.cnblogs.com/hofmann/p/17251319.html

相关文章

  • ECMAScript Regular Expressions Tutorial with Examples
    ORi:https://o7planning.org/12219/ecmascript-regular-expression-RegularExpression  Aregularexpressiondefinesasearchpatternforstrings.Regulare......
  • ggplot2中实现多个绘图在一张画布中组合
     001、生成几个测试数据library(ggplot2)library(dplyr)p1<-ggplot(mpg)+geom_point(aes(x=displ,y=hwy))+ggtitle("P1")##测试图p1p2<-ggpl......
  • Java多线程之ExecutorCompletionService
    目录1ExecutorCompletionService1.1简介1.2原理1.3Demo示例1.3.1未使用ExecutorCompletionService1.3.2使用ExecutorCompletionService1.4深入分析说明1.4.1所有方......
  • ggplot2中修改图例的位置
     001、默认绘图bp<-ggplot(PlantGrowth,aes(x=group,y=weight,fill=group))+geom_boxplot()##绘图bp##输出图片  002、上......
  • ggplot2绘图中修改图例的标题
     001、正常绘图library(ggplot2)bp<-ggplot(data=PlantGrowth,aes(x=group,y=weight,fill=group))+geom_boxplot()bp##显示绘图结果  002、修......
  • ggplot2绘图中隐藏图例标题
     001、正常绘图,显示图例library(ggplot2)bp<-ggplot(data=PlantGrowth,aes(x=group,y=weight,fill=group))+geom_boxplot()##绘图bp##显示绘图绘图......
  • ggplot2中绘图修改图例的顺序
     001、直接绘图效果:library(ggplot2)bp<-ggplot(data=PlantGrowth,aes(x=group,y=weight,fill=group))+geom_boxplot()##绘图bp##显示绘图结果绘......
  • ggplot2绘图中移除图例
     001、a、利用测试数据绘制箱线图library(ggplot2)bp<-ggplot(data=PlantGrowth,aes(x=group,y=weight,fill=group))+geom_boxplot()##绘图bp##显......
  • ggplot2中设置标签刻度的粗细和长度
     001、使用绘制散点图进行测试。a、直接绘制散点图x<-1:10y<-seq(1,1000,100)dat<-data.frame(x,y)##生成测试数据ggplot(dat,aes......
  • JPA Page 通过RestTemplate传递
    Cannotconstructinstanceoforg.springframework.data.domain.Page 直接上解决方案:构造实现类(因为PageImpl没有构造函数,所以自带的PageImpl无法使用)importor......