挣扎

前阵子 , Redis 的作者 Antirez(Salvatore Sanfilippo)发布博客 , 宣布自己将辞去 Redis 项目维护者职务 , 将 Redis 交给 Redis 社区 。 这一消息受到了业界的强烈关注 。
我把这个叫做开源维护者的纠结和挣扎 。 其实前一阵子 Linux 之父林纳斯也很感慨 , 不知道自己这一代核心维护者离开后 , 开源会发生什么 。
Antirez 表示 , 他现在的大部分精力都花在检查其他开发者提交的 Redis 代码、改进代码质量 , 以及提升软件正确性、速度与安全性方面 , 但他并不喜欢做这类维护工作 , 而是希望做一些有创造性的工作 , 通过写代码实现自我表达 。 他是这么说的:
我写代码是为了表达自我 , 并且我认为它们是一种艺术品 , 而不仅仅是能够完成任务的有用的东西 。
于我而言 , 代码的功能只是一种副作用 , 创造出优美的东西才是我的首要目标 。
从本质上来说 , 我更愿意人们把我看作是一名糟糕的艺术家 , 而不仅仅是一名优秀的程序员 。
Redis 是一款免费、开源、遵循 BSD 协议的高性能结构化存储数据库 。 同时 , 它也是 NoSQL(Not Only SQL) , 即非关系型数据库的一种 , 内置了丰富的数据结构 , 目前基本上已经成为一种工业标准 , NoSQL 数据库的首选 。
Redis 最大的特点就是它的查询效率非常高 。 根据官方提供的数据 , Redis 每秒最多处理的请求可以达到 10 万次 。 Redis 之所以能这么快 , 和它的编写语言、内存模型 , 包括进程和线程的设计息息相关 。
回顾这十几年的发展历程 , 在 Antirez 和无数开发者的维护下 , Redis 越来越成熟 。 在 DB-Engines 最新发布的 7 月键值存储数据库排行榜中 , Redis 排在第一 , 排在它后面的有亚马逊 DynamoDB 和微软 Azure Cosmos DB 。 而在 DB-Engines 数据库总榜中 , Redis 也稳定排在第 8 位 , 这个成绩可以说相当优秀 。
按照道理来说 , Redis 就是 Antirez 自己的「孩子」 , 一点点看它长大 , 看它成熟 , 看它不愁名气也不愁钱 , 这时候 Antirez 应该继续带领 Redis 走向巅峰啊 , 但是 , 你有你的计划 , 世界自有计划 。 Antirez 激流勇退了 。
很多听说 Antirez 辞职的网友纷纷给他留言 , 以至于他在 Twitter 上感慨说:“简直不敢相信我收到了如此多的消息 , 即使有些听起来像是我死掉了一样 , 这有点像参加自己的葬礼呢……”
其实从另一种角度来看 , 不如说这次是他的“重生” 。 因为在 Antirez 维护 Redis 的这些年里 , 无论是在精神上还是心理上 , 他都经受了巨大的考验 。 Antirez 曾在一年多前在自己的博客中写下《开源维护者的挣扎》一文 , 从中可以一窥开源维护者面临的困顿 。
比如 , Antirez 需要面对来自用户的压力 。 当 Redis 变得越来越流行 , 用的人越来越多时 , 用户提交的反馈也就越来越多 , 他收到的建议成倍增长 。 这个时候 , 他不仅要花大量时间处理反馈 , 还要在自己的想法和用户期望之间做权衡 。 但无论他怎么优化 , 永远满足不了所有人的需求 , 总会有一小撮儿人疯狂吐槽 。 其实这也是每个作者都会面临的问题 , 你永远无法让所有的人都满意 。 这种事情既然躲不掉 , 那么习惯就好了 。 微信之父张小龙就曾在一次公开课分享上说过 , “每天有 5 亿人吐槽微信 , 有 1 亿人想教我做产品…..习惯就好 。 ”
来自用户的压力只是一方面 , 对于开源维护者来说 , 长期在同一个项目上工作还会面临诸多问题 。 Antirez 就觉得 , 自己主要还有两个问题:
第一 , 工作时间长且固定 , 自己没时间充电 , 很难进行创新 , 同时生产力也会降低 。
在参与 Redis 项目之前 , Antirez 的工作时间一直比较自由 , 他可以工作一个星期 , 再休息两天 , 也可以工作一个月 , 再休息两个月 。 在他看来 , 人总是需要充电的 , 放空自己才能获得新的能量与灵感 。 从个人经历来看 , 他觉得自己想工作的时候才工作 , 总体产出要比每天被迫固定工作还更高一些 。 但在公司上班之后 , 职业要求成了他的“紧箍咒” , 为了靠开发 Redis 赚钱 , 他必须得按照正常的时间表工作 , 这打破了他多年来的工作习惯 。


推荐阅读