推荐关注↓
转自:CSDN(ID:CSDNnews)
3 月 20 日,领先的实时数据平台 Redis 的CEO Rowan Trollope 在官网发布了一则《Redis 采用双源许可证》的公告,宣布从即日起,Redis 的所有未来版本都将以开源代码可用的许可证发布——弃用 BSD 协议,而使用不被 OSI 认可的双重许可 RSALv2 和 SSPLv1。
令人没想到的是,此公告一发,Redis 在想要避免云厂商“白嫖”情况下的紧急求变,却让开发者觉得委屈,从而引发了巨大的争议。
OSI 定义下不再开源,改为双重许可证
简单来看,Redis 正在放弃遵循原有的开源 BSD 三条款许可证,转而从 Redis 7.4 开始,将采用 Redis 源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)的双重许可证
原有的 BSD 三条款许可证是自由软件中使用最广泛且相对比较宽松的许可证之一,主要包括以下三个条款:
  • 允许在任何目的下再分发软件的副本,包括商业目的,只要保留原始的版权声明和许可声明,以及在广告和其他宣传材料中,需要包含对原始软件的引用。
  • 声明原作者和贡献者不对软件的使用负责,使用软件的风险由用户自行承担。
  • 允许用户修改软件的源代码,但修改后的软件必须以原始软件的许可条件进行再分发。
现在更新之后 Redis 所使用的条款,用其官方的话来说——“我们公开承认这一变化意味着 Redis 在 OSI(开放源代码促进会)定义下不再开源。
其最新使用的两种许可:

  • 其一,Redis 源代码可用许可证(RSALv2)是指 Redis 公司发布的一种开源许可证,是一种宽松的非 Copyleft 许可证,允许用户查看、修改和分发 Redis 的源代码,但是有两个主要限制:不能将软件商业化或作为管理服务提供给他人,以及不能删除或隐藏任何许可、版权或其他声明。
  • 其二,服务器端公共许可证(SSPLv1)是一种由 MongoDB 公司创建的许可证,旨在对在服务端运行的软件进行更严格的监管。SSPLv1 要求任何在服务端运行的衍生作品都必须以相同的许可证开放源代码,并且不得以专有软件形式提供。
值得明确的是,RSALv2 和 SSPL 都不是 OSI 批准的许可证,并且各自都有其限制。简而言之,RSALv2 对软件的商业化设置了一些限制。SSPLv1 要求,如果你将产品作为服务提供,则必须在 SSPL 下公开发布任何修改以及管理层的源代码。
此外,Redis 官方也在公告中写道:

与 Redis 相关的其他许可技术,如各种特定语言的客户端库、Terraform 和 Pulumi 提供商等,不受此变更的影响。
从 Redis 8 开始,我们计划在产品中默认包含新的数据类型和处理引擎,这些数据类型和引擎以前作为 Redis Stack 的一部分是根据 RSALv2 或 SSPLv1 许可的。 
因此,我们也宣布,由于这一变化,Redis 8 推出后,Redis Stack 的生命周期也将结束。从 Redis 8 开始,我们将不再需要为这些功能提供单独的构建,因为它们将成为 Redis 本身的一部分。
同时,为了明确区分  Redis 以前旧的开源版本和现在变更许可之后的版本,Redis 把 v7.2 和之前的版本称之为 Redis OSS,从 Redis v7.4 开始将其称之为 Redis 社区版
Redis:不想被云供应商“白嫖”
从某种程度上来说,Redis 公司的许可变更举措也不是什么新鲜事。之前,MongoDB、Elastic 和 Confluence 等其他开源公司也曾采取过类似的措施,甚至 Redis(当时还是 Redis Labs)在 2018 年和 2019 年也曾改变了其 Redis 模块的许可方式。也就是在那时,Redis 公司推出了其 Redis 源可用许可证的第一个版本。

