走进 Apache 世界的另一扇大门

引言

作为热爱技术的你,是否也羡慕 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 发布!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# Interlocked 原子操作

目录 注解 方法 适用于 案例 1:Add 对两个整数进行求和并用和替换第一个整数,上述操作作为一个原子操作完成 2:Exchange Exchange(UInt32, UInt32) 以原子操作的形式,将 32 位无符号整数设置为指定的值并返回原始值。 参考…

存储设备有哪些?属于私有云平台吗?怎么理解?

数字化的今天,数据已经成为了企业最重要最宝贵的资产了。为了保障数据的安全、可靠和高效利用,存储设备和云计算技术应运而生。今天我们大家就来聊聊存储设备有哪些?属于私有云平台吗?怎么理解? 存储设备有哪些&…

thinkadmin发邮件功能如何设置?怎么使用?

thinkadmin发邮件有哪些注意事项?支持哪些邮件服务? 在使用thinkadmin框架进行开发时,发邮件功能的设置是一个常见的需求。通过合理配置和简单的编程,我们可以轻松地在thinkadmin中集成邮件发送功能。AokSend将详细介绍如何设置t…

动态规划9:LCR 099. 最小路径和

动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:LCR …

在VS Code中操作MySQL数据库

创建MySQL连接 操作前需要先启动MySQL数据库,个别情况下需要以管理员身份打开cmd,在cmd中输入: net start mysql 我的MySQL数据库服务名为mysql84,需要填写自己的mysql服务名称。 随后在VS Code中下载插件 Prettier SQL VSCode …

新手必看!场外期权交易的六大注意事项

场外期权交易的六大注意事项 对于初涉金融市场的投资者来说,场外期权交易无疑是一个既具吸引力又充满挑战的领域。为确保您在交易中能够稳健获利,以下六大注意事项值得每位新手仔细研读。 文章来源/:财智财经 一、深入理解期权基本概念 场…

海思SS928(SD3403)部署YOLOv5-YOLOv7步骤详解

1. YOLO模型资料 本文档内容以yolov5-7.0工程、yolov5s模型为例。 a. 模型结构 详细的模型结构可以利用netron工具打开.pt或.onnx模型查看。 b. 模型参数即验证结果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x为五种类型的预训练模型,其包含的检测类别相…

数据中心运维如何使用布线管理软件

1. 什么是可视化布线管理软件 1.1 数据中心布线管理软件部署在本地服务器,通过数据导入将现有的数据中心布线系统的设备信息、线缆连接关系等导入到管理软件中形成数据库; 1.2 布线管理软件提供了实时可视化的管理界面,从园区到建筑到楼…

LabVIEW与Simulink的通信及调用方式

LabVIEW和Simulink可以通过多种方式进行通信和集成,实现数据交互和功能调用。常见的通信方式包括TCP/IP、UDP、共享内存等,此外还可以利用MATLAB Script Node和S-Function等直接调用对方的功能。这些方法使得LabVIEW和Simulink能够协同工作,充…

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识,问题和答案转变成向量存储在向量数据库,在查找答案时,输入问题,将问题向量化,匹配向量库的问题,将向量相似度最高的问题筛选出来,将答案提交。 二、腾讯云向量数…

龙讯旷腾PWmat团队研发的开源机器学习力场PWMLFF升级,新增高效训练NEP模型

近几年来,一种结合了物理学、高性能并行计算和机器学习算法的新的科研范式——AI for science迅速崛起,并为解决精度与尺度无法并存的问题带来了曙光。基于机器学习力场(machine learning force field, MLFF)的分子动力学&#xf…

Vue2自定义拖拽指令-元素拖拽

Vue2自定义拖拽指令-元素拖拽-参数传递 v-canDraghtml部分/src/directive/canDrag/index.js然后注册到vue实例上就OK了 v-canDrag html部分 <template><div class"drag-container"><div class"drag-div" v-canDrag"{callback:callbac…

新能源集成灶怎么样?不需要燃料就能生火,是真的吗?

在当今的厨房电器领域&#xff0c;集成灶的出现引起了不少网友的广泛关注。这不&#xff0c;就在刚刚人民日报发布的一篇名为《中国新能源产业发展是全球性贡献和机遇》报道中提到&#xff1a;中国新能源产品销量突破万亿大关&#xff0c;中国新能源技术全球领先。从这样一份亮…

1501 - JUC高并发

须知少许凌云志&#xff0c;曾许人间第一流 看的是尚硅谷的视频做的学习总结&#xff0c;感恩老师&#xff0c;下面是视频的地址 传送门https://www.bilibili.com/video/BV1Kw411Z7dF 0.思维导图 1.JUC简介 1.1 什么是JUC JUC&#xff0c; java.util.concurrent工具包的简称…

433/315无线门铃解决方案,功耗超低,通信距离可达200米

无线门铃是一种常见的智能电子设备&#xff0c;提供了方便&#xff0c;安全的门铃解决方案&#xff0c;适用于各种住宅和商业环境。芯岭技术的无线门铃方案可适用于普通的433/315无线门铃应用&#xff0c;支持不同的语音选择&#xff0c;支持交流和直流应用&#xff0c;支持不同…

Python——泰坦尼克号数据分析

目录 🧾1.数据集(部分数据) ✏️ 2、导入数据集与必要模块 ⌨️ 3.数据预处理 1️⃣ isnull函数查看有无缺失值 2️⃣fillna函数填充缺失值 📍 Age字段使用平均值填充缺失值 📍 Embarked字段填充缺失值 3️⃣ 删除缺失值较多的字段 📊 4.数据可视化 1️⃣ di…

每日一练 2024.6.7

给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c;删除所有 "AB" 和 "CD" 子串&#x…

【面试八股总结】死锁:产生条件、预防死锁、处理死锁、避免死锁

一、什么是死锁&#xff1f; 死锁是指两个&#xff08;或多个&#xff09;线程互相等待对方数据的过程&#xff0c;死锁的产生导致程序卡死&#xff0c;不解锁程序将永远⽆法进⾏下 去 二、死锁产生条件 死锁只有同时满足以下四个条件才会发生&#xff1a;互斥条件&#xff1b…

笔记-2024视频会议软件技术选型方案

一、背景 视频会议系统是一种现代化的办公系统&#xff0c;它可以使不同会场的实时现场场景和语音互连起来&#xff0c;同时向与会者提供分享听觉和视觉的空间&#xff0c;使各与会方有“面对面”交谈的感觉。随着社会的发展&#xff0c;视频会议的应用越来越广泛&#xff0c;…

【数据分析基础】实验四 matplotlib数据可视化处理

一&#xff0e;实验目的 掌握扩展库matplotlib及其依赖库的安装。了解matplotlib的绘图一般过程。熟练掌握折线图、散点图、柱状图、饼状图、雷达图的绘制与常用属性的设置。掌握绘图区域的切分、绘制不同子图的方法。熟悉坐标轴、图像标题、图例等对象的属性设置操作。 二、实…