原副标题:怎样从头已经开始参予Apache世界顶级开放源码工程项目?
从 2021 已经开始,有两个很有趣的讲法经常在数十家控制技术媒体或开放源码高峰论坛中出现,「开放源码正在毁灭一切」。无论是否一无是处,从两个行业专业人士的体认交互上看,开源确实从极少数T5450的峭腹正式成为非主流的软件设计商业模式,有越来越多的企业已经开始亲吻开放源码控制技术,享用到开放源码控制技术带来的社会福利。
一面是开放源码控制技术得到更广范围的应用和破冰。以我们所在的资料库和大数据领域上看,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 README:https://github.com/apache/doris/blob/master/README.md
通过阅读 README 文件,可以对 Apache Doris 工程项目和街道社区建立两个相对全面的认识。
# 参予街道社区沟通
与邮件列表这一异步沟通商业模式相对的,是以微信、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 官网首页
图4Apache 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 提沟通交流程之余还可以感受到街道社区对后辈的友好度。
图6Apache 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 期
一周热点 2022.10.11-2022.10.17
谷歌推出开放源码操作系统KataOS,采用Rust和seL4微内核 JetBrains Fleet公测,下一代轻量级全能IDE到底都有哪些国产的开放源码操作系统?
这里有最新开放源码资讯、软件更新、控制技术干货等内容
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~