点击蓝色“程序猿DD”关注我

回复“资源”获取独家整理的学习资料!

作者:xplanet

原文:https://www.oschina.net/news/106799/the-struggles-of-an-open-source-maintainer

几个月前,一名开源项目的维护者向 antirez 发邮件,倾诉自己苦心维持项目多年,这或多或少带来了一些心理上的负担,因此特来寻求建议。antirez 表示谈不上给出建议,但可以写一篇博客文章来分享对此事的看法。经过反复的思索和自我分析,他坦承“维护一个开源项目会带来乐趣”,但“也有消极的一面”。接着,antirez 从以下几方面对此展开描述,下边直接采用第一人称:

泛滥效应

当我在项目的早期收到关于 Redis 的电子邮件时,仍然有足够的时间,能够专注于对方在消息里试图表达的内容,并在仔细考虑后回复自己的真实想法。

然而,当一个项目达到像 Redis 这样的流行程度,并且人与人之间的交流因为新的社交工具而变得更为容易时,作者收到的消息、issue、PR 和建议的数量也将呈指数增长。随之出现一个普遍性问题,至少从 Redis 的情况来看是这样,即没有足够多合格的人去查看并处理社区中的这些信息。

大多数人试图以错误的方式解决它:原帖发布两周后若无回复就关闭 issue、关闭所有不明确的 issue,以及其他类似直接把邮件列表全部标记为已读的做法。

事实上,处理社区反馈必须要花费足够的时间,否则只能“假装”项目没有未解决的问题。为开源项目的每个子系统配备全职工作人员是奏效的,但很难实现。

那么接下来会发生什么?你将开始考虑哪些该被优先处理而哪些不是,你将因为自己忽略了太多事物和人而感到不安,贡献者也会认为你是一个漠不关心的人。这种情形实在是很复杂。

通常来说,应该主要先解决关键问题,忽视所有新的东西,因为新的东西还未能进入核心,谁想拥有一个伴随着更多 PR 和 issue 的代码库呢?

角色转换

Redis 流行起来后,我的工作更多地转变为了查看 PR 和 issue。这其中确实有些人会比我做得好,但大多数人的贡献仅处于平均水平,只是解决给定问题罢了。

当我设计 Redis 时,我倾向于将它视为一个整体,毕竟这么多年来一直在写这个东西。所以现实是,擅长的东西往往不再有时间去做。

我的解决方法是,给自己几周时间停止查看 PR 和 issue,转而去编程或者设计,这才是我真正喜爱和享受的。但这反过来又给我带来了更大的心理压力,只在做自己喜欢的事情时做得很好,令人感觉很糟糕。

时间

长时间在一个项目上工作有两个问题,至少对我而言是这样。

第一个问题是,在 Redis 之前,我从未有过在每个工作日都工作的经验。我总是干一周,停两周,接着再干一个月,然后消失两个月。做创造性工作需要充电,以获得新的能量和想法。

但开始收到在 Redis 工作的报酬后,道德规范我不能再依照过去的模式,所以我强迫自己按照正常的时间表工作。这对我来说无比挣扎,而且我确信自己做得比实际能做到的要少。目前仍未找到解决方法,跟公司申请回到原先的工作模式是不管用的,因为社区的运作方式如此。

另一个问题是,从精神上讲,在同一个项目中进行大量工作也是一件复杂的事情。我过去常常每六个月换一次项目,而如今十年来都在做同一个项目。我试图通过在 Redis 中部署子项目来留存创造力,先后做了 Cluster、HyerLogLogs 和一个已放弃的磁盘存储项目,现在在做第四个。

不过,最终还是要回到 issue 和 PR 页面,每天重复同样的工作。

恐惧

我每天都在害怕自己失去对 Redis 的技术领导力,不是因为我认为自己在设计和发展 Redis 方面做得不够好,而是因为我的方式与大多数用户想要的,以及大多数 IT 人员对软件的信仰不一致。

因此,我不得不在我认为的优秀设计、功能集、开发速度、项目规模,以及大多数用户所期望的内容之间保持平衡。

幸运的是,有一定比例的 Redis 用户完全理解 Redis 的方式,所以我至少时不时会得到一些安慰。

摩擦

尽管我认为程序员中的好人占比多过其他领域,但总还是有一些混账。作为一个受欢迎的开源项目的领导者,将不得不面对这些人,这可能是我在 Redis 开发过程中遇到的最紧张的事情之一。

徒劳

我相信软件虽然很棒,但不会像一本存活了几个世纪的书一样伟大,这绝不是因为它本身不好,而是因为其中的副作用,并且,它终将被更有用的软件替换掉。因此有时我会觉得自己做的一切终将都是徒劳的。

只停留在软件编写本身,而不思考软件“大创意”的人,真的能创造新的标志吗?

总的来说,我能够从事自己真正热爱的事情多年,并且它给我带来了朋友、认可和金钱,所以这算不上是糟糕的交易。

然而,我完全理解,一旦项目开始流行,人们就会为了维持生计而挣扎。这篇文章专门写给你们。

推荐关注

纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等


