本文目录导读:

这个问题本身就有点“陷阱”的味道——开源项目的复盘里,最不应该出现的失误,往往不是某个具体的技术bug,而是那些“本可以避免、却因为流程或文化缺失而反复发生”的事。
如果你是在问某个特定项目的复盘结论,那需要具体项目具体分析,但如果是问开源项目复盘中最典型、最不该出现的一类失误,答案通常是这几类:
把“没写文档”当成小事
最不该出现、也最常被复盘时拎出来骂的,就是关键决策没有记录。
- 为什么选了这个方案?
- 为什么拒绝了那个PR?
- 为什么突然改了API?
这些如果没有写在 issue、RFC 或 commit message 里,半年后连维护者自己都忘了,新人接手时只能靠猜,社区贡献者也容易做重复劳动,这不是技术难,是习惯问题,所以最不该。
对贡献者冷处理
开源项目最大的资产是社区,复盘时最扎心的失误往往是:
- PR 挂了几个月没人理
- issue 被 bot 自动关闭,没人跟进
- 维护者用“这个不欢迎”之类的语气回复
这类失误的代价是贡献者流失,而且很难挽回,技术失误可以修,人心散了就没了。
没有安全响应流程
Log4j、xz 后门这类事件之后,几乎所有复盘都会提到:
- 没有私密安全渠道
- 没有专人负责安全报告
- 收到漏洞报告后公开讨论,导致 0day 被利用
这种失误一旦发生,影响面远超项目本身,所以也是最不该出现的。
Bus factor = 1
复盘时经常发现:整个项目其实就一个人在扛。
- 只有一个人有发布权限
- 只有一个人懂核心模块
- 只有一个人能回安全邮件
然后这个人 burnout 了,项目就停了,这也不是技术问题,是治理问题,而且完全可以在平时避免。
许可证/合规问题
- 接受了来源不明的代码
- 依赖了 GPL 库却用了 MIT 协议
- 没做 CLA/DCO
这类问题一旦爆出来,可能要重写、下架、甚至打官司,复盘时通常会被列为“最不该出现的低级失误”。
如果非要选一个“最不应该出现”的,我会说是:
没有把关键决策和流程写下来,导致项目依赖个人记忆而不是制度。
因为上面其他几类失误,很多都能追溯到这一点,文档和流程不是官僚主义,是开源项目能活过三年的基本盘。
如果你说的是某个具体项目的复盘(比如某个知名开源项目的 postmortem),可以把项目名或复盘链接发我,我帮你具体分析它把哪次失误定性为“最不该出现”。