Redian新闻
>
如何从零开始参与Apache顶级开源项目?

如何从零开始参与Apache顶级开源项目?

公众号新闻
从 2021 开始,有一个很有意思的说法经常在各大技术媒体或开源论坛中出现,「开源正在吞噬一切」。不论是否言过其实,从一个行业从业者的切身感知来看,开源确实从少数极客的小众文化成为主流的软件开发模式,有越来越多的企业开始拥抱开源技术,享受到开源技术带来的福利。
一面是开源技术得到更广范围的应用和落地。以我们所处的数据库和大数据领域来看,2021 年全球开源数据库的流行指数首次超过商用数据库,以 Apache Hadoop、Apache Spark、Apache Flink 等为代表的大数据组件几乎构成了大数据生产链路上的事实标准。而另一面,则是开发者对于参与开源项目和社区的热情愈发高涨。不论是出于 掌握技术、解决业务问题、提升业务效率的目的,或者是出于 钻研技术、加强编码能力、提升视野高度的目的,又或者是出于丰富简历、寻求职业机会的目的,参与开源项目对开发者个人而言,是最为有效来提升自己的方式之一。

图1 开源数据库流行指数首次超过商业数据库

过去几年我一直在参与开源项目 Apache Doris 的推广工作,这一期间与许多开发者有过深度的探讨和交流。2022 年 6 月 Apache Doris 从 Apache 孵化器毕业正式成为 Apache 顶级项目,让 Apache Doris 在全球范围内受到了更多开发者的关注。在这一过程中也认识到,如何参与到开源项目的讨论和开发,是被许多开发者反复提及的问题,也是新人开发者最为迫切寻求解答的问题。

为了回答上面的问题,就有了本篇文章的诞生。其实参与开源项目并不困难,甚至可以说存在一定的定式,就以我所参与的 Apache Doris 项目为例,我将为大家介绍 Apache Doris 社区的一些工作机制、如何参与社区贡献以及如何完成自己第一个 PR ,希望为想参与开源社区贡献的小伙伴提供一个简单的思路,也希望能有更多开发者能参与 Apache Doris 社区中来,与社区一道成长,一道将国人研发的优秀数据库推广到全球,一道实现分析型数据库技术的革新,一道见证更多不可能的故事发生。

# 从 README 开始

从开源项目在 GitHub 上成功托管的一刻起,README 文件就随之诞生了。就如同一本书的序言或电子设备的使用说明书,README 文件是开启开源之旅的第一个入口,几乎涵盖了使用和参与开源项目的所有姿势,既包含了项目背景、系统架构、技术特性等技术相关的介绍,也包含了用户该如何安装、部署以及上手使用的操作指南,同时还会提供项目维护者的主要联系方式、相关资料的获取地址以及如何参与贡献的指引等。

图2 Apache Doris README 文档

Apache Doris READMEhttps://github.com/apache/doris/blob/master/README.md

通过阅读 README 文件,可以对 Apache Doris 项目和社区建立一个相对全面的认识。
# 参与社区沟通

邮件列表(Mailing List)是 Apache 社区最被认可的交流方式,无论是问题反馈与解答、技术交流与探讨、版本迭代与发布、社区决议与公示等,都可以通过邮件列表的形式来承载。邮件列表异步通信、理性思考、公开透明的特性,也非常适合开源社区的沟通交流,任何人都可以订阅邮件列表来知悉社区动态。订阅邮件列表操作可以参考以下链接:

订阅邮件列表:https://doris.apache.org/zh-CN/community/subscribe-mail-lis


与邮件列表这一异步沟通模式相对的,是以微信、QQ、钉钉等 IM 工具为代表的即时通讯模式。

由于信息传递的效率更高,即时通讯软件几乎成为国内开源社区日常技术沟通和交流的主要方式。以 Apache Doris 社区为例,目前 Apache Doris 社区有超过 20 个微信社群、聚集了超过 8000 人以上用户规模,相对于邮件列表,微信社群无疑承载了更多用户支持和问题解答的职责,每个用户都可以通过 Apache Doris 官网上的入口扫码加入用户社群中,去探讨技术和寻求答疑。

