维护热门开源项目的 6 个经验教训

2025-06-07

维护热门开源项目的 6 个经验教训

2016年至2018年间,我维护了一个每月下载量超过80万次的开源项目。从中我学到了六个宝贵的经验,现在我想与大家分享。

一切是如何开始的🛫

我于 2016 年加入 Spotify,当时我的团队需要一个 React 日期选择器组件。我在 GitHub 上搜索了很多,最终选定了一个。我把它集成到我们的网站中,并阅读了代码和文档。很快我就意识到这个项目还有改进的空间。于是,我提交了几个 PR,添加了代码检查器、一些重构,并改进了文档。

项目负责人负责审核和批准我的拉取请求 (PR)。就在这时,我看到了机会!我给他发了一封邮件,问他是否需要维护项目的帮助,他欣然欢迎我加入团队!哇!感觉就像加入了一个秘密俱乐部!我一直想维护一个受欢迎的开源项目,这真是太令人兴奋了。

维护开源项目

我以前从未维护过开源项目,所以完全不知道会发生什么!这个项目很受欢迎,但有很多未解决的问题和未合并的 PR。我先从解决这些问题开始,然后着手提升代码质量。

一旦我了解了代码库,我就会做出更重大的改进,例如对 API 的更改。

经验教训

两年过去了,154 次提交,我学到了很多!以下是我最宝贵的六条经验。

人们不擅长阅读文档

我花了很多时间编写文档,改进了组件的入门体验。尽管如此,我还是有一些问题在文档中得到了解答。这种情况一直在发生,我尝试让文档更直观,但并没有什么帮助。

“我没办法马上搞定,所以我得问问! ”这种习惯很糟糕。作为一名软件工程师,你需要阅读文档来学习和进步。你的问题不一定有人能解答,到时候你该怎么办呢?

好的代码是主观的😋

我开始维护这个项目的时候还是个初级工程师。我以为自己已经把所有事情都搞清楚了,但天哪,我错了。我有幸与经验丰富的工程师一起在这个项目上共事,学到了很多东西。我当时很自信,心想“这才是写好代码的方法”。可后来有人发了一个 PR,完全违背了我的信念,我不得不重新审视什么是好的代码。

现在,作为一名高级工程师,我发现好的代码并不总是客观的。当然,我们认同一些好的做法。但总会有人不同意你的观点,而且理由充分!

好的 Git 提交信息很少见🤔

维护开源项目最让我惊讶的一点就是这一点。在 GitHub 上使用 Git 的开源世界里,我们与未来的自己沟通的空间非常有限。我们应该明智地利用这个空间,并尽力在编写提交信息时做到尽可能清晰。

反正我就是这么想的,但大多数人似乎并不认同。我经常看到一些 PR 没有任何描述,只有一条提交信息说“修复渲染错误”。这不仅是一个糟糕的做法,还会减慢 PR 合并的速度。

合并别人的 PR 感觉很棒😍

如果你曾经为开源项目贡献过,你一定体会过你的 PR 被合并的滋味。那种感觉太棒了!我成为了更伟大事业的一部分!现在我可以告诉你,成为按下“合并”按钮的人,感觉也很棒。这是一个三赢的局面。PR 的作者、维护者和项目使用者都获益匪浅。

大家都棒极了!🤩

人们会抽出时间去为陌生人使用的组件做贡献。在我看来,这就是开源的意义所在。人们为了更大的利益走到一起。如果你现在还没有为某个开源项目做贡献,不妨试试。如果你已经参与了,那就继续做下去,你太棒了⭐️。

很有趣,但也会很累😰

维护这个项目让我很开心,但无论我花多少时间修复错误,总会有新的问题出现。这个组件比我最初想象的要复杂得多。有时,似乎有源源不断的新问题不断出现。

当时基本上只有我一个人在维护它,另外还有几个人帮忙。我感到自己肩负重任,因为真的有人遇到了真正的问题。我可以通过修复错误来提供帮助。所以我确实修复了很多。但我从未停止,直到那时我才感到筋疲力尽。

我为什么停止✋

在这个项目上工作了两年之后,有一天我突然意识到我已经一个月没碰它了。于是,我决定停下来。我给老板发了封邮件,解释了一下。他说这很酷,并感谢我的帮助。他甚至还从他的公司寄给我一些“我们都能得到的东西”(SWAG)!一件T恤和一些贴纸。谢谢你,哈维尔!

结论

维护一个开源项目很有趣。项目里的人都很棒!但也可能很累。

以下是我所学到的经验教训的总结:

  • 人们不擅长阅读文档
  • 好的代码是主观的😋
  • 好的 Git 提交信息很少见🤔
  • 合并别人的 PR 感觉很棒😍
  • 大家都棒极了!🤩
  • 很有趣,但也会很累😰

如果你有机会尝试,我推荐你尝试一下。现在有数百万个项目正在寻求帮助,勇敢地开始贡献吧!你不会有任何损失。


通过TwitterLinkedInGitHub与我联系

最初发表于prplcode.dev

文章来源:https://dev.to/simeg/6-lessons-learned-maintaining-a-popular-open-source-project-1fpg
PREV
哪些技能造就了优秀的软件工程师?
NEXT
通过(重写)FizzBu​​zz 来理解函数式编程基础知识