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