Loading... 全职做 Apache Doris 开发的第三年,也是带社区同学参与 Apache Doris 开源项目的第三年。过去一年里我带了大约十多位同学参与了开源项目,获得了实际的产出,也有两位同学进入了 SelectDB 全职进行 Apache Doris 的项目开发。 这件事情老实讲对我个人并没有什么裨益——它不构成我的工作产出,项目也不归我所有。但是在有限的时间内,我还是希望能够回馈到社区。通过 good first issue 的方式来链接在校生的一小部分,和业界的一小部分。 你的大部分疑问会在下面得到解答。 ## 做什么 首先需要介绍一下什么是 Apache Doris,以及社区的运行机制。 Apache Doris 是一个分布式的 OLAP 引擎,关于它的详细介绍你可以在网上随处找到。 作为 Apache 的开源社区,项目不从属于商业公司,而是 Apache 基金会,它依基金会的规章而行事。但是实际的维护基本上依赖一些背后的商业公司。 作为开源社区,我们将几乎所有开发内容公开贡献出来,与很多你耳熟能详的国内大公司一起共建,包括腾讯、百度、京东、美团等。这其中也不乏个人开发者。而 good first issue 就是个人开发者参与开源的良好第一步。 **什么是 Good first issue?** 这指的是一部分较为简单,且涉及模块较少,比较独立的开发任务。对于新手来说,完成这种任务的开发不需要太多知识和复杂的 debug 过程。对于社区来说,这种较为简单的工作交给同学们可以有助于我们专注于更重要且复杂的主线任务。这样同学们可以从中掌握经验、快速成长,社区也不必花费过多精力解决一些琐碎问题,这是一个绝对的双赢。于是现在许多开源社区都有了 Good first issue。这些任务都会有专门的 mentor 带领你入门。 ## 为什么做 这个问题换句话说就是,我能从中开源开发中得到什么。 1. 参与开源项目,构建软件世界的梦想和成就感——如果你认同这一点,那么这就是你的答案了。但是对大多数同学来说这可能比较虚,所以我们需要说下面几点: 2. **一个超过绝大多数“项目经历”的“项目经历”**。现在 CS 越来越卷,就我个人看到的(过去一年我看了50-100份 DB 相关的校招简历),什么 15445 6.s081,以往的闪光点近乎成为标配。但开源至今为止还没有。几乎所有简历上的项目都不如你实际参与过大型开源项目的经历。这是一个绝对的闪光点 3. 大型项目协同开发的经历。在你完成代码的过程中,你会经历很多非常实际的问题,例如 IDE 的、git 的。这些东西是你个人开发几乎遇不到的角落,但它们很重要。如果你没有相关经历,那么在下一段工作中你需要在这上面花费不少时间。当你提交 PR 之后,你会接受社区其他成员的 review,以我的经验,代码至少需要修改 4-5 次。这个过程中你会意识到,很多理所当然的东西,其实需要反复推敲斟酌。**当你解决掉这一切问题,你的能力已经到了一个新的台阶。** ## 谁适合参加 首先,good first issue 绝不是什么困难的东西,但对于全职员工的产出来说 ROI 可能偏低,但对于没有相关经验的同学来说它又能极大地丰富自己的简历和就业条件,所以从这个角度来说,应当是: 1. 在校生等缺乏大型项目实际经验的人——这对各位来说有很大帮助 另外对于项目本身来说,我们需要: 2. 能快速上手的人。这些任务都比较简单,有大量可以参考的例子,需要你有充足的时间,能快速去做,然后解决实际的问题并达成目标。 ## 需要什么 对于 good first issue 来说,基本上不需要什么技能。常见的编程语言如 C++ 和 Java,熟悉它的基本语法即可。如果有什么不会的,你可以在使用中学到它们。 但有一些技能是你需要掌握的: 1. 学会借助 GPT 解决问题。你会遇到很多和命令行、git 等有关的问题,其中绝大多数都可以在正确描述的前提下用 GPT 解决,省时省力。 2. 参考例子。你参与的绝大多数任务都会有极其相似的其他例子,请先参考并尝试理解他们。 3. **沟通**。如果遇到问题,首先尝试自己解决,如果确实无法解决,feel free to communicate。准确描述你的问题上下文,会更容易得到解答。在整个开发的过程中,你需要时不时和 mentor 同步你的进展 4. **动手能力**。快速去做,而不是说。 --- 好了,以上问题都是针对参与开源的泛泛之谈,接下来是你如何参与到 Doris 开发之中的步骤,也基本上是我写这篇文章的原因——这样大家就可以来这里看到一些必须的内容,节省了我复制粘贴的时间。 ## 环境搭建 首先我们需要一台 8C 16G 以上的 linux 系统的开发机。linux 物理机最佳,虚拟机和 MacOS 也是可以的。考虑到 8C16G 这个配置在当今较为常见,所以对你来说最好的方式是用你现有的 Linux 系统(如果有的话)或者直接用虚拟机和 WSL。 如果实在没有条件,可以联系我给你开社区公共开发机的账号,但那个机器开发体验比较差劲。 然后你就需要去搭建开发环境了,这里你需要参照以下文档: 首先使用 git 拉取 [Apache Doris项目](https://github.com/apache/doris) 然后看这里:[使用 LDB Toolchain 编译](https://doris.apache.org/zh-CN/community/source-install/compilation-with-ldb-toolchain)——你可以参照这个文章准备好编译环境 然后按照[手动部署存算一体集群](https://doris.apache.org/zh-CN/docs/install/deploy-manually/integrated-storage-compute-deploy-manually)这个文章部署你的编译产物并进行验证 当然,在开发的过程中你需要使用好你的 IDE,可以参考例如[Apache Doris Be 开发调试](https://doris.apache.org/zh-CN/community/developer-guide/be-vscode-dev)在内的许多文档。包括如何使用插件进行 Debug,也有相关的文档进行描述。 当你验证完你编译部署的整个流程都没有问题,那么就可以联系我,给你分配对应的开发 issue 了! ## 哪里找到 case 如果你希望自己去寻找一些 case,也是可以的。社区有对应的 issue 标签,例如: [good first issue](https://github.com/apache/doris/labels/good%20first%20issue) 和 [doris-future](https://github.com/apache/doris/issues?q=is%3Aopen+label%3Adoris-future),带有这些标签的意味着是给社区同学开放的开发任务。如果它还没有assigner,或者太久没有活动迹象,那么请大胆评论,了解任务情况,并申请认领这个任务!然后你就可以和你的 mentor 开始沟通,着手开发了! 当然,我们社区还有一些长期的大型计划,这些计划也都需要大家的共建,例如[impl all command in Nereids](https://github.com/orgs/apache/projects/424),这里我们已经把一个大型计划切分为了一些小的 issue,且里面有非常多已经完成的类似 issue 可以参考。你可以随时 pick 它们。这里我们有详细的指南:[成为 Apache 顶级项目贡献者之路:Apache Doris 的语法迁移攻略](https://mp.weixin.qq.com/s/sobd137-ZeWV2k72vA4-zQ)。你随时可以参与建设它,估计这个 Project 到 25 年下半年才有机会完工 但最好的方式,还是直接联系我,我会给你直接分配合适的 issue! ## 在这之后……? 当你参与了足够多的开源项目之后,你会感觉到自己已经有了足够的能力去 cover 一些独立的问题,带着这份能力去找工作或者实习,会事半功倍。如果你有兴趣继续全职参与 Apache Doris 或者其他数据库产品的开发,可以联系我,我会给你提供合适的机会。 当然,在那之后你或许也有机会成为 [OSPP](https://summer-ospp.ac.cn/) 和 [GSOC](https://summerofcode.withgoogle.com/) 的参与者!将在开源世界承担起更大的责任。 另外,在这里我会挂一些我知道的、容易参与的、蓬勃发展的其他开源项目,有兴趣的同学可以在之后适时去了解,它们是: - [clice](https://github.com/clice-project/clice)——新一代 C++ language server,刚刚起步但潜力无限 - [xmake](https://github.com/xmake-io/xmake)——取代令人难受的 CMake 的新一代构建工具,已经小有名声 - [Apache Kvrocks](https://github.com/apache/kvrocks)——同样对新贡献者非常友好的一个分布式 Rocksdb 等。 © 允许规范转载 打赏 赞赏作者 赞 5 如果觉得我的文章对你有用,请随意赞赏