作为一名通常管理软件开发团队的人,多年来我开始非常关注指标。我一次又一次地发现自己领导的团队使用各种项目平台(例如 Jira、GitLab 和 Rally)生成了大量可衡量的数据。从那时起,我立即投入大量时间从记录平台中提取有用的指标,并将它们转换为我们可以理解的格式,然后使用这些指标就开发的许多方面做出更好的选择。
今年早些时候,我很幸运地遇到了 Linux 基金会的一个名为“开源软件社区健康分析”(Community Health Analytics for Open Source Software),简称 CHAOSS 的项目。该项目专注于从广泛的来源收集和丰富指标,以便开源社区的利益相关者可以衡量其项目的健康状况。
什么是 CHAOSS?
随着我对该项目的基础指标和目标越来越熟悉,一个问题不断在我脑海中盘旋。什么是“健康”的开源项目,以及根据谁的定义?
在特定角色的人看来是健康的,在另一个角色的人看来可能并非如此。似乎有机会从 CHAOSS 收集的细粒度数据中抽身出来,进行市场细分练习,重点关注对于给定角色而言最有意义的背景问题是什么,以及 CHAOSS 收集的哪些指标可能有助于回答这些问题。
这一练习之所以成为可能,是因为 CHAOSS 项目创建并维护了一套开源应用程序和指标定义,包括:
- 许多基于服务器的应用程序,用于收集、聚合和丰富指标(例如 Augur 和 GrimoireLab)。
- ElasticSearch、Kibana 和 Logstash (ELK) 的开源版本。
- 身份服务、数据分析服务和各种集成库。
在我过去的一个项目中,有六个团队在处理复杂度各异的项目,我们发现了一个很棒的工具,它允许我们从简单的(或复杂的)JQL 语句中创建我们想要的任何类型的指标,然后针对这些指标之间进行计算。在我们意识到之前,我们已经仅从 Jira 中提取了 400 多个指标,并且从手动来源中提取了更多。
到项目结束时,我们认为在 400 多个指标中,大多数指标在我们在各自的角色中做出决策时实际上并不重要。归根结底,真正对我们重要的只有三个:“缺陷消除效率”、“完成的点数与承诺的点数”以及“每位开发人员的在制品”。这三个指标最重要,因为它们是我们对自己、对客户和对团队成员做出的承诺,因此也最有意义。
从那次经验中吸取的教训以及“什么是健康的开源项目?”这个问题出发,我加入了 CHAOSS 社区,开始构建一组角色,以便从基于角色的角度为回答这个问题提供建设性的方法。
CHAOSS 是一个开源项目,我们尝试使用民主共识来运作。因此,我决定用“参与者”(constituent)这个词来代替“利益相关者”(stakeholders),因为它更符合我们作为开源贡献者的责任,即创建更共生的价值链。
虽然创建此参与者模型的练习采用了特定的目标-问题-指标方法,但有很多种细分方法。CHAOSS 贡献者开发了出色的模型,这些模型按向量进行细分,例如项目概况(例如,个人、公司或联盟)和“容错能力”。每个模型在为 CHAOSS 开发指标定义时都提供了建设性的影响。
基于所有这些,我着手构建一个模型,了解谁可能关心 CHAOSS 指标,以及在 CHAOSS 的四个重点领域中,每个参与者最关心的问题是什么:
在我们深入探讨之前,重要的是要注意,CHAOSS 项目明确将情境判断留给实施指标的团队。“有意义”的是什么以及“什么是健康的?”的答案预计会因团队和项目而异。CHAOSS 软件的现成仪表板尽可能侧重于客观指标。在本文中,我们重点关注项目创始人、项目维护者和贡献者。
项目参与者
虽然这绝不是这些参与者可能认为重要的问题的详尽列表,但这些选择感觉是一个很好的起点。以下每个“目标-问题-指标”部分都直接与 CHAOSS 项目正在收集和聚合的指标相关联。
现在,开始分析的第一部分!
项目创始人
作为项目创始人,我最关心的是:
-
我的项目对其他人有用吗?衡量标准是:
-
随着时间的推移,有多少个 fork?
指标:仓库 fork 数。 -
随着时间的推移,有多少贡献者?
指标:贡献者数量。 -
贡献的净质量。
指标:随着时间的推移,提交的错误数量。
指标:随着时间的推移,回归的数量。 -
我项目的财务健康状况。
指标:随着时间的推移,捐款/收入。
指标:随着时间的推移,支出。
-
-
我的项目对其他人有多可见?
-
有人知道我的项目吗?其他人觉得它很棒吗?
指标:社交媒体提及、分享、点赞和订阅。 -
有影响力的人知道我的项目吗?
指标:贡献者的社交影响力。 -
人们在公共场合对该项目有何评价?是积极的还是消极的?
指标:跨社交媒体渠道的情感(关键词或 NLP)分析。
-
-
我的项目有多可行?
-
我们有足够的维护者吗?数量是随着时间的推移而增加还是减少?
指标:维护者数量。 -
我们有足够的贡献者吗?数量是随着时间的推移而增加还是减少?
指标:贡献者数量。 -
速度如何随时间变化?
指标:代码随时间变化的百分比。
指标:拉取请求、代码审查和合并之间的时间。
-
-
我的项目有多样化和包容性?
-
我们是否有有效、公开的行为准则 (CoC)?
指标:CoC 仓库文件检查。 -
与我的项目相关的活动是否积极具有包容性?
指标:关于活动票务政策和活动包容性活动的手动报告。 -
我们的项目在可访问性方面做得好吗?
指标:验证是否发布了键入的会议记录。
指标:验证会议期间是否使用了隐藏式字幕。
指标:验证演示文稿和项目前端设计中是否使用了色盲友好的材料。
-
-
我的项目代表多少价值?
-
我如何帮助组织了解使用我们的项目可以为他们节省多少时间和金钱(劳动力投入)
指标:问题、提交、拉取请求的仓库计数以及估计的劳动力成本。 -
我如何了解我的项目创造了多少下游价值,以及维护我的项目对于更广泛的社区而言有多重要(或不重要)?
指标:有多少其他项目依赖于我的项目的仓库计数。 -
对于那些为我的项目做出贡献的人来说,有多少机会利用他们在项目中学到的知识来找到好工作,以及在哪些组织工作(即维持生计的工资)?
指标:使用或贡献此库的组织数量。
指标:从事此类项目的开发人员的平均工资。
指标:包含与此项目匹配的关键词的招聘职位数量。
-
项目维护者
作为项目维护者,我最关心的是:
-
我是一个高效的维护者吗?
指标:PR 在代码审查前等待的时间。
指标:代码审查与后续 PR 之间的时间。
指标:我的代码审查中有多少是批准?
指标:我的代码审查中有多少是拒绝/返工请求?
指标:代码审查评论的情感分析。 -
我如何让更多人帮助我维护这个东西?
指标:项目贡献者的社交影响力计数。 -
我们的代码质量是随着时间的推移变得更好还是更差?
指标:计算随着时间的推移引入了多少回归。
指标:计算随着时间的推移引入了多少错误。
指标:错误提交、拉取请求、审查、合并和发布之间的时间。
项目开发者和贡献者
作为项目开发者或贡献者,我最关心的是:
-
我可以通过为这个项目做出贡献获得哪些有价值的东西,以及可能需要多长时间才能实现这些价值?
指标:下游价值。
指标:提交、代码审查和合并之间的时间。 -
通过贡献我所学到的知识来增加我的工作机会是否有良好的前景?
指标:维持生计的工资。 -
这个项目有多受欢迎?
指标:社交媒体帖子、分享和收藏的数量。 -
社区影响者知道我的项目吗?
指标:创始人、维护者和贡献者的社交影响力。
通过创建此列表,我们才刚刚开始为 CHAOSS 的情境骨架填充内容,并且随着今年夏天项目中指标的首次发布,我迫不及待地想看看更广泛的开源社区可能有哪些其他好主意可以贡献,以及我们还可以从这些贡献中学到(和衡量!)什么。
其他角色
接下来,您需要了解更多关于其他角色(例如基金会、企业开源项目办公室、业务风险和法律团队、人力资源以及其他角色)以及最终用户的目标-问题-指标集,最终用户在开源方面有截然不同的关注点。
如果您是开源贡献者或参与者,我们邀请您来了解该项目并参与社区!
评论已关闭。