引言:

数据库制造商 Redis Labs 本周将公司开发的Redis 模块从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,对许可证涵盖的软件作了限制。许可证的变更意味着自研 Redis 模块 - RediSearch,Redis Graph,ReJSON,ReBloom 和 Redis-ML 将不再是开源软件,而是源码可用(source available)。

 

新许可证限制了云提供商向客户提供这些 Redis 模块的能力,Redis Labs 可能会成为包含这些附加组件的唯一服务销售商。 但是,Redis 数据库代码仍属于 BSD 许可证。

 

Redis Labs 并不是唯一一家做出这样改变的公司。5月,Neo4j 图数据库在其 AGPL 许可证中添加了 Commons Clause。

 

Redis Labs 的联合创始人兼首席技术官 Yiftach Shoolman 表示:“多年来,云提供商通过销售基于开源项目的云服务,可从中获利数亿美元,可这些项目实际上并不是他们自己开发的,如 Docker,Elasticsearch,Hadoop,Redis 和 Spark。这阻碍了社区投资开发开源代码,因为任何潜在的好处都归云提供商而不是代码开发人员或他们的赞助商。”

Redis的license变更许可证引发开源社区热议,大家比较关心的问题主要集中在这几个方面:Redis 还开源吗?新出现的 Commons Clause 到底包含哪些内容?协议变更对用户的直接影响有哪些?下面就由小编为您详细解答,关于此次Redis开源协议变更大家关心的一些问题。

Q:Redis协议到底做了哪些变更?

A:为了让大家更清楚的了解变更点,小编特意梳理了如下表格供大家参考:

变更前

变更后

备注

Redis Core

BSD

BSD

不变

Redis Modules

AGPL

AGPL

不变

Redis Modules(RedisLabs公司创办)

AGPL

Apache 2.0 with Commons Clause

涉及模块:RediSearch, Redis Graph, ReJSON, Redis-ML, Rebloom

表1.Redis协议变更范围

Q:新出现的 Commons Clause 到底是什么东东?

A:Commons Clause v1.0 的介绍:

本软件由许可方根据以下定义的条款提供给您,但须符合以下条件。

在不限制许可中的其他条件的情况下,根据许可证授予的权利不包括、并且不授予您销售软件的权利。

综上所述,“出售”是指根据许可证授予您的任何或所有权利,以向第三方提供费用或其他报酬(包括但不限于与软件相关的托管或咨询/支持服务的费用),产品或服务的价值完全或基本上来自软件的功能。许可证要求的任何许可声明或归属也必须包含此 Commons Cause License Condition 声明。

简单地说就是:不许销售,不存在商业环境。

Q:Redis作者对此是怎么看的?

A:Redis作者antirez表态:“对于我将开发的Redis模块,比如Disque,我会选择AGPL

我们生活在云时代,所以使用新许可证会强制其他SaaS公司重新提交回他们的改进。然而,这不适用于Redis本身。 Redis是10年集体努力的成果,是我们可以一起做其他事情的基础,这个基础必须有尽可能多的可能性,即使用BSD许可证。”

Q:Redis中国用户组(CRUG)如何解读这件事情?

A:Commons Clause 的初衷,是为了抵御一些不良行为。如那些使用源代码,却不对开源代码维护做出补偿的公司,但这个License在开源界存在很在的争议。如OSI VM Brasseur 副总裁吐槽 Commons Clause 的销售禁令表述不明晰,可能会面临法律问题。OSI 总裁则认为,这种许可证剥夺了软件自由。

的确,新许可证对使用Redis Module的商业公司影响较大,Commons Clause 并未给出支持开源软件的解决方案,而是将开源软件变成了专有软件,并将所有开发者的开源贡献成果交由 Redis Labs 来控制,因为Redis Labs 是这些组件的唯一服务销售商。

这限制了其他商用公司向客户提供这些 Redis 模块的能力。Redis Labs 是否能够通过Commons Clause获得更多好处,需要持续观望。

