今年我从 OSCON 大会回来后,燃起了为开源项目做贡献的新热情。我参与开源项目多年了,但最近我更多的是作为一个爱好者和布道者,而不是一个亲身参与开源社区的贡献者。因此,我开始思考下一步该做什么。当我之前参与项目时,那是因为从用户到论坛专家再到贡献者的明确发展路径。这是一条很好的道路,但如果你只是想直接参与其中,该怎么办呢?
撒网要广
灵感并没有立即从天而降,所以我开始在网上搜索关于如何开始参与开源的资源。我找到了来自 Opensource.com、GitHub 和 Smart Bear 等网站的资源。令人惊讶的是,除了编写和记录代码之外,还有如此多 不同的方式可以为项目做贡献。
在您对各种为各种开源项目做贡献的方式进行初步研究之后,花时间评估哪些项目可能适合您。 OpenHatch 是一个很好的资源——就像一个为您技能和目标量身定制的配对服务。
在查看各种项目时,首先要仔细观察围绕它的社区。确保它是 健康且活跃的。没有什么比选择投入时间和精力,却发现 项目在您眼皮底下停滞不前 更糟糕的了。社区有多活跃?仓库是否发布提交统计信息?只要他们活跃,一个小团队也可以是一个非常可行的项目。他们是如何跟踪问题的?他们是否标记了初学者可以修复的问题?他们是否记录了如何做出贡献?如果一个社区正在努力吸引人们,您可能会作为新手找到更多支持。是否有邮件列表?IRC 频道?Google 论坛?论坛?在您加入之前,如何感受社区的氛围?
与社区取得联系并进行测试。看看事情如何发展,问题如何得到解答。开始可能会很尴尬和可怕,如果您跳入一个指导方法不太周到或采用“Perkele 管理法”的社区,您可能会遇到一段艰难的时光。一份关于社区和项目健康状况的良好报告卡将帮助您保持兴趣并获得个人发展。
墙上的镜子,墙上的镜子
既然我已经掌握了如何评估一个社区,我就需要评估自己。我放下自我,反思我有哪些技能可以提供,我真正想从项目中获得什么,以及我愿意投入多少时间。尽可能诚实地回答这三个问题,您很可能会找到更好的匹配。这些是在投入到一个活跃且健康的社区之前必须回答的三个开放性问题。
就时间而言,成为一个成功且活跃的贡献者很容易消耗大量的空闲时间。因此,请确保您清楚地了解自己可以花多少时间。贡献您的空闲时间也可能是一种精神消耗,因为您可能会开始觉得您总是“在工作”,尤其是在您使用与工作中相同的技能时。尝试将这样的项目视为一种新的爱好:它可以像您希望的那样包罗万象,也可以不包罗万象,但您需要承诺每周花费几个小时,否则可能不值得。您还需要对您的新爱好需要花费多少时间做出合理的估计。如果您预算每周 4 小时,但您需要每周花费 6-8 小时才能在 IRC 上潜水赶上进度,那么您就会有时间上的赤字。这种不匹配会削弱动力和乐趣。
贡献与您的 $DAYJOB
如果您希望在工作时间参与开源项目,请首先与您的经理交谈。您需要确保与您当前的雇主没有利益冲突,并且您希望让他们了解您正在做的工作,以学习新技能和/或练习您正在磨练的技能。让您的雇主同意花费他们宝贵的时间(记住,他们付钱让您为他们工作)来为开源项目做贡献并不难,您只需要提出正确的论点。这对他们有什么好处?良好的媒体报道?员工技能的提升?从大局着眼,但要知道这里存在权衡,您需要正确地构建这个提议。
在我的公司,我的老板和我设定了我将花费在该项目上的时间。我的老板提出了为项目贡献设定优先级的想法,因为我为公司做的很多工作都是由中断驱动和工作量突增的。将我对项目的贡献作为我工作的一个明确部分,使我和我的雇主不仅可以了解花费的时间,还可以了解产生的影响。这也意味着如果我有截止日期,我可以灵活地暂时提高优先级。如果我必须暂时保持无线电静默一段时间,而不会消失得无影无踪,我也可以使用这些标准与我正在合作的团队沟通。
在我们确定了我的期望之后,我的老板询问了我将承担什么项目。我具体会做什么?我对项目的贡献将如何帮助公司的战略方向和使命?我在开源社区中的行为可能会如何反映公司形象?将您的商业形象与您的个人在线生活分开可能很困难,因此雇主可能会对您可能反映他们的形象很敏感。详细讨论这些问题,然后讨论知识产权。
释放代码
通常,作为雇佣条款,公司拥有您在工作时间和/或使用公司设备所做的任何事情的权利。另一方面,一些开源项目需要通过某种协议将版权从贡献者重新分配给项目。您需要讨论这一点,以了解免除该权利的过程可能是什么样的。要记住的问题是:是否有已知的开源代码审查流程?您是开拓者吗?您的经理可以做到这一点,还是需要由总法律顾问审查该项目?电子邮件是否足够,还是需要将某些内容放入您的人力资源文件中,以便在有人不了解该协议的情况下说些什么时,您不会惹上麻烦?如果您在政府机构工作,可能会有处理此类发布的政策和办公室。
技能
在我的日常工作中,我处理企业系统架构,使用云、配置和系统管理、操作系统等——所有这些都处于熟练的用户级别,而不是开发人员级别。因此,我可能会在基础设施设计和维护方面为项目提供帮助。我每天都使用 Linux,并且仍然做大量的脚本编写,所以我的 bash 技能非常熟练——我不是 bash 超级巨星,但还不错。从更“正常”的编程角度来看,我的 Perl 和 TCL 生疏了,可能都生锈了。我对 Python 还行,可能只是中等水平,当我需要 bash 以外的东西时,Python 一直是我的首选。因此,也许是一些使用 Python 或基于 Python 的东西。我也写很多东西。我做演示、教学课程、博客、咆哮、带有工作流程指南的参考架构。文档和操作指南是为项目做贡献的好方法,而且常常被忽视。
目标
开源项目给人的印象是“挠痒痒”,这在某种程度上是正确的。挠痒痒的看法来自于开源项目的志愿性质。为了保持贡献,您需要保持兴趣。个人在一个项目中的这种动力水平是关键,因此我为什么要贡献与如何贡献同样重要。贡献的明显原因是为了成为摇滚明星!我想成为在会议大厅里走来走去,每个人都在谈论的那个人。好吧,也许不是。但获得认可是一件好事。因提交补丁而获得大家的赞扬感觉很好。而且,我只是想贡献力量并提供帮助。我相信开源,支持开源信息的最好方法就是做一些事情。我站在观众面前传递信息,但贡献是关键。尤其是当您找到一个您相信的项目时。项目依靠贡献者的支持生存,无论有多少用户和多少媒体报道。我也参与其中是为了学习和磨练一些技能。我通过实践来学习,如果我想润色一个信息,我就需要传递它。如果我想提高 Python 水平,我就必须编写更多的 Python 代码。
自我检查
希望您对如何开始寻找要加入的开源项目有了更好的了解。在某种程度上,这与一个活跃的社区有关,但同样重要的是要清楚您可以并且愿意贡献什么。接下来,我将研究如何将这种评估过程应用于一些开源项目。请继续关注,了解它运作得如何以及我选择了什么!
8 条评论