
这次,我们采用问答的专访形式,走进这个近半年一直默默持续贡献的开发者,看看他开源贡献的种子是如何发芽,成为今天的苍天大树。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)
}
HaoXin:大家好,我是郝鑫,来自空中云汇(Airwallex),一家跨境支付企业。目前,主要从事数据工程和机器学习平台相关的工作。从 2023 年底起,开始重点做图计算相关的工作,业务场景侧重于风控,所以结识了 Nebula。Nebula:平时除了工作之外,一般是如何提升自己的技术水平呢?HaoXin:其实我不会刻意想着提升技术水平。近几年业余的学习时间,一半以上会看些数学物理的书籍,比如最近主要在读的是科恩的量子力学。也会随便看一些 ML 相关的论文和有一定质量的技术博客。此外,我会观察一些技术社区的理念和项目,然后思考个人能做一些什么有价值的事情,技术的提升其实是副产品。Nebula:看你读了不少物理和数学书籍,不知道当中有什么收益,以及是否你会推荐大家都读一读相关的书籍呢?HaoXin:推荐书籍还是蛮众口难调的,先推荐 Scott Aaronson 的 量子计算公开课,这本书其实是作者多年前的博客的汇编,所以内容很杂。特色之处在于,你能看到当世大家率性开怼,怼彭罗斯、调侃香农,哈哈哈。顺便也推荐 Scott 的博客,Scott 性格开放坦然,博客一直高频率的更新。对于想快速了解量子力学的同学推荐格里菲斯的量子力学概论(翻译质量一般);时间充裕的推荐科恩的量子力学两卷(第三卷翻译中)。量子计算与量子信息也十分值得一读;还有特里斯坦·尼达姆的复分析和可视化微分几何和形式(微分几何和形式的阅读难度相较于复分析更低)。除了对编程充满热爱外,郝鑫似乎也是一个兴趣广泛,尤其对数学和物理世界充满喜爱的人。这么一个充满学习热情,对数理有着自己偏爱的人,到了开源世界,会发生什么样的故事呢?
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:一开始你对 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 其实不利于项目维护,但是图查询比较复杂,暂时倒也没有仔细思考这一块的实现。Nebula:在你提名为 Committer 之前,社区里也有不少的小伙伴来咨询如何成为 Committer。社区这边虽有一些制度来阐述如何成为 Committer。作为已经成为 Committer 的你,你有什么心得可以和大家分享的么?
HaoXin:其实和上文技术的提升是副产品一样,我觉得 Committer 是结果而非目标。首先还是专注于自己的需求和思考,开源社区或者项目的参与一定是从需求切入的。当你有大致的想法,知道有一些事情应该去做的时候,便可以参与讨论和实现。同时也会有其他人的反馈和交流,既有贡献,又有收获。Nebula:对目前的 NebulaGraph 社区你有什么想说的么?HaoXin:其实也没有什么具体的建议,社区的乐趣之处就在于它是里面的人自发驱动的结果,倒也不需要过多的治理。当然,当社区的影响到了一定程度,那就另当别论了。总的来说,其实我对于社区没有太多的思考,主要的关注点大多在项目上。Nebula:按照惯例,专访的尾声会留给专访嘉宾安利他 她觉得能提高生活、工作幸福的软件、实物,郝鑫你有什么要和社区小伙伴分享的么?
Haoxin:不知道宠物算不算实物?😄我自己家里有两只猫,一只英短蓝白,性格外向霸道,一只银渐层性格内向温顺。平日相处,还是能带来不少的幸福感的。
软件的话推荐一个最近开始使用的 Terminal Warp, 虽然只是个小工具,但是还是蛮精致的。
以上,便是本期 nStar 嘉宾——郝鑫的专访。多面,是社区用户的常态,正如 Nebula 支持一点多 tag 一样。希望大家能在一期期的专访中,了解社区中那些鲜活的人。如果你有什么想要了解的社区用户,记得留言^^
如果你想要分享同 NebulaGraph 的种种故事,不妨来参加 NebulaGraph 社区的春季征文活动哟~让我们一起动起来 🏃