走进 Apache 世界的另一扇大门

引言

作为热爱技术的你,是否也羡慕 Apache PMC 或者 Committer,此篇文章渣渣皮带你迈出如何成为技术大牛的第一步。

当然我现在还是一枚小小的 code contributor,在成为 committer 的路上还在奋力打码中,写这篇文章也是为大家有这个想法的童鞋提供一些指引,大家在这条路上可以多交流交流

选择项目

首先你需要选择你熟悉技术范围的或者实际生活工作中使用到的,这里我就是熟悉 [Paimon](Apache Paimon | Apache Paimon) (一个数据湖项目,从 Flink 项目发展出来,恰好想研究的也是实时相关的)的流程开始的。

不过最近几年国内开源还是比较火热的,好几个项目都进入 Apache 孵化了。这里列举一些,看是否你也有中意的。

除了上述国内贡献到 Apache 的项目,还有我们经常熟悉的 Spring、Mybatis、SpringBoot,以及国内的 dubbo、druid 等项目,大数据中的 Hadoop、Spark、Flink 这些大家如果有兴趣都是可以去参与的。

准备工作

  • 最好有个 Gmail 邮箱,你需要订阅用户邮件以及开发者邮件等,参与邮件中问题的回复也是对开源的贡献,并且一些重要的特性都会在邮件里面会讨论以及最后的投票
  • 本地 Git 的配置,这个就不用我教你们了吧
  • 还需要注册 Github 账号,这个全球最大男性交友网站大家最熟悉不过了吧

那么下一步正式开始我们的提交之旅吧

第一步:订阅邮件

一般项目的 Contributing 页面都会告诉你怎么去给项目做贡献。

比如我们的第一步就是订阅开发者邮件,如下图所示:页面也会给出其他的邮件选择

这里我们先订阅开发者邮件,

  1. 首先用自己的邮箱给 dev-subscribe@paimon.apache.org 发送邮件即可
  2. 收到官方回复的确认邮件
  3. 回复该邮件,内容随意,我这里简单回复 Confirm
  4. 会收到欢迎你订阅的邮件,这个时候就表示成功订阅了,如下图所示

第二步:选择问题

这一步首先从Github 的 issue 里面去找找看,一般新项目都会设立 good first issue 的 tab 的问题,具体如下样式:

当然,如果你对项目很熟悉的话,也可以从 doc 或者 bug 的类似 issue 开始去解决。

那么选好 issue 以后,就开始要准备写代码解决问题了。

第三步:fork 代码

看到项目顶部的选项,有一个 Fork 选项,需要将项目 fork 到自己的仓库项目下面

下一步就看到具体选项,这里直接 Create fork 就行。

接下来就可以看见自己的仓库里有代码了,如下图,可以看见是从 apache 的项目 forked 出的项目。

第四步:编写代码

接下来就是 clone 代码,然后本地开始编写代码了。

1、如下图所示,选择自己喜欢的方式 Clone 代码就好

注意:一定是 clone 自己仓库已经 forked 的项目,不是 apache 下的项目地址

2、接下来就是打开本地的代码,这里我使用的编辑器是 IDEA,对于 Java 开发者来说已经是再熟悉不过了。不过这里需要新建分支去开发,可以使用命令来执行,如下操作(这里的分支名可以随意些)

shell 复制代码
git checkout -b PAIMON-1141

3、提交代码到远程分支

使用 commit,然后 push 命令即可

git commit -a -m "[Feature] Support month, day, and hour expressions for cdc synchronizing tables action"
git push origin PAIMON-1141

第五步:提交 PR

本地开发好代码后,就可以进行下一步骤了,就是提交 PR。

1、进到仓库的 Pull requests 页面,点击【New pull request】按钮操作

2、下一个页面中选择自己提交的分支,这里就可以对比你提交的信息和主仓库分支上的信息的差异,点击【Create pull request】即可

3、按照提示的 PR 模板,填写相应的信息,提交即可

第六步:CR 代码

等待 Committer 对你的代码进行 CR,如果是有需要需改的意见,会在 PR 里面进行讨论,这个时候你就需要重新修改本地的代码,充分测试好,然后重新 commit 代码,push 到远程分支上去

第七步:等待合并代码

最后问题都充分解决后,会就得到 +1 的认可,剩下等待代码被合并到 master 分之了。

到这里,你的代码就已经合并到 master 主分支上了,这样看起来是不是也很简单,等下次软件发版本的时候,你的代码就在里面了,恭喜你,成为了 code contributor!

常用英文

这里附带一些常用的英文,送给英文不太好的童鞋,这些在社区中可以用的上

Hi, I want to fix this issue, you can assign it to me.

I am interested in implementing this task, please submit a PR in 2 weeks if you leave the message.

Thanks for your contributing. Left some comments.

参考资料

  • 这个是 Apache PMC 的 Jark Wu 写的分享文章:分享了如何从小白到 Committer 的成长之路,值得一看

如何从小白成长为 Apache Committer?

成为Apache顶级项目核心贡献者是一种什么样的体验? (qq.com)

  • Apache Linkis 的贡献指引:写的比较详细,有视频,也有专门针对新手项目的指引

Apache Linkis 官网贡献指引(视频)

Apache Linkis 项目贡献指引(视频)

Apache Linkis新手项目

保姆级教程:如何成为Apache Linkis文档贡献者(如果你用 Github Desktop 客户端,这个是很好的介绍,全图形化操作)

  • InLong 的提交代码指引

如何提交代码 | Apache InLong

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
拓端研究室TRL2 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据
黄焖鸡能干四碗2 小时前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
编码小袁2 小时前
探索数据科学与大数据技术专业本科生的广阔就业前景
大数据
WeeJot嵌入式3 小时前
大数据治理:确保数据的可持续性和价值
大数据
zmd-zk4 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶4 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
测试界的酸菜鱼4 小时前
Python 大数据展示屏实例
大数据·开发语言·python
时差9534 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
Mephisto.java4 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Mephisto.java4 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database