暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

郝鑫:代码对我而言,既是工作,也是兴趣 | nStar 专访

NebulaGraph 2024-04-26
422

上个月,NebulaGraph 社区发起 2024 年第一轮的 Committer 提名投票,作为被提名者的 nebula-go repo 持续贡献者 haoxin 顺利成为 2024 年 3 月第一位 Committer,在《社区新闻 | 2024 年度首位 Committer 在 nebula-go repo 诞生》🔗 中,你可以看到郝鑫持续提交的那些 PR,以及它们的作用。
这次,我们采用问答的专访形式,走进这个近半年一直默默持续贡献的开发者,看看他开源贡献的种子是如何发芽,成为今天的苍天大树。
按照惯例,我们先来认识下郝鑫。

我是郝鑫
人物名片

package main

import "fmt"

func main() {
    // 郝鑫
    name := "郝鑫"
    gender := "male"
    githubId := "haoxins"
    base := "Shanghai"
    blogUrl := "https://haoxins.github.io/"
    jobDescription := "Airwallex-研发工程师"

    // Print variables to avoid unused variable error
    fmt.Println(name, gender, githubId, base, jobDescription)
}

Nebula:和社区的小伙伴介绍下自己吧。
HaoXin:大家好,我是郝鑫,来自空中云汇(Airwallex),一家跨境支付企业。目前,主要从事数据工程和机器学习平台相关的工作。从 2023 年底起,开始重点做图计算相关的工作,业务场景侧重于风控,所以结识了 Nebula。
业余学习

Nebula:平时除了工作之外,一般是如何提升自己的技术水平呢?
HaoXin:其实我不会刻意想着提升技术水平。近几年业余的学习时间,一半以上会看些数学物理的书籍,比如最近主要在读的是科恩的量子力学。也会随便看一些 ML 相关的论文和有一定质量的技术博客。此外,我会观察一些技术社区的理念和项目,然后思考个人能做一些什么有价值的事情,技术的提升其实是副产品。
Nebula:看你读了不少物理和数学书籍,不知道当中有什么收益,以及是否你会推荐大家都读一读相关的书籍呢?
HaoXin:推荐书籍还是蛮众口难调的,先推荐 Scott Aaronson 的 量子计算公开课,这本书其实是作者多年前的博客的汇编,所以内容很杂。特色之处在于,你能看到当世大家率性开怼,怼彭罗斯、调侃香农,哈哈哈。顺便也推荐 Scott 的博客,Scott 性格开放坦然,博客一直高频率的更新。对于想快速了解量子力学的同学推荐格里菲斯的量子力学概论(翻译质量一般);时间充裕的推荐科恩的量子力学两卷(第三卷翻译中)。
量子计算与量子信息也十分值得一读;还有特里斯坦·尼达姆的复分析和可视化微分几何和形式(微分几何和形式的阅读难度相较于复分析更低)。

除了对编程充满热爱外,郝鑫似乎也是一个兴趣广泛,尤其对数学和物理世界充满喜爱的人。这么一个充满学习热情,对数理有着自己偏爱的人,到了开源世界,会发生什么样的故事呢?


关于 PR 的那些事
Nebula PR 贡献之旅

Nebula:虽然你主要在 nebula-go 贡献,但是最开始你是在 nebula-importer 提了一个 PR:https://github.com/vesoft-inc/nebula-importer/pull/291,从而开启你的 Nebula Committer 篇章的。所以,触动你提 PR 的事情是什么呢?
HaoXin:我个人在开始使用一个项目之前,会习惯性的大概浏览下代码。有时候看到一些随手的事情就会提一个 PR,这一步的目的很多时候其实是希望知道项目是不是还有人在维护~ 毕竟开源社区其实大多数项目是没人维护的。
至于为啥要 push 到上游,两方面,一是这样其实利于长期维护,二是代码质量的提升最好的方式就是更多的使用者与应用场景,fork 使用显然不是上策,除非自己的场景确实偏定制化
同时,Airwallex 是技术型的公司,内部也鼓励社区文化和自驱动,蛮鼓励员工参与开源的
Nebula:不只是 nebula-importer,还有 nebula-python 也有你的 PR 足迹。你持续做开源贡献的动力是什么呢?😂 感觉你的 GitHub 墙也很绿,该不会是一个“刷墙”爱好者吧。

图注:HaoXin 的 GitHub 主页

