✏️ 编者按:

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[1] 文档,了解社区的一些规范。然后,你可以尝试先从小的文档贡献开始,熟悉贡献相关流程。

当你熟悉了这个系统后,我相信你会有很多的 idea,也许你想了解更多的技术细节以及这个社区想要发展的方向。你除了可以参与在 GitHub 和微信群里的讨论外,也可以参加社区定期举办的会议- Milvus Technical Meeting[2] 了解社区进展和提出自己的建议。

最后,预祝大家有个美好的开源之旅,也欢迎大家加入 Milvus 贡献者的行列!

Milvus Committer 嵇斌:参与开源是一种对自己的投资相关推荐

  1. 每周推荐短视频:企业学校与用户如何参与开源生态建设?

    校企机构等多方角色如何参与数据库开源生态建设?如何通过校企合作培养更多数据库人才?本期大咖说,阿里云联合武汉大学.深圳大学和上海开源协会展开共同探讨. 嘉宾简介 阿里云数据库产品事业部首席架构师.阿里 ...

  2. 5W1H聊开源之Who和How——谁、如何参与开源?

    上次Who的主体是谁"发明"了开源,这一次主体转换,来看看开源发明之后,还有哪些人为开源做贡献?作为普通程序员的我们,又能以怎样的形式参与到开源项目中? 很多人都以为参与开源是一件 ...

  3. RocketMQ 大神丁威亲述参与开源社区的方式

    丁威 读完需要 8 分钟 速读仅需 3 分钟 <RocketMQ 技术内幕>维护者,主打成体系剖析,JAVA 主流中间件,架构与设计原理,为构建完备的互联网分布式架构体系而努力,助力突破职 ...

  4. 今年夏天, Milvus 社区与 6 位开源后浪的故事

    今夏, Milvus 社区诞生了 6 位后浪贡献者. 这 6 位贡献者:赖伟峰.陈萌.张锦程.黄俊鹏.吴政达与冯吕,他们都还是正在就读本科与研究所的学生. 他们与 Milvus 的故事要从今年中科院软 ...

  5. 参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!

    什么是"CSDN开源加速器计划"? 纵观近 30 年的科技创新,开源已成为全球技术应用和行业数字化发展的基石,尤其最近几年,开源的商业化得到了极大突破,开源正在成为全球科技的强劲驱 ...

  6. 参与开源项目,结识技术大牛!CSDN “开源加速器计划”招募志愿者啦!

    什么是"CSDN开源加速器计划"? 纵观近 30 年的科技创新,开源已成为全球技术应用和行业数字化发展的基石,尤其最近几年,开源的商业化得到了极大突破,开源正在成为全球科技的强劲驱 ...

  7. 红帽技术开放日:参与开源社区不只有贡献代码这一种方式

    红帽(Red Hat)是全球最大的开源软件公司,今年是红帽建立25周年,适逢LC3大会在北京举办,6月28日和29日红帽举办了开源社区开放日和媒体交流会,和大家分享红帽的最新消息,并探讨了如何建设开源 ...

  8. 朱明亮:参与开源软件让业余时间更有意义

    在大学期间朱明亮的专业是土木工程,不过他反而对编程更感兴趣.并合作开发维护了开源播放器XULPlayer,虽然占据大部分业余时间,但他说:这让业余时间过得更有意义,更充实,也得到社区网友的认可及支持. ...

  9. 为什么建议学生积极参与开源项目?

    喜欢就关注我们吧! " 你参与过开源项目吗?" 随着开源技术对信息产业的积极影响进一步扩大,越来越多的面试官将是否参与开源项目作为考核开发者能力的一项基本指标. 对于求职者来说,参 ...

最新文章

  1. cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
  2. hybriddb mysql移植_HybridDB for MySQL 实现在线与离线数据分离的实践
  3. Docker安装MariaDB
  4. linux DNS辅域
  5. C异常处理实现: setjmp和longjmp
  6. 软件测试中的α测试、β测试和λ测试
  7. html怎么给变量添加样式,通过CSS变量修改样式
  8. Android中那些有你不知道的事
  9. krb5安装包 linux_Linux:krb5
  10. vue集成wangeditor3.0版本 解决光标乱跳等问题
  11. C#对Redis的读写与使用
  12. 可视化看板:基于电子竞技行业数据大数据可视化分析(详细代码及图文说明)
  13. 超越YOLOv4-tiny!YOLObile:移动设备上的实时目标检测 [左侧有码]
  14. 【Python黑科技】孤独的程序员和AI机器人朋友聊天解闷(免费接口+保姆级图文+实现代码注释)
  15. python求真分数_Python 列出最简真分数序列*
  16. Qt设置电脑桌面壁纸
  17. Godaddy注册的域名转发、转向教程
  18. torchtorchvision对应版本
  19. Mac装Xcode后开不了机
  20. 深度优先搜索算法及其MATLAB实现

热门文章

  1. 听说朋友九年前的黄金解套了
  2. Java学习进阶:学习Java得3个技巧
  3. 简析回波损耗RL的不良原因及解决对策
  4. 不要再纠结React与Vue的好坏这个问题了
  5. python脚本实战---修改时间戳与接口请求
  6. 2020年6月程序员工资统计,平均14404元,又跌了,扎心
  7. web2.0盈利模式
  8. 科技云报道:2022年,企业级科技将如何重塑世界新面貌?
  9. Vue中播放音频和语音合成
  10. 【DB2】How to resolve SQL20249N the statement was not processed with error