对于此次做出改变,简单理解,可以视为 Redis 不想被云供应商“白嫖”。
Redis CEO Rowan Trollope 在公告中写道:
Redis 的成功带来了一系列独特的挑战。Redis 一直与渴望做出贡献的充满活力的开发人员社区一起赞助大部分开发工作。然而,Redis 的大部分商业销售都是通过最大的云服务提供商进行的,这些提供商将 Redis 的投资及其开源社区商品化。
尽管我们努力支持社区主导的治理模型,并且我们希望维护 BSD 许可证,但同时交付多个软件发行版(跨开源、源代码可用以及针对不同本地和云平台优化的商业软件)仍是一个巨大挑战。与我们成功推动 Redis 走向未来的能力相悖。
根据新许可证,托管 Redis 产品的云服务提供商将不再被允许免费使用 Redis 源代码。例如,云服务提供商只有在与 Redis(Redis 代码的维护者)同意许可条款后才能提供 Redis 7.4。这些协议将巩固对现有集成解决方案的支持,并提供对即将推出的 Redis 创新的全面访问。
在 Redis 看来,通过转向新的许可证,其可以更好地管理源代码的商业用途。

许可变更之后的 Redis,会对哪些人带来影响?
此更新一出,引起诸多的争论,不少人认为此举将对开发者产生重大的下游影响,并可能极大地影响更广泛的社区参与开源 Redis 项目。
对此,Redis 紧急现身澄清,称这一变化对使用 Redis 开源版本和新版本的最终用户、使用 Redis 构建客户端库、Redis 的商业用户而言,没有任何变化。
至于谁会受到影响,Redis 表示:
向 Redis 提供竞争性产品的组织将不再被允许在双重许可证下免费使用 Redis 源代码的新版本。
商业许可条款可用,可以支持超出 RSALv2 或 SSPLv1 许可证限制的用例。如果你正在构建一个利用 Redis 的解决方案,但不专门与 Redis 本身竞争,则不会产生任何影响。

其中所谓的竞争性产品是指出售给第三方的产品,它源自 Redis 的代码库,并且与 Redis 商业产品的功能严重重叠。
整体而言,Redis 为了自身更好地商业化才做出了这样的改变。
微软又成大赢家?
截至目前,微软似乎已经拿到了 Redis 的授权。
在 Redis 的官方公告中,微软开发者部门总裁 Julia Liuson 表示:“我们期待继续合作,为开发者提供最新的数据存储和管理创新支持。我们的合作将继续支持 Azure Cache for Redis 等集成解决方案,并将为微软客户提供对 Redis 产品中扩展功能的独家访问权限。”
值得一提的是,就在 Redis 官宣许可变更的前一天,其在更宽松的 MIT 许可证下开源了一个用 C# 编写的项目——Garnet(https://github.com/microsoft/garnet),成为 Redis 的竞争对手。
Garnet 使用 Redis 的 RESP 协议作为其主要通信协议,因此可以使用大多数编程语言中现成的 Redis 客户端,例如 C# 中的 StackExchange.Redis。与其他开源缓存存储相比,Garnet 在性能、延迟、可扩展性和持久性方面都有显著提升。
在见证了 Garnet 诞生,不少网友评论道:“微软这是要砸了 Redis 的饭碗”。
感觉遭到了“背刺”的开发者们
另一边,对于这样的公告声明,很多人对此并不买账。
因为在不少人看来,Redis 还是与 MongoDB、Cassandra 等产品的成长路线有所不同。这一点,MongoDB CEO Dev Ittycheria 在对 MongoDB 做出许可变更时也曾提到过:“MongoDB 是由 MongoDB 构建的。没有任何现有技术......我们将其作为免费增值策略进行开源”。
然而,Redis 不一样,它不仅仅是 Redis 开发的,还有大量来自公司外部的贡献者参与其中。

