理解社区指标#

本章将更详细阐述采用指标驱动方法来构建、维护和发展开源社区的重要性,并列出评估开源项目及社区整体健康状况时需考虑的若干关键因素。尽管每个社区特性各异——因此需要采用不同的成功衡量标准——但本章仍提供了一些可供参考的指标范例,用于评估你所在社区的成就。

何为健康社区?#

一个健康的开源社区应践行开放实践、运用开放基础设施、培育开放文化,并以实现更高可持续性为目标。然而即便对经验最丰富的社区管理者和架构师而言,衡量开源社区健康状况仍是项复杂艰巨、偶尔令人望而生畏的任务。

这是因为项目健康状况的全貌实际上是一幅马赛克;多种因素共同描绘出一个社区的整体健康状态。你永远无法仅凭单一指标就断言"看,这个社区很健康"。

更重要的是,决定项目和社区整体健康状况的因素始终在变化。例如过去有人可能将"总下载量"作为健康指标,但如今我们明白,即便数百万次下载也无法反映以下事实:社区的生产与质量保障流程可能脱节,或是项目邮件列表中存在恶意捣乱者。更完整的评估不仅要关注结果或产出(如下载量、发布节奏等),还需考量流程(新人入门障碍、项目发现和提拔维护者的难易程度等)。

社区指标为何重要#

建立和维护社区指标的重要性体现在多个方面,包括:

  • 提供客观衡量标准

  • 推动透明文化建设

  • 鼓励社区参与

  • 识别潜在的社区瓶颈

让我们更详细地探讨每一项。。

提供客观衡量标准#

任何组织都需要一套客观的衡量标准来评估自身表现。对企业而言,这可能是收入、新客户获取量、成本等可定期(如季度环比)追踪的指标。开源项目同样需要一组能衡量社区健康状况的指标,例如贡献者数量、问题修复周期、评审响应速度、贡献者多样性等。

推动透明文化建设#

透明度是所有开源项目的关键要素,因此深入了解项目的所有贡献者至关重要。这并非为了对最活跃的贡献者进行排名或突出显示,而是为了更好地把握贡献来源(例如不同地区、组织等)。当社区成员超过 20-30 人时,若缺乏完善的指标体系,要全面了解所有贡献者就会变得更具挑战性。

鼓励社区参与#

社区指标虽未必能全面反映社区状况,但确实为社区状态提供了重要洞察。例如,这些指标能显示项目代码、漏洞/问题、文档等方面是否存在常规活动。此外,当新人加入社区时,他们往往难以识别并联系经验丰富的成员。若指标仪表盘包含活跃文档贡献者名单,这对有意参与项目文档贡献的人将大有裨益。部分社区甚至设有新人贡献者仪表盘,专门突显新成员。这些看似细微的举措,却能极大帮助新成员融入项目并感受到欢迎氛围。

识别潜在的社区瓶颈#

随着开源项目的发展,团队通常会在响应社区成员方面遇到挑战。例如,代码审核可能耗时更久,或待处理问题的积压日益增多。如果定期审查一套有效的指标(如问题关闭平均时长、代码审核中位数时间等),这些指标能在社区成员出现普遍不满之前,充当早期预警信号。

基本考虑#

在确定如何衡量项目与社区健康状况前,需先明确具体的衡量内容。建议从以下方面着手:

  • 项目生命周期

  • 目标受众

  • 治理机制

  • 项目负责人

  • 版本经理与流程

  • 目标与路线图

  • 新人入职流程

  • 内部沟通

  • 外联

  • 认知

  • 生态系统

让我们逐一详细探讨这些内容。

项目生命周期#

开源项目的生命周期深刻影响着项目健康状况的诸多方面。理解项目在生命周期中所处的阶段,有助于你更准确地评估其发展状况(例如,单人治理模式在项目初期很常见,但随着项目成熟会逐渐失效)。监测贡献者趋势可能揭示关于项目短期或长期发展前景的关键信息。

评估项目生命周期时,需考虑以下问题:

  • 项目是何时创建的,至今已有多久历史?

  • 项目多久会有新贡献者加入?

  • 项目接受新贡献的频率如何?

目标受众#

