Redis 又双叒叕改开源协议了,微软提前推出高性能替代方案 Garnet

Redis 官宣:是的,我们又改开源协议了

3 月 20 号,Redis 商业公司 CEO Rowan Trollope 在公司官方博客上宣布了一项重大变革。Redis 核心软件将从 BSD 3-Clause 许可证过渡到双重许可证模式,这一变化将从 Redis v7.4 版本开始,贯穿到未来所有的 Redis 发布版本。新的许可证模式使用了 Redis Source Available License version 2 (RSALv2) 或 Server Side Public License version 1 (SSPLv1)。

BSD 3-Clause 许可证,也称为“新 BSD 许可证”或“修改版 BSD 许可证”,是一种常用的开源软件许可证。它是原始 BSD 许可证的修改版,由加州大学伯克利分校(University of California, Berkeley)创建。与 MIT 许可证类似,BSD 3-Clause 许可证对源代码的使用、修改和分发施加了很少的限制,因此被认为是一种非常宽松的许可证。它鼓励代码共享和重用,同时为开发者提供了很大的自由度。它允许自由使用、修改和分发,被许可的源代码可以自由地使用、修改和分发,无论是以源代码形式还是二进制形式。也允许闭源使用,允许将源代码集成到闭源的专有软件中。

BSD 3-Clause 许可证是一个是被开源促进会(Open Source Initiative,OSI)认可的开源许可证。OSI 是一个非营利组织,致力于推广开源软件和开源理念。他们维护了一个被认可的开源许可证列表,这些许可证满足了 OSI 的开源定义(Open Source Definition),这个定义包括了十个关键条款,如自由再分发、源代码可获得、允许修改和衍生作品等。根据 OSI 的定义,只有采用了 OSI 认可的许可证,才能被称为开源软件(Open Source Software,OSS)。因此,如果一个软件项目采用了未经 OSI 认可的许可证,即使该许可证允许源代码的获取和修改,也不能被正式称为开源软件。

而 Redis 的新开源协议,RSALv2 和 SSPLv1,都并未被 OSI 正式认可。OSI 认为,这两种协议包含了一些限制性条款,这些条款与开源定义(OSD)不完全兼容。因此可以认为 Redis 在修改许可证后,已经不再是开源软件(OSS)。Redis 的官网已经修改为“Redis is source-available software”。

这已经不是 Redis 商业公司第一次修改许可证了

这已经不是 Redis 商业公司第一次修改许可证了。早在 2018 年,Redis 就修改过其开源协议,将公司开发的 Redis 模块(例如 RediSearch、Redis Graph、ReJSON、ReBloom 和 Redis-ML)从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,这些模块提供了额外的功能,扩展了 Redis 的应用场景。这个变更引起了社区的一些争议,因为"Commons Clause"限制了这些模块在某些商业场景下的使用。

2019 年 3 月,为了回应社区的反馈,Redis Labs 宣布将这些模块的许可证改为 Redis Source Available License (RSAL),取消了之前的"Commons Clause"。RSAL 允许自由使用、修改和再分发这些模块,但在提供基于这些模块的数据库产品或服务时,需要获得商业许可证。

2022 年 11 月 15 日,Redis Labs 再次调整了许可证策略,宣布将一些模块(如 RediSearch、RedisJSON、RedisGraph、RedisTimeSeries 和 RedisBloom)改为双重许可证,即 RSAL 和商业许可证并行。这一变更旨在应对云服务提供商使用开源软件的商业模式问题。Redis Labs 称,“一些云服务提供商将 Redis 及其模块作为服务提供,但没有为 Redis 的开发做出相应的贡献。许可证的改变旨在鼓励这些公司为 Redis 的开发提供支持。”

在此前的许可证修改中,Redis 的核心项目一直使用宽松的 BSD 3-Clause 许可证。这个许可证没有发生过变更,一直保持稳定。厂商的信心来自于此前修改许可证带来的商业收益,Redis CEO 表示:“我们已经在 Redis Stack 分发中对我们的高级 Redis 模块实施了双重许可证,这得到了社区的好评。事实上,redis.io 下载中超过 50%(从 Redis 6 开始)来自 Redis Stack。我们相信,将此许可证扩展到 Redis 本身,能够让我们继续为用户提供最全面的数据模型、处理引擎和开发者功能。”

