open source license主流的开源软件协议介绍(20190222)

文章目录:

  • 一、开源软件的直观介绍
  • 二、常用开源协议介绍
  • 三、常用开源协议之间的对比

当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses /alphabetical)。我们在常见的开源协议如BSD,GPL,LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。

一、开源软件的直观介绍

下面看图说话:
1、乌克兰程序员Paul Bagwell的分析图,方便大家直接查看。http://sosuny.iteye.com/blog/1026575

2、某知名网友总结:

3、此外国外IT大牛Dan Bentley制作了一张更全面也很有趣的图,有网友做了汉化:

二、常用开源协议介绍

1、BSD开源协议:(original BSD license、FreeBSD license、Original BSD license)

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

2、Apache Licence 2.0:(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也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

3、GPL(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等类似。

4、LGPL(GNU Lesser General Public License)

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品

5、MIT(MIT)(Massachu-setts Institute of Technology)

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

三、常用开源协议之间的对比

Reference:
1、https://www.zhihu.com/question/19568896
2、http://www.ha97.com/833.html


如果你觉得对你有帮助,希望你可以打赏知识!

支付宝收款码 微信收款码

如果你热衷技术,想寻找志同道合的伙伴,欢迎加入我们!

微信交流 QQ技术交流群

open source license主流的开源软件协议介绍相关推荐

  1. License分类 + 引入开源软件时License的注意事项

    License分类 + 引入开源软件时License的注意事项 License分类 GPL: linux.openJDK,openJFX,mysql 融合感染,单独子模块不感染(自己的模块与引入模块的 ...

  2. 6个越南主流社交媒体软件简单介绍

    越来越多的小伙伴发现了东南亚市场的魅力,开始主攻东南亚跨境电商了.今天我们小编就来给大家简单介绍一下东南亚国家之一越南主流社交媒体平台,为大家开拓越南市场贡献一份力量. 6个越南主流社交媒体软件简单介 ...

  3. (转载)9个主流的开源许可协议[整理]

    http://univasity.iteye.com/blog/1292658 关于开源许可 现今存在的开源协议很多,而经过Open Source Initiative 组织通过批准的开源协议目前有6 ...

  4. 9个主流的开源许可协议

    关于开源许可 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有60多种(http://www.opensource.org/licenses/al ...

  5. 己任视点┃解读我国首个明确开源软件协议性质的判决(附判决)

    | 作者:杜晓宽 宁敏 成如意  己任律师事务所 | 转载自:知识财经 | 编辑:刘雪洁 | 设计:张千禧 | 责编:王玥敏 2021年4月,深圳市中级人民法院针对一起侵害某开源软件的计算机软件著作权 ...

  6. 开源软件许可协议简介

    英文原文:A Short Guide To Open-Source And Similar Licenses 很多软件开发者和设计者都有将自己的软件作品以开源的形式公之于众的想法.他们希望其他人也可以 ...

  7. 开源协议、开源贡献协议与OpenHarmony

    开源软件显示其"低成本"."自由"."透明"等优势的同时,需要很多的程序员.开发者参与贡献才能蓬勃发展.所以,如果程序员.开发者们的利益没有 ...

  8. 开源协议(Open Source License)

    什么是开源? 开源(Open Source) 在软件领域,可以理解为 "开放源代码" 的简称. 通常指将软件项目的源代码向大众开放,允许大众获取.使用.修改和发行. 开源项目(Op ...

  9. GPL协议中国第一案尘埃落定,相关开源软件应如何风控?

    " 导读:2019年11月6日,数字天堂(北京)网络技术有限公司(以下简称 "数字天堂公司")诉柚子(北京)科技有限公司.柚子(北京)移动技术有限公司(以下简称 &quo ...

最新文章

  1. 2019研究生数学建模比赛题目
  2. struts2+hibernate3+spring3(ssh2)框架下的web应用(1)
  3. 2021春季每日一题【week8 未完结】
  4. 腾讯蓝鲸智云社区版V6.0.3携手容器管理平台正式发布!
  5. java与java ee_Java EE 8怎么了?
  6. Android日志[进阶篇]四-获取错误报告
  7. json for-in 来循环对象的属性
  8. Linux文件系统(五)---三大缓冲区之buffer块缓冲区
  9. 什么是OM3、OM4光纤跳线?
  10. Luogu1939 【模板】矩阵加速(数列)
  11. coreldraw快速撤回_CorelDRAW操作技巧,教你CDR撤销操作方法与设置技巧
  12. 安卓打开rpm文件_android 添加文件打开方式,找了很久终于找到了,收藏起来吧...
  13. 总结数字签名实现身份验证
  14. 微信网页设置标题title
  15. 数学建模之方差分析基础--单因素,双因素方差分析与matlab实现
  16. 【程序包uti1不存在怎么办?】求解答
  17. IEC101召唤过程
  18. c++在csv写入汉字_python-opencv表格识别转csv
  19. 【conda解决】安装Torchvision后使用PIL报错,ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'
  20. Linux_网络项目_WEB服务器 设计CGI机制,与CGI处理数据

热门文章

  1. 阿里BCG重磅报告《人工智能,未来致胜之道》
  2. Windows下使用Visual Studio Code搭建Go语言环境
  3. firedac的TFDStoredProc动态创建并调用存储过程
  4. C 线程池(不稳定的方案)
  5. IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
  6. Android运行出现“java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。”...
  7. Concrete Math 混凝土数学(具体数学)随笔
  8. 商业领袖摘下帽子才能炼成极致
  9. python编程语言是什么-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  10. 函数式编程语言python-10分钟学会python函数式编程