目前 Apache Doris 社区有一支专职的用户支持团队帮助社群中的用户定位和解决问题,尽管这能带来更好的用户体验(用一些社区用户的话说, Apache Doris 社区的技术支持力度甚至比一些商业软件的支持力度还要大),但微信社群天然存在的信息割裂、冗余信息过多、知识无法沉淀等弊端依然存在,因此社区也一直在寻求更加合理和可持续的方法,例如 Slack 社群以及 GitHub Discussion,希望在保持用户体验的同时也能提升沟通和解决问题的效率,这也是我们更为推荐的沟通方式。

加入 Slack:https://join.slack.com/t/apachedoriscommunity/shared_invite/zt-1co4h0c90-Kfu5MUgaTi4n~lAwNXfbuQ

GitHub Discussion:https://github.com/apache/doris/discussions


# 善用官网和文档

官方网站和文档是深入了解一个开源项目最主要和高效的方式,熟读文档对于掌握开源项目的重要性不言而喻,在此也不再赘述。

2022 年 7 月,在社区力量的支持下我们对 Apache Doris 官网和文档结构进行了一次整体改版,除了对各个页面视觉和交互效果的整体优化以外,还增加了文档的全文检索和版本切换等重要功能,可以对当前版本文档的任意字段进行搜索,帮助用户快速检索和定位到需要查询的内容。


图3 Apache Doris 官网首页


图4 Apache Doris 官网文档

# 如何提交你的第一个 Pull Request

参与开源项目并为其作出贡献的方法有很多,包括功能开发、测试 Case 编写、流程工具改进、文档完善、博客撰写等等,任何对于项目的贡献都是有价值并且受欢迎的。在提交的贡献正式合入后,将自动成为项目的贡献者并出现在项目的贡献者列表中。

Apache Doris 社区有着清晰的贡献者成长标准,贡献者在对项目有着足够的贡献后,有机会通过推选和投票成为 Committer,拥有代码库的合入权限,并且名字将出现在 Apache 网站列表中 。更进一步,还有机会成为项目的 PMC Member(项目管理委员会成员),对项目的重要决策拥有投票权。

Apache Doris PMC 名单:https://doris.apache.org/zh-CN/community/team


每一个贡献从最初的发起到最终的合入,大致会经历以下的步骤:

  • 发现问题或优化项

  • Fork 代码仓库

  • 本地开发与自测

  • 创建 Pull Request

  • 等待 Code Review

  • 审核通过并合入 Master

   寻找第一个贡献点

接下来聊聊如何寻找到一个贡献点,往往这也是大多数人跨入开源世界大门的第一步,有幸跨入的话则会发现门门外是两种完全不同的风景。

或许是在浏览文档时发现了一个小的错漏,例如发现一个小的错别字或者发现某个链接失效,又或许可能是已有的文档在细节描述或语义表达上有可提升的空间,可以把订正或补全开源文档作为第一个出发点,帮助文档质量得到提升,这也是参与开源项目的重要途径。

文档贡献:https://doris.apache.org/zh-CN/community/how-to-contribute/contribute-doc


也有可能是在使用开源项目过程中发现了一个 Bug ,或者应用其某一业务场景中发现还存在一些未被满足的功能点,经过阅读和分析代码后认为凭借自身能力可以对其进行改进,这时可以在 GitHub 上搜索是否有人与你具有相同的想法或问题,如果没有的话可以创建一个 Issue,并按照 Issue 模版依次补充相关信息。

图5 创建一个 Issue