此次修改 Redis 核心项目的许可证,应该是 Redis 针对云厂商发起的一轮终极进攻。谁会被这次修改许可证影响呢?提供 Redis 竞争性产品的机构(例如,云厂商)将不再被允许免费使用新版本的 Redis 源代码。“竞争性产品”是指通过付费支持安排等方式出售给第三方的产品,该产品源自 Redis 的代码库,并且与 Redis 商业产品的功能显着重叠。例如,此定义将包括托管或嵌入 Redis 作为解决方案的一部分,该解决方案的销售与 Redis 商业版本(Redis Enterprise Software 或 Redis Cloud)具有竞争力。此前,Redis Labs 的 CTO Yiftach Shoolman 表示:“多年来,云提供商通过销售基于开源项目的云服务,可从中获利数亿美元,可这些项目实际上并不是他们自己开发的,如 Docker,Elasticsearch,Hadoop,Redis 和 Spark。这阻碍了社区投资开发开源代码,因为任何潜在的好处都归云提供商而不是代码开发人员或他们的赞助商。”

Redis Labs 并不是唯一一家做出这样改变的公司。在 2018 年,紧跟 Redis,MongoDB 将其开源许可证从 GNU AGPLv3 切换到 Server Side Public License (SSPL)。2018 年 5 月,Neo4j 图数据库在其 AGPL 许可证中添加了 Commons Clause。2021 年,Elasticsearch 背后的公司 Elastic 也宣布从 Apache 许可证改到 SSPL 许可证。这些厂商修改许可证的主要动力都来自商业策略,随着开源项目的增长和流行,公司决定改变许可证以与其商业策略保持一致。希望对软件的使用增加额外的限制或限制,以产生收入或保护其知识产权。

云厂商的反击:基于兼容协议自研

非常凑巧的是,两天前,微软刚刚开源一款 Redis 兼容的,但性能远高于 Redis 的平替 Garnet。Garnet 是一个全新缓存存储系统,虽然是 C# 开发,但宣称针对现代硬件进行了优化,能更大限度发挥硬件功能,考虑了现代多核处理器和高速网络的特点,能够在单节点内进行线程扩展,能够更有效地利用处理器缓存,从而提高性能,且在处理大量客户端连接和小批量数据时能够提供更高的吞吐量和更低的延迟。Garnet 支持分片集群执行,具备复制、检查点、故障转移和事务处理功能。可以在主内存以及分层存储(如 SSD 和 Azure 存储)上运行。

从评测数据来看,Garnet 的性能在吞吐和延迟两个方向上都表现的非常优异。在吞吐上,Garnet 和 Dragonfly(另一个以高性能著称的 Redis 平替开源项目)相比,有数量级的优势,而在延迟上,不管是 50% 还是 99.9% 中位数的延迟,Garnet 都略好于 Dragonfly。当然在评测数据里,Garnet 和 Dragonfly 都远超过 Redis。这一性能分数对于一个用 C# 开发的项目来说,显得非常亮眼。因为 Redis 和 Dragonfly 是 C/C++ 开发的。

除了微软的替代方案,国内公司也开发了一些 Redis 的替代品。这些产品旨在提供与 Redis 类似的功能和性能,同时避免了某些许可证的限制。Tair 是阿里云开发的一个高性能、分布式的持久化 KV 存储系统。它提供了与 Redis 兼容的 API,同时还支持更多的数据结构和功能,如 GeoHash、JSON 等。阿里云在其云服务中集成了 Tair,为客户提供了一种替代 Redis 的选择。Pika 是 360 开发的一个兼容 Redis 的高性能 KV 存储系统。它的目标是提供与 Redis 类似的功能和性能,同时优化了某些方面,如内存使用效率和大容量支持。Pika 采用 BSD 3-Clause 许可证,也是一个开源项目。这使得其他公司和开发者可以自由地使用、修改和分发 Pika。360 在其云服务和内部系统中使用了 Pika。

Hacker News 内容以及网友评论

Redis 修改开源协议,以及微软开源 Garnet,这两条新闻都引起了 Hacker News 社区网友的热议(吃瓜群众从来不会错过这样的新闻):

有些网友态度相对宽容。

  1. 这些项目主要还是通过托管获取收入,这也是推动许可证变更的原因。无论如何,我确信,我们还将继续看到流行开源软件的兴起和衰落(或许可证变更)。对开发者和公司来说,开源带来了太多的好处。但它同时也带来了种种压力,使他们不得不做出改变。至少,应该称赞 Redis 给世界带来的巨大价值,这已经远远超出了他们本身所获得的东西。路很难,我不知道标准答案是什么。希望有一种让宽松开源许可证适用于复杂程序的模式,但我目前还没有找到什么好方法。接下来,我们可以看看过多久会出现一个 fork,以及它是否能取得成功。还有看看 Redis 的收入增长曲线在 5 年内会是什么样子。
  2. 这件事说明, Redis 正面临与日俱增的利润压力。此外,Redis 在性能方面的竞争优势正在下降,特别是在Dragonfly 和 Garnet 这样的替代品出现之后。

