资讯详情

如何成为一个合格的ASF贡献者?

本文由 ASF Member 孙金城(金竹)分享,上一期我们介绍了Apache 本期作者将根据个人经验分享如何参与软件基金会的组织结构和运行机制 Apache 项目并成为合格的贡献者。

事实上,每个人都有不同的机会参与社区贡献,但只有两种:

  • 偶发事件 - 因为参与了某项工作,别无选择择,只能参与开源项目。(我就是这样,自然会跟着。 蒋晓伟 老师踏入了 Apache Flink 之旅)
  • 因爱而求 - 每个码农都有一个梦想,他们希望自己的代码应用于世界各地!实现这一梦想取决于开源的力量,ASF 它可以为你创造实现梦想的最佳环境。

也许你现在既不需要工作,也不需要对开源有任何爱。但了解一件事并没有坏处,了解参与开源的好处,也许你明天就开始了开源之旅!

  • 顺势而为

如果你是码农,参与开源是一种 must to have 的事情,目前开源领域形式大好,各大公司纷纷拥抱开源,比如:Google,Alibaba,Hortonworks, Tencent, Facebook 等等。参与开源无疑扩大了生存空间。

  • 业界身份证

参与开源就是一点一点描述你的行业身份证。你的开源贡献可以在世界各地公布,从一行代码、一句文档到成为项目经理(PMC 成员),到成为 ASF Member 甚至 成为董事会成员,就像你曾经为之努力的学士、硕士、博士一样被世人认可!毫不夸张地说,有些情况甚至比学位证书更实用!

  • 无国界导师

参与开源的另一个特别重要的好处是,你可以在你关注的领域找到最好的导师。所谓最好,不是牛,最好是最合适的!所谓三人行,一定有我的老师。一开始,你会觉得自己无法与业内的牛沟通,因为他的一句话需要分解成十句才能无知甚至无知!这不是牛的原因,也不是你的原因,是牛对你的水平缺乏了解,即使牛理解你的水平,也很难让牛把一个词分解成十个甚至一百个词来讨论你关心的问题,不是牛不想,更尴尬:)。因此,要找到门当户对 社区水平略高于你,你也可以给一些反馈的贡献者长期的沟通。目前ASF 有 7600 的 Committer,即使是某个项目,也应该有几十个 Committer 和数百个贡献者,总会遇到能和你一起进步的小伙伴!虽然从未见过面,但已熟如亲朋好友!

  • 全球性分享

目前 ASF 该项目有140多个领域,参与者覆盖230个国家。如果你有一点成就,想与更多的人分享你的知识,并使用开源知识来帮助更多的人,那么毫无疑问 ASF为您提供这样的平台!为什么你不能成为上述无国界导师的导师呢!

  • 最佳实践

不知 - 了解 - 有方案 - 最好的解决方案是开源是智慧的集结,一个功能可能有几十种实现方式,这不是一两个人或一个小团队可以考虑的 (ALL) 是的,然而,在开源问题上,你可能会考虑世界的某个角落,其他人或团队可能会考虑解决方案。当你分享解决方案时,智慧的火花就会产生!

  • 领导力塑造

ASF 有公司和项目的治理方法。无论你是否是一名(技术)经理,你都有机会参与开源贡献,挖掘自己的领导力。TL,可以是 Team Lead,也可以是 Tech lead,作为码农,往往是对的 Tech lead 情有独钟!始终遵循开源贡献 正确就是支持,正确就是坚持!如果你一直在社区发表自己独特的见解(管理)&技术),那么它必然会塑造你独特的领导力,社区领导力是内在驱动的影响,所有的支持者都没有外部压力,没有情感偏见,从内心的崇拜和赞扬!如果你能取得这样的成就,你将比你的职业晋升更好。当然,这也会促进你的职业晋升!

  • 给世界带来微小而美丽的变化

不以善小而不为,小善举大美!有时候一个文档优化,甚至一个 typo 成千上万的人上万的人受益。更有趣的是,许多开源贡献者从文档贡献开始 :)据有趣统计,28%的开源贡献来自偶然的文档改进。