同时在 Issue 列表中可以通过 Label 筛选出带有“good first issue” 的 Issue,通常是社区为新贡献者专门留出来的开发任务,并且在 Apache Doris 社区还会定期将新手任务汇总在置顶的 Issue 中。如果是第一次参与开源项目,可以选择这些简单任务进行练习,熟悉整个 Pull Request 提交流程之余还可以感受到社区对新人的友好度。

图6 Apache Doris Issue 列表
Good First Issue:https://github.com/apache/doris/issues/11706


常系统架构方面的修改或者重要的功能引入需要在社区进行充分的讨论与交流,可以在邮件组中发起讨论,也可以提交 Issue 发起,同时在 Doris Improvement Proposals 中提交详细的设计文档,帮助其他开发者了解功能的设计动机、需求与详细方案。

DSIP https://cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals


   Fork 代码仓库

在确定贡献点之后就可以开始上手开发了,第一步就是 Fork 代码。进入 Apache Doris 的 GitHub 后 点击右上角的 Fork 按钮进行 Fork。如果喜欢 Apache Doris,也可以点击旁边的 Star 按钮关注代码仓库。

图7 如何 Fork 和 Star 项目

Fork 完成后回到自己的 GitHub 账号下就可以找到 Fork 的项目,这时对自己 Fork 的项目拥有了任意修改的权限,可以将代码 Clone 到本地进行开发。

1)将代码 Clone 到本地:

git clone https://github.com/<your_github_name>/doris.git

Clone 完成后,origin 会默认指向 GitHub 上的远程 Fork 地址。

2)将 apache/doris 添加为本地仓库的远程分支 Upstream:

cd doris

git remote add upstream https://github.com/apache/doris.git


3)检查远程仓库设置:

git remote -v

origin https://github.com/<your_github_name>/doris.git (fetch)
origin https://github.com/<your_github_name>/doris.git (push)
upstream https://github.com/apache/doris.git (fetch)
upstream https://github.com/apache/doris.git (push)


4)新建分支以便在分支上做修改:

git checkout -b <your_branch_name>



注意:\<your_branch_name> 为您自定义的分支名字。

创建完成后可进行代码开发和自测。
   创建 Pull Request

开发并自测完成后即可将代码提到自己 Fork 的远程分支中,再通过 Pull Request 的方式将 Commits 提交合入。

详细 Pull Request 提交指南可以参考以下文档:
代码提交指南 : https://doris.apache.org/zh-CN/community/how-to-contribute/pull-request

1)提交代码到远程分支:

git commit -a -m "<you_commit_message>"

git push origin <your_branch_name


2)创建 Pull Request

在浏览器切换到自己的 github 页面,切换分支到提交的分支 \<your_branch_name> ,点击 Compare & pull request 按钮进行创建,如下图所示:

3)准备分支

这时候,会出现 Create pull request 按钮,如果没有请检查是否正确选择了分支,也可以点击 “compare across forks” 重新选择 Repo 和分支。

4)填写 Commit Message

这里请填写 Pull Request 的详细内容,在 Apache Doris 社区对于 Commit 格式有明确的规范,具体可以参考:

Commit 格式规范 : https://doris.apache.org/zh-CN/community/how-to-contribute/commit-format-specification/

5)等待 GitHub 检查和 Code Review

点击 Create pull request 进行创建后,Pull Request 创建完成后会自动触发 GitHub 的检查任务,只有通过检查后代码才能被合入。

GitHub Checks : https://cwiki.apache.org/confluence/display/DORIS/Github+Checks+Guidance

创建的 Pull Request 在接受 GitHub Check 的同时,也需要接受社区的 Review。在 Apache Doris 社区,我们欢迎所有人参与到代码的 Review 中来,通过开放式讨论保证代码质量,最终由具有代码合入权限的开发者给出合入意见,至少需要有一个非作者的 Committer 给出 +1 才能被合入。
Code Review 指南 : https://doris.apache.org/zh-CN/community/how-to-contribute/contributor-guide#code-review

6)代码合入

