专栏名称: 程序员的那些事
最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等。
目录
相关文章推荐
程序员的那些事  ·  世界上最伟大最邪恶的软件发明,超过 10 ... ·  昨天  
程序员小灰  ·  为何大多数程序员做不了独立开发者? ·  2 天前  
OSC开源社区  ·  四名CEO ,扬言要打造新一代基础软件技术栈 ·  1 周前  
程序员的那些事  ·  啪啪啪!谷歌 CEO 爆猛料,立马就被员工打脸了 ·  1 周前  
51好读  ›  专栏  ›  程序员的那些事

没有报酬,有多少开源项目维护者能坚持?

程序员的那些事  · 公众号  · 程序员  · 2017-09-29 18:12

正文

(点击上方公众号,可快速关注)


编译:伯乐在线 - 飞哥的咖啡

如有好文章投稿,请点击 → 这里了解详情


【导读】:James Long 是 Mozilla 的工程师。他在这篇文章讨论了开源项目的两种角色 starters(发起人)与 maintainers(维护者)。没有报酬的情况下,有多少开源项目的维护者能持之以恒?


发起人与维护者


现在是周五的深夜,妻子已经睡着了,我终于能够抽空看看那些发布请求(pull request),这些发布请求来自我去年放上 GitHub 的一个旧项目。女儿早上七点半要起床,所以我最好不要熬夜太晚。



自我上次查看之后,新增了 9 个问题(issues),以及 2 个发布请求。好消息是大部分问题都可以关闭,而且发布请求也无关紧要。呃,不好,有一些重大的更改。我不得不重新考虑这些更改,并将(带着礼貌的态度)参与一场长时间的讨论。这是一个突破性的更改,但他们并没有更新文档,所以我们必须弄清楚,如何通知每位用户去升级。


我应该给项目建立一个更好的(推送)方式,来通知用户新的问题和发布请求。但是仔细一想,骗谁呢,这只会让我更加精疲力竭。我根本没有这么多时间来回应这些(问题和发布请求)。至少现在,当我在焦头烂额忙着其他事情的时候,我可以假装它并不存在。


我为什么要这么逼迫自己呢?


诚然,我的代码已经帮助了很多人,但随之而来的维护负担却也十分严重,尽管它本身只是一个小项目。如果它变得更加流行,有更多的用户来使用它哪?那么要做的事情就更多了。(尽管我的 GitHub 个人博客内容比较冷门,还不怎么使用, 都已有超过 1000 颗星了,啊?!)从此它会变成一个每周 10 小时的工作。😱


我非常佩服那些将大量时间免费贡献给开源软件(Open Source Software,简写 OSS)项目的人。我不敢想象有多少无趣的免费工作正在进行。人们非常乐于喜欢帮助别人和社区,这件事情本身很棒。


我也喜欢这样做,但是有了妻子和女儿(而且马上要有第二个女儿),再加上一个本已高强度的工作,基本不可能办到这一点。我在 Mozilla 的工作基本上就是完全的 OSS 工作。


我认为自己能坚持下去的唯一理由,是因为我喜欢发起一件事


每个人都喜欢做发起人,但我想做出点影响力,做出点贡献。将作品放到 GitHub 上很容易,而且如果没有人使用它,你都可以忽略它,但这样做不会产生任何影响力。我想让人们看看我做出的东西,能够从中学到些什么,甚至能够使用它。通过编写可以应用到生产环境到库,我帮助人们学习 React、React-Router、传感器、健康的宏、动画等大量东西。


但这也会带来负担。


一旦人们在生产中使用你的代码,你还要继续维护它吗?


你可以说不,这是你的权力。但大多数时候,你想要看到你的想法不断成长、进化。问题是,要维持这样的动力,背后需要付出大量的工作。


任何一个项目都要有两个角色:发起人和维护者。人们可能在生活中同时扮演着这两个角色,但出于某种原因,我发现对于单一的项目而言,这两个角色一般对应不同的人。发起人擅长在不一样的角度(方向)迈出重要的一大步,而维护者擅长保持代码存活。


另一个很大的区别是,项目发起人往往只有一个,而最终会有多个项目维护者,这是因为单独一人无法支撑起整个项目。随着它越来越受欢迎,会出现越来越多的问题、发布请求以及其他各种请求,两者之间呈线性递增的关系。当项目人气到达了新的阶段,就必须增加新的维护者,而理想的情况是来自现有的重度用户。


正是因为一个人无法支撑起整个项目,所以发起人自一开始就容易陷入一个令人绝望的循环:他/她拥有所有这些好的想法,但随着一些想法逐渐得到实现,会收到越来越多(来自他人的)噪音干扰,这使得未来的想法难以实现。关键是,你要不忘记现有的项目,要不为它们找到维护者,而后者通常不是一个能够很快实现的任务。


我本人绝对是一个发起人。我对万事万物都存有兴趣(好奇心),并不专注于几个集中的领域。我维护库的时间已经长达数年,但赶着在周五晚上处理积压留存的问题,总是让我怀有巨大的愧疚感。


从现在起,我清楚地表示,由于我放上 GitHub 的代码是实验性的,我将不会回应任何的问题或发布请求。如果我确实发布了一个可以应用到生产环境到库,说明我已经想到了要请谁来维护。我不想再让自己背上第二份工作了。:)


这是我想对所有维护者说的话:正是他们在幕后从事各种费力不讨好的工作来保持代码存活,包括编写文档、编辑版本、注册域名等等。


哎,今晚要补救的问题还挺多的,也许我只要将废弃声明( DEPRECATED )添加到 README 中就能解决一切了。😊


相关文章


100:10:1 方法 : 我是这样参与开源的

维护大型开源项目,是怎样的体验?



看完本文有收获?请分享给更多人

关注「Linux 爱好者」,提升Linux技能