推荐阅读

  • 一文了解5G是什么,将如何影响我们的未来

  • 程序员需要知道的缩写和专业名词

  • 无惧灵魂拷问!淘宝扫一扫助你不再扔错垃圾!

  • 无索引的亿级数据该如何删除?

  • 再见微服务,从100多个问题儿童到一个超级明星


活动介绍:自律到极致-人生才精致:第9期

活动奖励:

  • 一等奖:天猫精灵 * 1

  • 二等奖:我的星球会员 * 5

扫描下面二维码签到参与

关注我,加个星标,不忘签到哦~

2019

与大家聊聊技术人的斜杠生活

点一点“阅读原文”小惊喜在等你

Redis作者的公开信:开源维护者的挣扎和无奈相关推荐

  1. Redis作者antirez:开源维护者的挣扎

    这两天,一篇名为<开源维护者的挣扎>的文章被迅速顶至 Hacker News 首页,这是 Redis 作者 antirez 发布的最新博客. 几个月前,一名开源项目的维护者向 antire ...

  2. cURL作者狂怼某500强公司,开源维护者是否应当“白打工”?

    众所周知,开源维护需要"用爱发电",不仅没有工资,还要负责开源项目的支持.对于那些开源维护者来说,他们往往有着自己的工作,而开源维护只是他们的兴趣爱好,并不能够为他们提供任何收益. ...

  3. Redis之父退出开源项目维护:人生苦短不想上班

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

  4. 为什么超 80% 的开源开发者苦苦挣扎在贫困线?

    [CSDN 编者按]开源开发者究竟该如何生存?这是一个业界为之困扰许久的问题.如果开发者只从事开源项目工作.且没有其他收入来源的话,那么开源项目的捐赠就是他们的工资.事实证明,超过80%我们以为具有可 ...

  5. Redis Labs 再次更改开源许可证,但 Redis 本身不受影响

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   其实「Redis Labs 再次更改开源许可证」这个说法有标题党的嫌疑,但看到 Redis Labs 的 CTO ...

  6. Redis 作者 Antirez 讲如何实现分布式锁?Redis 实现分布式锁天然的缺陷分析Redis分布式锁的正确使用姿势!...

    Redis分布式锁基本原理 采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁:看着很完美. 然而-- 看 ...

  7. Redis作者Antirez经历的「性别歧视」风波

    本篇文章是2012年Redis作者发表的关于性别歧视的博客,文章推出后,引来了轩然大波,骂声一片.这可能是antirez在互联网上经历的最黑暗的一段时间了.这里我将他的博文翻译出来分享给大家一起观察作 ...

  8. Log4j2惊现大漏洞? 开源维护者越来越难?

    Log4j2惊现大漏洞? 开源维护者越来越难? 作者:Filippo Valsorda 编译:郭露 原文链接:https://blog.filippo.io/professional-maintain ...

  9. 使用redis和mysql的开源项目_干货!带你了解为什么那么多开源项目都是用Redis!...

    很多开源项目中都使用了redis,这些项目为什么使用redis?使用redis有什么好处?怎么使用redis?带着这些疑问,我们来了解一下redis. 一.什么是Redis Redis是一个免费开源用 ...

最新文章

  1. 谭浩强课后题之----输出10个数中最大的
  2. Java面试——SpringMVC系列总结
  3. DevOps落地成不成,关键不在持续集成?
  4. python爬虫程序框架的理论是什么_Python网络爬虫(scrapy框架简介和基础应用)
  5. python基础学习--字符串和文件数据处理--附代码
  6. 使用SpringCloud搭建高可用服务注册中心
  7. 20200317_利用神经网络预测贷款率
  8. android 属性翻牌动画,如何在Android中利用TextSwitcher实现一个文字上下翻牌效果
  9. 随着公网对讲机市场占有率得不断增长,部分对讲机厂家为了得到用户的认可,不断升级对讲机及时以及对讲机的功能和性能,因此越来越多的全国对讲机以及公网对讲机问世。但是某些用户不清楚对讲机的原理,不禁会问
  10. C++实现堆排序算法
  11. 通达信指标公式常用绘图函数(2)——DRAWLINE、DRAWKLINE、STICKLINE
  12. 数据结构 队列顺序储存 医院叫号系统
  13. cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks
  14. C# Chart之双Y轴图表实现
  15. android10rom包,安卓10的刷机教程,教你刷好Killer的精简包
  16. 浅谈Java SE、Java EE、JME的关系
  17. idea和eclipse哪个更好用?为什么呢?
  18. 【优化选址】基于人工蜂群算法求解无线网络传感覆盖优化问题含Matlab源码
  19. 76Echarts - 散点图(Life Expectancy and GDP)
  20. 通过注册表设置VMware Horizon View Client SSL配置

热门文章

  1. linux shell tr命令 换行符换成空格
  2. python3 中递归的最大次数
  3. golang 时间原点 时间日期格式化
  4. metasploit msfvenom使用实例
  5. 利用windbg探索进程和进程上下文
  6. printf如何输出64位整数
  7. 游戏数据的捕捉(郁金香学习笔记)
  8. 汇编中的字符串操作指令
  9. C 函数 strstr 的高效实现
  10. Linux内核2.6的进程调度