最终通过 GitHub 检查任务以及 Code Reivew 的 Pull Request 会在一个工作日后被合入进 Master,至此恭喜成为 Apache Doris Contributor!

# Enjoy it!

其实参与开源项目不存在什么门槛,绝大多数开源项目是自由开放、且非常欢迎有更多人能参与进来的。与其说不知道该如何参与开源项目,个人感觉可能是信息传递障碍带来的些许隔阂,也许只需要一个简单的发往 dev 邮件组的邮件就可以解决。

无论是提交 Issue 或参与 PR Review,或者是修改和完善文档,又或者是分享技术博客和应用案例,都是参与开源贡献,也期待有更多的你一道参与进来。

 本文来源于开源精选集《开源观止》第 4 期,更多精彩内容,请点击下载:

↓↓↓

《开源观止》第 4 期


往期推荐


一周热点 2022.10.11-2022.10.17

谷歌推出开源操作系统KataOS,采用Rust和seL4微内核

JetBrains Fleet公测,下一代轻量级全能IDE

到底都有哪些国产的开源操作系统?



这里有最新开源资讯、软件更新、技术干货等内容
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
宾大机器学习PhD:我是如何从头开始写一篇顶级论文的?里程票101:从零开始,新手友好,教你免费坐飞机24 年的开源项目内部爆发严重分歧:部分成员嫌弃不够自由,不愿接受 Linux 基金会赞助《多伦多有条羊街》—— 移民、改掉中式英文、北美大龄转工转科技行业一书囊括(美国的朋友,一样使用哈)盘点5大技术板块、洞察56个开源项目:InfoQ研究中心带你探秘中国开源数据库怎样从零开始训练一个AI车手?如何在4-6个月内从零开始完成自己的一作Paper?美国赴华:驻美使领馆更新健康码检测要求~票帝更新《从零开始准备回国》携小工具为您的旅行提供帮助古人类DNA与重症新冠有关?2022诺奖得主Pääbo,竟是前诺奖得主私生子“我们的祖先到底是谁?为何智人胜出?”丨2022诺奖深入回答了这些问题。附Svante Pääbo趣闻硬核观察 #780 使用 AI 和激光炮塔击杀蟑螂的开源项目一大波 ChatGPT 开源项目,诞生了!6000字,从零开始把培训机构的教师管理讲透了!Nature最热点:学会这些“ 技术 ” 无忧登顶Nature顶刊!近百个大数据开源项目,你该如何选型?|《开源大数据热力报告2022》入围项目公示YY 直播GitHub开源项目,霸屏Github排名榜!从零开始构建业务异常检测系统,FreeWheel面临过的问题和解决方案【万歌诗词】卷二、七言诗30家VC抢一个新能源项目你碰到过骗子吗?走到小学高年级我发现,三年级开始往下滑的孩子,有一个共同特点JCO 6.10.2022-ad and phase IFBB做的啥项目?效果好到马上和普男男票分手了…【當你老了病了,怎麽辦】補遺《2022 年度 OSC 中国开源项目评选》正式启动CNCF 接受开源 Hexa 项目作为沙盒项目 | Linux 中国被引780次的113分Nature顶级子刊重磅综述,我帮你榨干了喂到嘴边!安卓开源项目(AOSP)现在兼容 RISC-V 了 | Linux 中国没钱的中小企业,如何从零开始搭建市场部?顶会审稿人:如何从零开始完成自己的一作Paper?新州首次置业无需一次性支付印花税!“悉尼硅谷”麦考瑞公园置业首选之地!顶级开发商Meriton高颜值新盘样板间正开放中无忧买房|Cambridge顶层三室公寓出售,近哈佛/MIT,8分钟到地铁站,周边生活设施齐全AI画画模型成本被打下来了!预训练成本直降85%,微调只需单张RTX 2070,这个国产开源项目又上新了深度好文|如何优雅的搞砸一个IPO项目?炸裂!PDF转Word彻底告别收费时代,这个OCR开源项目要逆天!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。