Casual contributions are far from being trivial. After a manual inspection of a sample of casual contributions, we found that although 28.64% of them are related to grammar and typo fixes.

没有规则,就没有方圆。如果以上原因足以打动你,我会给你一些参与开源的原则:

  • 给世界带来微小而美丽的变化

始终坚信滴水成河的道理,社区贡献在于积累,坚持是最重要的,不是因为善小,任何贡献都会让社区变得更好!

  • 公开沟通

参与开源的一个重要原则是公开沟通。任何问题,无论大小,都应该以任何感兴趣的人可以追溯和咨询的方式进行讨论。例如:电子邮件列表,JIRA上,PR 中等。记住不要单独讨论私人信件。公开讨论有助于更多的人参与,并确保在讨论过程中很容易发现和纠正一些无意识的错误。

  • 保持尊重

社区的任何贡献都是以自愿为原则的。我们不能强迫任何人做事,也不能礼貌地敦促任何人做事(除非有特殊情况)。你不能因为意见不合理而进行人身攻击。别以为这很有趣。事实上,这真的发生了!尊重是相互的。你给我春风,我给你一缕芬芳!我们努力营造一种快乐和谐的社区氛围。

  • 简明扼要

我们可以在社区大胆提问,提问!

但记得在提问前反复思考自己的问题,这是对自己和其他社区贡献者的责任!因为你的问题描述可能会被数百人阅读。写一封简洁的邮件意味着人们可以尽可能有效地理解你的意图。如果需要详细说明,请考虑添加摘要。也就是说,你的问题描述应该简洁(这与能力有关,尽你最大的努力),试着写清楚,在什么情况下,遇到什么问题,如何再现问题等等,你的描述越简洁,越清晰,越容易得到别人的帮助!

  • 前进一小步,文明一大步 :)

这可不是 WC 语言,但真正的利他原则。阿里巴巴国际化战役的一个要求是,参与国际化建设的阿里人必须用当地语言与当地客户沟通。这体现了足够的尊重,足够的服务前准备和付出!我们在开源社区的问题也是如此。我们不能遇到问题。我们不假思索地向社区提问。在提问之前,我们应该尝试各种各样的信息,查阅社区中存在的问题。同时,我们应该带着自己的观点提问,让想帮助你的社区工作者看到你在这个问题上的努力。

  • 把幸运的种子种在别人身上,你就会幸运

我们不仅仅是问题的提出者,慢慢我们自己也变成问题的解决者,由社区求助者变成社区救助员!努力寻求自己反哺开源社区的机会,为他人付出也是为自己积累!所谓 为自己照亮别人!。假如你相信来世今生,这里有一个故事与你分享:

在过去,有两个人想要转世。在转世之前,他们有机会选择是一生向他人索取的人还是一生造福他人的人。他们选择了一生向他人索取的人 乞丐,而那个选择了一生造福他人的富人!

所以做社区也是如此。努力做有利于他人的人,就是在社区德高望重,有领导力的人!

  • Never, Never, Never Give Up(永不放弃)

理想总是美好的,现实总是骨感的,参与社区的人都具备热情,耐心的品质,但社区的问题太多,需要得到帮助的人也太多,相同问题千人千面,意见不一致也是司空见惯的,切记不要以为提的问题都会很快有人帮忙,你提交的 PR 很快有人 Review。每个大的社区贡献都需要如下图所示的投票决定。也许你的贡献被接受,也许你的贡献被拒绝,但请不要太在意一次贡献的成功。无论遇到什么困难和挫折,你都应该 Never, Never, Never Give Up(永不放弃),因为马总说过 今天很残酷,明天更残酷,后天也很美好,但大多数人明晚都死了,后天看不到太阳。只有坚持到底的人才能享受到温暖的阳光!

最常见的参与 Apache 贡献的方式是选择你感兴趣的项目,因为爱好是最好的动力!我曾经用一句话描述过ASF:“ASF 是一个与阿里巴巴同龄(成立于1999年)、组织(董事会)架构管理齐全、全球(覆盖230个国家)共享软件(140个领域)技术的公益组织。 ASF 你感兴趣的技术领域有140个!

