构建开源软件需要一个由具有不同技能和专业知识的人组成的社区。排行榜已成为开源社区跟踪进度、展示和表彰表现最佳贡献者的一种方式。如果排行榜使用得当,它们可以提高参与度,通过游戏化激励贡献者,并增强社区。但排行榜也可能产生不利后果,包括打击参与的积极性。
社区健康分析开源软件 (CHAOSS) 社区,一个 Linux 基金会项目,专注于开源项目健康和指标的标准化。排行榜是这些对话中不断出现的话题。最初,这篇博文是我为 Upstream 2021 所做的演示,Tidelift 活动启动了维护者周,这是一个为期一周的开源维护者庆祝活动。本文将探讨五个最佳实践,以帮助社区成功使用排行榜,并通过指标改善其项目健康状况。
什么是排行榜?
排行榜显示一群人或公司之间的排名。排行榜在体育运动中非常有效,运动员们竞争的目标相同,即跑得最快、跳得最远或举起最重的重量。开源社区中没有这种竞争,而且背景要复杂得多,但排行榜仍然可能有所帮助。例如,GitHub Insights 显示了对存储库提交次数最多的贡献者,这可以一目了然地显示一个社区是否不仅仅有一两个活跃的贡献者。另一个例子是 Drupal Marketplace,这是一个基于 社区创建的算法 对公司进行排名的排行榜,该算法奖励在社区中表现活跃的公司,使其获得更好的排名。

(Georg Link,CC BY-SA 4.0)
上面的图表显示了衡量社区参与度的两个网站示例
- 左侧,CHAOSS 社区存储库的 GitHub Insights 显示了最活跃的提交作者。
- 右侧,Drupal Marketplace 显示了在 Drupal 贡献方面得分最高的公司,但没有透露确切的分数,只显示了排名。
为什么在开源社区中使用排行榜?
开源社区依赖于自愿贡献,无论是个人还是公司员工(公司期望员工花费一定的时间来支持特定的开源项目)。跟踪顶级贡献者有助于人们轻松了解谁是活跃的,他们正在取得什么成就,以及谁在幕后支持项目。
排行榜为贡献者创造了一种社区意识,其中一些成员因其开源工作而受到表彰。对于喜欢竞争并喜欢参与计入排行榜评分的活动的贡献者来说,登上排行榜的愿望可以激发更高的参与度。这种说法使得在开源社区中使用排行榜变得很有吸引力。但是,以不计入评分的方式参与的贡献者将没有任何机会出现在排行榜上,并可能因此而感到沮丧。这表明在开源社区中使用排行榜之前,了解排行榜的工作原理非常重要。
排行榜的工作原理
关于排行榜如何激励人们的原理背后有多种理论。不过,主要而言,排行榜旨在 满足人类对能力、自主性和社会关联性的需求,以及人类倾向于对彼此进行排名和比较,以更好地了解我们的能力。游戏化 通过持续的目标实现-奖励设计来激发竞争。
下面的示意图不完全代表开源中排行榜的工作原理,因为它忽略了社区参与的社会因素。社区活动被记录为跟踪数据,评分算法将其转换为分数,从而确定排行榜中的排名。社区成员对排名做出反应,并可能改变其社区活动,这反过来可能会影响其排行榜排名。

(Georg Link,CC BY-SA 4.0)
但是,排行榜必须精心设计才能有效。排行榜根据指定的算法和数据对贡献者进行评分。分数表示朝着成功指标的进展,这取决于排行榜旨在衡量的内容。开源社区可以使用跟踪数据。这种数据是透明的,但它是“偶然”创建的,并且包含个人身份信息 (PII),例如姓名和电子邮件。这意味着用于排行榜的数据需要仔细获取和使用,并意识到隐私法,例如欧盟的 GDPR。
例如,GitHub Insights 使用提交作为累加的数据。贡献者根据他们向开源存储库贡献的提交次数进行评分。这个简单的例子说明了排行榜的局限性。由于排行榜依赖于评分算法,因此任何无法简化为分数的内容都会被忽略。在示例中,提交的复杂性和价值被忽略了。因此,消除网络安全风险的漏洞修复与文档中的错别字修复具有相同的价值。
这就引出了游戏化的问题。游戏化原则指出,如果贡献者的能力不均等,技能较低的竞争者会因为任务似乎遥不可及而变得不积极。相反,技能高超的竞争者会发现活动太容易,最终也会让他们失去动力。排行榜的游戏化还会驱使贡献者专注于评分中奖励的活动,这通常会损害其他重要的贡献。
开源参与是一项社会活动,将其简化为数字游戏可能会疏远许多原本可以使社区完整的贡献者。此外,开源中的许多活动无法计数或衡量,因为它们不会留下任何跟踪数据。例如,学习、营销、社交或协调是通过直接互动而不是社区平台发生的。因此,排行榜可能会加剧开源在创建热情和包容性环境方面面临的问题——只有特定子集的贡献者才能通过排行榜获得奖励,无论排行榜设计得多么出色。
最佳实践
我希望我可以说我们有排行榜的最佳实践。现实情况是,在开源中做好排行榜非常具有挑战性,尝试创建排行榜可能会导致社区强烈反对。
但是,CHAOSS 社区已经围绕项目健康和衡量社区制定了最佳实践,以指导我们的思考和决策。
- 使用目标-指标方法:在通过排行榜或其他方式衡量开源社区时,请关注特定目标。请务必确定您希望人们实现的目标,并明确您要衡量的内容。您会得到更多您开始衡量的东西,因为它会引导社区成员。
- 定期评估指标策略:事物会变化和发展,最初有效的方法可能不再激励成员。定期更改指标策略或排行榜评分算法也是积极对抗游戏化所必需的。此外,考虑定期重置排行榜以适应新的社区成员。
- 公开您的评分算法:邀请社区反馈以了解算法的后果,并相应地修改算法。需要明确的是,为了限制社区成员的游戏化,可以不透露具体的评分算法。应该公开的是评分所考虑的活动类型、谁决定了算法以及如何提供反馈。
- 在不同上下文中使用多个排行榜:由于排行榜的局限性,它们只能在有限的用例中有所帮助。例如,开源社区的国际化工作可能希望为每种语言设置一个排行榜,为不同的语言团队提供对明确定义的活动的认可和激励。相同的排行榜对于开源社区的其他上下文将毫无用处。
- 自动化持续更新:排行榜应始终显示最新的活动。这需要定期收集数据并更新排行榜的工具。
开源指标解决方案
最后,有几种可用的开源指标解决方案。它们的开发是为了了解项目健康状况,而不是创建排行榜。但是,它们解决了收集数据的难题,我们可以将这些数据用于排行榜的评分算法。
通过周到的设计和在有限的上下文中,排行榜可以成为帮助开源社区蓬勃发展、激发参与以及庆祝和奖励贡献者的绝佳方式。但是,我们无法通过排行榜解决理解和促进项目健康的总体目标。Upstream 2021 演讲和这篇博文只是一个论点,也是将围绕排行榜的持续对话中的想法形式化的推动力。加入 CHAOSS 社区 以继续对话。
您还可以参加在华盛顿州西雅图举行的 2021 年北美开源峰会的 小组讨论:激励良好社区公民行为的贡献者排行榜 对话。
评论已关闭。