也有网友为 Redis 的未来感到担忧。

  1. 微软近日才公布了 Garnet…如果这成为了 Redis 的丧钟,也太令人唏嘘了。或者按照 YC(Y Combinator,硅谷的一个初创公司孵化器) 的精神,他们是否可能正在酝酿一种名为 yarcdis(yet-another-redis-clone-dis)的替代品。

有网友出谋划策,认为最可行的商业化途径是“open core”,然而也被其他网友质疑。

  1. 免费开源软件(FOSS)最可行的商业化途径似乎是"open core",比如 Android、SQLite、GitLab、VSCode、Docker 等。
  • Open core 的公司,包括 Redis 也在内,都在转向虚假的开源许可证。
  • 确实,Redis 在转变之前是 open core。但仅仅 open core 对他们来说是不够的…也许这就是基础开源服务软件的命运吧… 如果它是“云化的”,那么就无法产生足以盈利的业务。
  • Redis 在商标被 Garantia Data 从 antirez 处收购之前是开源的,后来 Garantia Data 将它重新品牌化为 RedisLabs,之后又更名为 Redis。这绝对不是命中注定的结果,有很多基础的开源代码服务器软件转向了软件基金会。我在 Redis 核心团队工作期间,也曾主张将其移至一个基金会。
  • 基金会也不付钱,看看 Linkerd (一个知名的 service mesh 开源软件)就知道了。

开源许可证为开发者提供了广阔的自由度,鼓励了代码的共享和重用,为软件的创新和发展提供了无限可能。然而,开源许可证却往往无法给予软件的开发者和维护者足够的经济回报,这使得许多开源项目面临资金匮乏、人力不足的问题。近年来,在云服务的环境下,一些云厂商通过提供开源软件的服务赚取大量利润,但却无法约束他们为开源软件的开发和维护付出什么成本。这在一定程度上剥夺了开源项目的生存空间,威胁到了开源生态的健康发展。因此,许多开源项目,包括Redis在内,都在探索如何通过修改许可证,引入商业化的元素,以解决这一矛盾。然而,这种做法往往会引起社区的反对和争议,因为它在一定程度上限制了开源的自由度,并且刺激云厂商fork开源项目进行自研,以降低License更换的风险。

如何平衡开源和商业化,是当前软件行业整体面临的一个重大挑战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475297.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 应用程序监控

Java 监控涉及监控在 Java 上运行的应用程序的关键性能指标,以及 支持 Java 应用程序的服务器。Java 监控可以帮助优化 Java 应用程序的性能,发现和识别以下问题: 导致常见的应用程序问题,并在问题影响最终用户之前解决问题。 Ja…

美联储3月会议来袭,市场对6月开启降息或仍较为乐观

KlipC报道:美国联邦储备委员会结束了为期两天的货币政策会议,宣布仍继续将联邦基金利率目标区间维持在5.25%-5.50%之间不变。 值得一提的是会议声明声明几乎只字未改,唯一改动的是在描述就业市场时,将“新增就业过去一年有所放缓但…

解决Oracle VM VirtualBox无法与Windows互相复制粘贴的教程

说明:要实现从Windows上复制然后在VM VirtualBox上粘贴,必须要在VM VirtualBox上下载virtualbox-guest-dkms 第一步: 第二步: 按CtrlALTT打开命令终端输入 sudo apt-get install virtualbox-guest-dkms 然后重启 第三步&…

Linux下QT界面小程序开发

背景:需要在linux不同环境下可以测试我们的读卡器设备 搭建本地linux开发环境(本来想VS里开发然后通过SSH的方式在linux下编译,但是工具链一直没搞起来,所以我是在ubuntu里安装的QT Creator工具直接开发的)&#xff1b…

(一)手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核

