我为什么退出开源
如果您喜欢这篇文章,请订阅我的时事通讯。
GitHub 发表了一篇关于如何避免开源维护者倦怠的有趣文章。这是一个重要的话题,应该得到更广泛的讨论,我很感谢 GitHub 发表了这篇文章。
这篇文章很好地概述了可能导致倦怠的原因,并给出了一些避免倦怠的建议。然而,我认为这篇文章的主要目的是说服维护者尽可能长时间地坚持他们正在做的事情,也就是继续免费工作。文章简要提到了赞助,但对于大多数维护者来说,依赖赞助或捐赠是不现实的。
我认为避免维护者倦怠最健康的解决方案是彻底退出开源,至少对我来说,这是一个有效的解决方案。不幸的是,我必须自己达到倦怠的状态才能理解这一点,而且我花了很长时间才恢复过来(或者用我生活中其他方面的倦怠来取代维护者倦怠)。
我之前曾谈论过为什么开源对我有吸引力,也谈论过为什么我贡献越来越少,并最终退出开源。
在本文中,我想更多地谈谈导致我维护者倦怠的原因,以及在定期做出贡献并发布许多项目约十年后退出开源的原因。
那么原因是什么呢?
用户的权利和毒性
不知何故,人们总是期望你解决他们的问题或实现他们需要的功能。他们会抱怨你在上一个版本中引入的bug破坏了他们的构建,或者抱怨他们目前工作的项目需要这个不起眼的功能,如果你不迅速添加它,他们的老板就会发疯,因为截止日期已经迫在眉睫了。
人们似乎很怀念你在忙碌了一天的全职工作之后,利用空闲时间做这些项目,而且没有任何报酬。他们会要求你修复他们认为有问题或缺失的东西,然后当你不做或者做得不够快的时候,他们就会生气。
他们忽略了你可能是唯一一个从事该项目的人,你并不是一个大型团队的一员,这个团队全职负责维护该项目并解决用户的问题。
不知何故,开源成为了免费劳动的代名词,而不仅仅是免费代码,这对整个社区都是有害的,但最有害的是开源项目的维护者。
然后,就会出现各种恶意评论(见几个例子),告诉你你的软件是垃圾,你应该
自杀退出编程,所有的加一(“我有同样的问题”),所有的 ping(“有任何更新吗?”),以及其他没有任何价值的垃圾评论……
贡献质量低下
我常常觉得管理贡献比自己实现相同的功能花费更多的时间。
开源项目的拉取请求(pull request)整体代码质量通常很低,每个拉取请求都需要花费大量的时间和精力去审核,需要大量的评论和多次迭代才能达到可接受的质量。
合并一个拉取请求通常需要几个月的时间,很多请求会被放弃,或者其作者会感到沮丧和愤怒。通常有人提交了一个拉取请求,之后就再也没有回来,所以你浪费时间和精力去审查他们的代码,却毫无意义(我把这种拉取请求称为“一触即发的拉取请求”)。
人们经常提交他们想要的功能,但这些功能并不总是符合项目的愿景,或者超出了预期的范围。他们还认为接受他们的工作对你来说是免费的,而没有考虑到你需要先审查拉取请求(可能要多次),然后在合并后维护该功能(可能永远)。
对于开源维护者来说,最黑暗的时刻是十月,在 Hacktoberfest 期间,世界各地的人们向维护者发送大量胡言乱语,只为获得一件免费的 T 恤。
缺乏社区
尽管我竭尽全力让大多数项目变得实用并推广,但它们却从未流行起来。如果没有人使用你的项目,那还有什么必要费心修复错误、编写文档、搭建一个漂亮的网站等等呢?
我的上一个项目,Squirrelsong色彩主题就是一个很好的例子。我投入了大量时间来制作这个主题,我认为它比许多现有的主题更好,也足够与众不同,然而,似乎只有我一个人使用。
我最受欢迎的开源项目React Styleguidist在 GitHub 上拥有超过 1 万颗星,然而,我却无法围绕它建立一个社区,并使其自给自足。这个项目太大了,一个人无法构建它,也无法管理问题和拉取请求。
这些年来,我在各种项目中做出了一些不错的贡献,但大多数时候都需要我进行大量的协作。有几个人有兴趣维护我的一些项目,但他们同样需要我提供大量的指导,所以我感觉这并没有节省我的时间和精力。
应该有足够多的人积极参与项目,以响应问题、审查拉取请求并开发新功能,因此即使其中一些人
被公交车撞到现在没法继续做项目,它还会继续。但实际上,如果我不做所有事情,项目就会完全停止,问题就会开始堆积。
缺乏补偿
维护开源项目就像其他工作一样,是一项艰巨而艰巨的工作。不同之处在于,我们通常从事其他工作才能获得报酬,但开源项目却不会。很少有开发者能够靠开源谋生(或至少赚到大笔钱),对我们大多数人来说,这只会带来挫败感。
我开源工作赚到的最多的钱是通过 Open Collective 为 React Styleguidist做的。这笔钱勉强够我偶尔买一包贴纸。目前该项目的月预算是 8 美元。
我尝试过GitHub 赞助商,但没有任何结果,除了 GitHub 本身一次性捐赠的 550 美元,但在同一天被神秘取消了。
每个项目的 readme 上都有一个“请我喝杯咖啡”的按钮,但我好像从来没在那里喝过一杯。(不过我从 Unsplash 买过一些咖啡,但考虑到我的照片在那里下载量超过 150 万次,这算不了什么。)
缺乏工具
开源维护者必须处理两个工具问题。
首先,典型的开源项目开发所涉及的工具的复杂性:
- 以许多人可以使用的方式发布JavaScript 代码(不能谈论其他语言——我的大部分工作是 JavaScript 和 TypeScript)非常复杂,而且情况越来越糟。
- 依赖项升级通常需要很长时间,如果您有多个项目,它可能会变成长达一年的冒险(我甚至制作了一个工具来帮助解决这个问题)。
- 一般来说,配置的数量(TypeScript、linters、bundler、发布、依赖项、测试、持续集成、变更日志生成等等等等)很快就会失控。
其次,GitHub 可以采取更多措施(总比什么都不做要好)来保护其用户免受恶意人士的侵害。例如,GitHub 可以:
- 检测有害评论,并自动删除它们,或将其标记为需要手动审核。
- 删除垃圾评论,并将加分转换为赞同的反应。
- 对发表此类评论的用户进行教育,教导他们更好的行为,如果他们不想改变,就禁止他们。
- 明确项目状态:明确项目是由公司支持还是由某人在空闲时间维护。
我不得不忽略 GitHub 上许多项目的任何活动,以避免人们一直提及我。
结论
为了让开源健康发展,我们必须做出一些改变,但目前我不想参与其中。我不想帮助企业用免费代码赚取数百万美元,却只收到粗鲁的评论,而不是任何形式的认可。
最糟糕的是,情况越来越糟,而不是越来越好。
现在,我把我的开源项目视为个人项目,只是碰巧代码是公开的。将代码保存在 GitHub 上并使用 npm 在多个项目之间共享代码非常方便。我只在需要的时候添加自己需要的功能。我不会收到这些项目任何活动的通知。我很少查看问题或拉取请求,也几乎从不回复它们。
也许我应该彻底禁用这些问题,或者添加一条注释,说明这些问题可能会被忽略,通过分叉代码可能会更容易成功。我想,我仍然希望项目有一个供用户报告错误的地方,以便其他用户可以提出解决方法。
我已经写了有关这些问题的可能解决方案。
如果您喜欢这篇文章,请订阅我的时事通讯。
鏂囩珷鏉ユ簮锛�https://dev.to/sapegin/why-i-quit-open-source-1n2e