回来以前,先问一句
0:00二零二四年,Salvatore Sanfilippo 已经四年多没有看过 Redis 的源码。
没有看 commit message,也没有再去判断后来的人把它改成了什么样子。
偶尔需要 Redis,他就像一个普通用户那样下载源码,编译。
他输入的命令只有一个词。
make。
代码仍然很容易构建。Sanfilippo 说,他看到这一点很高兴。
[001]
引用 [001]
本人 2024 文章支撑离开时长、未看源码与 make 动作;旁白不补造电脑、房间或命令输出。
From where I left opening: about 1620 days away, no source code or commit messages, occasional download and compile, typed make
但同一篇文章里,他还写了另一件事。
Redis 社区正在分裂。他想,也许自己可以重新参与,也许可以在公司和社区之间做一座桥。
于是他给 Redis 的 CEO Rowan Trollope 写了一封邮件。
邮件要问的不是 Redis 能不能编译。
而是:自己还能不能以某种身份回来。
一个项目的创建者,为什么要先问一家公司,自己能不能回到这个项目?
他离开的四年里,Redis 究竟变成了谁的东西?
[002]
引用 [002]
文章支撑社区分裂、设想角色和主动联系 CEO;问题句是节目入口,不把邮件写成逐字对话。
From where I left: community fragmenting, bridge/evangelist role, Time in NY, email to Rowan Trollope asking to return in some capacity
先有一个问题
1:22把时间拨回二零零九年。
那时 Redis 还不是一个等待商业化的开源基础设施。甚至还没有几个人知道这个名字。
Sanfilippo 和合伙人 Fabio Pitrola 在意大利做过几项 Web 服务。其中一项叫 LLOOGG。
它把网站正在发生的访问直接展示出来。不是等一天结束,再给站长一张汇总报表;而是有人打开网页、点击链接,这些动作就不断出现在屏幕上。
LLOOGG 最初把数据放进 MySQL。用户增多以后,这种实时写入和读取越来越难处理。
Sanfilippo 后来回忆,他们遇到问题时的习惯不是先寻找一个已经存在的类别,而是自己造一个解法。解决问题当然重要,但更重要的是,这件事要好玩。
[003]
引用 [003]
三份本人材料交叉支撑 LLOOGG、MySQL 与 playful environment;不把后见回忆伪装成某一天的现场思想。
- LLOOGG 仓库 README;固定内容快照
- Sanfilippo,`Redis historical versions from 2009`;后见源码考古
- Sanfilippo,`The end of the Redis adventure`;2020-06-30
LLOOGG README concept and MySQL-to-Redis account; historical Redis README; 2020 exit statement opening on playful problem solving
他需要的也不只是把一个计算结果暂时放进内存。
如果只保存一段不透明的 value,应用每次想增加一个访问、从队列里取出一项、判断一个成员是否存在,都要先把整段数据取回来,自己修改,再写回去。
Sanfilippo 想让服务器直接理解这些动作。
所以早期 Redis 里出现了 string、list、set。键仍然指向值,但值不再只是一个字节盒子。服务器知道它是什么数据结构,也提供对应操作。
过期、复制和不同语言的 client 也很早就进入公开方向。
这里真正留下来的,不只是某一个二进制文件,而是一种让程序员表达问题的方式。
不过在二零零九年,这一切还只是一份正在变化的设计。
[004]
引用 [004]
口播只把早期已公开能力写入 2009;当前文档用于解释模型,不倒推 streams 等后来的类型。
- Salvatore Sanfilippo,`Redis, my new open source project`;2009-03-06
- Redis 仓库首个保留提交 `ed9b544e10b84cd43348ddfab7068b610a5df1f7`;2009-03-22
- Redis 官方 data types 文档;2026-08-06 快照
2009 announcement and preserved source history for early strings/lists/sets, expiration, replication and clients; current docs only for explaining the data-type model
二月二十五日,Redis 出现在 Hacker News。当天的讨论里,已经有人写出了 Ruby client。
三月,Sanfilippo 又写了一篇公开介绍。到了六月十九日,他把 LLOOGG 从 MySQL 切换到 Redis。
八天后,他在邮件列表记录了一次当时的生产快照:Redis 零点九零零,一主一从,累计执行大约五千万条命令。
这是一个开发者对单一工作负载的自报,不是性能基准,更不是市场份额。
但它证明一件更朴素的事:Redis 不是先写完,再寻找一个能说明它有用的案例。LLOOGG 一直是它的试验场。
[005]
引用 [005]
时间与数量按同期材料表述;明确限制为作者自报的 LLOOGG 单一部署。
- Hacker News `Redis`;2009-02-25
- Salvatore Sanfilippo,`Redis, my new open source project`;2009-03-06
- Sanfilippo,`How Redis is behaving in production with lloogg.com`;2009-06-27
HN launch 2009-02-25 and early Ruby client comment; 2009-03-06 announcement; production mail on 2009-06-19 migration and eight-day command count
Redis 最早的公开记录,写的还不是一份公司路线图。二零零九年的介绍把它写成一个仍在快速变化的实验性项目;三个多月后,它已经进入 LLOOGG 的真实流量。
[006]
引用 [006]
本段旁白只使用同期文字事实;Changelog #45 试听候选因原始录音噪声淘汰,ASR 定位稿不进入口播。
- Salvatore Sanfilippo,`Redis, my new open source project`;2009-03-06
- Sanfilippo,`How Redis is behaving in production with lloogg.com`;2009-06-27
2009-03-06 public introduction and 2009-06-19 LLOOGG production migration record
一个实验性的个人项目,可以由兴趣决定明天写什么。
但公开项目会产生另一种力量。
外部程序员写 client,提交 patch,把 Redis 放进 Sanfilippo 没有见过的系统。有人用 list 做队列,有人拿 set 组织关系,也有人只是把它当成很快的 cache。
这些用法让 Redis 变得更有价值,也让每一次改变更昂贵。
一个数据结构一旦成为公共命令,作者就不再只面对自己的代码。他开始面对别人的数据、延迟、故障,以及升级以后仍然能够工作的期待。
[007]
引用 [007]
材料支撑外部参与怎样扩大项目;‘公共命令成为承诺’是节目对兼容责任的归纳,不量化采用规模。
Sanfilippo fifth-birthday account of early users, patches, clients and adoption; launch discussion for immediate external client activity
让别人支付时间
4:43二零一零年,VMware 开始赞助 Redis 的开发。
这份安排后来也包括 Pieter Noordhuis。
VMware 支付两个人的工作时间,但 Redis 核心仍然按 BSD 许可证发布。赞助关系没有自动变成项目所有权。
对 Sanfilippo 来说,最直接的变化是,他的一天可以用来写 Redis,不必在业余时间和收入之间来回切换。
几年后他回忆,全职赞助让开发速度明显加快。
[008]
引用 [008]
材料交叉支撑赞助顺序、人员与全职开发效果;不把雇佣或赞助等同于 IP 控制。
- Sanfilippo,`Pieter Noordhuis is joining VMware`;2010
- Pivotal 对 Sanfilippo 的问答;2013-07-17
- Redis 历史 sponsors 文档
- Changelog Interviews #45,Salvatore Sanfilippo;2011-01-17,40 分钟
2010 Pieter announcement, 2013 Pivotal interview, historical sponsor page and 2011 Changelog self-description
VMware 之后是 Pivotal。
二零一五年,Redis Labs 接替 Pivotal 赞助 Sanfilippo。
他专门写了一篇文章解释这个选择。
他没有自己创办一家 Redis 公司。一方面,他不希望纯开源的开发方式停下来;另一方面,他想保留陪伴家人的时间,也不想把精力放在经营公司上。
他的答案是允许一个商业生态围绕 Redis 生长。有人提供咨询,有人做托管服务,有人构建产品。而他继续从用户和代码出发,负责 Redis 的技术方向。
[009]
引用 [009]
优先采用创建者自己的关系说明,并用公司公告交叉日期;不由此推定全部内部控制边界。
Sanfilippo 2015 transition article on pure open-source development, family time, ecosystem and technical role; Redis Labs contemporaneous welcome post
这是一个对他很有效的交换。
别人承担工资、销售、托管和公司经营。他获得了持续创造的时间,社区继续得到 BSD 代码。
但同一个交换还有另一面。
Redis Labs 可以从大规模托管中获得故障和负载反馈,也开始雇用更多核心开发者。项目、创建者和商业产品彼此靠得更近。
这不等于公司从一开始就控制了 Redis。它只意味着,谁付钱、谁维护、谁决定,已经不再是三个完全分开的问句。
赞助替 Sanfilippo 买回了时间。
接下来,Redis 的成功会决定这些时间必须花在哪里。
[010]
引用 [010]
双面效果是关系结构归纳;不把托管反馈、雇佣核心开发者写成公司已经拥有项目的证据。
- Sanfilippo,`Thanks Pivotal, Hello Redis Labs`;2015
- Redis Labs 欢迎 Sanfilippo;2015-07-15
- Redis 历史 sponsors 文档
2015 relationship statements and historical sponsor sequence
喜欢的东西,变成肩上的重量
6:28二零一四年,Redis 五岁。
Sanfilippo 在生日回顾里感谢那些最早写 client、提交 patch、提供赞助的人。他也写到另一项变化:Redis 教会他很多东西,但已经让他几乎没有时间随意 hacking。
三年后,他站在 Codemotion Milan 的台上。
以往,他会讲 Redis 的新版本;这一次,他说自己想讲一点不同的东西。
Salvatore Sanfilippo(原声): I tried basically to summarize the experience, both technological and human, of these eight years of working at Redis. You know, I like Redis, but after eight years, even something that you like starts to be a bit like a weight in your shoulder.
[011]
引用 [011]
主播已确认 2017 候选的说话人、逐字、完整句界和上下文;当前 B v2 转场已通过机器 QA 与主播复听。
- Sanfilippo,`Happy birthday Redis!`;2014-02-25
- Codemotion Milan,`Running Redis for 8 years` keynote;2017-11-17,35:49
2014 fifth-birthday reflection; Codemotion local audition candidate 009-B, source 00:00:52.52-00:01:14.66
这份重量不是一个抽象的“项目变大了”。
只要 Redis 位于关键路径,故障就不只取决于一个 server process。容量、部署和应用怎样使用它,都可能让问题被放大。
二零一七年三月,Square 经历了一次大范围服务故障。它的 Redis 集群接近容量上限,应用对 optimistic transaction 的重试上限高达五百次,而且没有 backoff。重试制造更多压力,压力又触发更多重试。
支付、登录和 POS 相关服务都受到影响。
最终修复不是“把 Redis 重启一下”,而是降低重试,打断反馈环。
这不是 Redis 独自造成的事故。恰恰相反,它说明当 Redis 和应用语义纠缠在一起,维护对象早已超出一个 server process。
[012]
引用 [012]
事故复盘支撑反馈环与影响;明确不把根因简化为 Redis 单点故障。
Square incident timeline: near-capacity Redis, optimistic transaction retries capped at 500 without backoff, payment/login/POS impact and retry reduction recovery
Redis 的重要性也不是所有人都以同一种方式依赖它。
同一年,GitHub 公开了一次相反方向的工程选择。他们发现,一些本应持久保存的数据被放进了 Redis。于是把这部分 source of truth 迁到 MySQL 和自己的存储层,同时保留其他 transient cache 用法。
这不是“Redis 行”或者“Redis 不行”的裁决。
缓存丢失可以重建。持久数据丢失却可能没有来源。相同的 Redis 命令,放在不同责任上,会产生完全不同的维护代价。
项目越流行,Sanfilippo 越不能只设计一个漂亮的数据结构。他还要判断,哪些能力应该进入核心,哪些行为不能破坏,哪些问题根本不该由 Redis 承担。
[013]
引用 [013]
案例支撑责任取决于数据语义;不把单一迁移外推为所有 Redis 部署的最佳实践。
- GitHub Engineering,`Moving persistent data out of Redis`;2017-01-10
- Redis 官方 persistence 文档;2026-08-06 快照
GitHub engineering migration of persistent source-of-truth data while retaining transient Redis uses; current Redis persistence modes for terminology boundary
二零一八年,商业边界开始进入公开冲突。
Redis Labs 把一部分 Redis 模块从 AGPL 改为 Apache 2.0 加 Commons Clause。公司公开说明的目标,是限制别人把这些模块直接作为商业托管服务出售。
Sanfilippo 当时强调,变化针对模块,不是 Redis 核心。他写下的公开承诺是:核心 Redis 现在是、也将保持 BSD。
这句话不能被剪成四年后剧情反转的证词。
它说明的是二零一八年的安排:公司把商业限制放在模块一侧,BSD 核心仍然开放。
同一年发生的另一项动作,要到二零二一年公司更名公告里才被公开说明。按照那份后见公告,Sanfilippo 在二零一八年把 Redis 项目的知识产权和商标转让给了 Redis Labs。
模块许可证、核心代码许可证、IP 和商标,是不同对象。
它们正在把 Redis 的法律控制重新分配,但这还不是 Sanfilippo 离开的时刻。
[014]
引用 [014]
把模块、核心许可证、IP 与商标分开;权利转让目前按 2021 公司后见公告表述,不推定 2024 决策动机。
2018 Redis Labs and Sanfilippo module-license statements; 2021 company retrospective on 2018 IP and trademark transfer
把手放开
10:07二零二零年六月三十日,Sanfilippo 发布《The end of the Redis adventure》。
他写得很清楚。
最初,他在 building。他在造一个东西。
后来,他的工作变成保证 Redis 尽可能 useful、reliable、correct、fast、secure。大部分注意力用来检查其他开发者对代码的反馈,判断应该怎样改。
接着是那句几乎不需要解释的话:
I never wanted to be a software maintainer.
[015]
引用 [015]
关键英文为本人原文;中文旁白保留 building 与 maintenance 的工作定义差异。
The end of the Redis adventure paragraphs on work shifting from building to reliability/correctness/security review and never wanting to be a maintainer
他不是说维护不重要。
相反,他说,这正是 Redis 当时需要的工作。
冲突在于,他写代码是为了表达自己。他把代码看成 artifact,首先希望它在某种意义上是美的。有一句更极端的自我描述:他宁愿被记住为一个不好的艺术家,也不愿只做一个好的程序员。
一个公共基础设施需要维护者压低个人表达。它要的是连续、克制、审查和可预期。
一个把编程当作表达的人,却会在这种成功里越来越少地表达自己。
他已经把这段关系拉得太久。
所以,他决定退出 Redis maintainer 的位置。
[016]
引用 [016]
人物冲突来自本人公开自我定义;不诊断 burnout,也不虚构当时心理活动。
The end of the Redis adventure on code as expression/artifact, beauty, bad artist versus good programmer, and stepping back
退出并不是把仓库留在那里,然后消失。
Sanfilippo 请长期与自己协作的 Yossi Gottlieb 和 Oran Agra 接手维护。
他甚至明确拒绝参与设计下一套开发治理。因为设计“以后大家怎样维护”,正是所有维护任务里最 meta 的那一项,也是他最想离开的工作。
同一天,Redis 公布从 BDFL 和 sole maintainer 转向小型 core team 的治理方案。
几天后公布的五人团队,成员来自 Redis、AWS 和 Alibaba。
这是一次工程交接,也是一项关于人的实验:Redis 第一次需要公开证明,没有创建者,它也能继续接受 patch、发布版本、处理分歧。
[017]
引用 [017]
个人说明与治理公告分别固定退出和接替结构;不把当时的 community-driven 评价写成后续已验证结果。
- Sanfilippo,`The end of the Redis adventure`;2020-06-30
- Redis,`New Governance for Redis`;2020-06-30
- Redis,`Redis Core Team Update`;2020-07-09
Sanfilippo handoff to Yossi and Oran and refusal of meta-maintenance; contemporaneous BDFL-to-core-team plan and five-member update
他没有在这封告别信里说,自己因为反对商业化而离开。
也没有证据说明公司把他赶走。
他感谢 Redis Labs、VMware 和 Pivotal,让自己多年能够自由地为用户写开源代码。
他只是把两件事分开了。
Redis 需要继续维护。
但这份维护不再必须由他承担。
[018]
引用 [018]
明确排除两种无证据因果,并记录为什么本章没有原声。
- Sanfilippo,`The end of the Redis adventure`;2020-06-30
- Changelog Interviews #631,Sanfilippo;2025-03-07,94 分钟
2020 statement thanks sponsors and gives creative/maintenance reasons; 2025 interview retained only as an unapproved retrospective source
没有他的 Redis
12:30Redis 没有停下来。
新的 core team 接手。二零二一年,Redis Labs 把公司名称改成 Redis。
公司在公告里说,Sanfilippo 已经在二零一八年转让项目 IP 和商标。这让公司、项目和商标在名字上进一步重合。
但名字重合不等于所有东西都成为同一种资产。
已经按 BSD 发布的代码仍然是 BSD。未来版本由谁发布、使用什么许可证,是另一项权力。Redis 这个商标属于谁,又是第三项。
Sanfilippo 离开以后,这些区别不再只是法律文件里的细节。
它们会决定项目能沿着几条路继续。
[019]
引用 [019]
公司名、商标、IP 与已发布代码许可证分开表述。
2021 Redis Labs rename announcement and its account of 2018 IP/trademark transfer; version-fixed Redis 7.2.4 BSD license
二零二四年三月二十日,Redis Ltd. 宣布,从 Redis 七点四开始,未来版本不再使用 BSD。
新的选择是 RSALv2 和 SSPLv1。
源码仍然可以查看、修改,也允许许多商业使用。但竞争性的托管服务不能再像 BSD 时代那样,直接拿新版本免费提供 Redis 服务。
这两种许可证也不是 OSI 批准的开源许可证。
八天后,Linux Foundation 宣布成立 Valkey。
参与者包括 AWS、Google Cloud、Oracle、Ericsson 和 Snap。它从换证前的 BSD 代码继续开发,选择 BSD 路线和新的基金会治理。
[020]
引用 [020]
固定换证范围、托管限制、OSI 状态和八天后的 fork;不把 source-available 称为 OSI open source。
- Redis,`Redis Adopts Dual Source-Available Licensing`;2024-03-20;7.4 与许可证正文
- Redis,`What Redis' License Change Means for Our Managed Service Providers`;2024-03-29
- MongoDB 撤回 SSPL 的 OSI 审批请求;2019-03-09;OSI 当前审批流程快照
- Linux Foundation,Valkey 成立公告;2024-03-28
Redis 2024-03-20 license announcement and MSP policy; OSI SSPL boundary; Linux Foundation Valkey launch 2024-03-28
Valkey 不是八天里重写出来的另一个数据库。
它延续的是换证以前的代码。早期版本甚至保留 redis-server、redis-cli 这些名字的兼容链接。
这正是 BSD 许可证留下的后果。
Redis Ltd. 可以决定未来官方 Redis 的许可证,却不能追溯收回已经交给所有人的旧代码。
其他维护者可以继续那份代码,也可以继续 RESP、命令、client 和运维经验构成的接口。
所以 Redis 在这里分成了至少三件事。
一家拥有商标并发布新版本的公司。
一条可以被 fork 的代码历史。
还有一套已经进入大量程序的使用方式。
[021]
引用 [021]
代码谱系与兼容链接支撑延续关系;不把项目自称兼容扩大成全部命令、复制、模块和运维完全一致。
- Redis 7.2.4 `COPYING`
- Valkey 7.2.5 README、COPYING 与 tag tree
- Valkey History 与 Leadership;2026-08-06 快照
Version-fixed Redis and Valkey licenses/readmes/tree, redis-* compatibility symlinks, and Valkey governance history
这次分叉也不只停在 GitHub 仓库里。
Fedora 决定用 Valkey 替换 Redis,并提供配置、数据和 systemd 层面的兼容迁移。
AWS 和 Google Cloud 随后推出托管 Valkey。
这些动作不能证明 Redis 已经被替代。它们证明的是,发行版、云产品和用户现在有了一条真实的分发路径,可以在保留大量既有使用方式的同时,改变实现和治理。
反过来,Microsoft 当时选择继续通过与 Redis 的许可关系提供 Azure Cache for Redis。
同一场换证没有迫使所有参与者走向同一答案。
[022]
引用 [022]
只把供应商和发行版动作写成分发选择,不宣告生产市场份额或最终胜负。
- Fedora 41 `Replace Redis With Valkey`;2024
- AWS 宣布 ElastiCache / MemoryDB 支持 Valkey,并发布迁移说明;2024-10-08
- Google Cloud,Memorystore for Valkey;2024-08-30
- Microsoft Azure 对 Redis 换证的说明;2024-03-20
Fedora replacement plan, AWS and Google managed Valkey announcements, and Microsoft's contemporaneous licensed-service response
回来,但不回到原位
15:37现在回到序章。
Sanfilippo 再次看见 Redis 时,看到的已经不是一个仓库,而是一道裂口。
二零二五年,Changelog 再次采访他。主持人问:想改变公司和社区的关系,是他回归的原因,还是回来以后才形成的目标?
Sanfilippo 先说,离开以后,他刻意不再看提交记录;既然别人正在做,就应该让他们做下去。
Salvatore Sanfilippo(原声): But then, when I saw the community in some way, the conflict inside the community, I thought that since I know a lot of people inside the company, and I was sure that many of the technical staff, for example, it's not what they wanted happening, I said, maybe I can return. And I can return also without feeling too much stress.
[023]
引用 [023]
主播已确认说话人、But then 句首依赖和完整上下文;当前 C v1 转场已通过机器 QA 与主播复听,并确认采用保留口语自我修正的机器共识稿。
Changelog #631 local audition candidate 009-C, source 00:48:05.60-00:48:32.06; publisher transcript and independent ASR used for localization
二零二四年的文章给出了更接近当时的动作。
他重新想进入技术世界,也担心社区正在分裂。
和女儿去纽约旅行时,他想到,自己也许可以做一份兼职。之后,他主动给 Rowan Trollope 写邮件,问能否以某种身份回来。
他设想的身份不是 BDFL,也不是 sole maintainer。
一边,是公司与社区之间的 bridge。
另一边,是可以写 demo、文档、文章,观察用户怎样使用 Redis,再把设计想法带回核心的 developer evangelist。
到二零二五年的采访里,他把代码上的限制说得很具体:一次只专注一个子系统。
这不是回到原位。
这是先承认原位已经不存在,再为自己设计一个不会重演退出的角色。
[024]
引用 [024]
旅行只保留本人公开的最小必要动作;不补造地点、设备、邮件内容或 CEO 对话。
2024 Time in NY and proposed evangelist/bridge/design role; 2025 interview continuation on focusing on one subsystem
回归也没有让他突然变成二零二四年换证的决策者。
Sanfilippo 写得很谨慎:换证不是自己的决定。远离商业压力多年以后,他不确定自己会不会选择同一种许可证,也承认现在重新审判很容易。
但他能理解公司为什么认为云厂商改变了系统软件的商业激励。
这种态度不会替 RSAL 或 SSPL 变成开源许可证,也不会让 Valkey 这条分叉失效。
它只说明,Sanfilippo 回来面对的不是“公司背叛了自己的纯粹理想”这样简单的剧情。
事实上,Redis 刚开始流行时,他也考虑过 closed product、open core,甚至让新代码延迟六个月再进入 BSD。
是 VMware,后来又是 Redis Labs 的赞助,让他能够把更多核心代码立即交给用户,同时仍然获得报酬。
他从一开始就在回答同一个问题:谁来支付自由软件的时间?
只是不同答案,会把决定权交给不同的人。
[025]
引用 [025]
本人观点只承担人物判断;许可证类别由文本和 OSI 记录固定,不把理解写成认可或法律结论。
- Sanfilippo,`From where I left`;2024
- Redis,`Redis Adopts Dual Source-Available Licensing`;2024-03-20;7.4 与许可证正文
- MongoDB 撤回 SSPL 的 OSI 审批请求;2019-03-09;OSI 当前审批流程快照
2024 return article license dilemma and retrospective on closed products/open core/delayed BSD before VMware sponsorship; license texts and OSI boundary for legal classification
回归以后,他很快又开始设计一种新数据结构。
vector sets。
他从 sorted set 出发,尝试让 score 变成向量,重新实现索引和量化,并设计 VADD、VSIM 这些命令。
在回归文章结尾,他没有保证这份代码一定会进入正式 Redis。
他说的是,自己还在做 proof of concept。
然后补了一句:Quite fun, to be honest.
十五年前,Redis 从一个具体问题和好玩的编程开始。
现在,“好玩”重新出现了。但这一次,他不必同时承诺自己将永远维护整个系统。
[026]
引用 [026]
只写当时的设计与兴趣,不提前宣布提案获批、进入版本或取得市场结果。
From where I left vector sets section: sorted-set inspiration, VADD/VSIM, proof-of-concept status and Quite fun
二零二五年五月,Redis 8 又增加了 AGPLv3,和 RSALv2、SSPLv1 并列成为第三种许可证选择。
AGPLv3 是 OSI 批准的开源许可证。
公司也在公告里承认,二零二四年的动作伤害了与社区的关系,并促使 AWS 和 Google 维护 fork。
这是一项策略修正,但不是回到 BSD。它也不能被归功于 Sanfilippo 一个人。
Valkey 没有因此消失。
同年晚些时候,Amazon Ads 公开了一次约五百节点缓存的生产迁移。他们用并行集群、双写、逐步切读和回滚路径,把原有 Redis 工作负载迁到 Valkey,最后下线旧集群。
这同样不能证明 Valkey 赢了。成本和性能还同时受到硬件、版本与 AWS 定价影响。
它证明的是,兼容接口确实能降低一部分迁移成本,却不会取消迁移工程本身。
[027]
引用 [027]
把 AGPL 写成第三选项而非恢复 BSD;迁移案例只证明特定路径可行,不外推市场胜负或单一性能原因。
- Redis 8 加入 AGPLv3;2025-05-01;Redis 8 许可证与 GA 公告
- Amazon Ads,`Amazon Ads upgrades to Amazon ElastiCache for Valkey...`;2025-11-25
Redis 8 AGPLv3 announcement and fixed license; Amazon Ads production migration with parallel clusters, dual-write, progressive read switch and rollback
谁拥有离开的自由
20:04最后,再回到那条最简单的命令。
make。
Sanfilippo 离开四年以后,它仍然可以把 Redis 构建出来。
但它回答不了另外几件事。
谁审查下一份 patch。
谁拥有 Redis 这个名字。
托管服务要不要和公司签协议。
社区跟随 Redis,还是 Valkey。
一个项目可以继续编译,只说明代码还活着。
一个基础设施能够让创建者离开,说明维护责任已经可以交给别人。
可责任一旦交出去,决定权也会一起离开。
[028]
引用 [028]
结尾问题分别回收代码、维护、商标、商业许可与社区路径;不把 make 本身包装成所有权证据。
- Sanfilippo,`From where I left`;2024
- Redis Labs 更名 Redis;2021-08-11
- Redis,`Redis Adopts Dual Source-Available Licensing`;2024-03-20;7.4 与许可证正文
- Linux Foundation,Valkey 成立公告;2024-03-28
Make action in creator return article, company/IP/trademark record, future-version license change and Valkey fork
Sanfilippo 成功地让 Redis 摆脱了创建者。
代价是,他也失去了替 Redis 作出所有选择的权利。
赞助、公司、core team、基金会和 fork,都可以承担一部分长期维护。
没有哪一种安排是免费的。
它们支付程序员的时间,组织故障和审查,也重新分配商标、收入、路线与离开的自由。
Redis 的故事并不能证明,商业化只有一种不可避免的答案。
它证明的是另一件事。
一个由个人兴趣创造的程序,一旦被太多人需要,就必须有人为它持续付钱、承担责任、建立决定结构。
Sanfilippo 无法逃离的,不是某一种许可证。
而是这次分配。
当他再次回来,他已经不是那个能够替 Redis 作出所有选择的人。
他是一个参与者。
也终于可以重新做一个创造者。
[029]
引用 [029]
最终判断限定为维护代价与控制权分配,不把商业化或某一许可证宣告为历史必然。
- Sanfilippo,`The end of the Redis adventure`;2020-06-30
- Sanfilippo,`From where I left`;2024
- Redis,`New Governance for Redis`;2020-06-30
- Redis,`Redis Adopts Dual Source-Available Licensing`;2024-03-20;7.4 与许可证正文
- Linux Foundation,Valkey 成立公告;2024-03-28
Creator's maintenance exit and participant-style return, governance handoff, company license choice and foundation fork
片尾
21:35你刚刚听到的是《原代码》第九期,《Redis:创建者怎样成为参与者》。
这是一档关于软件开发世界的技术考古与创作随笔。本期关于 Redis 创建者 Salvatore Sanfilippo,以及一个项目怎样从个人作品变成公共基础设施。
你可以访问《原代码》的官方网站。网站地址是,原代码三个字的全拼,点 X Y Z。在那里,你可以查看本期逐字稿、证据引用关系和证据快照,也可以收听往期节目。
感谢收听。