开源许可可能是使用开源代码最重要的一环,他不仅赋予程序员使用代码的权利,也给程序员使用开源代码加了一定的权限。如果我们不遵守其开源规定,我们可能遭受法律的制裁。

一、GPL(GUN通用公共许可证)

GPL的英文名是General Public License。此协议规定:当一个开源软件被声明为GPL时,作为使用者的我们有权对该源代码进行修改以及重新发布,也就是此软件完全开放,但是与此同时,我们所修改的源代码也要允许被其他的使用者修改和重新发布。

GPL的撰写者是斯托曼,第一版在1989年1月发布,斯托曼是一个热衷于将软件自由化的人物,他的理想就是构建一种四海之内皆可使用的许可证,这样就能为自由软件的传播带来福音

总结:使用GPL协议二次开发的自由软件也要完全开源

GPL标志

二、BSD许可协议

BSD许可协议可以说是最宽容的一种协议,这个协议基本可以认为你可以对开源软件“为所欲为”,他允许你对使用BSD协议的开源软件进行修改并且应用在自己的软件上进行闭源。但是“为所欲为”的前提你仍然要受以下三点约束:

1、如果二次发布的作品为源代码,必须在文件中标注原有的BSD协议

2、如果二次发布的作品为二进制文件或者软件,必须在技术文档中标注原有的BSD协议

3、不可以使用开源代码的作者或者机构进行宣传

总结:为所欲为

三、LGPL(GUN宽通用公共许可证)

LGPL的英文名是Lesser General Public License,他是GPL的一个衍生。和GPL所规定的二次开发代码也必须完全开源不同,你可以在自己编写的软件中,调用由遵循LGPL协议编译而成的二进制库文件,这样你的软件部分就可以不开源,并且可以自由发售。但是如果修改遵循LGPL协议的开源代码,那么你所修改的代码也必须开源。

如果说GPL最大限度的促进了开源软件的自由传播,那么LGPL则在促进软件行业商用行为的发展方面起了很重要的作用,并且也保证了开源代码的自由传播。

总结:二次开发中如果不涉及修改开源代码,则软件可以闭源。

四、Apache License 2.0

Apache License 2.0可以与BSD类比,在尊重作者和原创的前提下,允许使用开源代码二次开发的软件进行重新发布,包括开源和闭源,但是要注意遵守以下几点:

1、在发售的软件中包含一份Apache License协议

2、修改源代码文件之后,要在被修改文件中添加说明

3、在修改开源代码和对开源代码进行衍生的部分需要带有开源代码原本的协议,以及作者所要求的需要包含的内容

4、如果发行软件时包含一份参考文件,参考文件需要包含Apache License,可以包含自己的许可,但不可以对Apache License更改。

总结:允许二次开发软件进行闭源,但需要尊重原创,并传播Apache License

最后补上一份开源许可图鉴(图源:网络)

自由软件的开源许可介绍(GPL、BSD、LGPL、Apache License 2.0)相关推荐

  1. 四种常见软件开源协议介绍-GPL、LGPL、BSD、Apache

    今天介绍四种常见的开源软件协议: GPL(GNU General Public License) LGPL(GNU Lesser General Public License) BSD(Berkerl ...

  2. 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)

    Open Source Initiative组织: https://opensource.org/licenses/alphabetical 现今存在的开源协议很多,而经过Open Source In ...

  3. 开源授权协议GPL和LGPL的区别

    引子 今天在学习wke的时候,发现了作者在wke.h文件头的位置,写上了licence LGPL 的字样,这里我就疑惑了,好像只听说过GPL,并没有听说过LGPL,那么这两者究竟有什么区别呢? 开源授 ...

  4. 开源许可违反:案例说明(Apache License 2.0)

    Apache License 2.0是一种对商业非常友好的开源许可证,但是即使如此还是会发生一些使用上违反的示例,这篇文章通过一个具体的示例来进行说明. 案例 2020年6月份,Apache顶级项目的 ...

  5. Github如何添加合适的开源License(Apache License 2.0、MIT License、GPL3)

    本文为作者学习开源许可的笔记 欢迎交流讨论,喜欢的话点个赞吧 欢迎去看我的主页: NicholasYe's Hompage. 1.如何添加一个开源License 在github自己的项目界面中点击Ad ...

  6. 开源协议:在项目中使用Apache License 2.0

    Apache License 2.0的使用限制有很多介绍,这篇文章说明一下在项目中使用Apache License 2.0的步骤和注意事项. 最常见的理解误区 在项目的根目录下,创建一个LISENCE ...

  7. Apache License 2.0介绍

    Apache License 2.0介绍 Apache LicenseVersion 2.0, January 2004http://www.apache.org/licenses/TERMS AND ...

  8. java license 开源_MinIO:一个基于Apache License v2.0开源协议的对象存储服务

    MinIO Quickstart Guide--快速入门 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构 ...

  9. 开源协议介绍(GPL,LGPL,BSD,MIT,Apache)

    什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供 一定的权限. 不管产品是免费向公众分发,还 ...

  10. 五种开源协议:GPL, LGPL, APACHE, BSD, MIT

    BSD开源协议(original BSD license.FreeBSD license.Original BSD license) BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以&q ...

最新文章

  1. 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
  2. 使用PInvoke互操作,让C#和C++愉快的交互优势互补
  3. tftp的安装、设置以及put、get传输实验
  4. 转载--如何使用# ## ... _ _VA_ARGS_ _
  5. python爬虫qq音乐_Python爬虫实战:采集全部QQ音乐歌曲
  6. 中国传统节日春节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成品下载 DW春节节日网页作业代码下载 节日春节8页面
  7. php是世界上最好的语言吗
  8. R语言数据缺失值处理
  9. 20开头的HSCode总览
  10. 班章管家分享五一假日什么理财产品会有收益?五一假日理财攻略
  11. ios11手机怎么投屏到电脑屏幕上
  12. 数字取证二 熟练掌握鉴证大师 了解NTFS分析、LogFile文件使用和USN日志分析
  13. 正弦函数泰勒展开c语言,C++ 学习笔记_0012_函数(泰勒展开式、三角函数表)
  14. Docker11_1:Docker阿里云仓库
  15. nohup怎么更改名字_公司相关信息可以变更吗?公司注销怎么处理?
  16. 补脾常见中成药辩驳------健脾丸、归脾丸、人参健脾丸和人参归脾丸的区别!
  17. maven 打包指定依赖包_maven打包为jar-with-dependencies无依赖jar包方法
  18. SpringBoot配置全局的异常捕获
  19. 如何从本地wsl登录阿里云服务器
  20. 多项式指数函数(exp)

热门文章

  1. pythonmt4通讯swot矩阵_SWOT矩阵分析法
  2. Scratch编程与游戏:和电脑玩大富翁游戏
  3. 腾讯翻译君在线翻译怎么翻译整个文件_很实用的PDF文档在线翻译工具,整篇PDF翻译一键搞定...
  4. Java高并发编程实战6,通过AQS源码分析lock()锁机制
  5. CS61A自学者学习指南
  6. MATLAB中能对三角函数降幂嘛,三角函数降幂公式是什么
  7. HTML——超链接、音视频
  8. Windows Mobile 触摸屏(Touch Panel)截获
  9. 智慧交通规划设计方案解析
  10. Microchip PIC系列8位单片机入门教程(六)ADC