Redis 已经决定放弃开源 BSD 许可证,转而采用 MongoDB 建立的限制性更强的 SSPL 许可证。此举无疑将对下游开发人员产生重大影响。
一天之内,多名核心贡献者宣布退出该项目,同时 Redis 项目也迎来了多个新分叉。
很多争议也许在于 Redis 违背了其始终保持 BSD 的承诺。
曾做出承诺的 Redis 作者 Antirez(Salvatore Sanfilippo)对此表示他并不知情,但也能理解许可证的更改。
“由于我已经离开四年了,对于当初的承诺没有兑现这一点我就不予置评了。但我认为,在商界,有时随着形势的变化,或者由于政府不太可能在短期内采取纠正垄断地位的措施,一些改变就或多或少地变得不可避免。这只是我的一点猜测,因为在我还在公司的时候,我就很少参与业务方面的工作,现在更是完全没有参与。但事实是,许多开源项目都需要一个接一个地走上这条道路。因此,我认为更重要的是理解他们为什么要承担更改许可的风险,是什么样的条件导致了这样一个奇怪的事实,即开发中的主要参与者只拿很少的一部分收益。”
对于目前出现的分叉项目,Antirez 也在 Reddit 上进行了评论:
“当我退出 Redis 项目后,我正式将其交给了由 Redis Inc. 组成的核心团队(其中包括 3 名来自 Redis Labs 的程序员、1 名来自 AWS 的程序员和 1 名来自阿里巴巴的程序员)。在我看来:根据 BSD 许可证,任何第三方都可以对 Redis 进行分叉、更改名称,并以不同的发展方向和目标继续该项目。”
“使用 BSD 许可证的代码是公共资源,任何人都可以在此基础上进行创新和开拓新的方向。”
“一个 BSD 项目可能会出现许多衍生版本(甚至使用不同的许可证),并在用户群的‘市场’中同时竞争。谁能做出更好的开发,谁就将引领这场竞赛。”
“品牌很重要,但这并不是可口可乐,我们也不是单纯的消费者。我认为最终的赢家是能够提供卓越技术和适合的许可证的项目。”
早在 2018 年,开源 Redis 在 Docker Hub 上的下载量就超过了 10 亿次,并被深深嵌入到全球项目和基础设施当中,是一款被数百万开发者用于缓存和文档数据库的内存内数据存储方案。无论用户对此有何看法,这次许可证变更都将给 Redis 的前途命运带来深远影响。
Redis 新许可:在社区中掀起巨大波澜
根据 3 月 20 号的最新公告,Redis 未来的所有版本(「从即日起」)将“采取 Redis 源代码可用许可证与 MongoDB 的服务器端公共许可证的双重约束”。业界普遍认为 SSPL 不属于开源许可证,其中的条款限制更为严格,可能对相关软件产生“病毒式”影响。
“Redis 不再开源了吗?他们放弃了自己的核心价值观。”“也很不幸;Redis 没有续集了。”
此次调整,宣告着 2022 年 11 月 15 日起付费 Redis Stack 的默认二进制发行版以及此前免费开源提供的 BSD 版 Redis 核心将正式迎来一波许可结构变更。(Redis 公司 CEO 很快在问题解答与博文当中澄清了此次变更,强调「对于 Redis 商业客户来说,许可证变更不会造成任何影响。这部分客户将根据单独的协商许可条款继续使用我们的技术。」)
亚马逊云科技工程师 Madelyn Olson 迅速反应,表示自己将不再参与社区贡献:“这是一段有趣的旅程,但我很遗憾自己将告别这一切。”她在 X 上发帖表示,“亚马逊云科技在过去六年间一直为我的开源 Redis 的贡献提供一定支持,我们还得到了其他云服务商的实质赞助……”
已经将 OSS Redis 内置在产品中的开发人员,现在需要:1)维持当前 Redis 版本不变,停止更新即将发布的后续版本;2)让自己的产品采用 SSPL 许可证;或者 3)将 Redis 替换为 Dragonfly 或微软最近发布的 Garnet。
这次变动也必然会对更多其他项目造成影响。Linux 发行版 Fedora 的贡献者 Neil Gompa 写道,这一变化意味着“如果没有其他 Redis 分叉出现,我们恐怕只能从 Fedora 中移除 Redis。”
红帽公司法律顾问 Richard Fontana 则回应称,“很遗憾听到这样的消息。据我所知,我们之前在 Fedora 中没有接触过 RSAL(v2),但我们刚刚进行了审查并很快得出结论,它应该属于「不适用」的许可证。”(开源倡议协会认为 SSPL 和 RSAL v2 均不属于开源许可证。)
以 MongoDB 为例,该项目并不是从大规模开源开发者社区当中发展而成(正如该公司 CEO Dev Ittycheria 在 2019 年在采访中所说,「MongoDB 完全由我公司构建,未使用任何现成技术……我们是出于自由政策的考量才将其开源的。」);相比之下,Redis 则在公司之外拥有庞大的贡献者群体。
而面对许可证变更,以亚马逊云科技为代表的不少贡献方都决定退出。
Redis 则表示此举主要针对各云服务商。
Redis 公司 CEO Rowan Trollope 写道,“……Redis 的大部分商业销售都是通过各大云服务商实现的,这些服务商负责对 Redis 的投资及其开源社区进行商品化。”
“尽管我们努力支持社区主导的治理模式,并且希望能够继续沿用 BSD 许可证,但同时提供多个软件发行版(跨开源项目、可用源代码以及针对不同本地/云平台优化的商业软件)仍是个不小的挑战,这显然与我们推动 Redis 保持长久成功的目标相违背。根据新的许可证,托管 Redis 产品的云服务商将不再被允许免费使用 Redis 源代码,例如他们只能在接受 Redis 和代码维护者提出的许可条款之后,才有权交付 Redis 7.4。”
“这些协议将巩固对现有集成解决方案的支持,并开放对即将推出的 Redis 创新功能的全面访问。”
Redis 公司在 3 月 20 日发布的一份问题解答列表中,将“竞争性产品”定义为“通过付费支持等方式出售给第三方的产品,这些产品以 Redis 代码库为基础并且与 Redis 商业产品存在显著的功能重合。”
微软很快表示欢迎这一转变,并将继续“为我们的客户提供 Azure Cache for Redis 等集成解决方案,确保使用者能够享受到最新的特性与功能。”
微软开发部门总裁 Julia Luison 写道,“我们双方的持续合作将确保 Azure 客户无缝运用 Azure Cache for Redis 上的各层次功能……我们微软与 Azure 服务客户无需就此次许可证变更做出任何调整……”
“Azure Cache for Redis、Azure Cache for Redis Enterprise 和 Enterprise Flash 服务均不受影响,客户将继续收到及时更新与 bug 修复以保持最佳性能。”
但值得注意的是,微软刚刚在更宽松的 MIT 许可证之下开源了其 Redis 竞争方案 Garnet,这个新项目能够在 StackExchange.Redis 等 Redis 客户端、以及微软自己的 C# GarnetClient 上实现即插即用。
对于社区的反馈,Redis 之父 Antirez 表现得有点愤愤不平,“如果一家小公司采用类似 GPL 的许可证,会被指责违背开源原则,而像亚马逊这样的大公司对开源软件的未来构成重大威胁,却没有任何问题。”
“SSPL 可以保护项目免受亚马逊等大型公司的侵害,也可以保护其他公司和开发者,防止他们的工作被利用而无法获得收益。这是一种工具,我个人认为它是合理的,但具体是否使用还需要根据具体情况来决定。”
“只从其他较小但获得风投支持的公司角度来看亚马逊的危害,其实过于简单化了。现实情况要复杂得多。例如,OpenRedis 是最早提供 Redis SaaS 服务的公司之一,他们也是最初为 Redis 项目做出贡献的人。而现在,OpenRedis 也受到了亚马逊垄断的影响。”
Redis 迎来多个新分叉
大家可能还记得 2023 年 8 月 10 号 Hashicorp 也曾决定采用更为严格的许可证,当时 Terraform 社区就紧密团结在 OpenTofu 周围以示抗争。只是不清楚这次 Redis 能不能找到属于自己的开源坚守之路。
但发令枪已然打响,Madelyn Olson 是反应最快的人之一,上周五,她与阿里云的 Zhou Zhou 以及其他几位原 Redis 核心维护者共同发起了新分叉,并表示“我们都对许可证变更感到不满,并希望建立一个真正开放的新社区来填补 Redis 留下的空白……”
Olson 还在 X 上发帖指出,“在 Redis 变更许可证之前,我们设计并遵循着一套振奋人心的社区发展路线图,包括集群改进、性能提升、触发器等等。现在我们将继续推动这些议程。”
那么,Redis 的这个新分叉是否得到了亚马逊云科技的“官方”支持?(Olson 已经在 Redis 项目上工作了六年,期间一直由亚马逊云科技承担开支。)Olson 的回应是,“我是亚马逊云科技的员工,但新分叉是我个人为了保持社区连续性所做出的努力。公司知道我在做什么,而且正在准备官方回应。”
亚马逊首席技术官兼副总裁 Werner Vogels:“一些 Redis 核心维护者正在采取行动,我为他们感到高兴。但这不是 AWS 的官方声明。”
随着 Elasticsearch 于 2021 年更改其开源许可证,亚马逊云科技也为 Apache 2.0 许可证发布了新的分支,即 Opensearch。一部分评论者认为,此举帮助这项 OSS 对象存储服务从「用爱发电」转向了健康的社区发展之路。
软件开发者 Drew DeVault(曾开发 SourceHut、wlroots 等多个项目,也是一位高产的 FOSS 博主)也迅速参与了 Redis 分叉,相关成果名为“Redict”。他将其描述为“Redis OSS 7.2.4 的一个独立非商业分叉……基于 Redis OSS 的 BSD 3-Clause 源代码……从现在起的所有后续变更均将采用 Lesser GNU 通用公共许可证,即纯 LGPL-3.0 许可。”他还补充称,“以下讨论仍在进行当中……”
“借此机会删除部分长期弃用的功能,例如 redis-trib。” 消除供应商依赖并转向上游 Lua 和 jemalloc。 进一步强化下游中立性,移除 systemd 和 upstart 服务等。 我们还将对 Hiredis 进行分叉,即 Redict 的内部依赖项。DeVault 表示,该项目将“用于建立一个独立于 GitHub 和 Slack 等专有基础设施之外的社区。”
“源代码将托管在 Codeberg 上,这是一个由德国非营利组织负责运营的 Forgejo 实例,相信任何熟悉 GitHub 社区的开发者都能在这里找到舒适且熟悉的使用体验……”
社区对 Drew DeVault 主导的项目表示看好:“作为一个软件项目,Redis 唯一的优点就是品牌名称。Antirez 早已不在了。Redis 也正在转向人工智能,引用《Redis 的未来》中的话来说就是:‘让 Redis 成为生成人工智能的首选’、‘我们处于 GenAI 浪潮的最前沿’。而 Redict 背后是一场真正的自由开源软件运动,由 Drew DeVault 领导,他在开源项目管理方面拥有良好的记录。”
DeVault 预测在接下来的几周里,我们可能会看到更多其他使用 Redis 开源代码创建的分支版本 (fork) ,“对于那些采用许可宽松的许可证或使用与 LGPL 兼容的 copyleft 许可证的分支版本,我们可能会从中提取代码更改 (pull changes)”。
亚马逊云科技的 Olson 在 X 上发帖指出,Redict 的愿景“与我的最终目标并不完全一致。我希望继续大力投资开发新功能,保持此次许可证变更之前的发展思路。Drew DeVault 似乎更倾向于建立一个能够快速发布的基础自由开源项目”。但她随后又在 X 上发帖解释,称“我完全认可 Redict 的观点,也将致力于帮助他们解决问题。我正在与项目创作者联系,希望大家能够继续合作……”
目前社区的相应变化显然还处于早期阶段,但接下来这波 Redis 分叉浪潮应该是已成定局。如果亚马逊云科技和阿里云愿意大力支持那些为这个高人气项目做出重要贡献的员工(也包括其他更多潜在赞助方),那么新的生态将有望顺利形成规模。前景如何,我们将拭目以待。
参考链接:
https://twitter.com/Werner/status/1771324218506108995
https://redict.io/posts/2024-03-22-redict-is-an-independent-fork/
https://www.thestack.technology/battle-of-the-redis-forks-begins/