对于 OceanBase 点“赞”送礼的案例,star 在 GitHub 平台上被某些开发者作为选择开源软件库的辅助指标,是因为自然增长的 star 基本来自用户的主动好评和二次传播。star 并不是开发者采用一个软件的关键指标,软件已经被自己或其他人验证过了,有可复制的使用方案才是决定性的优势。star 暗示用户主动好评,是软件已被验证过的一个弱相关的参考。OceanBase 搞点“赞”送礼活动,其实也不会有大范围的影响,只是破坏了自己 star 数原本有的一点价值。
至于把任何形式的 star 增长解释为社群规模的成长,则是无稽之谈。star 背后的行为只是一个简单的点击动作,没有任何门槛。一个接过超市传单的人,不用任何培训都能成为超市的消费者。但是一个凑热闹去给代码仓库点“赞”的人,是没有任何理由做进一步地参与的。其实,由于众所周知的原因和软件开发本来的小众特点,哪怕就看增长 star 的目标,这样的推广活动甚至不会给 OceanBase 带来 1k 以上的新增 star 数。而且,以 OceanBase 的大厂背景、技术实力和生产实践,基本不需要也不太可能用刻意增长 star 的方式达成提高 awareness 的目标。
这个时候,作为工作在这个系统上的一线研发人员或是基层研发主管,突然被告知自己每天打交道、提交变更的代码仓库要开源了,下意识的自我保护策略就是 Open Source Code Only - 开放源代码就是源代码用开源协议公开发布?点击发布……好,完事啦!至于研发计划和开发流程,这跟开放源代码有什么关系?我不是已经开源好了吗,这些照旧就可以了。
如果某一天企业又想起来“共建”的故事,开始给这个“开源团队”下达社群人数增长的需求,一方面是短时间内低门槛的手段只有上一节提到杂活,另一方面,不止如此,“开源团队”的人还得求着“外部”开发者来参与,以达成自己的业绩。这种既瞧不起来人贡献的内容,又被迫跪舔式服务的情形,我在很早的一篇文章《Two Hats of Developers》当中就有过讨论。
《大教堂与集市》中有一个著名的 Linus 定律,“只要眼睛多,bug 容易捉”。在这本书里面,作者讨论了开源社群的集市开发模式,以其开放的特征,以及提供源码从而支持参与者基于相同的真实的源码进行高效交流,驯服了大型软件开发的复杂性。诚然,在其论述中,基于源码的,快速发布反馈缺陷报告和补丁修补的开源协同方式,能够制造出 Linux 这样的大型开源软件。然而,这一论述却有一个隐含的前提假设,那就是开源软件得到了足够多的关注。
Linux 无疑得到了全世界开发者的海量关注,并且一直如此。开源运动的启蒙阶段,大量的软件都被开创式的制造出来,彼时少有其他开源竞争者的存在,因此眼球或者叫注意力能够投放到的目标是相对有限的。另一方面,开源社群彼时仍是小众圈子,天然地对进入其中的注意力有一个质量筛选的机制,除非货真价实的黑客,否则很难在当时的开源社群当中生存。
It’s OK for first-time/student developers to submit such patches, and I really hope such patches would make them become a long term contributor. In fact, I started my kernel contribution exactly by doing such “cleanups”.
But what you guys are doing is really KPI grabbing, I have already see several maintainers arguing with you on such “cleanups”, and you’re always defending yourself to try to get those patches merged.
《时代周刊》评价 Linus 的时候说,“有些人生来就注定能领导几百万人,有些人生来就注定能写出翻天覆地的软件。但只有 Linus Torvalds 两样都能做到。”这也侧面体现了开源协同所需要的品质之稀缺。同时,这句话也暗含着 Linux 的核心决策尤其是早期的核心决策,虽然已经有众多参与者的贡献,但是 Linus 是决定 Linux 要往何处去的那个人。这就反驳了上文提到的维护者想不清楚,反而希望另一个素未谋面的救星能够机械降神的荒唐。
类似的运营例子其实不少,例如 Alluxio 开源社区贡献积分奖励计划。其实单从市场声量和招徕用户方面,这些小奖品换注册、点击和转发等等,都是行之有效的 To C 营销手段。对于宣传大使(Ambassador)参与演讲和公开站台,如果采用报销行程和周边反馈,可能比起积分货币会是有效的方式。至于开源平台和技术上的评估,就不太适合用数量来简单衡量。
如果真的希望投入资金激励社群开发活动,可以参考 The Perl Foundation Grants 的做法,建立一个拨款委员会和一套技术评审流程,把赞助者的钱用于激励完成社群期待完成的工作上。实际上,GSoC 的形式可以认为就是 Google 出钱给开源项目用于推动它们重要不紧急的工作的落地。让开发者运行开发者社群,才能更准确地吸引到匹配的参与者,并且利用好这些参与者投入的精力。