Outreachy 是一个项目,组织为那些在自由开源软件项目中通常代表性不足的人提供为期三个月的有偿实习机会。
贡献期间
我首先要做的事是从组织下挑选一个项目。浏览所有项目后,我选择了“扩展 Apache Airflow 的 REST API”,因为我对 REST API 有一定了解,觉得这样更容易入手贡献。接下来需要搭建 Airflow 的开发环境,幸亏有 Breeze,这一步相当轻松。由于我以前从未参与过自由开源软件的贡献,这一步起初有些让人不知所措,但社区中有大量标记为 “good first issues” 的议题,配有详细描述,甚至还有代码片段,正好指引了我前进的方向。Airflow 本身的这些特性以及社区积极友好的氛围,是我决定坚持把 Airflow 作为我的 Outreachy 项目的主要原因。
实习期间
我的第一个 PR 之后经历了许多新鲜事,其中之一是我在其中引入了一个 bug ;)。但这也让我熟悉了反馈循环,随后我的 PR 收到的点评成为了整体学习体验的核心,这提升了我的自信,让我愿意走出舒适区、贡献更多代码。我想进一步了解 Airflow 内部的工作原理,于是开始筛选最近涉及不同组件的 PR,并阅读代码改动和讨论,以便更好地理解整个工作流。Airflow 邮件列表 也是获取知识的极佳渠道。
我参与的与 API 相关的 PR 帮助我掌握了一些重要概念,例如
-
池 CRUD 接口,其中池子限制执行的并行度。
-
任务 决定实际需要执行的工作。
-
DAG 表示一组任务的结构。它跟踪任务、它们的依赖关系以及它们必须运行的顺序。
-
DAG 运行 是 DAG 在时间上的实例化。
通过积极和被动参与讨论,我了解到即使意见不合,也可以从不同的实现方式中学习,而这篇拥有 300 多条评论的 PR 正是最好的证明。我还开始审阅一些小型 PR,这让我有机会结识新伙伴并进行互动。整个实习期间,我学习了大量不同的框架和技术,但对我而言最重要的收获是:代码的阅读次数远高于编写次数,因此我在编写代码时始终牢记这一点。
结语
随着我的 “扩展 Airflow REST API” 项目以及 Outreachy 实习的圆满结束,我想感谢我的导师 Jarek Potiuk、Kaxil Naik 与 Kamil Breguła 对我的耐心指导与时间投入,也感谢 Airflow 社区对我的热情接纳。我计划继续留下来贡献代码,以回馈让我的整个夏天难以忘怀的社区。
分享