我们人类是社会性动物,而且我们非常聪明和先进,所以我们不需要阅读关于如何参与开源的文章。另一方面,猫咪在社交方面比较笨拙,有时冷淡,有时又过于敏感,还有点容易受惊。当猫咪试图参与开源时,它们常常表现得过于强势,或者因为不愉快的经历而受到惊吓,或者无法正确沟通。

这篇文章是为有兴趣参与开源的猫咪而写的,但由于猫咪不识字,你应该大声朗读给你的猫听,特别是如果你的猫咪对电脑表现出兴趣的话。
抓挠柱和错误报告
如果你想在现实生活中完成某件事,通常的请愿过程是这样的:找到一个人,朝他们喵喵叫,抓挠沙发,把东西从架子上碰下来,总之要一直制造麻烦,直到他们停止正在做的事情来满足你的要求。
在软件开发中,当试图让一个闭源应用程序改变一些对你不起作用的东西时,这些也是有效的策略。你在社交媒体上发帖,你在发布者的论坛上抱怨,你威胁说除非他们按照你的意愿去做,否则就停止购买他们的产品。你甚至不必真的付诸行动,因为发布者可能主要从企业客户那里赚钱,而且不会回应你。
然而,在开源软件中,这个过程完全不同。
首先,你在项目使用的任何错误跟踪器上提交一个错误。有些项目使用自己安装的正式错误跟踪器,如 Bugzilla 或 Mantis。另一些项目则使用 GitLab 或 GitHub 中的问题跟踪器。

opensource.com
如果你已经为你的问题编写了一个解决方案,请附上补丁。就这样,你完成了!你刚刚成为了一名开源开发者,这对一只猫来说真是令人印象深刻。
如果你没有代码修复,请跟踪你的错误的进展。仅仅因为你提交了一个错误报告,并不意味着项目开发者会自动同意你对问题的评估,或者他们会突然找到时间来修复它,所以要有耐心,并准备好沟通。最重要的是,要诚实。如果一个开发者说他们已经根据你的反馈更改了应用程序,并要求你测试更改,但你不知道如何安装更新,那就说出来。这不是一场竞赛,这是一个讨论论坛。开发者可能没有时间一步步地指导你完成这个过程,但至少他们会知道不要依赖你来获得关于修复的即时反馈。
你刚刚成为了一名开源开发者,这对一只猫来说真是令人印象深刻。]重要的是要知道,提交错误和提供反馈是一种重要且意义重大的贡献形式,因为坦率地说,这是一项艰苦的工作。浏览错误跟踪器,注册账户,跟踪未解决的问题,对不同的观点保持耐心;这绝非易事,但它为开发者提供了反馈和数据,并且非常受欢迎。如果你这样做,你就是一名合法的、成熟的开源 QA(质量保证)贡献者。

也许你正在寻找一些更持久的东西,一个可以称之为家的地方。如果你正在寻找一个真正可以投入精力的项目,那么预先投入努力是明智的。
勘察你的领地
现在,无论你是否在寻找,找到一个好的开源项目都不难。随便看看 GitLab 或 GitHub 就能快速得到结果。
使用开源通常会提供参与开源的途径。关注你使用的项目,你肯定会发现他们需要的东西。无论是推广、艺术作品、wiki 或网站维护、文档编写还是代码编写,总有事情可以做。
你 可能使用了很多开源软件,而且你肯定可以在互联网上找到大量的软件。那么你应该为哪个项目做贡献呢?你如何决定呢?
研究你的目标
就像你研究蟋蟀、老鼠、其他猫和人一样,你也必须研究潜在的开源项目。

有很多很棒的项目,每个项目都有令人兴奋的社区。它们中的大多数都非常热情好客,他们对项目的热情可能会具有感染力。
但因为你只是一只猫,而且你一天中的大部分时间都在睡觉,所以你不可能加入每一个项目并成为贡献成员。
通过经常访问开源项目的邮件列表、错误报告和论坛来了解其社区。了解关键人物,看看他们如何对待彼此和他们的访客,并自己决定他们的行为是否符合你的价值观。
从小礼物开始
对于那些最早设计和编写应用程序代码的人来说,天生就有一种熟悉感和信任感。那些从项目一开始就参与其中的人自然而然地成为项目社区中值得信赖的成员,这不仅是因为他们投入了大量的时间和精力,还因为他们仅仅是一直坚持了这个项目,无论顺境逆境。
你可能渴望融入一个项目,但你必须表明你心中有它的最佳利益,并且你会坚持一段时间。

你对开源项目的首次贡献可能很小且大多是随意的。一只死(或半死不活)的老鼠或鸟放在门口,对你来说可能看起来是一个好的开始,因为你是一只猫,但更有用的是修复文档、小的补丁,或者,如果你是一位训练有素的程序员,那么可以处理两年前提出的增强请求,而这个请求一直被忽略,因为有更紧迫的事情需要处理。
小的贡献不仅表明了帮助的意愿,还表明了你帮助的能力,这对任何项目来说都是最重要的。对于每一个做出实际提交的贡献者来说,有五个人会走进 IRC 频道或问题跟踪器说他们想提供帮助,但从未这样做。
诀窍是
- 倾听需求。
- 宣布你打算做出更改。
- 做出更改。
- 提交你的更改。
重复几次,最终项目的参与者会开始将你视为可靠的贡献者和他们社区的积极成员。通常没有入会仪式,所以如果你是一只薛定谔的猫,不要害怕明确地宣布自己是该项目的一部分。了解社区的其他成员,并与你正在帮助维持的项目一起成长。
应对拒绝
有两种类型的拒绝:肉体上的拒绝和软件上的拒绝。
肉体上的拒绝就像变质的猫粮:远离它,否则会让你生病。如果你因为个人原因在一个项目中遇到不愉快的经历,退后一步,回顾一下你接近项目的方式以及你呈现贡献的方式。如果你觉得你做的一切都对,但却受到了不好的对待,那就快点走开。无论项目多么重要或有影响力,都不值得忍受虐待。
另一方面,基于代码的拒绝非常频繁,以至于它实际上是意料之中的。特别是在你的最初贡献中,你给项目的东西很可能不是项目想要得到的东西。也许你的编码风格与现有代码不匹配。也许你的文档修复的语气不合适。也许你弄错了什么。也许维护者不想承诺自己支持你的添加。有很多因素可能导致拒绝。这种拒绝并不意味着你没有贡献。这只是意味着你的贡献没有被合并到主分支中,但它仍然是一种贡献。谁知道呢?也许你的贡献会被维护者重写并以某种方式添加进去,或者也许你的贡献迫使人们关注项目中一直被忽视的领域,或者也许它会在以后添加,一旦你证明你打算坚持下去以支持你添加到代码库中的内容。
在概率游戏中,拒绝是一件好事。以你接受合并分支的同样优雅姿态接受它,然后将注意力转向你的下一个贡献。你应该擅长这类事情;毕竟,你是一只猫,所以你总是四脚着地。
像猫薄荷一样的开源
一旦你开始贡献,下一步就是学习更多并再次贡献。开源最大的吸引力之一是它没有上限;你可以不断学习新技巧,构建更好的东西,而且你永远不会用尽可能性。它就像猫薄荷一样。你会爱上它的。

本文于 2020 年 3 月更新。
6 条评论