说实话,在开源社区混了这几年,我越来越觉得大家嘴上说的“人人平等”和实际做的是两码事。你随便打开一个热门项目的贡献榜单,排在前面的永远是那些提交PR的人,尤其是那种修了一个复杂bug或者搞了个新功能的。至于那些修文档、回复issue、整理标签、维护CI的人,根本没人记得。我见过一个维护者花了好几个小时写了一份特别详细的迁移指南,结果评论区只有零星几个“thanks”。而同一天另一个开发者改了一行配置,因为顺手解决了一个性能问题,直接被项目创始人点名表扬。这种对比真的挺刺眼的,但大家好像都默认了,代码才是硬通货,其他都是边角料。
其实这种鄙视链也不是没来由的。从我自己的经验看,写代码的成就感确实更直接——你提交一个PR,跑完CI,合并之后看到项目真的变得更好了,那种“我是创造者”的感觉特别强烈。而写文档或者回复issue,感觉像是在做保洁,干完了没什么痕迹,也没人觉得你厉害。我之前在一个小项目里帮忙整理过一周的issue,把重复问题合并,给每个标题加上了标签,结果项目负责人说“干得不错”,然后就没有然后了。但我知道这件事节省了维护者至少三小时的时间,只是这种功劳没法量化,也没法在commit历史里留下那种“高光时刻”。
更离谱的是,很多开源项目的“贡献者指南”里从头到尾都在教你怎么跑代码、怎么提PR,关于怎么写文档、怎么参与讨论的部分就一两句话带过。这背后其实是一种资源倾斜:代码贡献能直接提升项目质量,是硬指标,而社区类工作很难衡量,所以连基础设施都不愿意投入。我有一次在某个CNCF项目里提了个issue,说文档里有个链接失效了,结果过了两个月都没人管。后来我实在看不下去,自己改了一行Markdown提了PR,当天就被合并了。你看,连维护者自己的行动都在暗示:文档问题不值得花时间,只有PR才值得。这种潜规则才是最伤人的。
我后来想明白了,开源贡献这件事,本质上是被工具和流程塑造的。GitHub的贡献图上只显示你的commit数量,不显示你回复了多少个issue,也不显示你在讨论区帮多少新手解答了疑问。那些非代码贡献就像隐藏关卡,你做了,系统不记录,社区不认可,最后连自己都会怀疑是不是在浪费生命。但反过来想,如果一个项目只有代码没有社区,那它就是个孤岛。我记得有一个特别犀利的评论说:开源项目的增长速度取决于代码质量,但存活率取决于有没有人愿意回答傻问题。这句话太真实了——我见过好几个技术特别牛的项目,因为维护者不愿意搭理新手,最后活生生把热度耗死了。而那些看起来“杂事”做得多的项目,反而越走越稳。可惜这种长期价值,在当下的贡献者文化里根本排不上号。
所以我现在对“开源贡献”这个说法很犹豫。你会发现大家口口声声说“贡献”,但心里其实默认指的是“代码贡献”。如果你只是个写文档的,或者你只是天天在issue区帮人debug的,你连贡献者证书都拿不到,更别提什么Google Summer of Code了。我个人觉得,要改变这种状况,不能光靠道德呼吁,得从机制上动手。比如给非代码贡献设计专门的徽章和榜单,或者让项目在release notes里专门感谢那些文档和社区贡献者。我自己现在就尝试在参与项目的时候,主动去关注那些被忽略的贡献者,发个邮件感谢一下。听起来很微小,但至少能让我自己觉得,这个社区不是只有学会写代码的人才配得到掌声。