收集和分析社区指标的工具

352 位读者喜欢这篇文章。
Penguins

互联网档案馆书籍图片. CC BY-SA 4.0。

到目前为止,我们已经讨论了设定目标来指导指标流程、避免虚荣指标,并概述了对研究社区有用的指标类型的重要性。 制定了一套可靠的目标之后,我们现在准备讨论收集和分析与这些目标相符的社区指标的一些技术细节。

您使用的工具以及收集指标的方式很大程度上取决于您为社区制定的流程。 考虑社区成员彼此互动以及协作发生的所有方式。 代码在哪里提交? 讨论在哪里进行? 比 *where* 更重要的是 *how*? 您是否有记录的流程供社区成员做出贡献? 如果您对社区正在做什么以及如何做有充分的了解,那么您将能够更成功地提取有意义的数据来支持您的目标。

入门

开发一个可靠的指标计划可能是一项艰巨的任务,但作为一名开源社区开发者,您可能已经可以访问基本的指标数据。 在 Liferay 社区,我们使用 GitHub 进行源代码和文档管理,使用 Pootle 进行翻译,使用 JIRA 进行问题跟踪,使用 SourceForge 进行二进制文件下载托管,并使用 Liferay 本身进行社交协作(论坛、维基、博客等)。这意味着我们可以使用每种工具的内置机制访问一些基本指标

$ curl    https://api.github.com/repos/opensourceway/open-org-field-guide

{
  "id": 64841869,
  "name": "open-org-field-guide",
  "full_name": "opensourceway/open-org-field-guide",
  "owner": {...}
  "size": 6258,
  "stargazers_count": 8,
  "forks": 2,
  "open_issues": 0,
  "watchers": 8,
  "subscribers_count": 2
}

通过为每个 API 开发一些简单的命令行客户端,您可以立即访问各种一级指标,例如下载次数、注册用户信息、知情的论坛活动、提交次数和星数等等。 如果您在社区中使用这些工具,则应查看可用的内置指标,在某些情况下,可以直接通过该工具的用户界面查看(例如,GitHub 的项目Pulse 页面)。

合并数据

虽然从虚荣的角度来看,一级指标很有趣,但我们追求的是更有用的二级指标,这意味着我们首先需要考虑如何合并来自不同来源的多个查询的数据。 例如,我们确定的一个关键指标是 *提交时间*,即从社区成员在 JIRA 中提交错误到 GitHub 中提交该错误所花费的平均时间。 在跨系统边界访问数据时,需要注意以下几个问题

  • 重复记录。 并非每个系统都擅长对记录进行去重。 在某些情况下,这是一个错误,但在其他情况下,它可能是应用程序工作流程的一部分。 例如,您可能会发现论坛帖子的一条记录处于“草稿”状态,而另一条记录表示其最终的“已发布”状态。 您应该注意任何看起来不准确的异常计数。
  • 垃圾邮件记录。 这些记录在事后很难过滤,因此理想情况下,应在允许它们持久保存在记录系统中之前对其进行过滤。 如果您遇到很多这种情况,请考虑使用 SpamAssassin 或 Akismet 等工具,根据记录内容自动进行过滤,然后再进行分析。
  • 跨平台身份。 一些开发人员在不同的系统中使用不同的身份。 他们可能会在项目论坛上回复时使用他们的“专业”身份,然后在提交代码或在会议上演示时使用他们的“个人”身份。 跨这些系统合并数据需要您尝试规范化身份,如果您的指标涉及个人或公司归属。 查找您使用的平台中的功能,允许社区成员明确建立此链接。 例如,Liferay 社区成员可以指定他们的 Twitter 句柄,从而使我们能够跟踪 Twitter 上的活动并将其链接到他们的 Liferay 存在。 虽然方便,但并非 100% 万无一失(并非每个人都希望以这种方式链接帐户。)通常的回退方法是选择一些唯一的识别信息,例如电子邮件地址,并手动维护一个 *别名列表*,该列表将多个身份映射到单个身份,以用于指标收集的目的。

除了个人身份之外,您还应该考虑您想要生成的指标,并实施使工作更轻松的工作流程更改。 例如,在我们当时对提交时间指标感兴趣时,我们无法将 JIRA 中的问题与 GitHub 提交相关联,因此我们在 JIRA 中添加了一个字段,该字段由开发人员在关闭 JIRA 中的问题时填充,并包含对 Git 提交的引用。 通过这种方式,我们实际上使用必要的数据来配置我们的社区工具,以便能够收集和分析指标。

