编译 | 屠敏
出品 | CSDN(ID:CSDNnews)
一门技术的发展,由它的创造者来负责领导究竟有多重要?许多人难以想象,若有一天 Linus Torvalds 退休,Linux 项目将面临怎样的变局?过去以及当下一些现实告诉我们,有时没有了创始人作为核心人物来管理、决策,项目的发展并非一帆风顺。
正如编程语言 Rust 创始人 Graydon Hoare 曾亲眼目睹社区内部冲突时所言:“如果是由我来治理的话,事情肯定会很不一样,但是 Rust 就不太可能像现在这样‘出圈’。”
又如开源内存数据库 Redis 之父 Salvatore Sanfilippo(网名 antirez)于四年前功成身退,宣布不再维护 Redis 项目。然而在他离开的这些年里,Redis 社区风波不断:开源协议被更改,试图控制 Rust 客户端的举措引发争议,更有开源开发者认为受到了打压,甚至引发分叉 Redis 热潮以及一些人选择转向其他替代方案。
面对逐渐分裂的社区氛围,antirez 坦言,「这对我来说,即使作为一个旁观者,这样的状况也让我忧心」。几经斟酌且在主动联系 Redis 公司 CEO Rowan Trollope 之后,他最新发表了一篇长文,以一句「So, I’m back 🙂」选择重返 Redis 项目。同时,antirez 也于博文中回应了外部对 Redis 的诸多争议,带来他的观点与看法。
Redis 之父:四年前的离开不是因为讨厌 Redis,而是不想做管理
在最新发布的文章中,antirez 再次分享了他当初离开 Redis 时的原因,并不是因为讨厌过去的工作,而是他感觉自己能在 Redis 中实现的创造性工作越来越少,相反“管理项目”的部分变得越来越多,包括需要花大量的时间与精力检查其他开发者提交的 Redis 代码、改进代码质量以及提升软件正确性、速度与安全性方面,“这是很多程序员能适应的转变,但对我来说却不是我的擅长。”
同时,antirez 坦言,自己也不认同很多同龄人(现在 47 岁)的观念:觉得自己还很年轻。自己更渴望尝试新的事情,尤其是写作。此外,再花更多时间陪伴家人,帮助亲人。
“我绝对需要休息一下”,正因此,antirez 于 2020 年在自己博客上发布一篇《The end of the Redis adventure》公告,宣布将不再担当 Redis 开源项目的软件维护者,并“将 Redis 交给 Redis 社区”。
Redis 开源协议变更、欲夺维护者开发的库...
殊不知,这边在 antirez 真正从 Redis 项目中抽身离去,过上了自己向往的生活。antirez 表示,「我不是那种会对自己作品产生强烈情感依赖的人。大约 1620 天前(差不多 4.4 年),我决定离开 Redis 后,就再也没看过它的源码、提交记录,或者任何相关的东西了。偶尔我需要用到 Redis,就直接下载并编译。输入“make”后,它依然可以轻松构建,这让我感到很开心——这么多年了,Redis 的构建依然简单明了。」
过去这几年里,他投身写作,在高强度创作间隙用写代码放松自己,尝试各种嵌入式项目,探索神经网络,偶尔开发 Telegram 机器人万万。这段时间里,antirez 称,这种随意“瞎搞”很有趣。
然而,另一边 Redis 项目却陷入了争议与困境。
就在今年 3 月, Redis 公司的 CEO Rowan Trollope 在官网发布了一则《Redis 采用双源许可证》的公告,宣布 Redis 将放弃遵循原有的开源 BSD 三条款许可证,从 Redis 7.4 开始将采用 Redis 源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)的双重许可证。
简单来看,RSALv2 对软件的商业化设置了一些限制;SSPLv1 要求,如果你将产品作为服务提供,则必须在 SSPL 下公开发布任何修改以及管理层的源代码,不过,RSALv2 和 SSPL 都不是 OSI(开放源代码促进会)批准的许可证。换而言之,Redis 的最新变化导致“Redis 在 OSI(开放源代码促进会)定义下不再开源。”
而做出这样变更的原因是 Redis 公司不想被云供应商“白嫖”——“根据新许可证,托管 Redis 产品的云服务提供商将不再被允许免费使用 Redis 源代码”。
这种做法对于普通工程师而言影响甚微,但是对不少云服务厂商而言无疑有巨大的影响,彼时就有不少企业工程师出面指责 Redis 公司,甚至直言「现在的 Redis 公司并没有直接创建 Redis,它是由 antirez 开发的 」。
在这波混乱下,Linux 基金会随后就宣布了支持 Valkey,该分支与 Redis 7.2.4并无两样,Google、AWS、甲骨文和爱立信等公司也声称帮助组建这个新项目,更有不少人发文——是时候从 Redis 迁移到 Valkey 了。此外,KeyDB、Garnet 等替代方案纷纷成为很多人、公司的备选。
除了这一争议之外,就在两周前,Redis 客户端库 redis-rs 的维护者 Armin Ronacher 发起的一则 Issue 再次将 Redis 公司推上舆论的风口浪尖。Armin Ronacher 透露,Redis 公司曾主动联系他,表达了希望接管 redis-rs 的意愿,目标是打造一个官方支持的 Rust 客户端,未来计划加入企业级功能,同时保持对社区贡献的开放,并确保与 Redis 社区版的兼容性。
然而,Ronacher 提到,Redis 公司在沟通中表示,他们认为 redis-rs 的名称涉嫌侵犯其商标权。为此,Redis 公司提出了两个选项:要么将项目所有权转让给他们,要么必须改名。
对此,Ronacher 表示他并不想卷入任何商标纠纷,但同时担心这一举措可能会影响到那些将 redis-rs 与 Redis 开源替代品 Valkey 一起使用的用户。
无独有偶,另外一个用纯 PHP 实现 Redis 客户端 Predis 的维护者 Till Krüss 表示,Redis 公司也向他提出了同样的要求。随后,还有网友直接在社交媒体平台 X 上猜测,“看起来 Redis 正试图接管所有开源 Redis 库...”
Redis 公司这一行为直接让众多开发者暴怒,认为他们这是在滥用商标权利,对开源生态造成伤害。
虽然经过一番争论后,Redis 公司宣称,“我们希望找到一种合作方式,以最佳方式支持社区和客户。我们的目标是确保 Rust 客户端库能够实现可预测的版本发布,及时管理问题和紧急情况,同时在不分叉代码库与项目竞争的情况下,提供我们所能提供的最佳支持......我们对保持项目名称不变没有异议,无需过渡为 Redis 的官方命名。同样,我们也完全支持继续将该库称为 ‘redis-rs’。我们无意声称对该客户端库名称、源代码或包注册的所有权”,但此举仍然引发了不少开发者的不安,对 Redis 的信任也因此受到了影响,危机隐现。
回归
作为曾经一手研发 Redis 且与之共同成长的人,antirez 注意到 Redis 社区逐渐分裂,也为此感到担忧。
于是,他开始思考,自己是否还能在 Redis 生态中发挥某种作用?是否能帮助公司重新调整对社区的态度,甚至让 Redis 核心功能重新成为开发的重点。
为此,他觉得自己或许可以担任某种“布道者”的角色,既是公司和社区之间的桥梁,又能制作编程演示、设计并讲解新模式、写文档、录视频以及带来关于 Redis 的博客内容。至于新功能的设计,antirez 觉得他也可以从开发者的实际使用中汲取经验和痛点,再将这些提炼成设计思路,为 Redis 的进化提供参考。
近期,antirez 和 Redis 的新 CEO Rowan Trollope 进行了视频会议以及邮件沟通,讨论一起调整公司与社区的关系以及代码未来方向合作的可能性。
“Rowan 对我的提议很感兴趣,我们很快达成了一致。”
对此,antirez 在博文中解释道:
肯定会有人问我回来真正的动机:是不是除了我上面提到的,还有什么隐藏的故事?是不是有一些交易,或者大笔钱?是否有其他不清楚的原因?其实,有时候事情就是这么简单无聊:
1. 是我主动联系了公司,不是公司联系我。
2. 我并没有因为重新加入拿到巨额薪资,也不是为了利用什么局势——只是正常的工资(不过需要声明:是的,我和以前一样有 Redis 的股票期权,不多不少)。
3. 我对 Redis 更换许可证并没有特别大的意见。尤其是,我不认为社区的分裂真正是由这个原因引起的。
关于许可证更改
对于很多人不解的 Redis 公司为什么要变更许可证问题,antirez 进一步详细地剖析了旧许可证的困境。
antirez 表示,「我几乎一辈子都在写开源软件。但就像我是个无神论者,却依然乐见他人信仰上帝——如果这能帮助他们应对生活的艰难——我同样不认为开源是唯一的软件开发方式。最初开发 Redis 时,我所在的公司是我和另一位合伙人共同创办的,当时我们选择将代码闭源(Redis 最初开源是因为它被认为并非核心产品的一部分)。原因很简单,我们不希望自己的服务被别人抄袭。所以,在许可证问题上,我并不是一个极端主义者——唯一让我极端的,可能只是软件设计。
此外,我也不认为开放和许可证的定义仅限于 OSI(开放源码促进会)的标准。在我看来,许可证是一种权限的“约束”,它规定了你可以或不可以做的事情。同时,我对大型云服务商已经改变了系统软件领域的激励机制深感担忧。Redis 并不是第一个改变许可证的项目,实际上它可能是大项目中的“最后一个”。我甚至感觉,近年来很多项目都因为缺乏明确的商业模式而从未启动。所以,Redis 更换许可证这件事不是我做的决定,如果是我,也许会选择不同的许可证?但我不确定。毕竟我已经离开这个项目多年了,没有面对商业压力了,现在回头看总是显得轻而易举。不过,总的来说,我能理解这个选择。」
对于 Redis 的新许可证,antirez 称,虽然它不再遵循 BSD,但只要用户不将 Redis 作为服务出售,其实使用方式和以前差别不大(比如你仍然可以修改Redis,重新发布,免费将它用于盈利性公司等)。甚至如果用户想卖 Redis 服务也可以,只要用户将所有的编排系统代码用同样的许可证发布(尽管很少有人会这么做,但这也体现了许可证的 Copyleft 理念)。
“这个许可证的语言与 AGPL 几乎相同,只是对 SaaS 的部分做了调整。所以,这不被 OSI 认可?是的。但我觉得把 SSPL 称为闭源许可证也不太合适”,antirez 说道,“可能你会说:真正的问题是有公司在控制开源项目的方向!所以公司的利益最终会偏离用户的需求。对此我表示感激,毕竟还有许多完全没有公司直接参与(除了外部资助)的开源项目。但你知道吗?对于许多大项目而言,公司的介入实际上延缓了这种偏离的过程。Redis 就是一个典型的例子。”
之所以这么说,antirez 回顾了自己当初开发 Redis 时的想法:
当 Redis 刚开始流行时,我想找到一种方法继续专注于它的开发。当时 VMware 还没提出资助我的工作,所以我开始琢磨一种商业模式。结果呢?这个模式是以闭源产品的形式出现的,目的是以某种方式帮助用户更好地运行Redis(有趣的是,与这个想法相关的一个库现在还能在网上找到,上面的提交记录可以追溯到 15 年前:https://github.com/antirez/redis-tools)。
当时我甚至考虑过采用“开源核心”模式,或者将新代码的 BSD 许可证应用推迟六个月,以此给付费用户创造某种优势。如今回头看,我不认为自己会变成一个对用户耍花招的坏人,但如果没有 VMware 以及后来 Redis Labs 的资助,我也无法成为一个开源软件的“罗宾汉”——我得到了公司优厚的薪酬,但并不是为了公司的利益,而是单纯为了 Redis 社区的最佳利益。我现在很确信,这种方式比自己创业要好得多。
VMware 和 Redis Labs 资助的,不只是我一个人。如果你翻看 Redis 仓库的贡献历史,会发现排名第二的是 Oran Agra(Redis),然后是 Pieter Noordhuis(VMware)等等。
总的来说,我认为 12 年专注用户需求的 BSD 代码是一个很棒的成果,这值得高兴。对我来说,目前最重要的是:社区的分裂并不是关于许可证的问题,至少主要问题不在这里。实际上,新许可证可能还会解决一部分问题。现在,云服务商无法再直接拿 Redis 代码变现而不分享任何收益了(我们提出收益分成真的是过分要求吗?这本可以避免最近一系列许可证更换事件,不只是 Redis)。
有了新许可证,Redis 核心的开发又可以重新成为焦点,开发者可以接触到新的、令人兴奋的功能。同时,也有更多人能因推动 Redis 改进而获得合理报酬,比如在 GitHub 上提交有用的、文档完善的变更。这也是我希望帮助公司完成的目标之一,我会尽力推动新许可证为用户和功能带来积极影响。这就是我的想法。
关于未来的几点思考
在 antirez 看来,与其一直纠结许可变更,还不如更关注于有用的技术研究与开发。基于此,他分享了 Redis 在 AI、大语言模型以及向量索引领域的探索动态。
Redis 目前开始关注向量功能的开发,尤其是支持 AI 编程的功能。针对这一趋势,antirez 表示,尽管技术社区对 AI 的态度褒贬不一,很多人甚至未曾深入体验诸如 Claude AI 等最新模型,就匆忙下结论认为其毫无用处。但他对 AI 的态度截然不同。他早在 2003 年就写过第一个神经网络库,当时就被这种概念的强大和酷炫震撼到了。如今,他亲眼目睹了多年前看似科幻的技术正逐渐成为现实。以 Claude AI 为例,这款工具已经成了他的“思维伙伴”、“编辑助手”和“代码搭档”,让他能比以前完成更多、更高质量的工作。
此外,在最近一次实验中,antirez 使用 Claude AI 协助设计了一份基准测试,用于评估 8 位量化加速向量点积的可行性。短短两分钟内,他便完成了验证流程。antirez 表示,“AI 没有取代我的角色,而是像加速器或助手一样帮助我提升工作效率和质量。我相信,尽管如今 RAG 很流行,但未来模型上下文会越来越大,RAG 也不一定是主流。”
此外,antirez 认为,向量搜索是 Redis 大展身手的领域。因为向量搜索是一种数据结构,且是种非常慢的数据结构,而这种结构在内存中运行时效果更好。
在 Redis 创新方面,antirez 表示,“我最近在思考,能否以排序集(Sorted Sets)为灵感,设计一种新数据类型,其 score 实际上是一个向量。与同事 Rowan 讨论后,我开始写设计文档,并着手实现一个新数据结构的原型,完全重新实现 HNSW 算法,而不是直接用现成库,因为我想微调每个细节,按照 Redis 的风格来做。目前,这个模块只作为简化工作的实验性模块,但最终会并入 Redis 核心代码。”
该模块实现了新命令,可以直接操控嵌入向量。以下是一个示例:
VSIM top_1000_movies_imdb ELE "The Matrix" WITHSCORES
1) "The Matrix"
2) "0.9999999403953552"
3) "Ex Machina"
4) "0.8680362105369568"
5) "Akira"
6) "0.8635441958904266"
7) "District 9"
8) "0.8631418347358704"
...
这些新命令(如 VSIM、VADD、VCARD 等)就像是带有多维分数(嵌入向量)和最近邻匹配功能的排序集。Redis 的“开发者乐高”理念再次体现了出来。
目前,antirez 称还在优化实现,例如添加线程支持、降维、量化等。有趣的是,他不打算让 Redis 去追逐像“混合搜索”这样流行的概念,而是希望开发者自己决定如何权衡利弊。“他们比谁都清楚自己在建模什么,Redis 提供灵活的工具,他们可以用它来创造新的分区策略、架构设计和 Lua 脚本模式。”
业界对 antirez 回归的态度
对于 antirez 的回归,让 Redis 社区不少人倍感欣喜。社区成员分享道:
“12 多年前,我创立了一家年收入达 9 位数的非技术类企业,其核心依赖于一个高可用 Redis 集群。当初选择 Redis,是因为你的设计哲学和软件架构理念深深打动了我,同时它完美地解决了我当时的诸多难题。这些年来,我几乎没有再特别关注 Redis,因为它一直稳定运行,从未让我操心。如今得知你回归,我非常高兴,尤其看到你正在研究向量集这样的新功能时,更是振奋不已。这类问题过去我们只能通过应用逻辑解决,因为我拒绝使用 Lua 脚本,担心它会引发潜在的风险。”
“欢迎回到项目!我喜欢看到原始创作者继续为他们的项目工作到最后,例如 sqlite 的 Linus 和 D. Richard Hipp。我认为从长远来看,这会产生最高质量的软件。”
不过,也有人并不认可 antirez 对 Redis 新许可的态度,HN 的用户 simonw 评价道:
对我而言,许可证变更主要基于两个原因让我感到不安:
许多人无偿地为 Redis 项目贡献了他们的力量——无论是代码方面还是通过宣传、撰写教程、发布示例代码等——当他们这样做时,是基于项目将保持在同一开源许可证下的理解。这确实让人感觉像是信任的背叛。
从纯粹自私的角度来看,我最喜欢开源许可证的一点是它们让我确切知道我可以对软件做些什么,可以在其基础上构建什么,而无需咨询许可证。像新的 Redis 许可证这样的许可可能需要我根据所构建的内容寻求自己的法律建议。我不想在这方面花费我的时间、精力或金钱!
我也认为这类许可证的趋势对开源整体是有害的。过去,你可以选择一个开源项目,并在此基础上建立业务,期望该项目会继续按照那些被广泛理解的条款提供给你使用。现在已经不是这样了——不仅仅是因为 Redis,还有其他几个主流的开源项目也发生了类似的许可证变更。对此我感到很遗憾。
(我明白并且不喜欢企业建立在开源之上而不回馈社区这一趋势。这里没有明显正确的答案。)
对此,你怎么看待 antirez 的回归?
参考:
https://antirez.com/news/144
https://news.ycombinator.com/item?id=42378488
https://devclass.com/2024/11/27/redis-inc-seeks-control-over-future-of-rust-redis-rs-client-library-amid-talk-of-trademark-threat/
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有