走进 Apache 世界的另一扇大门

news2024/11/24 6:55:05

引言

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

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

选择项目

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

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

  • 网关:Apache ShenYu - High-performance, multi-protocol, extensible, responsive API Gateway | Apache ShenYu
  • 分布式数据库支持工具:Apache ShardingSphere
  • 大数据计算中间层:Apache Linkis | Apache Linkis
  • 大数据集成工具:Apache SeaTunnel | Apache SeaTunnel
  • Serverless SQL on LakeHouse:Apache Kyuubi - Multi-tenant Thrift JDBC/ODBC server
  • OLAP分析Doris:Home - Apache Doris
  • 大数据调度平台:Apache DolphinScheduler

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

准备工作

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

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

第一步:订阅邮件

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

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

image-20230727082430099

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

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

第二步:选择问题

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

image-20230726223014321

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

image-20230726223348368 image-20230726223454169

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

第三步:fork 代码

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

image-20230726223544971

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

image-20230726223652577

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

image-20230726223758808

第四步:编写代码

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

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

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

image-20230726224054939

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

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】按钮操作

image-20230727091253329

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

image-20230727091340595

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

image-20230727091801166

第六步:CR 代码

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

image-20230726224609939

第七步:等待合并代码

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

image-20230726224740910

到这里,你的代码就已经合并到 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 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAT技术

目录 前言一、NAT的基本思想二、NAT的局限性总结 前言 IP地址短缺问题并不是一个只有在将来某个时候可能发生的理论问题。现在,此时此地,这个问题已经发生。对于整个Internet而言,长期的解决方案是迁移到IPV6,它有128位地址。这个…

如何免费使用(白瞟)最新的开源大模型?

下面介绍两个可以免费白瞟开源大模型的网站,一个是国内的ModelScope ,点击链接注册后进入右上方的司南评测即可,界面效果如下,最新开源的Qwen2-72B也可用的噢! 另外一个 是LMSYS和UC伯克利分校联合开发的全球大模型测评平台Chatbo…

数据结构——算法和算法效率的度量

目录 一、引言 二、算法 1 算法的基本概念 2 算法的复杂度 2.1 时间复杂度 2.1.1 概念 2.1.2 大O的渐进表示 3 算法的空间复杂度 3.1 概念 3.2 实例 4 实例分析 5 结论 一、引言 大家在写代码的时候有没有发现写同样功能的代码有多种不同的写法,而不同的代…

遇见桂林山水画廊,深层互联自动讲解耳机走进漓江

遇见山水,听懂山水。由深层互联独家打造,桂林漓江山水画廊导览工程,于不久前正式启动,声情并茂的真人语音引导着游客,走进有声有色的山水画卷中。 桂林山水甲天下,得天独厚的自然景观,奇幻瑰丽…

matlab使用教程(92)—流线图、流带图和流管图

1.使用向量数据显示流线图 MATLAB 向量数据集 wind 代表北美地区的气流。本示例结合使用了几种方法: 利用流线跟踪风速 利用切片平面显示数据的横截面视图 利用切片平面上的等高线提高切片平面着色的可见性 1.1确定坐标的范围 加载数据并确定用来定位切片平面…

【WEEK15】 【DAY3】Scheduled Tasks【English Version】

2024.6.5 Wednesday Following 【WEEK15】 【DAY2】【DAY3】Email Tasks【English Version】 Contents 17. Asynchronous, Scheduled, and Email Tasks17.3. Scheduled Tasks17.3.1. Two Annotations:17.3.2. Cron Expression17.3.3. Modify Springboot09TestApplication.java …

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

工作备忘录软件有哪些 记事备忘提醒三合一的备忘录

在工作中,我总是觉得自己脑子好像不够用,一会儿是这个项目的进度要跟踪,一会儿是那个会议的要点要记录。每天都在忙碌与混乱中度过,我甚至开始怀疑自己是否适合这份工作。 备忘录不仅是一个简单的记事工具,像敬业签这…

