【科普 | 常见开源许可协议大盘点】

简介: 【科普 | 常见开源许可协议大盘点】

1.什么是开源许可协议


    现在,随便在github上搜索一个开源项目源代码都会在README.md文件中发现有关项目的开源许可证说明。就像下面这样:

5.png

4.png

     

     软件开源许可协议是开源社区为了维护作者和贡献者的合法权利,保证软件不会被一些商业机构和个人窃取利益,从而影响软件的发展而建立的许可协议。它规定了其他团体和个人在使用开源代码时所必须遵守的规定。


       世界上的开源许可协议大概有上百种,本文主要介绍几种常见的开源协议。主要涉及GPL、BSD、MIT、Mozilla、Apache、LGPL等。

2.png


2.Apache License


    Apache License许可协议,是Apache软件基金会发布的一个自由软件许可证。Apache License是著名的非盈利开源组织Apache采用的协议,它鼓励代码共享和最终原始作者的著作权,允许源代码修改和再发布,但也需要遵守如下条件


     (1).需要给使用代码的用户一份Apache License;

      (2).如果修改了源代码,需要在被修改的文件中进行说明;

      (3).在有修改和由源代码衍生出的代码中,需要带有原来代码中的协议、商标、专利声明和其他原作者规定需要包含的说明;

     (4).如果再发布的产品中包含了一个notice文件,则在notice文件中需要带有Apache License。你可以在notice文件中增加自己的许可,但不可以表现对Apache License进行更改;

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


2.BSD许可协议


     BSD是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。


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


            (1).如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;

            (2).如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

            (3).不可用开源代码的作者/机构名字和原来产品的名字做市场推广。


3.GPL许可协议


      GPL(GNU General Public License)即GNU通用公共许可协议,linux采用GPL许可协议它和BSD, Apache Licence等鼓励代码重用的许可协议很不一样。GPL的出发点是代码的开源、免费使用和引用、修改、衍生代码的开源与免费使用,但不允许修改和衍生后的代码作闭源的商业软件发布和销售。正是这个原因,我们能用免费的各种linux。包括商业公司的linux和linux上各种各样的由个人、组织以及商业软件公司开发的免费软件了。


4.LGPL许可协议


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


      但是,如果修改了遵循LGPL协议的代码,则所有修改的代码(修改部分的额外代码和衍生的代码)都必须遵循LGPL协议。因此,LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

5.MIT许可协议


      MIT是和BSD一样自由、宽范的许可协议,源自麻省理工学院(Massachusetts Institute of Technology, MIT),也称X11协议。作者只想保留版权,而无任何其他了限制MIT与BSD类似,但比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包中包含原作者的许可信息,适用商业软件。目前,使用MIT的软件项目例如有:jquery、Node.js等。  

 

6.MPL许可协议


     MPL许可协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。因此,围绕该软件的所有代码的版权都集中在发起开发人的手中。但是,MPL是允许修改,无偿使用的,MPL软件对链接没有要求。 


7.EPL许可协议


    EPL许可协议允许任意使用、复制、分发、传播、展示、修改以及修改后闭源的二次商业发布。但使用EPL协议时,需遵守以下条件:


        (1).当一个开源贡献者将源码的整体或部分再次开源对外发布时,必须继续遵循EPL开源协议,不能改用其他协议发布。除非你得到了"源码"原作者的授权;

        (2).你可以将源码不做任何修改来商业发布。但是,如果你要发布修改后的源码或者当你再发布的是目标代码时,你必须声明它的源代码是可以获取的并要告知获取方法;

         (3).当你需要将符合EPL许可协议的源码作为一部分跟其他私有的源码组合成为一个项目发布时,你可以将整个项目/产品以私人的协议发布,但要声明哪一部分代码是EPL许可协议下的,而且声明那部分代码继续遵循EPL许可协议;

相关文章
|
Java 数据库连接 数据安全/隐私保护
利用开源工具实现轻量级上网行为审计(来源ispublic.com)
来源ispublic.com Google上貌似找不到利用开源软件实现上网行为审计的文章——这也难怪,开源在国内并不流行,而上网行为审计在国外也不流行。
1269 0
|
3月前
|
小程序 JavaScript 前端开发
【社区每周】新增多个隐私协议相关JSAPI(1月第三期)
【社区每周】新增多个隐私协议相关JSAPI(1月第三期)
17 0
|
4月前
|
网络协议
【技术分享】协议
【1月更文挑战第4天】
48 0
|
9月前
|
搜索推荐 数据安全/隐私保护
直播程序源码OAuth协议:开放授权的重要性
在直播程序源码平台,需要OAuth协议这样的协议,OAuth协议保证了用户在使用直播程源码平台结合第三方应用程序的技术功能时的安全性与方便性,也为直播程序源码平台的用户提供了许多互动功能,是让直播程源码平台成为更高质量、更好的平台。
直播程序源码OAuth协议:开放授权的重要性
|
Unix Java 程序员
总结了一下程序员们都应该知道的各类开源许可证及合规相关的知识
总结了一下程序员们都应该知道的各类开源许可证及合规相关的知识
总结了一下程序员们都应该知道的各类开源许可证及合规相关的知识
|
前端开发
实战:第十八章:facebook和google免登接入
实战:第十八章:facebook和google免登接入
实战:第十八章:facebook和google免登接入
|
Web App开发 Kubernetes Unix
开源许可证的变迁:从 Elastic 两次变更开源协议说开去
开源从开始到现在已经有几十年历史,开源许可证在开源运动的发展中起到了基石作用,不管是从文化还是法律的角度,都较好地推动了开源的发展。
772 0
开源许可证的变迁:从 Elastic 两次变更开源协议说开去
|
网络协议 测试技术 开发工具
游戏协议测试二:协议工具开发技术介绍
游戏客户端通常是与服务器直接进行通信,如何通过工具来进行协议的修改和创建呢?第一种就是直接在客户端代码里面增加一些类似GM指令的测试接口,来达到对每个接口的测试目的。第二种就是从外部对双方的通讯网络下手,通过第三方将协议截获修改后再发送给对方,从而达到协议测试的目的如图1,本篇文章就是针对第二种方式来做介绍。
1100 0
游戏协议测试二:协议工具开发技术介绍
秒懂云通信:一图读懂云通信企业公众号
云通信企业公众号是基于传统短信,在手机终端本地实现短信菜单栏情景化服务,不改变短信下发途径和短信内容。通过一张图了解云通信企业公众号的功能、优势以及应用场景。
1973 0
秒懂云通信:一图读懂云通信企业公众号
|
消息中间件 编解码 Cloud Native
蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源
开源网络通信框架 SOFABolt 首次线上直播文字回顾。
1576 0
蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源

相关实验场景

更多