随着社区正在努力准备Apache Spark的下一版本3.0,您可能会问本身“我如何参与其中?”。如今的Spark代码已经很庞大,所以很难知道如何开始本身作出贡献。Spark PMC & Committer Holden Karau以开发人员为中心,教你如何为Spark社区作贡献,逐步发现好的问题点,格式化代码,寻找代码评审者以及在代码评审过程当中指望获得什么。除了如何编写代码以外,她还探讨Apache Spark作出贡献的其余方法,从帮助测试RC(Release Candidate)版本,到进行全部重要的代码评审,错误分类等等,也包括例如回答别人的技术问题。html
Apache Spark社区已经有大量中国人的身影,在国内也经常有开发者线下聚会研讨,本文末尾也有示说网参与的上海和杭州地区Apache开源社区活动(彻底免费),能够了解目前开源技术社区的前沿动态。git
文末能够查看Holden演讲视频(含中英字幕),如下为PPT原文截图和核心要点整理,但愿对如何贡献Apache Spark开源社区的同窗有必定启发。github
本文是基于Holden Karau在2019年Spark Summit EU上的分享视频整理而成,按照Holden本身的说法,不表明Spark PMC的观点,(虽然Holden是Spark PMC & Committer),仅仅是她我的的建议和见解,供广大开发者朋友参考。apache
主要讨论以下几个方面:编程
做为Spark的PMC,她认为你可能有以下几个缘由,期待可以给Spark社区作出贡献:app
如何向Spark作出本身的贡献?分布式
固然,每一个人对于Spark的熟悉程度不同,这个和每一个人的工做内容及兴趣有很大关系,Holden列举了相关的工做涉及到的具体内容和问题。ide
假如你但愿能从直接为Spark贡献代码:函数式编程
既然已经下定决心要为Spark作点代码的活,那么先了解一下Spark 3.0目前的模块。函数
开始以前你还须要了解,Spark的任何改动,都会关联一个JIRA的Issue,你得先注册JIRA,而后关注JIRA上面的Spark社区动静。这个不是Spark独有的,貌似基本上全部的Apache开源项目都是经过JIRA来跟踪各类问题。
基本上JIRA里会包含别人发现,或者计划要作的那些事,若是你想修复一个bug或者增长新的特性,先查查JIRA上有没有人已经提了相似的Issue,若是没有,那很好,你能够建立一个JIRA,而且告诉别人你已经着手作了,固然,你也能够挑一个别人没有着手作的Issue,本身先干起来,固然,干以前你须要在Issue里留下点文字,告诉其余人你已经在作这个共组了。
JIRA里不太适合分配任务(一般这是committer们的活),也不太适合把很长的设计文档放到上面,更好的作法是,把设计文档用google doc来作,而后再JIRA相关的issue下,粘贴如下设计文档的连接,在国内的朋友,你可能还要多一个“fq”用Google Doc的步骤。
在JIRA中,找个简单适合初次贡献Spark代码的小技巧。
还能够在代码中grep一把,看看代码里留下的“TODO”注释,或许你能够从中找点灵感。
大的Spark特性或者改动,须要先提交SPIP(Spark Project Improvement Proposals),会有不少熟悉相关模块的committer和contributor参与到这个修改建议的讨论,等代码都打成默契了,再来决定谁来干,怎么干。
你得熟悉github的玩法,视频原文中有详细的介绍。
怎么编译spark,这里比较简单,实际上的编译工做会涉及到不少的环境参数,还得fq,这个很重要。
若是修改代码可能有点难,也能够先考虑修改文档,文档中的错误老是特别容易出现,并且,一旦修改好后,老是很快会被合并到代码主干。
文档的生成工具
找一个你擅长的开发工具和Spark模块。
测试。。
代码写好了以后,是否符合spark社区的代码规范呢?http://spark.apache.org/contributing.html#code-style-guide 对应有Scala/Java/Python/R等语言的规范,还有Spark社区本身的规范。
MiMa是验证二进制兼容性的工具,确保在不一样版本间API的兼容性获得检测,固然这玩意比较敏感,有时候API不兼容是实现设计上的改动,特别是3.0 API的出现,确实会有不少东西和之前不兼容了。
好了,当你已经完成代码改动和测试,终于能够提交PR了。提交以前还有些步骤,报名PR的名称规范,视频原文有演示,有一个网站不要错过:https://spark-prs.appspot.com/ (很不幸,还得fq)
代码PR已经建立后,会有代码评审环节,参与代码评审的人,也是值得尊敬的,是每一个contributor成长和帮助别人成长的过程。
找到合适的人帮你评审代码,一般最后把关的是Spark的Committer们,固然不是每一个Committer都熟悉全部的模块,须要找对合适的人比较重要,你能够@相关模块的活跃committer,他们一般都会很热心的回复你。
终于到了著名的:LGTM / SGTM,你离代码合并又近了一步。
实际操做PR的一些小建议
固然,PR不少时候是没有办法被合并的,缘由和理由有时候会比较难以启口,任什么时候候都不要沮丧。
代码设计上每一个人都有本身的思考和想法,慢慢积累本身的思考,深刻了解Spark社区对于代码的规则和要求,你会进步很快的。
固然,有些问题可能和你没有关系,或者committer们太忙,或者jenkins不工做了,或者jenkins不帮你的PR作自动化测试了,大胆的ping committer们。
以人为本,共建和谐社区!如下是各类小建议:
社区不是独立存在的,而是来自全球1500名工程师参与探讨的地方,任何大的改动以前,请先知会社区,善于利用邮件列表来沟通。固然,如今会讲普通话的开发者和committer及PMC们愈来愈多,能够多参加示说网上关于各类大数据相关的技术交流社区,能够面对面和社区大神们探讨技术和技术之外的道道。
(全文完)
视频(中英文字幕)见:https://www.slidestalk.com/Spark/GettingStartedContributingtoApacheSparkFromPRCRJIRAandBeyond?video
另外,欢迎关注开源技术社区的相关内容研讨:
1)看点:由中国计算机学会(CCF)组织举办的,Alluxio / Hadoop / HBase / Flink / Spark PMC和Committer聚首探讨各自社区的最新动态和发展方向。
https://www.slidestalk.com/m/64
2)看点:由阿里云EMR团队和Intel大数据技术团队联合举办,分享Spark在云端环境中的优化及在AI和数据分析领域的最新动态。
https://www.slidestalk.com/m/61
3)看点:由StreamNative举办,分享ApachePulsar的动态,您能够和该项目的主创人员好好交流社区开发心得。