运营良好的开源项目对其希望帮助和吸引的用户(及贡献者)有着清晰认知。评估项目目标受众时,可思考以下问题:

  • 项目是否明确界定了目标受众?具体是哪些群体?

  • 当前设定的目标受众是否最适合本项目?

  • 目标受众是否也在使用竞争性或互补性项目?

治理机制#

治理指的是定义开源项目中各方职责及行事规范的规则与惯例。健康的项目需具备详尽记录(且持续演进)的治理模式。评估项目治理时,可思考以下问题:

  • 项目的治理模式是什么?是否有公开的文档说明?

  • 该模型是否同时考虑了技术和业务方面的因素?

  • 项目成员如何制定和执行决策?

关于这一主题的更多思考,可参阅本指南手册中关于治理的章节。

项目负责人#

在健康的项目中,领导者是显而易见的且易于识别。他们通常协调项目工作并确立项目愿景,且对项目历史拥有广博的知识。评估项目的领导力时,应考虑以下问题:

  • 项目负责人是谁?

  • 项目领导者的职责是什么,他们更专注于项目、市场营销还是两者兼顾?

版本经理与流程#

在健康的项目中,成员们会正式记录发布流程并指定版本经理来监督这些流程。评估项目的版本经理及流程时,可以考虑以下问题:

  • 项目的发布流程是否有书面记录?

  • 项目是否设有明确的发布管理员?

  • 项目更新的发布频率如何?

  • 项目发布是否按照稳定且可预测的时间表进行?

目标与路线图#

健康的开源项目拥有公开共享的目标,以及达成这些目标的清晰流程。目标设定切实可行,并存在明确的截止期限以追踪进度。评估项目目标和路线图时,可以考虑以下问题:

  • 项目目标是否清晰且公开可见?

  • 项目是否具备明确传达的流程,并且这些流程是否也公开?

  • 项目参与者是否有按期限完成目标的历史记录?

新人入职流程#

新贡献者对于项目的创新与成功至关重要。健康的项目应具备清晰友好的入门材料,帮助有意参与项目的新人顺利加入。评估项目的引导流程时,需考虑以下问题:

  • 文档是否精确解释了项目是什么以及如何使用它?

  • 文档能否帮助新贡献者参与到项目中?

  • 该项目是否接受多种类型的贡献(例如开发、市场营销、项目管理、活动策划)?

内部沟通#

沟通渠道和项目内部交流方式是衡量项目健康状况的关键指标。影响社区健康的问题通常最先出现在贡献者与用户互动的内部渠道中,比如邮件列表或聊天平台。评估项目内部沟通时,应考虑以下问题:

  • 该项目是否拥有足够的沟通渠道?

  • 人们能否找到并有效使用这些渠道?

  • 频道是否定期进行管理?

  • 频道交流是否受行为准则约束?

关于此主题的更多思考,请参阅本指南中有关沟通规范的章节。

外联#

外联是积极推广项目并让他人知晓的过程。社区通过书面材料(如社交媒体、博客、白皮书)、活动(如聚会、大会)和教育策略(如演示、培训课程)进行外联。健康的项目会投入足够的精力和资源用于外联。评估项目的外联工作时,可思考以下问题:

  • 社区是否采用清晰且一致的对外推广方法?如果没有,是否计划建立一套推广方法?

  • 人们在撰写、讨论和推广这个项目及其相关技术吗?

认知#

项目的目标受众需要知晓该项目,并理解它解决的问题。认知度是项目推广工作期望达成的成果,可以通过用户与贡献者调查或常规营销分析来衡量。评估项目认知度时,应考虑以下问题:

  • 目标受众是否了解该项目?

  • 目标用户是否能清晰阐述该项目的用途、特性及其相较于替代方案的优势?

  • 该项目所在行业中可能受益的相关从业者是否知晓该项目的存在?

生态系统#

没有任何项目能孤立存在。项目之间常常相互依存,有时同类项目还会争夺相同的目标用户群体。一个社区与其所处生态系统中其他项目的互动情况,往往能反映出该项目的健康程度。评估项目生态系统时,可思考以下问题:

  • 项目的依赖项有哪些?又有哪些项目依赖于此项目?

  • 社区是否充分融入了整体项目生态系统、目标行业以及可能使用该项目的组织?

  • 该生态系统的成员是否对该项目持积极看法?

