对于许多开源社区的长远发展,跟踪不同类型的社区数据指标尤为重要。指标能让开源项目洞察到具体工作落地,并帮助了解社区的总体情况。为此,开源社区会从各种来源提取数据,并使用可视化工具分析这些数据,从而作出有助于项目的明智决定。本文翻译自《Measuring the Health of Open Source Communities》,介绍了在行业领先的开源社区是如何高效管理社区数据。
如果您在管理一个开源项目或者希望参与其中,您可能想知道如何了解这个项目的健康状况。您可以分析项目的不同方面,例如,技术健康方面(GitHub上的Fork数量、一段时间内的贡献者数量以及报告的错误数量)、财务健康方面(一段时间内的捐赠和收入数额)、社交方面(社交媒体提及、帖子分享和跨社交媒体渠道的情绪分析)以及多元化和包容性方面(制定行为准则、创建活动,例如包容性活动、在演示文稿和项目前端设计中使用色盲无障碍材料)。
但问题是,如何衡量这些方面?如果想了解一个项目是否健康,我们应该定期计算和分析衡量指标。此外,利用仪表板(Dashboard)来分析这些指标和作出相应决策都尤为重要,这也正是本文所要讨论的内容。
为什么指标很重要?
“这里的目标不是构建一个巨大的真空吸尘器,将您社区每一个微小细节都吸收到一张图表当中。相反,我们的目标是找出我们对社区不了解的地方,并将测量作为一种手段来更好地理解它们。” 《社区运营的艺术》—— 约诺·培根
开源软件需要社区。利益相关者通过不同的指标可以更多地了解社区并作出明智的决定。例如,开发人员可以选择加入最好的项目,维护人员可以决定哪些治理措施是有效的,最终用户可以选择更健壮、寿命更长和欣欣向荣的项目,投资者可以选择最好的项目进行投资[1]。此外,开源项目办公室(OSPO),即公司内部旨在管理公司所依赖的开源生态系统的办公室[5],能够通过分析不同的指标来评估项目的健康状况和可持续性。由于现代应用程序中大约90%的组件都是开源的,所以OSPO变得非常流行普遍。相应的,衡量使用、贡献和发布开源软件的风险对于OSPO尤为重要[5]。
如何确定要评估的指标?
1. 设定目标:没有目标的衡量是毫无意义的。目标是了解社区想要实现什么的具体指标。[3]
2. 找到可靠的统计数据来源:在确定目标后,您可以确定那些能够帮助你实现目标的数据来源。找到对您来说最重要的目标的统计数据是关键的[4]。一些统计数据显而易见,例如在GitHub上,您可以收集存储库的Stars数、Forks数和贡献者数。还可以获得邮件列表订阅者和项目网站访问量。但是,有些统计数据并不明显,您可能需要工具来提取这些数据。
3. 解释统计数据:从人员、产品、过程和合作伙伴的角度解释统计数据[4]。也就是说,关注与社区人员相关的数据,例如,贡献者的生产力,哪个渠道最有影响力等等。然后,查看项目的迭代速度和成熟度,例如,PR和Issue的数量。之后,为了项目过程的目的查看成熟度,即您的审查过程是怎么样的?解决一个问题需要多长时间?最后,从合作伙伴的角度来观察整个生态系统,也就是关注项目的上游依赖与依赖于您项目的统计信息。
4. 使用仪表板评估指标:许多现有工具有助于创建仪表板以分析和度量开源社区的健康状况,例如,LFX Insights、Bitergia和GrimoireLab。
5. 进行改善:测量之后,有必要根据这些测量值进行改善。
示例学习
不同的项目使用不同的策略来衡量项目的健康状况。
CHAOSS社区制定项目分析和指标来帮助理解项目的健康状况。他们有许多工作组,每一个工作组都专注于一种特定的指标。例如,
- 多元化和包容性工作组(the Diversity and Inclusion working group)侧重于活动中的多样性和包容性、社区治理的多样性和包容程度,以及社区领导的健康程度。
- 演化工作组(the Evolution working group)创建指标,用于分析软件开发中涉及的活动的类型和频率,改进项目质量的过程,以及社区增长。
- 价值工作组(the Value working group)创建指标,用于识别项目在软件项目之外改善人们生活的程度,项目对用户或贡献者的价值程度,以及从组织的角度来看项目在金钱上的价值程度。
- 风险工作组(the Risk working group)创建度量标准,以了解特定软件包的质量、潜在的知识产权问题,并了解给定软件包在许可证、依赖关系等方面的透明度。
Mozilla项目与Bitergia和Analysis&Tal合作,为Mozilla的贡献者社区构建了一个交互式可视化的网络工具,用于分析Mozilla贡献者群所在的地区。通过可视化不同的指标,他们能够发现Mozilla不仅有一个社区,而且有许多社区涉及不同领域的贡献、动机、参与程度等。基于此,他们生成了一个报告,用数据和图表直观的展现出这些不同的社区是如何相互联系的。
许多项目,如Kubernetes和TARS,使用LFX Insights工具来分析他们的社区。
LFX Insights是一个仪表板(Dashboard),其帮助项目社区评估关于开源开发的不同指标,以发展一个可持续的开源生态系统。该工具具有不同的特性来支持不同的涉众[2],例如
- 维护人员和项目负责人可以得到项目的多维报告,避免维护人员的倦怠,确保项目的健康、安全和可持续性。
- 项目营销人员和社区宣传人员可以使用这些指标来吸引新成员和参与社区活动,同时也可以发现提高知名度的机会。
- 成员和企业赞助者可以知道要参与哪个社区和软件,交流社区内的影响,并评估其员工的开源贡献。
- 开源开发人员可以知道在哪里集中他们的精力,展示他们的领导和专业知识,管理隶属关系,以及他们的影响。
此外,可以从LFX Insights中提取各种指标。从源代码库中,可以获得一些指标,例如项目的Commits提交总数或是单个贡献者的提交数量、贡献者的数量、提交最多的贡献者,以及对项目贡献最大的公司。Pull Requests(PRs)可以从许多工具中提取,例如,Gerrit和GitHub。与Committs数据类似,PR的数据也可以按贡献者和公司筛选出总数。该工具还计算审查PR以及合并PR的平均时间。您还可以为问题(issues)和持续集成工具提取指标。此外,LFX Insights还允许项目从不同的通信渠道(如邮件列表、Slack和Twitter)收集通信和协作信息。
在使用LFX Insights时,项目可能有不同的目标。TARS基金会使用LFX Insights工具来了解每个子项目(例如TarsFramework、TARSGo等)。通过LFX Insights工具创建的仪表板,TARS社区可以了解每个单独项目以及整个社区的统计信息(参见图1和图2)。通过使用LFX Insights工具,TARS社区分析了有多少人为每个项目做出了贡献,以及哪些组织为TARS做出了贡献。此外,还可以提取每个贡献者提交的数量和贡献的代码行数。跟许多开源项目一样,TARS社区认为,通过分析这些指标,可以创造更人性化的方案以吸引和留住更多贡献者,让开源社区变得更活跃。
图 1:使用LFX Insights工具的TARS项目示例。这些数字是根据时间快照汇总的
图 2:TARS项目使用的LFX Insights工具的仪表板示例
跟踪不同类型的指标对于自由和开放的源代码社区尤为重要。指标让项目洞察到具体的工作,并帮助了解社区的总体看法。为此,可以从各种来源提取数据并对这些数据进行可视化的工具将有助于项目做出明智的决定。
关于作者
Isabella Ferreira是TARS基金会大使,TARS基金会是Linux基金会旗下的一个云原生开源微服务基金会。
Mark Shan是腾讯开源联盟主席,也是TARS基金会董事会主席。
参考文献
[1] Jansen, Slinger. "Measuring the health of open source software ecosystems: Beyond the scope of project health." Information and Software Technology 56.11 (2014): 1508-1519.
[2] https://www.youtube.com/watch?v=hwTOrDg3LsI
[3] https://opensource.com/bus/16/8/measuring-community-health
[4] https://dzone.com/articles/-measuring-metrics-in-open-source-projects
[5] https://opensource.com/article/20/5/open-source-program-office
[6] https://fossa.com/blog/building-open-source-program-office-ospo/