ASF 目前项目分为两类:

  • 孵化器项目 - 是正孵化的项目,也就是,在成为 ASF 顶级项目之前,需要在ASF 进行孵化,当从孵化器毕业之后就会成为 Apache 顶级项目。参与孵化器项目的好处是你能对项目有更早的参与,有多细节变化的了解,也很容易得到该项目的重视:),目前 ASF 所有孵化器项目列表请这里查阅!
  • Apache 顶级项目 - 这是已经从孵化器毕业的 Apache 顶级项目,顶级项目的运作一般已经完全符合 Apache Way。直接参与顶级项目的好处是能开始就接触很规范的社区贡献方式和更高的质量代码,有更多的学习资料和更多的参与者。目前 Apache 顶级项目列表,可以查阅这里!

一旦选择参与某个项目,不论在什么情况下,你都要听从自己的直觉,做你认为更好或者不同的事情。永远都不忘初心,坚持自己所坚持的,也永远牢记上面的原则,其中你会发现“给世界带来微小而美好的改变”非常受用。假如,你在查看文档时候,发现了某个链接的错误或者 typo 错误。假如,你在使用产品的过程中发现了问题,请不要坐视不理,径直绕开,或者向社区提出问题,等待其他人来修复,因为这正是你贡献社区的好机会,解决这些你能看到的问题,因为,在解决这个问题的同时,也许会有新的问题被你发现~~ 进而你就入道啦:)

目前 ASF 开源项目都是在 github 上面托管的。所以正式参与ASF开源贡献之前你要做一些准备工作:

点击创建,为了演示,我创建了一个“pyflink”账号 :)

点击 “Fork” 之后,会在你的 github 账号下出现一个 flink 项目,如下:

做代码贡献之前需要 Clone 你刚才 fork 的 Flink 代码到你本地,以备提交第一个社区贡献 PR!

一般具体项目会有介绍如何参与该项目的买二手游戏账号平台贡献,以 Apache Flink 为例 就有关于如果参与 Flink 社区贡献的说明, 比如:

Apache Flink is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to Apache Flink. There are several ways to interact with the community and to contribute to Flink including asking questions, filing bug reports, proposing new features, joining discussions on the mailing lists, contributing code or documentation, improving the website, or testing release candidates.

详情查阅:

https://flink.apache.org/contributing/how-to-contribute.html

社区问题大多会在具体项目的社区邮件列表里面进行讨论,所以邮件列表是了解社区动态最重要的输入,以 Apache Flink 为例,需要订阅 开发邮件列表和用户邮件列表,如下:

  • user-subscribe@flink.apache.org / user-zh-subscribe@flink.apache.org
  • dev-subscribe@flink.apache.org

首先,点击上面的 link,会引导你给 xxx-subscribe@flink.apache.org 发送邮件。然后你会收到官方确认邮件。最后你回复确认邮件之后还会收到一封欢迎邮件,也就意味着你订阅成功了!注意上面每个邮件列表都需要单独发起订阅。

OK, 到这一步你已经完成了为 Apache Flink 做贡献的准备工作了:),接下来就要寻找做贡献的机会了!

目前大多数 ASF 项目的问题采用 JIRA 管理(当然也有例外),我们以 Apache Flink 为例,当用户发现的问题可以在这里查阅。如果你发现有你感兴趣的 issue,不要犹豫,直接在 JIRA 下留言,你想帮忙解决这个问题,并 share 你解决问题的方法,这样社区会有 Committer 来与你沟通了!以一个之前我向 Flink 提交的 issue 为例 FLINK-13471:

当发现有人创建了 issue,但还没有分配给任何人,你就可以尝试帮助解决这个问题,在完成开发后提交PR。当然,如果你发现了问题,如果是你确认的小问题,可以直接创建新的 issue, 如果你对这个问题并不确定,可以在开发邮件列表里面就像邮件讨论。当确认问题之后,再创建 issue。