(一)手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核 一、ARM DesignStart计划 1.1 如何下载ARM DesignStart Cortex-M3相关文件 ​ 关于ARM DesignStart计划的介绍:ARM DesignStart计划——私人定制一颗ARM处理器 - 知乎 (zhih…

Android ViewPager不支持wrap_content的原因

文章目录 Android ViewPager不支持wrap_content的原因问题源码分析解决 Android ViewPager不支持wrap_content的原因 问题 <androidx.viewpager.widget.ViewPagerandroid:id"id/wrap_view_pager"android:layout_width"match_parent"android:layout_he…

快速画流程图

使用在线工具&#xff1a;PlantUML PlantUML 官网:https://plantuml.com/ 中文官网:https://plantuml.com/zh/ 使用步骤如下&#xff1a; 1、拷贝一个完成函数&#xff1a; int func_init(const char *tag) {if (tag ! NULL) {printf("set TAG :%s", tag);}print…

登录校验:JWT令牌、Filter、Interceptor

JWT&#xff1a; 全称&#xff1a;JSON Web Token 定义了一种简洁的、自包含的格式&#xff0c;用于在通信双方以json数据格式安全的传输信息&#xff0c;由于数字签名的存在&#xff0c;这些信息是可靠的。 组成&#xff1a; Header(头部)&#xff1a;&#xff08;“alg&q…

每日学习笔记:C++ STL 的set、multiset

定义 (自动排序&#xff0c;可指定自定义排序准则) 排序准则 特点 &#xff08;不同通过迭代器直接修改元素值&#xff0c;只能先删除后添加&#xff09; 操作函数 运行期指定排序准则

【项目实践】VS配置Qt

文章目录 前言版本使用具体步骤1&#xff09;安装Qt或者添加删除组件2&#xff09;VS安装Qt Visual Studio Tools 如何使用遇到的问题双击ui文件编辑报错 前言 最近因为一个项目&#xff0c;需要使用Qt&#xff0c;本来想使用Python的&#xff0c;但是由于另外一个第三方的库是…

Linux:vim编辑器的使用

1.Vim的安装 Linux默认是安装了的vim&#xff0c;未安装则可以使用以下指令安装。 yum install vim -y 2.Vim的四种模式 &#xff08;1&#xff09;命令模式 使用VIM编辑器时&#xff0c;默认处于命令模式。在该模式下可以移动光标位置&#xff0c;可以通过快捷键对文件内容…

路灯单灯控制器 智慧路灯杆智能照明新宠

路灯单灯控制器是现代城市管理中非常重要的设备之一。它们不仅可以提供照明功能&#xff0c;还可以通过智能控制系统实现远程监控和调节。   路灯单灯控制器通过感知环境亮度和运行状态&#xff0c;实现对路灯的智能控制。它使用先进的传感器技术&#xff0c;能够实时感知路灯…

von Mises-Fisher Distribution

1. 概率密度函数 关于 Bessel Function 请参阅《贝塞尔函数》《Modified Bessel Function of the First Kind》。 2. Relation to Normal Distribution 进一步的推导&#xff1a; G p ( x ; μ , κ ) ( κ 2 π ) p e x p ( − κ ( x − μ ) ⊺ ( x − μ ) 2 ) ( κ 2 π…

109 项目整合 spring-quartz 启动自动执行定时任务

前言 项目中使用了 quartz 来支持定时任务的相关基础支撑, 但是 最近添加了一个 资源消耗比较高的定时任务, 发布到测试环境之后, 发现服务突然 起不起来了[资源比较有限] 然后 查看了一下日志, 这个定时任务怎么在执行?, 不是 配置的是 凌晨两点么, 然后 仔细一看 几乎配置…

跳槽多次未成功,问题源自何处?

众所周知&#xff0c;2023年市场很难&#xff01;看着企业们纷纷裁员&#xff0c;甚至连内推这个后门都走不通&#xff01;哪怕有面试&#xff0c;都是屡屡碰壁&#xff0c;你想清楚问题出在哪了吗&#xff1f;&#x1f62d;“求职不得&#xff0c;夜不能寐&#xff1b;三更半夜…

免费升级https的方式(含教学)

背景&#xff1a;随着现在全民网络安全意识的日益提升&#xff0c;各个网站实现的https数量也随之提升&#xff0c;那么如何将原本网站的http访问方式升级为https呢&#xff1f;下面均为干货内容。 目录 http访问和https访问的区别&#xff1a; 实现https后有哪些好处&#x…

两个现货白银理财产品投资技术分析方法

现货白银是投资市场中比较受欢迎的理财产品。要投资现货白银&#xff0c;我们需要具备一定的金融投资经验。下面我们就来讨论一下&#xff0c;在现货白银这个理财产品的投资过程中&#xff0c;常常用到的一些技术分析方法。 宏观的趋势分析法。在现货白银理财产品投资中&#x…

助农抢农时,千耘导航保春耕

助农抢农时&#xff0c;千耘导航保春耕 在农业生产中&#xff0c;农机的作用不可忽视。随着人们生活水平的提高和科技的进步&#xff0c;对于农机的需求也越来越大。而千耘农机导航作为农机自动驾驶领域独具优势的一款设备&#xff0c;正以火爆的势头成为众多农户的首选。 在春…

C 结构体链表的一点想法

去年写的 白天和同事在聊一个东西&#xff0c;关于 c 里面链表的使用&#xff0c;通常是用一个 list 作为结构体的成员&#xff0c;然后通过 list 把结构体串起来&#xff0c;就像串糖葫芦一样。 而我发现项目中有一个结构体有三个类似 list 这样的成员&#xff0c;一个成员是…

20240318uniapp怎么引用组件

在script中增加 import index from "/pages/index/index.vue" 把index直接整个作为一个组件引入 然后注册组件 在export default中增加 components: {index:index }, 注册了index组件&#xff0c;内容为import的index 然后就可以在template里使用 <index&…