Milvus Committer 嵇斌:參與開源是一種對自己的投資



✏️ 編者按:

2022 年 3 月,嵇斌在社區一致投票通過後正式加入了 Milvus committer 的行列。

在過去 3 個月的時間裏他除了爲社區提交了 40 個 PR 外,也活躍於 Milvus 用戶羣,幫助解答許多用戶的技術問題。

在接下來的文章中,嵇斌將與我們分享他如何從一個“開源跟蹤者”成長爲 Milvus 開源項目 committer。


誰是嵇斌

首先簡單做個自我介紹,我是嵇斌,是紫光華智的系統工程師,目前負責 Unisinsight 雲原生和人工智能相關的軟件預研工作。之前我在 Nokia 從事 5G 和雲相關的軟件開發,熱衷跟蹤參與開源。除了寫代碼外我也會把一些所學總結在自己的公衆號「代碼備忘錄」中,有興趣的朋友可以去看看。平時我喜歡研究咖啡、飲茶以及做菜。

初識 Milvus 社區

起初,我們公司希望在內部做一個改善代碼質量的內部項目,需要用一些模式特徵去對歷史的代碼做一些比對,這裏面就會用到一些向量比對的技術,所以我們當時就去找了一些開源的方案。儘管這個項目最後沒有做起來,但這個契機讓我們瞭解到向量數據庫 Milvus 的存在。後來,我們逐漸在對外的產品中嘗試使用 Milvus,目前實際使用了 Milvus 1.1 版本。

我的開源之路

我最早參與開源貢獻是在 2014 年,貢獻的項目是 Facebook-thrift,當時代碼還是通過郵件提交的。我那時只是想着項目後續升級的話,能夠無縫地升級 thrift 的新版本,所以就試着給社區提交了 jira 和 patch,沒想到還挺快就合併到主線了。比較遺憾的是當時沒有繼續爲社區貢獻。

最近一次接觸到開源協作的模式是我在諾基亞工作時,諾基亞整個工作流程就是參考 GitHub 的開源模式,所以我在最初加入 Milvus 貢獻時,上手還是相當快的。我之所以成爲開源項目的貢獻者是因爲我覺得作爲程序員使用一項技術,無論是開源還是商業技術,很大程度上這是一種投資行爲。當你選用了一種技術棧,你需要投入大量的資源,甚至要放棄一些其他的機會。所以,作爲一種投資行爲本身來講,我不希望這是一件「白嫖」的事情,希望能向上遊社區做一些回饋。一個人的力量可能非常有限,但是如果人多的時候,這個社區會越來越活躍,那麼產品纔會保持一個生命力。久而久之,投資獲得回報的這個可能性和概率就會越來越高。

另外,我認爲在社區裏給用戶提供一些解答或是討論,能夠幫助我個人和團隊保持技術敏感度,這點是非常重要的。因爲開源技術往往在技術上會比較領先,所以它吸引到的用戶在各方面的思路和思想都值得我們借鑑。在數據庫這個軟件領域裏,在技術選型、技術參與的時候,就能夠看到參與開源社區中所帶來的好處。因爲,參與開源之後,你會更瞭解軟件的實現機制、優點缺點,知道未來怎麼在生產中揚長避短,這是非常有意義的一件事情。因爲數據庫的特殊性在於,隨着你的使用、隨着你數據量的增長,它的一些性能會有一些變化。大部分使用場景下,我的業務可能沒有辦法在短時間達到規模的數據量,它可能會在未來兩年三年才達到數據量的峯值。這個時候就需要跟蹤和長期的監控數據庫的表現。

我在 Milvus 社區的體驗

印象比較深刻的是社區中良好的互動。我們是從 Milvus 0.10.0 這個版本開始使用的。在剛開始使用的時候,很多小夥伴因爲第一次接觸向量數據庫,在 API 的調用上遇到問題,不瞭解內部實現機制。當我們遇到困難的時候,會收到來自微信社區和工程師們的協助。我們從 Milvus 0.10 這個版本開始就能夠在公司的產品中使用起來,這是非常重要的一件事情;另外一件讓我印象深刻的事是當我在做 Milvus 2.0 支持 Windows 編譯的項目時,我採取了本地私人倉庫臨時開發,有很多的 commit 觸發到了 issue 狀態更新。這個時候,小凡主動的來找我,問我是不是需要一些協助,我覺得這個就是非常良好的互動和正向反饋,增強了我們未來在產品中長期使用 Milvus 數據庫的信心。

對 Milvus 社區的貢獻

我在社區裏主要貢獻的有這幾個 repo:milvus-io/milvus-sdk-cpp、milvus-io/milvus 和 milvus-io/knowhere。

以下是我做過的一些比較有意思的項目,包括但不限於:

我的一些小建議

爲什麼要參加開源:程序員的工作壓力普遍較大,很多時候我們不得不「996」或「捲起來」,而且對未來總是充滿焦慮。也是因爲這樣,很多人不明白貢獻開源的意義。爲什麼我要犧牲我的時間、精力來免費替不認識的人打工?

我參與開源的初衷是爲了要破局、尋求更高效的學習方法。因爲要跳出自己原本的層級,或是原本的知識圈,從更大的範圍內來看一件事,纔可能對現在做的事有一個革命性的改變,這個時候的努力纔會是一種高效的努力。

Upstream first:如果你使用開源軟件,你一定要有一個信念:upstream first。這點非常重要,你的改動一定要合併到上游,因爲上游更新一定會比你快。爲了未來可以去享受到上游帶來的好處,同時你又不想把自己修改的這部分丟掉,那麼最簡單的一件事情其實就是 upstream first。

做好時間管理:除了工作外我還需要兼顧家庭所以平時我會起得會比較早,在清晨花一點時間去看我關注的 Milvus C++ SDK 項目的 PR 或 issue 的更新情況。當工作上的需求比較急迫時,就會使用工作時間來做 Milvus 相關的事情,但對一些不是很急迫的需求,我就會用閒暇時間來維護 Milvus,緩慢提交。另外,在我實際的預研工作中,當我遇到了需要對 Milvus 做修改或者做更新的時候,我會第一時間把這個想法以 PR 或 issue 的形式告訴社區,因爲這個時候有效率是最高的。如果整件事情做完了,再回過頭來複盤提 PR 那可能就可能會非常痛苦。

如何參與社區

首先,你需要閱讀 how to contribute[1] 文檔,瞭解社區的一些規範。然後,你可以嘗試先從小的文檔貢獻開始,熟悉貢獻相關流程。

當你熟悉了這個系統後,我相信你會有很多的 idea,也許你想了解更多的技術細節以及這個社區想要發展的方向。你除了可以參與在 GitHub 和微信羣裏的討論外,也可以參加社區定期舉辦的會議- Milvus Technical Meeting[2] 瞭解社區進展和提出自己的建議。

最後,預祝大家有個美好的開源之旅,也歡迎大家加入 Milvus 貢獻者的行列!


相關鏈接 

[1] how to contribute:https://milvus.io/cn/community/making_your_first_contributions.md

[2] Milvus Technical Meeting: https://wiki.lfaidata.foundation/display/MIL/Milvus+Home


本文分享自微信公衆號 - ZILLIZ(Zilliztech)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章