第一次给开源项目提交代码是什么经历

很久之前一直想为开源社区做贡献,但无奈没有合适的项目,而且很多时候自己太菜,看不太懂,完全不知道从何下手。直到最近,花了点时间,给 RSSHub 写了个路由,提了 PR,缝缝补补,最后终于被合并了。

1. 起因

从去年了解到 RSS 这个概念后,我就一直在用 RSS 阅读器。有人"RSS 最终只是少数人的狂欢"。确实,这是一项很老的技术了,现在用的人很少。在 RSS 流行的年代,社交媒体平台尚未成为主流,大家获取信息的方式主要依赖于直接访问网站或使用 RSS 阅读器。而现在不同了,现在的网站做的越来越好,社交媒体的推荐算法也更能留住用户,内容的发现和获取也变得更加直观,许多网站也不再提供 RSS 订阅,RSS 流行度便一直衰退。

然而,管理的自己的信息流是一种权利,这句话概括了 RSS 的魅力也正是我使用 RSS 的原因。

喜欢 RSS 的用户是因为特立独行吗?当然不是。

于我而言,首先,在这个算法无处不在的时代,我不想被算法裹挟,我希望能够减少一些花费在算法推荐给我的内容上的时间。而且 RSS 订阅加上友好的 RSS 阅读器可以作为一个 All-In-One 的信息收集器,这让我不用一个个收藏我想看的博客,每次想看再去密密麻麻的收藏夹翻,也不用猜它们是否更新。不仅是文字内容,各种其他媒体内容支持渲染也都很不错。

当然,我肯定不可能完全放弃算法推荐的内容,我也会经常去各个网站上浏览,这两者并不冲突。

如果说算法推荐的内容是一个根据真实的你制造的信息茧房,那 RSS 订阅内容可以认为是一个你自己搭建的"信息茧房" ,有时这个信息茧房过于理想化,我总认为自己 RSS 订阅的内容中知识信息的比重应该比娱乐的比重高,但是每次看着 99+的未读数,我总会觉得有些累。这是一个我根据理想中的自己应该喜欢的内容而搭建的信息茧房,实际上我没有那么多精力去消化,99+就不管了。

以上可以看出是我自己的问题。

2. 犹豫和尝试

用了很长一段时间后,直到 Follow 发布内测版,我开始想我也许也能为这个生态贡献点代码。于是,在一个深夜,我打开了我收藏的 NSFW 的网站,正当我欣赏的时候,我突然想到我或许可以写个路由来用 RSSHub 获取这个网站的更新?我也不知道,那试试吧。我找到 RSSHub 的文档,按照上面的步骤,它教我写一个路由,我几乎是照抄式的写,一边写一边问 AI。这实在是新领域,我很多时候都不知道自己在写什么。最后糊完了,跑不起来,要么是看不懂的 bug 要么就是不知从何下手的 403。总之,我在多次询问 AI 无果之后,放弃了,睡觉去了。我觉得自己太菜,还得学。

3. 闪光

是 ChatGPT 的闪光时刻,不是我 😭

又是一个深夜,我还是打开网站,想着我现在应该能看懂一些了,于是试着写写。由于上次的代码懒得保存直接删了,这次从头开始看文档,跟着写。发送请求,从响应的 HTML 结构中提取需要的数据,然后返回,大致就这么简单,过程中还是一直靠 AI 的补全完成了速成了一下语法和框架用法,一些之前报错的符号也能看懂了,都靠 AI 解决了。最后跑起来试试看,首页没有问题,然后访问一下我的路由。好的,403🤡。接着又折腾了半个小时?(不记得了) AI 解决不了,睡觉。

第二天下午,我比较闲,打开 vscode,再试试看。这次真得感谢 ChatGPT 了,它告诉我用 puppeteer 模拟用户请求来避免 403,虽然我完全不懂这个 p7r(原谅我懒得打字,学的 k8s)。经过一番折腾,在它给出代码后,我复制粘贴,等待项目加载和请求响应,几秒钟之后我看到了返回的 RSS 订阅数据,我高兴坏了,总算是修好了。接着我仔细检查了一下这个文件,感觉没问题,格式化一下代码然后休息,到晚上提一个 PR 试试。

