Redis开源项目的终极杀手? ——CRUG解读Redis开源协议变更
引言:
数据库制造商 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开源协议变更的更多相关文章
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
注意:有网友提出部分项目停止更新的事情,这个问题我特意注意过,很多都是小功能组件,功能稳定,没有bug,没更新是正常的.够用就行了.其次技术支持的事情,对开源免费来说,不能太强求,这里发布的都是小功能 ...
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
- 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集
Swift 基于C和Objective-C,是供iOS和OS X应用编程的全新语言,更加高效.现代.安全,可以提升应用性能,同时降低开发难度. Swift仍然处于beta测试的阶段,会在iOS 8发布 ...
- 使用开源项目免费申请 JetBrains 全家桶 IDEA 开源许可证
JetBrains 公司旗下的 IDEA 功能都十分强大,深受各种编程语言相关的程序员的喜爱.我个人而言,经常使用 WebStorm,也使用过 PyCharm. 正常情况下 JetBrains 公司的 ...
- React Native开源项目如何运行(附一波开源项目)
学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外.React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如 ...
- Redis——SpringBoot项目使用Lettuce和Jedis接入Redis集群
Jedis连接Redis: 非线程安全 如果是多线程环境下共用一个Jedis连接池,会产生线程安全问题,可以通过创建多个Jedis实例来解决,但是创建许多socket会影响性能,因此好一点的方法是使用 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
随机推荐
- Java SE、Java EE、Java ME 三者区别
现在一个个来分析 1. Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 ...
- QTreeWidgetItem和QTreeWidgetItemIterator
1.{ ui->treeWidget->setHeaderHidden(true); ui->treeWidget->clear(); QTreeWidgetItem *ima ...
- JavaSE-13 内部类
学习要点 内部类的定义 内部类的应用 内部类 定义 Java的一个类中包含着另一类. A类和B类是C类的外部类.B类是C类的外部类.A类也称为顶层类. 如何使用内部类 public class MyF ...
- javascript的prototype经典使用场景
prototype的经典使用场景就是为对象增加属性和方法,如给自定义的Man对象增加个姓名属性和语言方法: function man() { this.age = "22&qu ...
- 微信小程序 video组件 不随页面滚动
1.页面初始化(滚动前)时,video所在位置 2.页面滚动后,video视频组件所在位置 看了别人家的小程序并不会出现这种状况.最后检查发现,是页面包裹层设置了 height:100% 导致的 顺便 ...
- Go:错误处理
在默认情况下,当程序发生错误(panic)后,程序就会退出(崩溃),所以我们希望,当程序发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行.比如捕获到错误后,打入日志或给管理员一个提示(邮件 ...
- php 实现301重定向跳转实例代码
本文主要介绍php 实现301重定向跳转,通过实例代码让大家更好的理解重定向的方法,有需要的小伙伴可以参考下 在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后 ...
- Huawei-R&S-网络工程师实验笔记20190615-IP基础(AR201上配置IP)
>Huawei-R&S-网络工程师实验笔记20190615-IP基础(AR201上配置IP) >>实验开始,先上拓扑图参考: >>>一般正常配置IP操作如下 ...
- Open DBDiff 0.9
SQL Server 迁移过程经常会的出现,需要比对两个数据库之间,或者是表之间到底有何不同 SQL server 自带的tablediff Utility 是一个命令行的工具,对于偶尔需要做一次的体 ...
- 有三个数a,b,c要求按大小顺序将其输出<if,else语句的学习>
#include <stdio.h> /* 有三个数a,b,c要求按大小顺序将其输出 ----------soulsjie 20170525------ */ void main(){ i ...