專訪|NebulaGraph 宋昊成:敢于邁出第一步是成功的一半

開源之夏 2023 項目開發(fā)已臨近尾聲,還未提交結(jié)項材料的同學(xué)們可要抓緊嘍!請務(wù)必在?9 月 30 日 23:59(UTC+8)之前將結(jié)項報告及 PR/MR 鏈接列表上傳至系統(tǒng),具體方法可參考學(xué)生指南和結(jié)項指南文章。
學(xué)生指南:https://summer-ospp.ac.cn/help/student/
結(jié)項指南 | 項目開發(fā)倒計時3天!快來提交結(jié)項材料吧

本期專訪采訪人物來自開源之夏 2023 活動?NebulaGraph?社區(qū)中選學(xué)生——宋昊成同學(xué),他所承擔(dān)的項目是?NebulaGraph-rust 實現(xiàn)點邊掃描接口。
項目鏈接:https://summer-ospp.ac.cn/org/prodetail/231190185

# 關(guān)于宋昊成
OSPP:請簡單介紹一下自己。
宋昊成:大家好,我是來自南京航空航天大學(xué)的宋昊成,參與了 OSPP 2022 和 OSPP 2023 兩屆活動,現(xiàn)在在為 NebulaGraph 社區(qū)編寫 Rust 客戶端。業(yè)余時間喜歡多接觸新的事物,不局限于計算機(jī)專業(yè)本身。
OSPP:最開始是怎么接觸到開源之夏的呢?你眼中的開源是什么樣的?
宋昊成:最開始是受到我的好朋友茂林的影響,他參與了 OSPP 2021。聽完他的經(jīng)歷后,我對開源項目產(chǎn)生濃厚興趣,關(guān)注了開源之夏公眾號,留意報名和申請時間,并積極申請參與項目。
我眼中的開源是個貼近工業(yè)界前沿項目和用戶實際問題的活動。我發(fā)現(xiàn)很多開源項目的發(fā)布,原因是學(xué)術(shù)界發(fā)布了一個新的模型或者算法,社區(qū)想集成到自己的框架中。也有用戶發(fā)現(xiàn)了使用過程中的問題,在 Issue 提出自己的需求或者改進(jìn)意見,社區(qū)發(fā)布相應(yīng)的開源任務(wù)。當(dāng)然,還有很多其他類型的開源項目,但是我覺得都離不開應(yīng)用價值和實際需求這兩個核心方面。
OSPP:你有著非常豐富的項目實踐、實習(xí)與賽事參與經(jīng)驗,可以簡單為我們介紹一下么?這些經(jīng)歷在學(xué)習(xí)或其他方面給你帶來了什么?
宋昊成:我參與過挑戰(zhàn)杯、互聯(lián)網(wǎng)+、數(shù)學(xué)建模等比賽,同時也參與了很多項目的開發(fā)。這些實踐都是我難忘的經(jīng)歷。首先,通過參加各種競賽教會了我從“不可能”到“可能”的心態(tài)轉(zhuǎn)變。很多競賽從剛接觸的不知所云到后期的小有所成,關(guān)鍵在主動學(xué)習(xí)和不畏困難的態(tài)度,堅持下去大部分競賽其實都能取得比較好的成績。其次,通過競賽和項目開發(fā),我認(rèn)識了來自不同專業(yè)的優(yōu)秀同學(xué),擴(kuò)展了我的社交圈。最后,這些過往經(jīng)歷在我升學(xué)和實習(xí)的過程中,也為我提供了不小助力。
# 參與開源之夏與開源
OSPP:這已經(jīng)是你第二次參與開源之夏活動了,兩次參與體驗如何?又是什么吸引你再次參加活動的?
宋昊成:第一次參加是大四的時候,臨近畢業(yè),事情比較多,就匆忙申請了一個項目,可惜申請書還是打磨不夠,落選了。今年第二次參加,準(zhǔn)備的更加充分,把將近 600 個項目都認(rèn)真了解了一遍,選定了幾個合適的項目,認(rèn)真撰寫申請書。最終,我成功的中選了其中一個項目。被吸引參加活動的原因,還是想親自感受一下工業(yè)界項目的開發(fā),而且能看到自己的項目落地,是很有成就感的事。
OSPP:請簡單介紹一下你在本屆活動中承擔(dān)的開源項目。
宋昊成:我承擔(dān)的開源項目是《NebulaGraph-rust 實現(xiàn)點邊掃描接口》。這個項目的主要目標(biāo)是開發(fā) NebulaGraph-rust 項目,以支持 NebulaGraph 數(shù)據(jù)庫的 StorageClient 中的 ScanVertex 和 ScanEdge 接口。NebulaGraph 是一個高性能的分布式圖數(shù)據(jù)庫,下圖是?NebulaGraph 集群的經(jīng)典架構(gòu)。NebulaGraph 由三種服務(wù)構(gòu)成:Graph 服務(wù)、Meta 服務(wù)和 Storage 服務(wù),是一種存儲與計算分離的架構(gòu)。
目前,NebulaGraph-rust 僅支持部分 GraphClient 的接口,訪問的是圖中的Graph Service。我需要開發(fā)一個 StorageClient,訪問 Storage Service,并根據(jù)返回的 response 實現(xiàn) ScanVertex 和 ScanEdge 接口。

