返回开发者新闻

LabGraph:Damir Temir 的贡献者故事

2022年6月8日发布者:Navyata Bawa

贡献者故事系列中,我们的主要开源贡献者和社区成员介绍了他们正在参与的项目、在开发过程中取得的成功和面临的挑战,以及有关初步参与开源项目的最佳实践。在今天的博文中,我们请来了 Damir Temir,作为 LabGraph 项目的贡献者之一,他通过 MLH Fellowship 参与解决问题并提高编码效率。下面我们一起看看这位贡献者的故事,了解如何为 LabGraph 做出贡献。


“在参与了更多开源工作后,我意识到‘协作’对社群十分重要。参与 LabGraph 项目后,我学会了如何与维护者高效沟通,如何为 Python 优先的传感器流式处理框架做出贡献。”

请介绍一下您的情况

我是一名大三学生,在伊利诺伊大学春田分校学习计算机科学专业。我来自哈萨克斯坦,母语是俄语和哈萨克语。

我喜欢和网友一起参加黑客马拉松。到目前为止,我特别喜欢的黑客马拉松活动是 HackHarvardHACKUIOWA 以及 MLH Fellowship Orientation Hackathon。我喜欢构建以数据为中心的项目,这样我就可以研究机器学习问题,为遵循 MLOps 实践的用户做出有用的东西。

我渴望有一天能成为一名机器学习工程师,利用我对数学的热爱和浓厚的编程兴趣,打造酷炫产品!我计划在完成本科学业后继续攻读博士学位,在机器学习领域继续深造。

是什么激励您参加开源项目?

我最喜欢开源项目的地方是它的自由度。开源项目之所以如此有用,是因为参与的人们真正热衷于开发和维护产品。开源项目既不用受制于截止期限,也不用在公司层的压力下被迫推进项目进度,相反,我们有一个社群,人们希望帮助社群交付产品,帮助社群用户节省时间并取得成果。我认为大多数科技产品都应按这种方式交付,企业应该更多地开放产品源代码。

您目前在做什么项目?

我目前正在参与 LabGraph 项目,LabGraph 是采用 Meta Research 建立的一个流式处理框架。具体而言,我正在研究如何将图中的实时消息传输给 LabGraph Monitor 应用程序。

您从何处了解到该项目?为了加入这个项目,您采取了哪些行动?

我有个朋友之前参加过 MLH 的开源项目,我最初是从他那得知有 LabGraph 这个项目。他曾为 YAML 解析器的开发做出过贡献,该解析器可以将图表转换为更简洁易读的结构。

为了独立参与项目,我先学习了一些文档,试图理解构建 LabGraph 涉及的一些底层概念。然后,我研究了现有示例,还尝试去解读那些帮助我们建立图表的 LabGraph API。此外,我还咨询了参与此项目的其他小伙伴和维护者 Jimmy [Feng]。

在参与项目的过程中,您是否遇到过任何挑战或障碍?您是怎样解决的?

在这一过程中,我确实遇到了很多挑战,包括努力理解流式处理框架的概念,以及客服学习庞大代码库这段学习曲线。

我不得不花一些时间来理解这样一个事实:我们在实际生活中使用的传感器只传输数字信息,软件则负责理解这些数字信息。传感器创建原始的、未经过滤的数据,而软件需要理解这些数据所表达的意思。在花费大量时间阅读 ZeroMQcthulhu 等有用资源后,我开始能够理解 LabGraph 及其处理传感器数据的重要目的。

我还花时间熟悉了一个规模较大的代码库,该代码库创建了 LabGraph API,用户可以使用这些 API 创建自己的图表。LabGraph 是一个 Python 优先的库,遵循了出色的 OOP 实践,使每个类都以其他类为基础,并利用继承及其带来的优势。在学习这个库的过程中,系统有时会让我从一个文件跳转到另一个文件,而这仅仅是为了让我理解二者之间的关联。

在参与项目期间,您认为哪些资源对工作帮助最大?

该项目的开发现状如何?

就向 LabGraph Monitor 添加实时消息而言,这一开发工作的现状是我们已经有了最简可行产品 (MVP)。借助我当前的开发成果,用户可以将他们的图表发布者连接到带有所需订户的 Serializer 节点,组成通过 WebSockets API 发送的单条序列化消息。

利用 MVP,我们能够以实时模式显示节点间的数据流动图。能够在 LabGraph Monitor 中看到数据可便于研究人员调试他们自己的图,跟踪节点之间的数据差异。

回顾过去的工作,您从该项目、开发过程及开源方面学到了什么?

在学习了继续为 LabGraph 做贡献所需的大部分知识后,我在理解 API 行为和解读成果时更有自信了。我现在能够利用 API 的优势交付有用的功能,例如使用类属性来确定它们在序列化消息中的位置。

我还学到了一个重要教训:不要去干预那些已经构建好的东西,而要基于已经取得的成果开展下一步工作。我曾经花了相当多的时间试图利用 LabGraph API 来发挥我的优势,但我发现这纯属浪费时间,因为它已经开发得很完善了。因而我意识到,我应该重点关注如何将它的功能运用到工作中去。

对于一般的开源项目而言,我发现人和代码本身在项目中的重要性是一样的。如果您不与项目负责人沟通,您就无法取得进展。

参与这个项目和一般的开源项目,您最大的收获是什么?

一定要去 GitHub Issues(问题)版块提问,尽量保留在知识库中交流的内容,这便于日后搜索,有利于解决问题。在拉取请求中清楚说明您所负责的工作以及所做的决定。最后,如果您认为 LabGraph 很无聊或复杂,不妨再想想。LabGraph 实际上是 Meta 元宇宙投资的重要组成部分。

您对未来的开源项目贡献者有什么建议?

务必要阅读相关文档!里面的信息非常有用。初读可能艰深难懂,但书读百遍其义自见。你一定能领会其中奥妙。另外,请亲自运行代码。代码会说明一切。

非常感谢 Damir 抽空与我们分享项目经历。了解为开源项目出力的过程非常有趣,我们诚挚感谢 Damir 长期以来为 Meta Open Source 生态系统所做出的贡献。如果您想进一步了解 Damir 的工作内容,请在 LinkedInGitHub 上关注他。


贡献者故事系列简介

Meta 的开源不仅仅关乎代码。它还提供了开发环境便利,方便具有不同背景和经验的合作者聚集到一起来探讨项目概念,促进创新,共同完成项目。

这篇博客是贡献者故事系列的其中一篇,这些贡献者在文中讲述了他们为开源项目做贡献的经历,例如,为 Meta Open Source 生态系统下的开源项目做出了什么贡献,如何参与开源项目,在开发过程中取得了哪些成功、面临哪些挑战,以及是什么激励着他们参与开源项目。请大家关注贡献者故事系列的其他博文,我们会在其他博文中介绍各种不同的开源项目,以及如何为这些开源项目做贡献。

如需了解有关 Meta Open Source 的更多信息,请访问我们的 Open Source 网站、订阅我们的 YouTube 频道,或在 TwitterFacebook 上关注我们。