本期访谈嘉宾:庄表伟
庄表伟,开源社理事、华为开源能力中心开源专家。常年参与社区各类活动,热心开源治理、开源成长、开源学术等方面的研究与分享。
早期开源项目很少,重量级的开源项目里通常会有一些非常资深的开发者,所以当时只要有项目开出来,就会有很多人自动被吸引过来。但现在,开源项目在成千成万倍的增长,目前 GitHub 上的项目数量、开发者数量的规模也极其庞大,但一定会存在贫富不均的现象,真正有很多开发者参与的开源项目不在多数。这种现状的背后是所有的开源项目都在以开源的方式争夺开发者、使用者、参与者的注意力、资源或时间,希望他们在业余的时候参与社区,参与项目贡献。
在这种争夺过程中,手段高低巧妙各有不同。古早的社区是一种匿名化的社区逻辑,主要围绕 issue 和 code review 来开展。社区里的每个人都是匿名的 ID,大家只看你提交的代码是不是他想要的,背后是谁并不重要。而现在的运营会关心背后的人是谁,以及如何把人留下来。除了关注人,还要关注开发者体验,例如他在社区的满足度如何?社区是否有为开发者们提供 good first issue ?
假设有 100 万在校大学生刚刚闯入开源世界,他们散布在各个大大小小的项目里,最终会有多少人留下来成为长期的开源开发者?很少。大部分的他们读完大学就不会通过开源项目训练自己了,觉得开源项目有趣选择留下来的这些人其实就是开源的生力军,而这些 good first issue 就是让他们留下来的办法。虽然他可能去了别的项目,但在这第一个项目赚到 PR 的时候,他们会觉得开源并不难,在这个过程中得到某种成就感,更有信心继续做开源。所以从整个开源社区角度看,我觉得 good first issue 很好,它能让更多的新人愿意长期贡献。
那么,有了 good first issue,是否有 good second issue、good third issue......如果社区能为开发者们设计成长阶梯,让他们一步步地获得更多的成就感,我觉得会非常有吸引力,这是需要非常用心的一件事。
当开源社区和开源社区、开源项目和开源项目之间的竞争变得越来越激烈时,类似新的社交媒体这种吸引开发者的手段会层出不穷的出来,这个趋势是必然的,但目的都是尽可能多的吸引大家的注意力。
企业花钱请人写商业软件,或者说一个氛围、成长机制都很不错的非付费社区,这两种情况都没有问题。如果在社区里给钱让人写开源代码这件事情,本质上已经变成了一个众筹项目或者叫众包项目,这也没问题。但不能说我又想它是开源的,又想它是众筹的,还想它是商业的。
假设一个众筹让别人帮写代码的社区里有 100 个 bug,但只有其中 50 个 bug 是付费的,你觉得会发生什么?付费的 50 个 bug 很快就会被改完,剩下的 50 个 bug 别人会等你放下一批,所以我觉得这两件事情是很难共存的。
不管是有意包装打造捧出来的网红,还是在社区里由于自发崇拜产生的网红,社区里一定会存在网红。关键在于这个网红背后给自己立的人设是什么?人设是不是稳定的?
社区里有人设稳定的网红是好现象,大家会向他看齐。但一定不要因为成了网红就自我膨胀,一旦人设崩塌了,就什么都完了。Richard M. Stallman 就是因为在开源社区之外乱讲话被踢出了自由软件基金会,虽然现在回去了,但确实有影响到他在开源社区的行为或地位。
这是必然的,趋势是越来越明显的。程序员是一个很有意思的职业,他们是致力于消灭自己行当的人。Dont repeat yourself 是程序员的美德,也是所有追求更高效率和更高价值挑战的程序员一定会追求的。通过程序把可被替代的工作都替代,会带给程序员极大的自豪感,不断把自己的工作难度提高,将可被程序替代的工作难度不断刷新。我觉得这是一个很有价值的发展趋势。
我会很坚持进步主义观点。所谓的进步主义最核心的是进步一定会发生问题,最好的办法是一直进步下去,不断的改进、完善,直到走到走通为止。例如社区里机器人回复 issue、PR,大家可能一看就知道是机器人在回复。那么,如何回复的不那么千篇一律?这不是说机器人回复不好,而是我们想通过程序、机器帮助我们关注人的体验时,是否可以做的更加的人性化,不断的提高开发者体验。
我认为有两个层面,一个是你能得到什么价值,一个是你能给别人什么价值。以企业为例,企业运营自己的开源项目首先要问自己的是在项目里自己要得到什么利益。所谓将欲取之,必先予之,如果想要得到这些利益,企业能够给社区的其他人的利益是什么?为换回利益而做的这些动作,是否能首先满足企业自己的利益、价值,以及是否能够满足别人的诉求,给别人带来价值。
一个社区的活跃度是靠在开源项目里的总停留时间来决定的,而不是人头数量。是否有办法让一个人或者更多人在社区里投入更多的时间,是运营的最核心要素。
看一个团队要看三点,技术层面、运营层面、商业层面。技术代表市场竞争力,商业代表换取利润的变现能力,而社区运营是护城河。为什么这么说?开源社区与开源社区之间一直在争夺开源爱好者、开发者的业余时间,这是一个争夺别人注意力的竞争。当我争夺到了更多的注意力,我的竞争对手所能争取到的就越少,这就是我的护城河,是社区或者说开源项目抵御竞争对手的武器,它不是一种进攻性的武器,而是一种防守性的力量。
如何在社区里凸显自己的价值,以及获得席位或机会,分享一下您的经验。
个人认为,在社区的发展过程中,每个社区都应该有越来越清晰、明确、公开、尽可能公平的计算贡献度的算法。我当初设计 KCoin 的时候,并没有设置如何计算不同开源项目的贡献度的标准,而是设计了一套规则,由开源项目创始人或管理者来设置具体的积分算法。我认为这是一种透明的规则的竞争,例如我比较擅长翻译,A 社区对于翻译的积分高于 B 社区,那么 A 社区就是更加适合我的,我也大概率会选择 A 社区,适合自己的才能更好的凸显自己的价值。
我朋友在之前的演讲上说了一句话:“我们应该扬长避短,而不是截长补短。不要老想着把自己的短板补上,你只需要扬长而已。”我认为这个很重要,结合前面聊的网红效应,我认为每个刚加入开源社区的人起初的人设都是小透明,只有在社区里发挥自己的长处,找到自己最愿意做的事情,不断往前走,席位或机会自然而然的就来了。
什么是好的开发者体验?您认为好的开发者体验需要关注哪些点?
社区运营是一种艺术,不能靠单一的维度来量化,只有躬身入局才能真正地把它做好。
为何这么说?当运营站在社区之外体验社区时,运营自己本身是体验不到开发者在社区里的感受的,通过在社区里做调查问卷或其他方式,获取大家的反馈,以此调整社区运营策略。而当运营是社区一员时,他会在自己参与其中的前提下,不断发现并营造更好的社区体验,这种好是不能拿某种数据来衡量的,效果也会大不一样。he
您对开源雨林的建议?
雨林是全世界范围内最繁荣也是最健康的一种生态,希望开源雨林能像雨林一样海纳百川,站在全球开源的生态视角做对全球开源生态有利的事情。