InfoQ 推荐 ( ) • 2024-03-27 00:11

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/"

https://news.ycombinator.com/item?id=39798029"