为你的社区选择合适的衡量指标#

由于没有任何两个开源社区是完全相同的,每个社区自然会有一套衡量健康与成功的独特标准。影响社区选择指标的因素众多,但其中最关键的因素之一便是社区的目标。

例如,有些社区优先考虑代码合并的速度——因此他们会跟踪与此能力相关的指标。但其他社区则由在严格监管行业(如能源或医疗保健)工作的用户和贡献者组成,在这些行业,合并新修复和功能的需求决定了决策过程需要更长时间。这些社区可能不会像重视代码审查效率那样,过于强调代码审查的速度。

根据社区目标的不同,可以建立各类衡量指标,例如工作积压情况、贡献者多样性(如组织背景、地域分布等)、首次贡献者流动率、本地化与国际化进展,或是讨论话题的热度。社区应当通过协作方式共同制定这些指标,并达成集体共识。听取来自不同背景社区成员的意见至关重要,这能确保指标具有包容性,而非仅聚焦于部分群体工作成果。

定期与社区共同审视指标,并讨论是否有必要进行调整,也是一种良好实践。即便在同一社区内,随着需求变化,你很可能也需要根据社区发展不断优化指标。

社区指标开发资源参考#

充分利用现有软件工具中的资源#

过去,许多人编写复杂的脚本或查询来获取社区的各项指标。如今,开源项目常用的软件工具(如代码库、论坛、问题跟踪器、维基等)大多都具备 API、插件甚至内置仪表板,使得为社区收集数据变得轻而易举。因此,如果你使用诸如 Discourse、GitHub、GitLab、Jira 等工具,在从零开始设计新指标前,阅读相关文档或许能为你节省大量时间。

CHAOSS项目#

不出所料,确实存在一个专注于社区指标的开源项目。该项目名为 CHAOSS(开源软件社区健康分析),其社区成员来自学术界、参与众多开源项目的公司、开源基金会以及其他领域。若访问CHAOSS网站,你将找到跨不同类别的详细指标说明,以及其中许多指标的实施案例。

浏览 CHAOSS 指标集时,你可能会发现许多适用于自己社区的指标(及实现方案)。若想到 CHASS 尚未收录的新指标,也欢迎在 CHAOSS 社区发起新指标讨论。

其他社区的资源/案例#

许多开源社区都为其社区仪表盘提供了优质的文档/代码,可供其他众多社区借鉴使用。不少读者可能对CNCF仪表板较为熟悉,你可以在 CNCF 的代码库 cncf/devstats 中,通过 devstats项目详细了解其仪表盘的实现细节。。

Ruby社区仪表板及其常见问题页面也是优秀范例,该文档深入阐释了仪表盘的开发初衷及部分技术决策。

部分社区会在每次发布后公布贡献指标。WordPress 最近版本发布后的报告就是个很好的示例,其中通过大量可视化图表清晰展示了贡献来源。

指标陷阱#

指标固然重要,但我们必须意识到其中存在的缺陷。

  • 人们常倾向于用最容易衡量的指标来评估:这是人之常情,毕竟我们都想做更简单的事。但若社区仅关注易量化指标,就可能忽略社区的重要方面。例如,比起产出(如提交/合并请求的实际影响),投入(如提交/合并请求的数量)往往更易聚焦。不言而喻,忽视社区产出将导致对社区认知的片面性。

  • 过度依赖指标会导致认识不完整:没有任何一套指标能全面反映社区(或任何组织)的真实状况。虽然建立标准化指标体系很重要,这样你才能评估社区随时间推移的进步,但总有些事物是极难衡量或量化的。例如,我们都希望贡献者能在社区中获得强烈的归属感,并享受与其他成员的协作。这种现象是否真实发生很难量化,但你仍然需要对这个关乎社区健康的关键维度有清晰把握——即便这意味着要采用指标收集之外的其他方法。

  • 忽视内在动机:人们加入组织(特别是志愿组织)通常源于内在驱动力。例如,他们强烈认同团体使命,或享受与其他成员间的归属感。若在衡量标准中过度强调个人贡献(或投入),可能导致组织忽略人们最初加入的初衷。开源社区的大多数贡献者都是利用个人时间参与志愿工作的,因此忽视他们的内在动机往往会给社区带来负面影响。

