logo
咨询企业版

社区动态

专访|NebulaGraph 宋昊成:敢于迈出第一步是成功的一半

以下文章来源于开源之夏OSPP ,作者ospp

NebulaGraph

本期专访采访人物来自开源之夏 2023 活动 NebulaGraph 社区中选学生——宋昊成同学,他所承担的项目是 NebulaGraph-rust 实现点边扫描接口。

项目链接: https://summer-ospp.ac.cn/org/prodetail/231190185

开源之夏 2023 活动 NebulaGraph 社区

# 关于宋昊成

OSPP:请简单介绍一下自己。

宋昊成:大家好,我是来自南京航空航天大学的宋昊成,参与了 OSPP 2022 和 OSPP 2023 两届活动,现在在为 NebulaGraph 社区编写 Rust 客户端。业余时间喜欢多接触新的事物,不局限于计算机专业本身。

OSPP:最开始是怎么接触到开源之夏的呢?你眼中的开源是什么样的?

宋昊成:最开始是受到我的好朋友茂林的影响,他参与了 OSPP 2021。听完他的经历后,我对开源项目产生浓厚兴趣,关注了开源之夏公众号,留意报名和申请时间,并积极申请参与项目。

我眼中的开源是个贴近工业界前沿项目和用户实际问题的活动。我发现很多开源项目的发布,原因是学术界发布了一个新的模型或者算法,社区想集成到自己的框架中。也有用户发现了使用过程中的问题,在 Issue 提出自己的需求或者改进意见,社区发布相应的开源任务。当然,还有很多其他类型的开源项目,但是我觉得都离不开应用价值和实际需求这两个核心方面。

OSPP:你有着非常丰富的项目实践、实习与赛事参与经验,可以简单为我们介绍一下么?这些经历在学习或其他方面给你带来了什么?

宋昊成:我参与过挑战杯、互联网+、数学建模等比赛,同时也参与了很多项目的开发。这些实践都是我难忘的经历。首先,通过参加各种竞赛教会了我从“不可能”到“可能”的心态转变。很多竞赛从刚接触的不知所云到后期的小有所成,关键在主动学习和不畏困难的态度,坚持下去大部分竞赛其实都能取得比较好的成绩。其次,通过竞赛和项目开发,我认识了来自不同专业的优秀同学,扩展了我的社交圈。最后,这些过往经历在我升学和实习的过程中,也为我提供了不小助力。

# 参与开源之夏与开源

OSPP:这已经是你第二次参与开源之夏活动了,两次参与体验如何?又是什么吸引你再次参加活动的?

宋昊成:第一次参加是大四的时候,临近毕业,事情比较多,就匆忙申请了一个项目,可惜申请书还是打磨不够,落选了。今年第二次参加,准备的更加充分,把将近 600 个项目都认真了解了一遍,选定了几个合适的项目,认真撰写申请书。最终,我成功的中选了其中一个项目。被吸引参加活动的原因,还是想亲自感受一下工业界项目的开发,而且能看到自己的项目落地,是很有成就感的事。

OSPP:请简单介绍一下你在本届活动中承担的开源项目。

宋昊成:我承担的开源项目是《NebulaGraph-rust 实现点边扫描接口》。这个项目的主要目标是开发 NebulaGraph-rust 项目,以支持 NebulaGraph 数据库的 StorageClient 中的 ScanVertex 和 ScanEdge 接口。NebulaGraph 是一个高性能的分布式图数据库,下图是 NebulaGraph 集群的经典架构。NebulaGraph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。

目前,NebulaGraph-rust 仅支持部分 GraphClient 的接口,访问的是图中的Graph Service。我需要开发一个 StorageClient,访问 Storage Service,并根据返回的 response 实现 ScanVertex 和 ScanEdge 接口。

参与开源之夏与开源

OSPP:在开发过程中有遇到什么困难或挑战么?你又是如何克服的呢?

宋昊成:开发的过程最大困难是对 Rust 不熟悉吧,当时选这个项目是想借这个机会学习一下 Rust,了解一下这个新兴的语言。不少程序语言编写有很多相似之处,如果会一门其他的很快就可以迁移过去,但是 Rust 的所有权、trait、生命周期等概念,让你按以前的编程习惯编写代码会出现很多问题,所幸最后都解决了(就是 debug 过程有点折磨)。

克服的话,我采取一种渐进的方法。我首先从实现一个最基本的功能开始,确保它能够正常工作,然后在此基础上逐步扩展,最终形成我想要的 mod(模块)或者 crate(包)。此处赞扬一下 Rust 的强大的编译器,出错时会给出非常详细的报错原因和解决方案,大部分问题,按着报错提示修改便可以解决 。在开发过程中,随着对 Rust 的不断学习,也慢慢感受到了 Rust 的魅力。

