1
头图

✏️ 编者按:

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 贡献者的行列!


Zilliz
154 声望829 粉丝

Vector database for Enterprise-grade AI