不论你是修复文档还是贡献代码,都建议在你刚才fork的项目中创建一个用于提交PR的分支,以我上面的为例,我会本地创建一个名为LINK-13473-PR的分支,当完成开发之后,将分支 push 到自己的仓库,就可以创建 PR了,如下:

点击“Compare & pull request”,进行 PR 创建,如下:

创建 PR,有几个值得注意的点:

  • 确保你的分支和官方 git 的 master 分支没有冲突,也就是如图显示“ Able to merge.”。
  • 要对 PR 所要解决的问题,在 Title 里面简明的体现出来,比如“ [FLINK-13471][table] Add FlatAggregate support to stream Table API(blink planner) ” 明确了 JIRA 号FLINK-13471, 模块 table 和 PR 的内容是 Add FlatAggregate support to stream Table API(blink planner)
  • 同时在详情里面要清楚的描述你改动的点,不同项目有不同的要求,但总体上保持上面提到的 前进一小步,文明一大步的原则,你写的越清楚,Review 的人越容易理解你的改动,你的PR越容易得到有效的反馈。

最后,点击“create pull request”完成 PR 的创建!不过,这还没有完成社区贡献,还需要等待社区其他贡献者的 Review。正常情况下,除非是 typo 的贡献,一般有代码逻辑的 PR 都会或多或少的得到 reviewer 的改进反馈,这时候就是学习交流的好机会啦:) 你可以尽可能的发表你的看法,解释你的设计,当然也要充分理解反馈的内容,最后根据沟通达成的内容进行PR的更新!最后达到了社区代码质量的要求,Committer 会帮助你进行代码的 Merge,这样你就完成了社区第一份贡献喽!!

常识性观念是 0-1很难,因为那是创新,那是新领域的探索,那是酝酿了很久之后的第一步!但是参与ASF开源贡献,恰恰是0-1很容易,1-100才是一个持久战。需要上面提到的 “Never, Never, Never Give Up(永不放弃)”, 因为我真的看到了很多社区贡献者在一个社区贡献了一段时间之后,如果没有拿到自己想要的结果,比如成为 Committer,就会永远的在这个项目贡献里面消失了,Give Up 了!这不是危言耸听,这是真实的现实!

所以在 ASF 开源贡献的道路上,的确有很多人被马老师的话所命中:“今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,看不到后天的太阳”。所以,你…准备好了吗?:)

不论做人,做事还是社区贡献,很多道理都是相通的,在下面的 ASF 金字塔中,我们从 贡献者 到 董事会成员的路是漫长的,如果你天天想着什么时候成 Committer,什么时候成为 PMC 成员,什么时候成为 ASF Member,什么时候能够当选董事会成员,我确信,在 ASF 开源贡献中,你将无法做到 “快乐工作,认真生活”!过急的目标驱动会增加你的烦恼,相反,登山而不思山顶攀登,将会迎来一路的惊喜!所以在参与开源的开始,我最后的建议就是:“但行善事,莫问前程”!加油。

我相信在 ASF 开源贡献之旅,你会有很多次要放弃的念头,你会遇到很多怀疑自己的时刻,你会时不时的怀疑社区管理者是否有问题?总之,如果你想把它当作一生的乐趣,在你没有找到乐趣之前,你一定需要下面的三句话:

  • 给世界带来微小而美好的改变
  • 把幸运种子种到别人身上去,你才会有幸运
  • Never, Never, Never Give Up(永不放弃)

你参与社区的目标是为了尽自己微薄之力,来让 ASF 开源社区更美好!

你参与社区的信念是为其他人播撒幸福幸运的种子,你并没有在乎得到什么回报,你相信“因果”!

你参与社区的坚守是永不放弃,因为只要我在前行,必将抵达彼岸!永不放弃要深刻你脑海!与大家共勉~

本篇为大家介绍了参与开源的利好、原则、以及介绍为自己的第一个社区贡献需要做怎样的准备。最后,我目前在负责 Apache Flink 的 PyFlink 建设,诚挚邀请想参与 ASF 社区贡献的你,以 PyFlink 作为你的开源之旅的首站!

标签: 微压压力变送器留言

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台