今年我从 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 代码。
自我检查
希望你对如何开始寻找要加入的开源项目有了更好的了解。部分原因是活跃的社区,但同样重要的是要清楚你可以并且愿意贡献什么。接下来,我将研究如何将这种评估过程应用于一些开源项目。请继续关注,了解它的效果如何以及我的选择!
8 条评论