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

Zilliz發表於2022-03-24

✏️ 編者按:

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。

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

在 Windows 上執行 Milvus 2.0
Milvus 1.0 版本支援 S3 儲存的部署
Milvus 1.0 支援 OSS 物件儲存
Milvus Knowhere

我的一些小建議

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

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

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

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

如何參與社群

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

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

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

相關文章