本文讲的是为什么我还没 Fix 你的 Issue,
你好,你在 GitHub 上的项目中提出的一个问题,现在已经过期了。
我早就体会到了 GitHub 的亲切,它可以给我发送一封我在两周前早晨时扫过一眼的关于你的相关信息的邮件。从那以后,我已经简单地想过了几次,有一次我在淋浴的时候,我得到了一个模糊的想法,我知道是什么造成的 —— 但我不确定,因为我不记得具体细节。
当然,你不知道这一切。你想知道你的问题是不是已经沉没无效了 —— 这对你当前的项目可能至关重要 —— 你已经被困在其中了。请允许我用几分钟解释你为什么没收到我的回复。
几年前,我是一个自由职业者和一个新生儿的父亲。我有很多自由的时间,让我做事更加灵活,我的小孩因为很小,不会到处乱跑,这也让我不用太费心。那时我开始写相关的编程库并在 GitHub 上发布。看到人们使用我的代码是很令人兴奋且感觉付出得到了回报。在 GitHub 上收集星星是一个会上瘾的乐趣,就像任何其他类型的“虚拟互联网点数”一样。我有足够的时间来处理问题并做相应的改进,我一般会在一两天之内回复(并经常解决)问题。
现在我的工作是全职的。我有一个年龄很小的孩子,还有另一个大一点的孩子。小孩既不温柔也不固定。如果我很幸运,我可以能够有一个小时的空闲时间 —— 一般在晚上 9 点到晚上 10 点之间。
你知道在这段时间里我喜欢做什么吗?很不幸,我的答案不是「启动我的 IDE,建立管道,启动一个本地的服务器,并尝试修复别人的问题」。我不是要谴责,我只是说实话。我疲惫的夜晚,大多数时间都难以胜任这项任务。通常我喜欢坐在沙发上,享受坐着的感觉。
那么,这会有什么影响呢,我的编程库的用户?我不再在乎你遇到的问题了吗?你是否因为在你的项目中使用我的编程库,而使公司失败了?在这个自由和开放源代码软件(FOSS)的世界中,我们都生活在这样的环境下,你公司的产品中有多少部分与一些独立的、无偿的软件包维护者的生活方式和优先级联系在了一起?这也是我必须考虑的事情 —— 在我的一天工作中,我在许多 FOSS 库之间构建软件,其中许多都可能在类似情况下由我自己维护。
与生活中的一切一样,涉及到权衡。有一个隐含的协议,需要被 FOSS 项目的消费者和创造者所理解[1]。它是这样的:
- 我同意免费为你提供一些解决问题的代码。
- 我承认,在这样做的时候,我为我的代码的用户承担了一小部分的责任。
- 如果你难以使用我的代码,我同意尝试帮助你。
- 我同意尝试修复你在我代码中找到的错误。
- 你同意,我无薪酬付出但是有权利按照我的意愿给上述几点分配优先级。
最后一点就是为什么我还没有解决你的问题的原因。你的问题正在与我的工作、我的家人、我的其他兴趣,当然还有所有其他需要解决的问题堆在一起,我需要按照优先级来完成。
所以,我想对所有 FOSS 项目的用户,以及使用和受益于 FOSS 生态系统的所有开发人员说:
我会尽全力去解决。我真的想帮你。
请认真阅读 issue template,并按照这种更容易让我明白的方式提问题。
你需要花时间了解、研究和调试你的问题 —— 不要把这个负担推到我身上。
你要明白我不一定会在看似非常合理的时间内回复。你也尽量别做那个非常粗鲁、侮辱别人的人(我不会因为你的行为而更关注这个问题)。
感谢你的阅读,编程愉快。
- 本协议适用于以某种方式进行推广的项目。如果你告诉人们“嘿,你应该使用我的东西”,那么你已经和他们签订了这个协议。如果你仅仅是把你的东西放在 GitHub 上,那么它不一定适用。