介绍一下我自己
目前就职于eBay中国,专注于微服务中间件,分布式架构等领域,同时也是狂热的开源爱好者。
如何成为一个commiter
过去几个月,我一直持续在为 Apache DolphinScheduler 项目贡献,也在最近收到了社区 PMC 的邀请,成为了 DolphinScheduler Committer, 这意味着过去一段时间我的贡献在社区中得到了大家的认可。一路走来,听过不少的分享,也获得过不少的帮助,本文结合我自己的体会和一些其他大神的总结,希望能够帮助更多人更好的参与到开源社区。
开始参与开源
万事开头难,但对于参与开源贡献来说,其实并没有那么难,需要的只是一次勇敢的尝试。
翻了翻我在 DolphinScheduler 的提交记录,我的第一个 pr 是删除一份无用注释,多么简单的一个任务,很多人可能根本不屑于做。但确实因为这个 pr,帮助我进入了开源的世界。很多社区中赫赫有名的人在分享他们刚开始参加开源贡献的时候,都是从一些很简单的事情着手,例如增加一个单元测试、参加一个 issue 的讨论或者参与一次版本 Release 投票。这些事情很简单,不会耗费我们很多的时间,但是却可以快速的帮助我们去熟悉一个社区的运作方式,也可以尽快的让社区中的人注意到你。
提升贡献值
Apache 社区非常重视一个人的贡献值, 一个人在社区中的贡献值越高,那么他在社区中就应该拥有越高的声望。
贡献可以是提交代码、修改文档或者参加公开的分享等多种方式,只要是遵循社区的准则,为社区的发展有帮助的行为都可以算作贡献。虽然贡献不分高低,但是参与一些重要 feature 的开发和困难BUG的修复往往能更快的增加你的贡献值,也更容易在社区中获得大家的认可。
因此,当我们进入社区一段时间之后,可能对一些普通的问题已经轻车熟路了,那么这个时候不妨多花时间在一些更深层次的问题上,这样不仅对提升自己的能力更有帮助,也能更好的帮助社区往前发展。
Communication over code
Apache 社区有一个非常著名的准则 "Community over code",意思是社区大于代码,Apache 社区认为维护一个健康可持续的社区比公开一份功能强大的代码更重要,这也是一直以来非常吸引我的地方。
在我刚加入开源贡献者的队伍中时,和很多人一样,觉得代码就是一切,一个项目的好坏由代码直接决定。但是随着越来越深入地参与,我慢慢发现,对于一个大型的多人异步协作的项目,有效沟通远比写代码重要得多。当我们有一个好的想法时,我们首先应该做的不是立刻开始实现这个想法,而是需要通过与社区进行沟通,征求社区的意见:一来、可以看看社区中是否有其他同学对此感兴趣,可以寻求其他小伙伴共同完成任务。二来、借助社区的力量来帮助 Review 我们的想法,还能及时的进行查漏补缺,避免出现写了一大堆的代码,最后发现自己在一开始就错了。在与社区进行确认之后再开始开发代码或书写文档,能够起到事半功倍的效果。
同时,参与日常的沟通讨论也是提升自己活跃度最简单的方式,在初入社区的时候,我们往往由于不自信,不愿意去参与邮件列表中的讨论,认为开源社区高手如云,自己如果说错了会全世界丢人。实际上,如果总是害怕犯错误,很难能够得到进步。当我们对于当前讨论的话题有自己的想法的时候,一定要勇敢的说出来,只要是经过思考得出的想法,最后都会得到社区的尊重和重视。
非常推荐大家参与项目的 Release 投票讨论,因为在这一过程中,你能最方便的知道当前版本的一些改动,同时,这也不会耗费你很多的时间。
如何成为 Committer
虽然 Apache 社区对于 Committer 没有要求必须要做出很大的贡献,但是要想成为 Committer,需要有看得见的贡献值和在社区中保持一定的活跃度,贡献值和活跃度都需要时间的积累,需要长期的投入。大部分同学应该都和我一样,白天在公司里需要完成工作上的事情,只有下班之后才能参与开源项目,因此保持热情和平常心尤为重要。
很多小伙伴往往由于一时兴起,或者在别处听说了某个项目,于是决定参与进来,而经过一段时间的浏览之后,最初的热情慢慢褪去,渐渐的自己也从社区中离开,没有达到最初的目的。我的建议是,从自己的兴趣出发,找到项目中自己感兴趣的模块,多思考项目中当前的设计是否存在问题,有没有更好的实现方式,保持好奇心可以很好的维持兴趣。
在开源贡献的过程中,免不了会收到反对的声音,保持平常心去看待问题。当我们精心设计了一个方案,最后收到别人的质疑的时候,不要因此而止步不前。一方面这其实是一件好事,说明我们的想法被更多的人知道了,另一方面我们需要先从自身出发,问问自己的方案是不是确实有问题,积极的与对方进行讨论,努力说服对方,这其实也是锻炼自己的好机会。
成为 Committer 并不是一件遥不可及的事情,只要坚持持续地为项目贡献,得到大家的认可,终将会有收获。
写在最后
在参与开源的过程当中,我也获得过很多人的帮助,在这里要特别感谢 CalvinKirs、dailidong 还有社区中的其他小伙伴,你们对开源的热爱和投入都深深的影响了我,没有你们的帮助,我无法进入到开源的世界。我也会继续坚持投入到开源社区中,贡献自己的一份力。