关于内在动机的更多探讨,请参阅"参与者动机"章节。

除了这些指标常见的缺陷外,以下问题对开源社区尤为相关。

  • 游戏化贡献指标:当社区主要以(甚至完全依赖)指标作为认可依据时,这种现象就会出现。毫不意外,你会看到人们为了一些微小的改动提交多次提交/合并请求/拉取请求,而这些改动本可以通过一次提交/合并请求/拉取请求完成。。

  • 虚荣指标:在开源领域之外,你也常能看到这类现象。一个典型的例子就是过分关注社交媒体粉丝数量这类数据。正如在社交媒体中一样,数量并不能代表一切。此外,若想确保社区成员的内在动机得到满足,虚荣指标显然不是可取之道。

  • 基于几个指标对不同开源社区进行比较时,你可能会听到这样的说法:"项目 A 的上次大会有超过 5000 人参与",或者"项目 B 拥有 1000 名贡献者",而人们对各自的社区抱有相似的期望。在将你的社区与他人对比之前,重要的是要考虑是否在进行同类比较(即苹果对苹果的比较)。你可能处于不同行业、项目成熟度阶段各异,或是范围不同等等,直接对比可能并不恰当。在考虑希望社区拥有 1000 名贡献者之前,或许应该先问一些基本问题,比如是否真的需要 1000 人来达成项目目标?

  • 过度聚焦代码贡献:可能是因为有更多工具能捕捉代码活动,但开源社区往往主要关注代码贡献。然而,必须记住其他有价值的贡献形式,比如在论坛回答问题、分类问题、维护维基页面等。应当努力确保社区指标能反映各类贡献(包括代码与非代码),这样社区中才不会有人感到被忽视。

指标测量的注意事项#

最后,当你处理开源社区指标时,这里有一些注意事项。

必做#

  • 务必公开指标:这或许是显而易见的事,但开源透明度同样应延伸至指标领域。制定指标时,吸纳多元化群体参与有助于确保指标的包容性,并能全面考量所有贡献。此外,若社区指标需作调整,我们很可能首先会从社区成员那里获得反馈或建议。同时,所有指标应对所有人开放,以此确保数据可信度。

  • 善用指标识别异常情况:指标特别适合突显表现不佳的领域。与吞吐量相关的指标就是很好的例子,比如关闭问题所需时间、论坛帖子的响应速度、代码审核周期等。在这些场景中,指标能成为绝佳工具,帮助及早发现潜在的瓶颈。

  • 以指标为起点,深入洞察社区健康状况:指标可以告诉你社区中正在发生什么,但通常仅凭数字无法揭示背后的原因。如果数据显示首次贡献者数量在下降,你可能需要进行一些面对面的走廊谈话或电话沟通,以找出下降的根源。指标能作为起点突出症状,但后续工作需要人们亲自推进。

避坑#

  • 切勿仅凭指标作为奖励的唯一依据:我们之前已经讨论过,如果在社区中仅依靠指标来发放奖励,可能会出现人为操纵贡献指标的现象。此外,如果人们认为奖励和认可主要基于工作量(或投入时间),你可能会打击那些无法投入大量时间参与项目的人或社区新成员的积极性。人们加入开源社区并非仅仅为了承担更多工作,我们不应忽视他们内在的参与动机。

  • 在提供数据时,务必结合适当的背景信息:即便对方提出的问题听起来很直接(例如“你们社区有多少贡献者?”),了解问题背后的背景往往大有裨益。提问者的身份不同,其实际关注点通常存在细微差异。例如,在某些情境下,项目历史上的贡献者总数可能是合适的答案,但在另一些情况下,提问者真正想了解的或许是一段时间内贡献者的增长情况。此外,“贡献者”具体指哪些人群?是否包含参与国际化、问题分类、活动策划等工作的人员?因此,在直接向他人展示数据之前,先理解其问题背后的背景乃至动机,将会更有助益。

  • 忽略非量化指标:如前所述,并非所有事物都易于衡量或量化。即使我们拥有定义明确且完善的指标看板,也不应停止与社区成员保持人际沟通,以便及时掌握社区动态,并鼓励社区成员指出我们在指标中无法察觉的情况。