OSPP:在開發(fā)過程中有遇到什么困難或挑戰(zhàn)么?你又是如何克服的呢?
宋昊成:開發(fā)的過程最大困難是對 Rust 不熟悉吧,當(dāng)時選這個項目是想借這個機(jī)會學(xué)習(xí)一下 Rust,了解一下這個新興的語言。不少程序語言編寫有很多相似之處,如果會一門其他的很快就可以遷移過去,但是 Rust 的所有權(quán)、trait、生命周期等概念,讓你按以前的編程習(xí)慣編寫代碼會出現(xiàn)很多問題,所幸最后都解決了(就是 debug 過程有點折磨)。
克服的話,我采取一種漸進(jìn)的方法。我首先從實現(xiàn)一個最基本的功能開始,確保它能夠正常工作,然后在此基礎(chǔ)上逐步擴(kuò)展,最終形成我想要的 mod(模塊)或者 crate(包)。此處贊揚一下 Rust 的強(qiáng)大的編譯器,出錯時會給出非常詳細(xì)的報錯原因和解決方案,大部分問題,按著報錯提示修改便可以解決 。在開發(fā)過程中,隨著對 Rust 的不斷學(xué)習(xí),也慢慢感受到了 Rust 的魅力。
OSPP:你眼中的?NebulaGraph?是一個什么樣的開源社區(qū)?之后是否打算繼續(xù)參與開源社區(qū)或開源項目?為什么?
宋昊成:NebulaGraph 在我眼中是個年輕、善于交流、開創(chuàng)性、友善的社區(qū),以前接觸的幾位社區(qū)導(dǎo)師都是很年輕且有實力的開發(fā)者。搜索問題中,接觸到 NebulaGraph 社區(qū)的論壇,上面有很多活躍用戶互相交流解決問題,求助者的問題都能很快被解答。開發(fā)過程中,社區(qū)的導(dǎo)師和助手姐姐都很 nice,反饋的問題都能很快解決,暑假還收到了社區(qū)送的禮物和明信片。
之后會繼續(xù)參與開源社區(qū)的活動,畢竟自己開發(fā)的項目,會有用戶提出 lssues,要根據(jù)提出的問題積極維護(hù)和完善 Rust 客戶端。有機(jī)會的話也想?yún)⑴c社區(qū)的其他項目,多向社區(qū)的大佬學(xué)習(xí),成為一個合格的 contributor。
關(guān)于 NebulaGraph 技術(shù)社區(qū)
NebulaGraph 社區(qū)是由一群圖技術(shù)愛好者組成的技術(shù)社區(qū),社區(qū)主要討論話題為圖分析與數(shù)據(jù)挖掘、自然語言處理與知識圖譜、圖數(shù)據(jù)庫 NebulaGraph。而 NebulaGraph 是一款開源分布式圖數(shù)據(jù)庫,主項目采用 C++?編寫而成。自 2019 年開源以來,NebulaGraph 在近 300?名國內(nèi)外 contributor 一起努力之下先后發(fā)布了 3 個大版本,提交了過 3.5k+?次 commit,并獲得了 9.5k+ star。
GitHub 地址:https://github.com/vesoft-inc/nebula
在本次開源之夏活動中,得到開源之夏優(yōu)秀學(xué)子的幫助,實現(xiàn)了在圖算法、可視化、數(shù)據(jù)批處理等方向的優(yōu)化項目。
開源之夏社區(qū)主頁:https://summer-ospp.ac.cn/org/orgdetail/119ef0d9-7aac-431d-bb9f-d39864c168ff
OSPP:在參與社區(qū)貢獻(xiàn)的過程中有遇到什么令你印象深刻的事情么?導(dǎo)師和其他社區(qū)成員有為你帶來什么幫助么?
宋昊成:最深刻的是因為我暑假比較忙,時間規(guī)劃沒做好,導(dǎo)致項目開發(fā)進(jìn)度非常緩慢,感覺后續(xù)工作量還很多,一度覺得結(jié)不了項。此處感謝我的導(dǎo)師米澤雙(github:?Milittle),他平時工作非常忙,但還是周日抽空跟我開了個會,我們徹聊了一晚上,我提出的問題都給我解答了,也給出了項目基本的實現(xiàn)順序。