【数据分享】中国高技术产业统计年鉴(2023年)

大家好!今天我要向大家介绍一份重要的高技术产业发展情况统计数据资源——《中国高技术产业统计年鉴》。这份年鉴涵盖了从2023年中国高技术产业发展情况的全面数据,并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 …

Java利用Scanner实现控制台文字游戏,Java实现猜数字游戏简易文字游戏,Java实现石头剪刀布简易文字游戏

1、猜数字游戏简易文字游戏 public static void main(String[] args) {//文本扫描器Scanner scanner new Scanner(System.in);//获取本次游戏的正确数字int num new Random().nextInt(100);System.out.println("开始猜数字游戏,输入数字后按enter");whi…

DLL文件修复dffsetup3.3.90,带Keygen

之前分享过DirectX与4DDiGDLLFixer,今天再分享一款,名字叫DLLfiles Fixer,中文版带key你懂的,对于玩游戏人来说,经常因为少了某个dll文件无法运行,DLL-files Fixer能够非常方便的修复。 软件功能 可以消除…

提升学校管理效率,智慧校园解决方案来袭

你是不是曾为学校管理效率低下而困扰?是不是对传统的教育模式感到力不从心?现在,一个划时代的解决方案来啦——智慧校园! 随着科技的不断发展,智慧校园正逐渐改变着学校的管理方式。通过将信息技术与教育相结合&#x…

【Java数据结构】详解LinkedList与链表(一)

🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.ArrayList的缺陷 3.链表的概念及结构 4.无头单向非循环链表的实现 4.1成员属性 4.2成员方法 createList display——打印链表 addFirst——头插 addLast…

70 Realistic Mountain Environment Textures Cliff(70+张真实的山地环境纹理)

大量适合山区和其他岩石环境的纹理--悬崖、岩石、砾石等等 每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。 70种质地 70种材料 70个地…

000002 - Hadoop环境安装

Hadoop及其大数据生态圈 1. 背景2. 实践2.1 Linux服务器准备2.2 在其中一台服务器上安装JDK2.3 在其中一台服务器上安装HADOOP2.4 本地模式运行一个hadoop案例 3. 自动化部署 1. 背景 要搭建Hadoop集群环境,我们需要执行如下 准备三台Linux服务器,服务…

【Linux驱动】【手把手配置3568寄存器】点亮RK3568的一颗LED

【硬件】 3568的LED9 :引脚 GPIO0 B7 【配置GPIO的复用】 找配置复用关系的寄存器基地址、偏移地址、对应配置的GPIO。 查找:io -r -4 0xfdc2000c 系统设置的默认值 结果为1,意思是只有bit 0是1,其他全都为0。所以系统默认就是…

【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较

【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较 一、引言二、非关系型数据库(NoSQL)2.1 优势 三、关系型数据库(RDBMS)3.1 优势 四、结论 💖The Begin…

论文合集整理推荐2024.6.4

论文合集整理推荐2024.6.4 原创 小王搬运工 时序课堂 2024-06-04 20:12 四川 ‍2012年论文合集:论文入口 ‍2019年论文合集:论文入口 2021年论文合集:论文入口 2022年论文合集:论文入口 2023年论文合集:论文入口…

数据结构---力扣 20.有效的括号 (C语言

1.链接: . - 力扣(LeetCode)【点击即可跳转】 思路: 使用 栈 来完成操作 1.左括号-- 入栈 2.右括号-- 判断出栈顶的左括号与右括号是否匹配 如果匹配-->继续 不匹配-->终止 代码中 栈 的基本实现,不在以下展示&…

两站图片滑动对比效果实现(VUE3)

像这种图片滑动对比的效果,网上还不少见吧,但是网上却不好找到完整现成的实现代码,我找到几个地方有类似的代码,但是都不好直接移植到代码里,因为很多都是使用原生htmlcssjs实现,太复杂了。反而不好应用到v…