去年的南昌 R 会议上,我讲到了社区合作的问题,里面用了一个例子,是 Wush Wu 大人生平第一个 GitHub 合并请求。用这个例子是因为刚好开会的前几天 Wush 大人在微信群里说:
【……】那份貢獻對我自己意義比較大,因為那是我第一次成功貢獻別人的專案耶! 感謝益輝大大讓小小我跨出寫open source 的第一步
嘿,嘿嘿,嘿嘿嘿。洒家感到非常满意。在 GitHub 上混迹也有五六年时间了,我一直很注重鼓励别人迈出第一步来帮我贡献代码,即使是他们的第一个合并请求写得并不完美或者看起来完全小儿科,我也会尽量合并。这些人里将来会诞生一些做出更大贡献的人,事实上我确实也提前发现了一些有潜力的贡献者,比如 Kirill Müller,在他闻名之前,我就察觉到了他的潜力(技术强又很严谨),让他帮忙维护 tikzDevice 包,因为我自己完全不会用 C,也不懂 R 的那些底层 API。
很多开发者完全不能理解这种做法的意义,他们自己水平很高,于是拿自己的标准去衡量所有人(比如修改个拼写错误你也好意思来打扰我给我发合并请求?)。2012 年我在 ATT 实验室实习快结束的时候,我给 rcloud 项目 提交了第一个合并请求,很快就被粗暴地拒绝了,从那以后我就失去了为这个项目做贡献的兴趣。
所以说,开源软件分两种:开源软件和我的开源软件。后者就像《魔戒》里的咕噜姆:我的宝贝!
要真正“开彼源兮斯流永继”的话,必须要有心成为一个首席鼓励官(Chief Encouragement Officer)。