Redis之父退出开源项目维护

Redis 之父 Salvatore Sanfilippo 决定不再担任 Redis 项目的软件维护者,Redis 项目放弃之前的专制管理模式,转而采用新的“社区自治模式”。  

两天前,Sanfilippo(又名 antirez)在自己的博客上发布了一篇公告,表示将不再担当 Redis 开源项目的软件维护者,并“将 Redis 交给 Redis 社区”。这意味着 Redis 项目的未来命运将由整个社区决定,而不再单纯掌握在 Sanfilippo 一个人手中。

Sanfilippo 的公告受到了业界的强烈关注,以至于他在 Twitter 上感慨说:“简直不敢相信我收到了如此多的消息:) 即使有些听起来像是我死掉了一样(大笑),这有点像参加自己的葬礼呢…”

Redis 以后怎么办?

Sanfilippo 于 2009 年初启动了 Redis 项目。经过一段时间的发展,Redis 数据库在缓存领域大放异彩,成为支持大规模后端交易以及内容服务系统的重要实时数据库选项之一。

Redis 数据库以开源形式全面开放,其中的企业级功能与 Redis 模块则分别采用不同的许可协议。根据 DB-Engines 的报道,Redis 已经成为领先于 Amazon DynamoDB、微软 Azure Cosmos DB 乃至 Memcached 的最受欢迎键值存储解决方案。去年,Redis Enterprise 还以托管服务形式登陆 Google Cloud。

但作为 Redis 项目的支持方以及负责销售 Redis 企业模块的厂商,Redis Labs 去年在一片争议声中更改了其开源许可条款,希望阻止竞争对手(特别是 Amazon Web Services)将 Redis 软件重新打包为其他竞争性产品。

发展到今天,Redis 的成功基础已经从 Sanfilippo 个人变成庞大的技术社区。Sanfilippo 退居二线之后,空出来的维护者角色将由 Redis 项目新任负责人 Yossi Gottlieb 与 Oran Agra 接管。

Redis Labs 在官方博文中指出,Redis 项目的基因中“有着明确的原则性,例如追求简单高效、强调少而精的解决能力、以正确的判断为导向等。这一切,都是为了让项目能够在发展道路上走得又快又稳。”

“随着 Salvatore 的退出,再结合项目当前的规模,Redis 已经不适合再搞一言堂式的管理模式。我们认为 Redis 正好可以借此机会调整治理模式,希望新模式能够促进团队合作与组织结构优化,让我们进一步扩大项目的开发与维护流程。新的治理模式旨在强调精英管理制度,任何愿意为项目长期付出并做出重大贡献的参与者,都将拥有对应的决策权力。”

Redis 核心团队将继续负责 Redis 核心项目——核心项目属于 Redis 体系的组成部分,位于 Redis 主 repo 内并采用 BSD 许可。天天“上班”,让人怎么创新?!

Sanfilppo 在他的博客公告中表示,他已经不想再继续担任该软件的维护者,因此决定后退一步,在 Redis Labs 中担任“谋士”。

“最近几年来,我每天的工作内容发生了很大变化。我把大部分精力花在检查其他开发者提交的 Redis 代码、改进代码质量以及提升软件正确性、速度与安全性方面。但我真的不喜欢这类维护工作。”他还提到,根据自己的编码习惯,他“更愿意当个有脾气的艺术家,而不是那种有求必应的程序员。”

退居二线的决定,其实他在一年前就想好了。

一年前,Salvatore Sanfilippo 发表了一篇博客说:“我觉得之前 Redis 之所以能够快速普及,就是因为我能够按照自己的思路设计并编写软件。但现在我的工作重心发生了变化,每天得花大量时间查看问题并提出请求。”

“我有时候会丢掉问题审查和 PR 方面的工作,花几个礼拜时间跑去写代码或者做设计:后者才是我真正喜欢的工作。但这反过来又给我心理带来了巨大压力——做喜欢的事已经违背了我的角色定位,这种感觉太痛苦了。”所以他不得不考虑“转换角色定位”。

他在博客中重点谈了谈全年无休的上班生活使人无法放松,从而无法做一些创造性的工作。而他更喜欢的是“编程”这样的事儿,他在 Twitter 上也说道,“人生苦短,不能一直都做同一件事情”,得赶紧开始另一种生活。

网友纷纷在他的 Twitter 下留言:您应该相信,您确实创造了一段 IT 历史。恭喜您重生!慢慢来。我最近休了一年假,这是有史以来最好的举动。大家因为您的工作而联系在一起,就好像已经认识您很长时间了。因此,我们为您辞职感到难过,但很高兴您能尝试一些新东西。 附上 Redis 之父一年前的博客文章《开源项目维护者的挣扎》节选翻译:

首先,在参与 Redis 项目之前,我从没经历过那种全年无休的工作体验。以往我可以工作一个礼拜,休息两天,然后工作一个月,再休息两个月之类。人总是需要充电,放空自己来获得新的能量与灵感,只有这样才能做好创造性工作。没错,高层次的编程就是一种令人着迷的创造性工作。Redis 在头两年的发展当中也是如此,那是段美好的经历。结合个人经历,我觉得想工作的时候才工作,总体产出要比每天被迫固定工作还更高一些。

但在公司上班之后,职业要求成了我的“紧箍咒”。为了靠开发 Redis 赚钱,我必须得强迫自己按照正常的时间表工作。在我看来,这是对多年个人习惯的一种破坏。而且我敢肯定,实际产出是不及当初随性开发阶段的,但工作就是工作,没有太多可以商量的余地。我也不知道该怎么解决这个问题。我当然可以向 Redis Labs 反映,要求回归原先的工作方式——但这样没用,因为现在我的报告对象已经不是公司,而是整个 Redis 社区。

另一个问题是,从心理层面讲,长期从事同一个项目确实非常累人。我几乎每六个月就要进行一次项目变更,而且同样的工作已经持续了十年。为了解决问题,我尝试在 Redis 中引入多个子项目,让自己保持一点正常的激情和神智。比如抽点时间做 Cluster,过一阵子再做 disk-storage(已经被废弃),然后是 HyerLogLogs 等。总之就是尽量把大型项目拆分成一个个孤立的有价值元素。但最终,工作总是回到“问题和 PR”上,让生活再次陷入没有停歇的重复。“发生超时,副本断开连接”才是生活的真谛,咱们看看出了什么状况吧……

……

有时候,我觉得软件成果虽然很棒,但永远不可能像经典著作那样永世流传。这并不是说软件本身不好,而是软件具有动态特性,其中某些部分总会随着时间推移被替换掉。所以我越来越感觉自己做的一切都是在浪费时间。我们设计和编写的系统,终将被新的系统取代。但在另一方面,如果我们能够在软件开发方面更进一步,强调“软件开发中所蕴含的伟大创意”这个意象,是否能树立起新的标杆?我觉得自己或多或少有一点发现伟大创意的潜力,但现在的工作迫使我只能专注于编写软件,而不是思考软件的深层含义,那这种潜力根本没有发挥的余地。可能是我自视过高了,我应该更谦虚一点,抱歉抱歉~