Q:云服务厂商的表现如何?

A:华为云分布式缓存服务DCS提供云上的Redis服务,为用户提供Redis Core的基础能力,并未提供Redis Module相关能力,此次协议变更对用户是没有影响的。华为云在积极参与开源活动的同时,尊重开源代码的知识产权,严格遵守开源协议的要求,为用户提供更优质的云服务。

Redis开源项目的终极杀手? ——CRUG解读Redis开源协议变更的更多相关文章

  1. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  2. 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧

    注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...

  3. Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目

    Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...

  4. 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集

    Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提升应用性能,同时降低开发难度. Swift仍然处于beta测试的阶段,会在iOS 8发布 ...

  5. 使用开源项目免费申请 JetBrains 全家桶 IDEA 开源许可证

    JetBrains 公司旗下的 IDEA 功能都十分强大,深受各种编程语言相关的程序员的喜爱.我个人而言,经常使用 WebStorm,也使用过 PyCharm. 正常情况下 JetBrains 公司的 ...

  6. React Native开源项目如何运行(附一波开源项目)

    学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外.React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如 ...

  7. Redis——SpringBoot项目使用Lettuce和Jedis接入Redis集群

    Jedis连接Redis: 非线程安全 如果是多线程环境下共用一个Jedis连接池,会产生线程安全问题,可以通过创建多个Jedis实例来解决,但是创建许多socket会影响性能,因此好一点的方法是使用 ...

  8. .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...

  9. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

随机推荐

  1. CPU怎么计算1+1----CPU计算的电路基础

    从<十进制和二进制的运算---我所理解到的人类的运算的本质>这里我们知道,人类进行运算的本质是查表,并且我们存储的表是有限的.那么计算机是怎进行四则运算的呢,也是查表吗,肯定不是,今天,我 ...

  2. 利用jQuery对li标签操作

    <ul class="con" id="products"> <li i=" class=""> < ...

  3. BZOJ 3876 支线剧情 有源汇有上下界最小费用可行流

    题意: 给定一张拓扑图,每条边有边权,每次只能从第一个点出发沿着拓扑图走一条路径,求遍历所有边所需要的最小边权和 分析: 这道题乍一看,可能会想到什么最小链覆盖之类的,但是仔细一想,会发现不行,一是因 ...

  4. Buffer.alloc()

    Buffer.alloc(size[, fill[, encoding]]) Node.js FS模块方法速查 size {Number} fill {Value} 默认:undefined enco ...

  5. assert.fail()详解

    assert.fail(actual, expected, message, operator) 抛出一个 AssertionError.如果 message 是假值,错误信息会被设置为被 opera ...

  6. PAT 1073. 多选题常见计分法

    PAT 1073. 多选题常见计分法 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到50%分数:如果考生选择了 ...

  7. [luoguP1021] 邮票面值设计(DFS + dp)

    传送门 数据很小,可以DFS,判断的时候用背包DP 然而不知到枚举到哪里.... 首先枚举前可以求一遍题目中的MAX,下一层DFS的时候可以只枚举到MAX + 1,因为再往上就必定会出现断层 蒟蒻很菜 ...

  8. 常见问题:Linux安装Python3步骤、Windows无法利用pip

    Linux安装python3.6和第三方库的步骤: 我的Linux是CentOS 6.5版本 Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7, ...

  9. bootstrap删除模态框弹出并询问是否删除【通用删除模态框】

    普通的询问是否删除的对话框比较low,可以利用bootstrap的模态框代替普通的对话框来实现删除. 效果: 点删除的时候弹出模态框询问是否删除,点确认的时候将需要删除的ID传到后台进行删除.  过程 ...

  10. Thinkphp5.0 的使用模型Model更新数据

    Thinkphp5.0 的使用模型Model更新数据 (1)使用update()方法进行更新数据 一.where条件写在更新数据中 (这种情况更新的数据,必须含主键) $res = User::upd ...