去年8月,我在 GitHub 上开源了一个项目。一年后,项目有了 1.2 万 star,但我快撑不下去了。
这篇文章不是劝你不要做开源,而是分享开源项目维护的真实体验。
最开始的兴奋
项目刚开源时,我很兴奋:
- 第一天就有100个 star
- 有人提 issue 说"这个项目太棒了"
- 有人提 PR 修 bug
- Twitter 上也有人讨论
那种被认可的感觉,真的很爽。
我每天下班后都会花2-3小时回复 issue、review PR、写文档。虽然累,但很有成就感。
三个月后,问题来了
1. Issue 越来越多
项目火了之后,issue 暴涨:
- 有人问"怎么安装?"(文档写得很清楚了)
- 有人问"支持 XX 框架吗?"(不支持)
- 有人说"这个功能能不能加?"(功能清单已经很长了)
- 有人抱怨"为什么不支持 XX?"(因为我没时间)
每天打开 GitHub,都有十几个未读通知。
2. PR 质量参差不齐
有人提 PR 是好事,但很多 PR 质量不高:
- 没有测试
- 代码风格不统一
- 功能不完整
- 甚至改出了 bug
我要么直接拒绝(得罪人),要么自己改(累死自己)。
3. 用户的期待越来越高
项目刚开源时,大家都很宽容。现在,用户把它当成商业软件了:
- "这个 bug 什么时候修?"
- "能不能加个 XX 功能?下周就要用。"
- "文档写得太烂了。"
有个 issue 甚至说:"作为一个 1.2 万 star 的项目,这个 bug 不应该存在。"
我tm是免费维护的啊!
六个月后,开始疲惫
项目已经不是我的了,是"社区"的。
每次我想加个新功能,都会有人反对:
- "这个功能不符合项目定位"
- "这样改会 breaking change"
- "建议先讨论一下"
讨论来讨论去,功能还没加上,issue 又堆了一堆。
我开始怀疑:这个项目到底是谁的?
一年后,我想放弃了
现在,我每天打开 GitHub 都觉得压力很大:
- 156个未关闭的 issue
- 23个等待 review 的 PR
- 12个人 @ 我问"这个 PR 什么时候合并"
我已经两个月没写新代码了,全在处理 issue 和 PR。
更糟的是,这个项目一分钱都没赚到。我没时间做付费产品,开源项目又不挣钱。
为什么会这样
回头看,我犯了几个错误:
1. 没设定边界
一开始我想做个"人人都喜欢的项目",所以来者不拒:
- 有人提功能,我就加
- 有人提 issue,我就回
- 有人不满意,我就改
结果项目越来越臃肿,我也越来越累。
2. 没找到商业模式
我以为"先做个开源项目,火了之后再考虑商业化"。
但项目火了之后,已经很难商业化了。用户习惯了免费,你要收费他们就会骂你。
3. 一个人扛太多
我没培养核心贡献者,所有决策都我一个人做。
有人想帮忙,但我不敢放权,怕项目跑偏。
我的反思
如果重来一次,我会这样做:
1. 设定清晰的边界
- 写清楚项目的定位和 non-goals
- 不符合定位的功能,直接拒绝
- 设定 issue 和 PR 的响应时间(比如"一周内回复")
2. 考虑商业化
- 核心功能开源,高级功能收费
- 或者提供付费支持、付费文档
- 至少要能覆盖维护成本
3. 培养核心贡献者
- 找几个靠谱的人,给他们 commit 权限
- 让他们帮忙 review PR、回复 issue
- 不要什么都自己扛
4. 学会说"不"
- 不是所有 issue 都要回复
- 不是所有 PR 都要合并
- 不是所有功能都要加
你的时间是有限的,要把精力放在最重要的事情上。
开源值得吗?
这取决于你的目标:
- 如果你想学习技术、积累经验,开源很值得
- 如果你想建立个人品牌、扩大影响力,开源很值得
- 如果你想帮助社区、解决问题,开源很值得
但如果你想赚钱,开源不是好选择。
我现在的计划是:
- 把项目交给社区,找几个核心贡献者
- 我只维护核心功能,其他的让社区来做
- 把精力放在付费产品上
给想做开源的人的建议
- 想清楚目标:你为什么要做开源?
- 设定边界:什么做,什么不做
- 控制规模:别让项目变得太大
- 考虑商业化:至少要覆盖成本
- 学会放手:培养核心贡献者
开源很酷,但也很累。想清楚再开始。
如果你也在维护开源项目,欢迎交流。
评论区