曾是亚马逊专有 NoSQL 数据库服务 AWS DynamoDB 背后的工程负责人、现任美国大数据初创公司 Momento CEO 的 Khawaja Shams 直接在自己网站上发了一篇“小作文”,暗指「虽然 Redis 公司可能有能力和合法权利关闭这个社区,但需要注意的是,现在的 Redis 公司并没有直接创建 Redis」。
Khawaja Shams 直言,“现在称之为 Redis 的公司是在 Redis 项目诞生的几年后才参与开源项目中的。”
回看历史,Redis 是系统编程专家 Salvatore(网名 antirez)在 2009 年推出的研发成果。后来在彼时还是初创公司的 GitHub、Instagram、Twitter 等企业应用中,逐渐走进大众视野中。
随着 Redis 获得更多用户,它受到了一家名为 Garantia Data 的小型托管 Redis 提供商的关注。起初 Garantia Data 试图将自己重命名为“RedisDB”时,遭到了 antire 的拒绝。
根据 Khawaja Shams 的介绍,Garantia Data 当时的首席执行官 Ofer Bengal是这样说的:
我们即将将公司名称更改为 RedisDB,甚至为此目的收购了域名 redisdb.com;但是,尊重 Redis 创建者 Salvatore Sanfillipo 的要求,我们决定坚持使用 Garantia Data。
几个月后的 2014 年,Garantia Data 还是改名为 Redis Labs,并将重心转移到 Redis 相关业务:
这是该公司在过去三个月中第二次表示要更名。今年秋天,Garantia 更名为 RedisDB,但在开源 Redis 社区的一些反驳之后,该公司撤回并保留了 Garantia 的名称。这一次,该公司表示没有回头路了——现在是 Redis Labs。
2015 年,Redis Labs 聘请了 Antirez,并成为 Redis 开源项目的官方赞助商。在 2020 年退出该项目之前,Antirez 将 Redis 的知识产权和商标权转让给了 Garantia,这就是为什么 Garantia 现在拥有更改该项目许可的合法权利。
Khawaja Shams 称,很多企业、开发者也为 Redis 做出了巨大的贡献,譬如 Amazon ElastiCache 团队已经投入了 数年来扩展 Redis,他们为 Redis Core 贡献了一些最复杂和最有价值的改进。
面对这种变化,AWS 工程师 Madelyn Olson 也在 X 发帖说:“这是一段有趣的旅程,我很遗憾看到我的参与结束了。在过去的六年中,AWS 为我提供了部分报酬,让我为开源 Redis 做出了贡献。其他云提供商也为我们做出了重要贡献......
Linux 发行版 Fedora 的撰稿人 Neil Gompa 写道,这一变化意味着 "如果没有 Redis 的分叉,我们很可能需要从 Fedora 中删除 Redis"。
红帽的法律顾问 Richard Fontana 对此也回应道:“这是非常不幸的。据我所知,我们以前在 Fedora 中没有遇到过 RSAL(v2),但我刚刚对它进行了审查,得出的结论是(很容易)它应该被归类为*不允许*。(SSPL 不被 OSI 承认为开源许可证,RSALv2 也不被承认为开源许可证)”
Google Cloud 架构师@brianbeale 表示,「“实际上,Redis 开发者社区没有任何改变……”这是一个谎言。放弃保持开源承诺的唯一原因是改变社区使用 Redis 的方式。这是吃你的蛋糕并拥有它的许可。」
还有网友评论称,“这可真是一个迅速毁掉 Redis 公司的方式!”
“不足为奇。开源软件创建者收益微薄,而超大规模的云服务提供商则大量从他们的工作中获利的趋势将持续存在。由企业支持的开源软件必须调整其开放竞争的理念,或向源代码可用模式转变,作为新的标准”,
也有用户表示理解。
最后,外媒 The Stack 还为目前已在其产品中内置 Redis OSS 的开发者提供了三条选择项的建议:
  1. 将旧版本的 Redis 固定下来,即不更新到即将发布的版本;
  2. 使自己的产品获得 SSPL 授权;
  3. 用 Dragonfly 或微软最近发布的 Garnet 等产品取而代之。
那么当前 Redis 许可的变更,对你的项目是否有影响?
参考:

https://redis.com/blog/redis-adopts-dual-source-available-licensing/
https://www.thestack.technology/new-redis-licence-open-source/
https://news.ycombinator.com/item?id=39772562
https://www.gomomento.com/blog/rip-redis-how-garantia-data-pulled-off-the-biggest-heist-in-open-source-history
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️
继续阅读
阅读原文