(Ryan的Redis系列博客)1.开源协议
2017-02-14 12:51
204 查看
前言
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/licenseschoosealicense.com
相关文章推荐
- (Ryan的Redis系列博客)3.Redis数据类型和抽象
- (Ryan的Redis系列博客)5.Redis的键字符串类型
- (Ryan的Redis系列博客)0.Redis系列文章的博客写作计划
- (Ryan的Redis系列博客)6.更改和查询键空间
- (Ryan的Redis系列博客)4.Redis的键
- (Ryan的Redis系列博客)9.Redis的列表
- (Ryan的Redis系列博客)8.Redis的散列
- (Ryan的Redis系列博客)2.Redis简介
- (Ryan的Redis系列博客)7.Redis键的生命周期
- (Ryan的Koa系列博客)7.依赖库:koa-compose(本文尚未完成)
- (Ryan的Koa系列博客)3.依赖库:debug(本文尚未完成)
- (Ryan的Koa系列博客)2.严谨模式(未全部完成)
- (Ryan的Koa系列博客)1.说说Koa用到的JS基础知识
- (Ryan的Koa系列博客)9.依赖库:statuses(本文尚未完成)
- (Ryan的Koa系列博客)5.依赖库:composition(代码本机未能执行)
- 使用VS进行工作流开发系列博客3-Developing Workflows in VS: Part 2 - Planning Your Workflow: Two Things to Keep in Mind
- SharePoint 2007 开发系列(13) SharePoint 博客
- 音视频同步系列文章之----一种基于RTP协议的客户端媒体流Buffer管理思想(1)
- 使用VS进行工作流开发系列博客4-Developing Workflows in VS: Part 3 - Five Steps for Developing Your Workflow
- 使用VS进行工作流开发系列博客8-Developing Workflows in VS: Part 7 - Summary and Final Thoughts