过两天就过年了,读到这篇文章的朋友,过年好哇。

这几个月给开源项目贡献了不少代码,在这里记录一下,缘起是敬仰的宋教授每年都会记录自己的贡献,写一篇年终总结,每次读都想着有机会我也要记录一下,于是有了这篇。

Dify

  • 因为工作需要正式接触了 Dify, 想着如果想用好还是需要看一看它的源码的,读源码的过程中发现了一些值得优化的地方,于是就提了个 PR。
  • 这里最有趣的地方是给我 review 的朋友我觉得他特别眼熟,于是点开了他的 GitHub 主页,发现他是我项目 xiaogpt 的贡献者,还给 OpenDAL 做过贡献,感叹开源的世界真小啊。
  • 当然贡献的过程很愉悦,因为我受 gray 的影响比较喜欢修 bug, watching dify 项目后有 bug 我就会试着修复一下,于是提了非常多的 PR, yihong0618 的头像也进到了主页,还是挺有成就感的。最开心的是经常给我 review 的两个人 @laipz8200 @crazywoola 在代码里交流就好像多年的朋友一样非常开心。

Image

一些比较自豪的 patch

  • https://github.com/langgenius/dify/pull/11796 fix: better memory usage from 800+ to 500+
  • https://github.com/langgenius/dify/pull/11847 在 issue 出现 5mins 定位到问题并修复
  • https://github.com/langgenius/dify/pull/11700 fix: memory leak by pypdfium2 close(maybe) #11510
  • https://github.com/langgenius/dify/pull/11544 这个 PR 其实我没找到 root cause 但后面一直跟下来,最终被另一个大哥解决了,但是 debug 过程很有趣,对 workflow 的了解加深了不少
  • https://github.com/langgenius/dify/pull/11317
  • https://github.com/langgenius/dify/pull/10921 我人生中提过最大的一个 PR, 这个 PR 本身的过程不提,但是 PR 过后发现了 break 快速修复锻炼了不少自己在压力下的 debug 能力

greptimedb

  • 很早就知道 greptimedb 因为很特别喜欢他们的 CTO @sunng87 同为地图爱好者一下子就发现了他 GitHub 头像的特别
  • 但最早想给他们做贡献不是因为这个,是因为之前 tison 的加入,看到了他在推上发 good first issue 当时我不太会 rust 于是简单看了一下留了个 comments
  • 但也不是因为这个,看他们项目过程中发现他们的一个员工莫名其妙的在推上给我拉黑了(询问下也拉黑了我另一个朋友),我完全跟这个人没有任何交集,于是作为回报我在能找到他的任何地方给他拉黑了,想给他们提个 PR 最主要的原因就变成了,我想试试拉黑我的人能不能给我 review
  • 8 个月前我的能力有限,没找到能贡献的地方就放那了
  • 这两个月为什么又想起来了呢?给 dify 提代码的过程中,发现不少 bug 是因为 AI 写代码的补全不对造成的,我思考了下 rust 的编译器可以避免非常多这样的问题,在 LLM 时代,Rust 的地位还会上升,于是我就去学习了 rusting 刷完之后算是入门了
  • 就又想起了这件事儿
  • clone 了 greptimedb 跑起来发现 fmt 非常慢,于是优化了下算是第一个 PR
  • 发现拉黑过的人确实不能给我 review 非常开心!
  • 贡献了一些代码后还收到了小礼物,也多少会写了一些 rust 还学到了不少,贡献的体验也非常好。但没有上一条开心!

Image

因为还在入门,没有特别多自豪的 PR 但期间学了一些 static check 想起了朋友之前在公司的 share 理解也深刻了些:

  • https://github.com/GreptimeTeam/greptimedb/pull/5279 fix: better fmt check from 40s to 4s
  • https://github.com/GreptimeTeam/greptimedb/pull/5313
  • https://github.com/GreptimeTeam/greptimedb/pull/5388 refactor: drop useless clone for some better performance using static chek
  • https://github.com/GreptimeTeam/greptimedb/pull/5398 fix: vector function for PromQL need to ignore the time index also 这个成就感挺强的,而且找 bug 过程中一点一点像剥笋一样找到 root cause 很开心

OpenDAL

  • 因为 @xuanwo 我也想试试给 OpenDAL 贡献一些
  • 但后面发现我为了贡献而贡献这个项目既不是我用我又不用它来学习,而且也不是我非常喜欢去想了解的项目,给我带来的愉悦感没那么强
  • 可能未来需要我会多贡献点
  • 既然不为了利益,当然最重要的是开心,于是先搁置了

PR:

  • https://github.com/apache/opendal/pull/5554
  • https://github.com/apache/opendal/pull/5561
  • https://github.com/apache/opendal/pull/5563

ai-no-jimaku-gumi

  • 上面的过程中发现了Inokinoki 正好在做我想做了很久一直搁置的一个项目
  • 还是 rust 写的,就给它实现了几个 feature
  • 而且我也一直在用

PR:

  • https://github.com/Inokinoki/ai-no-jimaku-gumi/pull/16
  • https://github.com/Inokinoki/ai-no-jimaku-gumi/pull/33

Others

  • 再此过程中因为用到或学习了一些其它项目还顺手提了几个 PR
  • 这种顺手的贡献也挺舒服的
  • 忘了还有 cloudberry(不过短时间内不准备再贡献了)

补充

  • 之后再有补充在这里
  • 在代码量比较大的项目里修 bug.不断 print 不断的 gdb 一层一层的去找 root cause, 找到后研究如何修复,跑测试,测试挂了,可能不是 root cause 继续找,还挺沉迷其中的,额外还有一种暂时比 AI 还厉害一点的快感。
  • 暂时。。。