(Ryan的Redis系列博客)1.开源协议
前言
Redis是一款基于BSD协议的开源NoSQL。因此,第一篇文章,我们便来说说几种开源协议。
开源协议是什么?
这里讲的开源协议都是关于计算机软件的,计算机硬件或者其他产品的开源协议我是不懂的,也不是本文的讨论范围。到目前为止,开源协议有成百上千种,这些协议主要是为了告诉软件作者以外的人如何新增、修改代码的,换句话说,开源协议是告诉其他人利益是如何转化和转移的。
下面引述opensource官网的一句话:
Open source licenses are licenses that comply with the Open Source Definition — in brief, they allow software to be freely used, modified, and shared. To be approved by the Open Source Initiative (also known as the OSI), a license must go through the Open Source Initiative’s license review process.
翻译:开源协议,是遵循开源定义的协议,简而言之,开源协议是允许软件被自由使用、修改和分享的协议。一个协议必须通过OSI的协议复核程序,才能被OSI组织所允许。
因此,我在这里简单的总结一下,开源协议是通过了OSI复核的协议。
开源协议的种类及概念
开源种类繁多,凡是通过了复核的都可以成为开源协议,下边写出官网推荐的几种比较流行的开源协议:
简称 | 全称 | 说明 |
---|---|---|
Apache | Apache License 2.0 | 一个较宽松且简明地指出了专利授权的协议。 |
BSD3 | BSD 3-Clause “New” or “Revised” license | 1.需包含原始版权和免责声明,2.未经许可不能用原作者做宣传 |
BSD2 | BSD 2-Clause “Simplified” or “FreeBSD” license | 需包含原始版权和免责声明 |
GPL | GNU General Public License | 此协议是应用最为广泛的开源协议,拥有较强的版权自由( copyleft )要求。衍生代码的分发需开源并且也要遵守此协议。此协议有许多变种,不同变种的要求略有不同。 |
LGPL | GNU Library or “Lesser” General Public License | 就是GPL针对动态链接库放松要求了的版本,即允许非LGPL的代码动态链接到LGPL的模块。注意:不可以静态链接,否则你的代码也必须用LGPL协议开源。 |
MIT | MIT license | 最宽松的声明,只需要包含原始版权声明即可,其他的随便弄 |
MPL | Mozilla Public License 2.0 | 修改版本必须保持其原始版权声明。如果发布了编译后的可执行文件,那么必须让对方可以取得MPL协议下程序的源码。 |
CDDL | Common Development and Distribution License | 它是MPL的扩展,允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。 |
EPL | Eclipse Public License | 类似于GPL的商业友好型协议,主要是用于Eclipse基金会的 |
上边这个表,主要是说明开源协议的分类和特点的,细节知识,请登录到开源协议的官网,去自行查看。
开源协议的细节
开源协议的细节主要许可(Permissions)、条件(Conditions)、限制(Limitations)三个方面来说明
协议 | 许可 | 条件 | 限制 |
---|---|---|---|
Apache | 商用、分发、修改、专利授权、私用、附加协议 | 协议和版权信息、声明变更 | 责任承担、商标使用 |
BSD3 | 商用、分发、修改、私用、附加协议 | 协议和版权信息 | 责任承担 |
BSD2 | 商用、分发、修改、私用、附加协议 | 协议和版权信息 | 责任承担 |
GPL | 商用、分发、修改、专利授权、私用 | 公开源码、协议和版权信息、声明变更 | 责任承担、附加协议 |
LGPL | 商用、分发、修改、专利授权、私用、附加协议 | 公开源码、库引用、协议和版权信息 | 责任承担 |
MIT | 商用、分发、修改、私用、附加协议 | 协议和版权信息 | 责任承担 |
MPL | 商用、分发、修改、专利授权、私用、附加协议 | 公开源码、协议和版权信息 | 责任承担、商标使用 |
CDDL | |||
EPL | 商用、分发、修改、专利授权、私用、附加协议 | 公开源码、协议和版权信息 | 责任承担 |
图示开源协议
该图由乌克兰程序员Paul Bagwell画的分析图扩展而来:
(尚未最终完成,会持续进行更新该文章,并结合该问题生产相关的程序)
附录:
单词
1.comply[kəmˈplaɪ] vi. 遵从; 依从,顺从; 应允,同意;
2.definition [ˌdɛfəˈnɪʃən] n. 定义; 规定,明确; [物] 清晰度; 解释;
3.in brief 总之,简单地说,简而言之
4.approved [ə’pru:vd]adj. 经核准的,被认可的;v. 批准; 认可; 核准; 赞成,同意( approve的过去式和过去分词 );
5.initiative [ɪˈnɪʃətɪv]n. 倡议; 主动性; 主动权; 主动精神;adj. 自发的; 创始的; 初步的;
6.go through [ɡo θru](法律、合同等正式) 通过; 用完; 检查; 完成;
7.review [rɪˈvju]n. 回顾; 复习; (报刊的) 评论; [法] 复审;vt. 评论; 复习; 复查; 检验;vi. 复习功课; 写评论;
参考
opensource.org/licenses
choosealicense.com
(Ryan的Redis系列博客)1.开源协议相关推荐
- (Ryan的Redis系列博客)7.Redis键的生命周期
前言 本文讨论的是Redis中的失效时间,我将之称为"键的生命周期".之前的文章,我介绍了各种复杂的数据结构,但是,却没有讨论Redis失效时间,用户可以自定义一个时间,时间到期, ...
- (Ryan的Koa系列博客)6.依赖库:on-finished(本文尚未完成)
前言 当request对象关闭,完成或者报错的时候会执行回调函数. 安装 npm install on-finished 依赖 var onFinished = require('on-finishe ...
- (Ryan的Koa系列博客)2.严谨模式(未全部完成)
前言 'use strict'; ES5的严谨模式,是选择使用受限制的JS编写程序的一种方式.严谨模式不仅仅是一个语法子集,它有意的为普通代码设置了不同的语义.因此,浏览器不能运行没有通过严谨模式特性 ...
- 基础环境搭建——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(五)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
- 堪比培训机构的MySQL系列博客
这个blog,我整理了我之前写的MySQL开发系列和MySQL运维系列,知识丰富程度堪比培训机构 个人能力有限,如有错误的地方,欢迎指正. 文章目录 一.MySQL开发系列 1.1 MySQL 行转列 ...
- SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...
- SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)
系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...
- 追梦App系列博客——汇总篇
文章目录 一.前言 二.为什么要写这个系列博客? 三.汇总篇的作用 四.导航目录 1.App设计 2.会议相关 五.建议 一.前言 当我们满怀希望跨入大学生活,却我们发现大学生活并不是我们所希冀的样子 ...
- 实时推荐服务建设——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(八)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
最新文章
- Java自学路线总结,已Get腾讯Offer
- 冠状病毒如何杀灭最高效?这里有一份几十年的实验汇总
- LiveVideoStackCon深圳-嵌入式音频开发
- Nginx安装环境配置
- python发送qq邮件列表_Python SMTP发送邮件
- HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线
- CF Gym100917 C
- IDEA中Git的更新、提交、还原方法
- iOS开发之地图与定位
- 如何取消重要地点加密_西门子S7-300/400PLC编程之软件加密
- 江苏省计算机二级c语言考试知识点,计算机二级考试C语言常考知识点归纳
- JQuery Smart UI 简介 (一) — 纯Htm+Js的ajax开发框架[演示Demo已放出]
- 【华为OD机试Python实现】HJ70 矩阵乘法计算量估算(中等)
- 考研逻辑-逻辑4主讲人:王超-2020-08-15
- Hive on spark 执行加载不了spark的jars
- java 哲学家_Java哲学家进餐问题|多线程
- C++条件运算符(三目运算符+逗号运算符)案例实练
- 计算机安全原理与实践第3版PDF,windows安全原理与技术.pdf
- python培训就业班的服务好不好,在培训班学完Python为什么不好就业?
- 【备战2020】高考数学全套知识点
热门文章
- 【兼容性】ios上设置overflow: scroll不滚动bug
- 模仿天天动听5可联网下载歌词的音乐播放器
- JAVA基础6.51——多态的概述(1)
- 云服务器可以用来干什么?了解了这4点你就知道了
- mlf机器人无限制格斗_极战MLF无限制机器人格斗大赛The Railgun称王
- 江苏事业单位计算机类考申论吗,想进事业单位?江苏事业单位统考,考些什么你知道吗?...
- CAN工具 - ValueCAN - 基础介绍
- 2021年05月软件设计师真题透析
- ​生鲜也能卖尾货了?
- 找实习经历分享(一)