之后我小心翼翼的写好 PR 的描述,填好模版,等 CI 跑完,一直等,跑的实在是太久了,这种感觉跟力扣交题一样,紧张死了,跑一半收到邮件说有些测试超时取消了,一看 GitHub Actions,CI 还在跑。好在最后终于跑完了,CI 通过了,我高兴的像个孩子立刻截了个图到处发,跟朋友们炫耀我给开源项目提 PR 了。

4. 反馈和进步

第二天还没有人 review 我代码,我好着急,只能等了。但后来我又发现有个地方要改(具体是啥忘了),然后我改完 rebase 了一下,结果发现我的提交记录加上了好多其他人的还没有被合并的提交,我慌了,这不是把别人的 commit 算到我头上了?这也太尴尬了吧,我关掉了这个 PR,然后重新开了一个,期间又向 ChatGPT 请教了一下 GitHub 多人合作开发的规范工作流,使劲追着问,最后整理出了一份算是简单的规范流程笔记吧。然后我重新开了一个 PR,依然是等 CI 然后等 review,我看到我第一 PR 之后有人等提交已经被合并了,我更急了。

后来不记得什么时候了,有人 review 了我的代码,指出了好几处错误:包的引入,UA,返回的结果字段无效,puppeteer 的使用等,前几个都问题不大,是因为我没仔细看规范文档 😢,最后 puppeteer,他说不需要用,使用项目配置的 UA 就能通过。我有点不太明白,改了前面的,commit 了一次。后来他再次加粗指出不需要用 puppeteer,我这才去改。我一直以为不用就一直无法访问,后来的调试过程中发现说我使用的 UA 是异步赋值的,所以请求时为空。难怪呢,改过来之后把 puppeteer 换成了 ofetch,重新测试路由,看到能够返回 RSS 订阅的 XML 格式数据!太好了,总算是解决了 403。

Review 我代码的人真的太贴心了,全都告诉我该怎么做了,就差直接帮我写了 🥹。

第二天早上醒来收到邮件,我的 PR 被合并了。哇,效率真高!

现在看来,我写的还是个简单的路由,也没多大工作量,但也是我第一给开源项目交代码(虽然之前也给别的项目修过 typo),还是很开心的。

以上就是我的第一次开源经历。在此之前我一直不知道怎么参与开源项目,在网上到处搜,看各种的分享,还是不会,但学到了一点:

"想要参与开源项目,首先成为这个项目/产品的用户。"


今天发现之前的代码有点问题,图片不加载 🤡,又改了一下。

相关推荐
孔明click3319 分钟前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·sa-token·开源·springboot·登录·权限·权限认证
腾讯数据架构师37 分钟前
摩尔线程 GPU 怎么接入 Kubernetes 跑 DeepSeek?CubeStudio 摩尔线程(MUSA)适配实操
人工智能·云原生·容器·kubernetes·开源·mlops·maas
明王明王1 小时前
从零搭建一个单节点 K8S 可观测实验室(十三):总结——这个实验室如何服务工作、学习和开源项目
学习·kubernetes·开源
梦梦代码精1 小时前
深度体验BuildingAI:一款集成商业闭环的开源智能体平台
人工智能·docker·开源·代码规范
省长1 小时前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·后端·开源
zlinear数据采集卡2 小时前
FRAM铁电存储器原理深度解析:D223校准参数的“永久保险箱“
arm开发·人工智能·stm32·单片机·fpga开发·开源
leisoo80972 小时前
本地股票数据深度对比ClickHouse与Parquet存储方案 IG50免费开源股票数据API接口
clickhouse·开源
智码看视界2 小时前
SenseNova U1.5 Lite 部署实测:8B 单卡跑通 4K 生图,Apache 2.0 免费商用
开源·apache·多模态·图像生成·ai生图·sensenova·商汤大模型
x863 小时前
Operit 深度拆解:手机里的开源 AI 操作系统
人工智能·智能手机·开源