先不用做到盡善盡美,做一個最簡單、基礎(chǔ)的版本出來,后續(xù)再改進(jìn)。開完會后,因為思路清晰,中間和米導(dǎo)溝通順暢,我大概寫了十天就完成了基本功能。后面又花了幾天加上了錯誤處理和部分代碼重構(gòu),完成了第一個可交付的版本。
OSPP:參加開源之夏活動為你帶來了哪些收獲?
宋昊成:收獲最多是自信的增長,做之前會覺得很難,一些名詞或者相關(guān)技術(shù)領(lǐng)域沒聽說過。但是真正開始去開發(fā)項目,伴隨著查資料和與導(dǎo)師不斷討論,很多問題也沒想象中那么難,重要的是敢于嘗試。
# 寄語
OSPP:你身邊了解和參與開源項目的同學(xué)多嗎?你認(rèn)為參與開源之夏和社區(qū)貢獻(xiàn)對于在校生的學(xué)習(xí)和專業(yè)提升、就業(yè)選擇方面有哪些幫助?
宋昊成:身邊了解開源項目的同學(xué)還是比較少,普遍認(rèn)為離自己比較遠(yuǎn),看項目各種技術(shù)??床欢?,望而卻步。今年開源之夏走進(jìn)我們學(xué)校宣傳,也看到了周圍有幾位同學(xué)參加,能感受到近幾年開源的影響在慢慢變大,但是還任重道遠(yuǎn)。
參與開源之夏和社區(qū)貢獻(xiàn),對在校生各方面提升是顯而易見的,現(xiàn)在學(xué)??瓢嘟淌诘闹R偏研究、系統(tǒng),脫離工業(yè)界所需的技能,參與開源之夏可以親自感受一個完整的工業(yè)界項目是怎么樣開發(fā)的。在開發(fā)過程中,收集資料、學(xué)習(xí)、和導(dǎo)師溝通,并且獨立的完成項目的開發(fā)和測試,整個流程下來能很好的鍛煉自己。同時今年的不少大廠實習(xí)、秋招,招聘信息中都會說明有開源經(jīng)歷是加分項,對找工作是很有幫助的。
OSPP:有什么話想對計劃參加開源之夏活動的學(xué)弟學(xué)妹們說?
宋昊成:敢于邁出第一步是成功的一半。我身邊不少朋友想?yún)⒓樱吹搅宅槤M目的項目及陌生的技術(shù)棧就退縮了,但其實很多東西都是邊學(xué)邊做,心態(tài)要放輕松。
首先應(yīng)該找到自己感興趣或者相近的技術(shù)棧的項目。在自己寫申請書的過程中,思考項目開發(fā)過程中的難點和用到的技術(shù),然后根據(jù)自己能力評估一下自己能否完成,最后確定是否申請這個項目。我覺得合適的項目,是在不耽誤項目結(jié)項的前提下能給自己學(xué)習(xí)到新的東西,帶給自身成長的。
END
專欄編輯:大夢
校對:校大山、宋昊成
制圖:GoodWhite

專欄投稿請聯(lián)系開源小助手:kaiyuanzhixia 或?qū)诰庉嫞篐ungryfish34(備注“專欄投稿”加速通過),或填寫下方專訪信息收集問卷。
