从毕业到维护者的开源之旅

下一个可能就是你!点击此处提交创客博客系列的摘要。


那是 2020 年初,我刚从圣保罗大学获得计算机科学本科学位后抵达法国。我被 reciTAL 聘为新团队的第一个开发人员——事实证明,也是团队中第一个且是唯一的开发人员,因为 COVID-19 迅速迫使法国进入隔离状态,招聘也停止了。尽管全球疫情及其对个人和职业生活的影响,我还是重新调整了重心,并在新职位上努力工作。

专注于 FastAPI

在我第一个月底,我的经理转向我问道:“你能为我们的下一个项目在 Django 和 Flask 之间做出选择吗?”

所以我做了研究;我研究了这两个选项,并准备了一份优缺点列表。我非常认真地对待这项任务,因为我想做出尽可能最好的决定。

在我的研究过程中,我偶然发现了 FastAPI,当时它在 GitHub 上有大约 1.2 万颗星(现在超过 4.8 万颗)。FastAPI 提供了解决我在第一个月工作中遇到的一个重大痛点:数据验证。有了 FastAPI,我们可以编写应用程序的逻辑,而无需担心客户端发送给我们的数据的形状——以前,我们必须在端点函数的主体上验证数据。

我将我的 FastAPI 研究融入到 Django/Flask 的优缺点列表中,并将其呈现给我的经理。较新的框架通常会受到怀疑,而且与其他选项相比,FastAPI 非常新。但我最终说服了我的经理尝试一下。

初步尝试:参与 GitHub Issues

由于我选择了这个框架,并且我的同事都不熟悉它,我想学习更多并支持我的团队,以降低学习曲线。我给自己施加压力,让自己精通使用该框架。这促使我开始阅读,然后在熟悉之后,开始参与 FastAPI GitHub issues

我处理 issue 的方法非常简单

  1. 阅读 issue。

  2. 阅读参考文献以更好地理解 issue。

  3. 比报告者更彻底地研究 issue,并更努力地进行调试。

  4. 解决 issue。

步骤 2 特别重要;一开始我不太了解,但我知道理解问题以及围绕给定 issue 的上下文将使我受益匪浅,并帮助我学习。

积累动力

我遵循上述流程一段时间,直到它成为例行公事。每天,我醒来后做的第一件事就是打开 GitHub issues 并查看通知。我阅读了所有 FastAPI 的通知,无一例外——即使我看不懂第一句话。

然后我在整个工作日定期查看通知,之后我会在晚上继续探索 FastAPI 生态系统。毕竟我正在隔离。

2020 年底,我联系了 FastAPI 的创建者 Sebastián Ramírez,并建议创建一个 discord 服务器。他喜欢这个想法,所以我设置了它并将所有权交给了他。这给了我另一个帮助人们的渠道——这很棒,因为我喜欢帮助别人。

获得更多动力

随着知识和信心的增长,我能够做出我的第一个代码贡献。它们很微小,但我很高兴。然而,仅仅为 FastAPI 做贡献对我来说还不够。我也想为其他项目做贡献。

我开始四处寻找,想弄清楚我还能在哪里应用我所学到的知识。我对 Uvicorn 产生了兴趣,Uvicorn 是一个异步服务器网关接口 (ASGI) 服务器,FastAPI 可以在其上运行。

我立即创建了一个关于向项目中添加 类型注解issue,这个 issue 受到了名为 Benoit 的活跃 Uvicorn 维护者的欢迎。我想出了一个计划,为每个拉取请求的每个文件添加类型注解。我花了好几个月执行这个计划,然后发现了一些小错误,这时我开始更多地了解代码源。这是一个循环;我提供的帮助越多,我就越能理解,我越能理解,我就越能提供帮助。

邀请

那是 2021 年 3 月。在处理了许多拉取请求后,我给自己设定了一个目标,但没有告诉任何人:在年底前成为 Uvicorn 维护者。仅仅两周后,Benoit 向我发出了我一直希望收到的邀请。我太高兴了!我为这个项目投入了大量时间,学到了很多东西,并帮助了很多其他用户,我因此获得了认可。

成长为维护者

就像我对 FastAPI GitHub issues 和其他项目所做的那样,我缓慢而谨慎地涉足维护者工作。在审查拉取请求时,我认真对待批准按钮的权力(和责任),经常征求他人的第二意见。

几个月过去了,我变得更加自在。但再一次,我感到一种想要更多的感觉。

2021 年 8 月,我开始帮助 Starlette,FastAPI 基于的框架(FastAPI 是 Starlette 的子类)。Starlette 与 Uvicorn 来自同一个 组织,因此我已经拥有那里的维护者权限。

当然,拥有维护者权限并不意味着你会自动感到自在地担任该角色。当我在 Starlette 上的工作量增加时,我依靠 Jaime Hewland(当时最活跃的维护者)和 Tom Christie(Uvicorn 和 Starlette 的创建者)进行审查和支持。

时间流逝,我用它来帮助 GitHub、Gitter 和 Discord 上的 FastAPI 用户;维护 Uvicorn;并帮助 Starlette。到 2021 年底,Jaime 和 Tom(Encode 组织的创建者)在 Starlette 上的活跃度降低,所以我介入并开始更积极地参与该项目。

生活方式的改变

在 2022 年初,我养成了一些积极的生活方式习惯,例如晚上 10 点前睡觉、每天去健身房、健康饮食以及不过度劳累。我能够将这些习惯融入我的生活继续为开源做贡献。

生活关乎优先事项,开源和我的健康是我目前的首要任务。现在是 2022 年 8 月,我从未如此快乐。

结论

就我的开源之旅而言,缺乏知识从来都不是问题;我在需要学习的时候学习,并且每天都在继续学习新事物。我认为在实现成就感方面做出最大贡献的是确定我的优先事项并坚持健康的作息。

我鼓励任何希望成为开源维护者的人也优先考虑保持积极的生活方式习惯。这可能有助于你在实现职业或休闲目标时获得更大的成功和满足感。我还建议使用 Discord 和 Gitter 等聊天平台与开源社区中的许多聪明人建立联系。

感谢阅读关于我的开源之路的故事!


关于作者

Marcelo Trylesinski 是一位巴西软件工程师和 FastAPI 专家,目前维护 Starlette 和 Uvicorn。

关于创客博客系列

Anaconda 正在通过月度博客系列扩大一些最活跃和最受喜爱的社区成员的声音。如果您是一位创客,并且一直在寻找机会讲述您的故事、详细阐述一个最喜欢的项目、教育您的同行并建立您的个人品牌,请考虑提交摘要。有关更多详细信息并访问丰富的教育数据科学资源和讨论主题,请访问 Anaconda Nucleus

与专家交谈

与我们的专家之一交谈,为您的 AI 之旅找到解决方案。

与专家交谈