生成您的指标

通过从社区用于完成其工作的系统中获得某种程度上“干净”的原始指标来源,以及您可能需要的系统之间的任何必要链接,您可以开始生成您已确定与您的指标目标相关的指标。 社区的多样性意味着没有单一的“一统江湖”的工具,因此您需要进行试验才能找到最适合您和您的社区的工具集。

蛮力法

作为一名时间有限的开发人员,我经常为某些指标选择 DIY 方法。 入门很容易,而且您不必成为数据科学家也能获得有价值的指标,这些指标可以帮助您实现目标。 例如,考虑论坛。 它是人们发布的帖子记录,有时还有关于帖子性质的额外元数据(例如,标签、类别、时间、线程信息等)。 无论论坛的机制如何(可能是邮件列表或基于 Web 的论坛),您通常都可以访问每个都包含以下内容的记录数据库

●    日期和时间
●    类别(安装/设置、使用、开发、故障排除等)
●    用户的身份(姓名、电子邮件、帐户 ID 等)
●    它是哪个线程的一部分,它在线程层次结构中的位置
●    帖子的性质(是问题还是接受的答案)
●    浏览量、编辑量
●    帖子的内容

有了这些原始数据,除了明显的“计数器”类型指标之外,还可以轻松地构造一个查询,或者用您喜欢的语言编写一个小程序来计算各种有趣的指标。 像

●    线程从初始帖子到初始响应或到接受的答案的平均时间
●    将帖子数据与用户身份中的位置数据相结合,以确定社区中的地理“热点”
●    随着时间的推移,有多少帖子被忽略

所有这些都与我们在 Liferay 社区中选择的指标保持一致,并且可以使用几个 bash 脚本和 SQL 查询定期生成。 但是,随着我们不断完善我们的目标并添加更多指标,这种方法的可扩展性不是很好,尤其是在我们想要进行更多跨系统指标时。

高级指标工具

自己生成指标可能是一项非常有意义的挑战,因为您将学到很多关于您的社区以及可用的数据性质的知识,当您准备将其提升到新的水平时,这一点非常重要。 您可以使用许多开源指标工具,这些工具将为您完成大量繁重的工作,使您可以专注于结果,而不是生成数据的机制。

communitymetrics_image_2_700width.jpg 
Liferay 社区中 Grimore Labs 数据的可视化示例

如果您的社区使用邮件列表,MLSstats 是一种解析它们并将其加载到数据库以进行进一步处理的好方法。 (例如,使用 Gource;请参阅 Dawn Foster 关于 Gource 可视化的精彩文章。)

Visone 是一种可视化工具,用于分析社交网络以及网络中元素之间的依赖关系和链接。 除了显而易见的(分析您社区的社交结构)之外,您还可以使用它来可视化代码。 在 Liferay 社区中,我们使用此工具来衡量开发人员在代码库中移动的方式,观察和报告模块内的活动随时间的变化。

Grimoire Lab 是一组 100% 开源软件分析工具。 它包括跨系统捕获数据、去重、规范化身份和可视化结果的工具。 我们与 Bitergia 合作,并使用这些工具进行更高级的指标,例如跟踪我们社区的多样性(地理和人口统计),以及几个将我们论坛、GitHub、JIRA 等的数据相结合的“X over time”指标。

这只是我们在 Liferay 社区中使用的一小部分开源工具,但还有其他工具可能更适合您的需求。 如果您找到它们,请务必在评论中告知我们的读者。

有了可靠的目标集以及生成指标来跟踪它们的能力,您就朝着更健康的开源社区迈出了坚实的一步。 在下一篇文章中,我们将向您展示如何分析指标本身,以更深入地了解它们可以(并且不能)告诉您什么。 下个月再见。

James Falkner's picture
技术传播者、教师、学习者、作者,致力于开源和开放计算。 我在 Red Hat 工作,担任 Red Hat 开源产品组合的技术传播者,我热爱我们所做的工作,并向他人学习,偶尔也会在会议上授课。

评论已关闭。

© . All rights reserved.