OSPP:你眼中的 NebulaGraph 是一个什么样的开源社区?之后是否打算继续参与开源社区或开源项目?为什么?

宋昊成:NebulaGraph 在我眼中是个年轻、善于交流、开创性、友善的社区,以前接触的几位社区导师都是很年轻且有实力的开发者。搜索问题中,接触到 NebulaGraph 社区的论坛,上面有很多活跃用户互相交流解决问题,求助者的问题都能很快被解答。开发过程中,社区的导师和助手姐姐都很 nice,反馈的问题都能很快解决,暑假还收到了社区送的礼物和明信片。

之后会继续参与开源社区的活动,毕竟自己开发的项目,会有用户提出 lssues,要根据提出的问题积极维护和完善 Rust 客户端。有机会的话也想参与社区的其他项目,多向社区的大佬学习,成为一个合格的 contributor。

关于 NebulaGraph 技术社区

NebulaGraph 社区是由一群图技术爱好者组成的技术社区,社区主要讨论话题为图分析与数据挖掘、自然语言处理与知识图谱、图数据库 NebulaGraph。而 NebulaGraph 是一款开源分布式图数据库,主项目采用 C++ 编写而成。自 2019 年开源以来,NebulaGraph 在近 300 名国内外 contributor 一起努力之下先后发布了 3 个大版本,提交了过 3.5k+ 次 commit,并获得了 9.5k+ star。 GitHub 地址:https://github.com/vesoft-inc/nebula

在本次开源之夏活动中,得到开源之夏优秀学子的帮助,实现了在图算法、可视化、数据批处理等方向的优化项目。 开源之夏社区主页:https://summer-ospp.ac.cn/org/orgdetail/119ef0d9-7aac-431d-bb9f-d39864c168ff

OSPP:在参与社区贡献的过程中有遇到什么令你印象深刻的事情么?导师和其他社区成员有为你带来什么帮助么?

宋昊成:最深刻的是因为我暑假比较忙,时间规划没做好,导致项目开发进度非常缓慢,感觉后续工作量还很多,一度觉得结不了项。此处感谢我的导师米泽双(github: Milittle),他平时工作非常忙,但还是周日抽空跟我开了个会,我们彻聊了一晚上,我提出的问题都给我解答了,也给出了项目基本的实现顺序。

开源之夏活动

先不用做到尽善尽美,做一个最简单、基础的版本出来,后续再改进。开完会后,因为思路清晰,中间和米导沟通顺畅,我大概写了十天就完成了基本功能。后面又花了几天加上了错误处理和部分代码重构,完成了第一个可交付的版本。

OSPP:参加开源之夏活动为你带来了哪些收获?

宋昊成:收获最多是自信的增长,做之前会觉得很难,一些名词或者相关技术领域没听说过。但是真正开始去开发项目,伴随着查资料和与导师不断讨论,很多问题也没想象中那么难,重要的是敢于尝试。

# 寄语

OSPP:你身边了解和参与开源项目的同学多吗?你认为参与开源之夏和社区贡献对于在校生的学习和专业提升、就业选择方面有哪些帮助?

宋昊成:身边了解开源项目的同学还是比较少,普遍认为离自己比较远,看项目各种技术栈看不懂,望而却步。今年开源之夏走进我们学校宣传,也看到了周围有几位同学参加,能感受到近几年开源的影响在慢慢变大,但是还任重道远。

参与开源之夏和社区贡献,对在校生各方面提升是显而易见的,现在学校科班教授的知识偏研究、系统,脱离工业界所需的技能,参与开源之夏可以亲自感受一个完整的工业界项目是怎么样开发的。在开发过程中,收集资料、学习、和导师沟通,并且独立的完成项目的开发和测试,整个流程下来能很好的锻炼自己。同时今年的不少大厂实习、秋招,招聘信息中都会说明有开源经历是加分项,对找工作是很有帮助的。

OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说? 宋昊成:敢于迈出第一步是成功的一半。我身边不少朋友想参加,看到琳琅满目的项目及陌生的技术栈就退缩了,但其实很多东西都是边学边做,心态要放轻松。

首先应该找到自己感兴趣或者相近的技术栈的项目。在自己写申请书的过程中,思考项目开发过程中的难点和用到的技术,然后根据自己能力评估一下自己能否完成,最后确定是否申请这个项目。我觉得合适的项目,是在不耽误项目结项的前提下能给自己学习到新的东西,带给自身成长的。


谢谢你读完本文(///▽///)

如果你想尝鲜图数据库 NebulaGraph,记得去 GitHub 下载、使用、(^з^)-☆ star 它 -> GitHub;如果你有更高的性能、易用性、运维实施等方面的需求,你也可以随时 联系我们,获取进一步的帮助哦~