HaoXin:其实,还是公司业务需求为主,早些年还维护一些开源项目,最近几年主要参与过 Kubeflow、Apache Flink Operator,其他主要是更新自己的博客了。
维护开源项目的挑战在于持续的时间精力投入,端起一杯水很简单,但是一直端着可就不一样了
好在于我个人而言,写代码本身是一种习惯,就和饭后散步一样,所以代码工作于我而言既是工作也是兴趣。
维护开源项目的收获在于有意思的 PR,你可以看见不一样的使用场景和思考。相较之下,公司同事之间的工作的差异性会小一些。
对 nebula-go 的规划

Nebula:一开始你对 nebula-go 的贡献好像是侧重于 Go 的版本适配之类的完善工作,后面开始 feature 类的新功能开发,这当中发生了什么故事呢?是因为你本身在重度使用 nebula-go 么?
HaoXin:是的。其实就是从去年底开始,抽离一些内部的实现,发现我们内部的非业务代码具有通用性,是可以供社区其他人所用的。此外,把开发的代码贡献出来也更利于后期的维护。
Nebula:目前 nebula-go 从一个简单的 SDK 客户端变成了类似 Tools 的工具,它有了强大的 Schema Manager 功能,Session Pool 也不只是管理 Session。此外,在 nebula-go 的 PR List 里,还有不少你贡献过来的相关功能性 PR,不知道郝鑫对 nebula-go 有何种设想?在你的设想中,它会是怎么样的呢?
HaoXin:一开始是把我在公司内部的实现,但是业务无关的部分贡献了出来。因为这样更利于维护同时也算是体现一下开源文化吧。Schema Management 和 Query Results Scaling/Binding 都是普遍的需求,其他的一些功能也都是从便利性角度提出的。
未来的设想的话,也会随着业务应用激发出来吧。当下其实有两点:一个就是 Schema Management 集成到 nebula-operator。目前的实现是可以满足 OLTP 的场景,但是未来需要同时满足 OLTP 和 OLAP 的时候,就不够了;另一个就是随着 ISO-GQL 的发布,在 Nebula 支持之后,实现一个 Query Builder。图查询的场景我个人分成两类,一类是 Data Scientists 视角,这一块不是 nebula-go 的场景,另一类是 OLTP 的场景,这一块在工程实践中,直接拼凑 GQL 其实不利于项目维护,但是图查询比较复杂,暂时倒也没有仔细思考这一块的实现。

成为 Committer 这件事
Nebula:在你提名为 Committer 之前,社区里也有不少的小伙伴来咨询如何成为 Committer。社区这边虽有一些制度来阐述如何成为 Committer。作为已经成为 Committer 的你,你有什么心得可以和大家分享的么?
HaoXin:其实和上文技术的提升是副产品一样,我觉得 Committer 是结果而非目标。首先还是专注于自己的需求和思考,开源社区或者项目的参与一定是从需求切入的。当你有大致的想法,知道有一些事情应该去做的时候,便可以参与讨论和实现。同时也会有其他人的反馈和交流,既有贡献,又有收获。
Nebula:对目前的 NebulaGraph 社区你有什么想说的么?
HaoXin:其实也没有什么具体的建议,社区的乐趣之处就在于它是里面的人自发驱动的结果,倒也不需要过多的治理。
当然,当社区的影响到了一定程度,那就另当别论了。总的来说,其实我对于社区没有太多的思考,主要的关注点大多在项目上。

安利时间
Nebula:按照惯例,专访的尾声会留给专访嘉宾安利他 她觉得能提高生活、工作幸福的软件、实物,郝鑫你有什么要和社区小伙伴分享的么?
Haoxin:不知道宠物算不算实物?😄我自己家里有两只猫,一只英短蓝白,性格外向霸道,一只银渐层性格内向温顺。平日相处,还是能带来不少的幸福感的。

软件的话推荐一个最近开始使用的 Terminal Warp, 虽然只是个小工具,但是还是蛮精致的。

---
以上,便是本期 nStar 嘉宾——郝鑫的专访。


多面,是社区用户的常态,正如 Nebula 支持一点多 tag 一样。希望大家能在一期期的专访中,了解社区中那些鲜活的人。如果你有什么想要了解的社区用户,记得留言^^
如果你想要分享同 NebulaGraph 的种种故事,不妨来参加 NebulaGraph 社区的春季征文活动哟~让我们一起动起来 🏃

文章转载自NebulaGraph,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论