开源项目管理者必须展示他们工作的回报率(ROI)。本指南提供了组织评估其开源专项、项目和贡献的一些标准方法的概览。
了解要度量什么,如何定义成功,以及如何最佳地使用这些信息来推进你的开源专项目标,展示效果,并获得支持。
目录
如何定义成功
明智的组织明白投资开源开发的价值,并设定与开源使用和参与相关的目标。但每个开源专项对成功的定义都略有不同。你设定的目标和跟踪的指标将根据你投资开源的原因而有所不同——无论是为了招募开发者、通过开放创新引入新的思想和技术、实现更快的市场上市时间、降低开发成本,还是其他众多原因。
根据你独特的战略设定目标,并从执行团队那里获得支持,以确保开源战略与整体商业战略一致,这是非常重要的。话虽如此,开源专项管理者无论在哪个行业、产品或商业战略中,都有些标准的衡量成功的方法。这些包括:
- 他们开发者在外部开源项目中的参与度和影响力水平
- 他们组织在开源社区中的声誉
- 他们招募和保留有才华的开发者的能力
- 组织自己的开源项目及其开发者贡献的关键业务项目的总体健康状况
- 他们管理开源许可证合规性的能力如何
为何设定目标?
在我们深入探讨开源项目跟踪的内容和方法之前,让我们先花一点时间讨论一下通过设定目标并对其进行度量所能实现的成果。
首先,跟踪与目标的进展有助于确保你投资的开源项目(无论是外部的还是内部的)保持健康——它们能够回应社区的需求,更好地代表公司,并帮助实现开源项目更广泛目标。定期跟踪可以帮助为开源项目设定基准,并作为一个预警系统,允许在项目偏离轨道、不符合法律合规性或需要退役时进行调整。
审慎(和战略性)的测量也是向高层管理人员报告的极好材料。定期报告有助于确保项目与目标和整体业务战略保持一致,并帮助项目经理在执行领导层中获得对项目的内部支持(特别是如果你们正在实现或超过这些目标!)
例如,Facebook的开源办公室会定期在内部发布其开源项目的月度成果,并向管理层发送高管报告。 “报告是提高意识的好方法。尽管Facebook作为一个组织高度重视开源,但始终在内部不断地自我推销并展示你的价值始终是件好事。”——Christine Abernathy,Facebook的开源开发者倡导者。 定期公开发布结果也有助于提高潜在合作伙伴、用户和开发者对您组织开源活动的认识。 公开传播结果——好的、坏的和丑陋的——增加了你的项目的透明度、问责性,从而在开源社区增加了可信度。查看 Facebook 和 Google.Googley的示例开源报告卡。
如何设定目标
对于您的开源专项,拥有崇高的目标是完全可以的,但要为实现这些目标的方式和时间表设定合理的期望。首先,开始度量以建立性能的基线是有帮助的。为收集数据设置正确的工具,并确保数据来源清晰且以您(和您的经理)能够理解的格式。许多组织为他们的开源专项创建了一个指标仪表板,以在一个地方跟踪所有数据,并提供项目快照,这可以帮助快速评估进展。(请参阅我们关于管理开源专项工具的指南。)
接下来,让所有开源专项管理者和利益相关者聚集在一起——在Facebook,这包括工程领导和项目维护者——作为一个团队决定在接下来的3-6个月(小的、可实现的增量)里你想要达到的目标。在那个时间段结束时,回顾你的表现,并根据上一次的进展调整下一次的目标和策略。
“我倾向于基于社区感受到的痛苦找到指标,并尝试改善这些指标以改善社区健康。”——Sarah Novotny,Google的Kubernetes社区经理。
除了基线性能指标外,以下是您在为项目设定目标时需要考虑的一些其他事项:
- 战略一致性: 您的目标是否与核心业务战略、产品目标和其他内部业务目标一致?
- 控制水平: 您的项目经理是否对结果有直接控制,还是说这属于工程、法律或其他功能?设定在您的控制范围内且可实现的目标。
- 项目差异: 目标可以根据项目的目的、社区组成、技术栈和其他变量而有所不同。例如,Facebook注意到其JavaScript项目往往更频繁地被分叉。他们已经学会(经过多次跟踪周期!)这些指标并不一定是这类项目健康状况的最佳指标。
- 数量与质量: 并非所有目标都应该与数字挂钩。提升项目质量的流程改进同样重要,甚至更重要。仅仅因为你达到了所有的数字,并不一定意味着你的项目是健康的。相反,一个不增长的非常小的项目也可能非常健康。 “你可能有半打核心贡献者和一打活跃但不是维护者的人,但有健康的讨论,拉取请求在很短的时间内得到处理,繁重的功能讨论有一个清晰的开始、中间和结束。这可能是一个非常健康的社区,但它不会在GitHub上获得数百万的星星或分叉,因为它可能是一个小众项目,”Novotny说。“所以我倾向于看社区是如何与自身互动的,新的领导是如何被培养和指导的,以及任何痛点是如何发展的。”
常见目标
当谈到度量您的开源专项的成功时,很容易就会专注于项目的定量指标:贡献者总数、代码行数、项目数量等。在下一节中,我们将讨论如何通过这些指标来评估您项目的健康状况。但首先,除了这些数字之外,还有很多其他重要的方法来衡量您项目的成功的。
“我认为使用指标来了解趋势是好的。如果把它们作为唯一的成功方法,就会带来麻烦。”—Joe Beda,Google Kubernetes的创始工程师和Heptio的联合创始人兼CTO。
Kubernetes是GitHub上速度最快的开源项目之一,在过去三年中吸引了来自1,181家公司的2,760名开发者的超过80,000次提交。但从一开始,这个项目就根据用户是否对这项技术感到兴奋并使用它来衡量其成功,而不是通过“一些开源指标列表”,Beda说。
以下是开源办公室背后的一些常见目标,以及项目经理用来衡量这些目标的顶级方法,以跟踪项目的整体进展。其中一些目标无法确切地衡量,而是关于提高流程、效率和质量。其他目标可以通过进行调查或其他评估方法来衡量,例如定期和积极地征求口头或书面反馈。(与您的团队交流!)
目标1:确保高效且合法合规地使用开源代码。
这通常是组织开始参与开源活动的地方。他们意识到工程部门正在大量使用开源软件,无论是在他们的基础设施中,还是在他们的产品与服务中,或两者兼有。一个项目办公室有助于集中化有关开源使用的政策和决策,追踪其使用情况,并确保组织不会违反各种开源许可证下的法律义务。项目还可以跟踪它们在帮助开发者解决可能遇到的任何法律问题方面的成效。
针对这一首要目标的一些最常见衡量方法旨在确保政策和流程按预期工作,并确保组织保持合法合规:
- 您使用了多少开源代码?
- 这种使用情况被追踪得有多好?
- 使用开源代码的政策清晰,开发者对此有所了解。
- 引入代码的流程和工具清晰,开发者正在遵循它。
- 哪些产品与服务中使用了第三方代码?
- 您遇到了多少合规问题,它们是如何解决的有多快?(您有合规计划,对吧?请参阅我们的开源合规计划的法律资源,了解更多关于这个话题的信息。)
目标2:提高开发者的生产力。
一旦您开始追踪和管理您的开源使用情况,您就会希望让开发者更容易地为开源项目做出贡献。如果您的工程师需要经过层层繁文缛节才能向您的业务所依赖的项目提交错误修复或新功能,那么您就是在浪费宝贵的时间和资源。从长远来看,开发者通过向上游贡献代码,而不是维护一个随时间累积技术债务的项目分支,也能节省大量时间。
“我们试图让自己像马拉松赛道上给跑步者送水的人。我们鼓励开发者朝我们的方向多走几步,知道这样做他们实际上最终会达到目标。我们真的试图设置一个程序,成为一个支持服务,而不是减速带。"— Gil Yehuda,Oath(雅虎+美国在线)的开源高级总监
与此目标相关的指标旨在为开发者贡献回开源项目提供便利,并增加您的组织向上游贡献的代码总量。一旦您消除了贡献的障碍,并使审批过程明确且快速,您可以期待更多的贡献和效率。需要跟踪的事项包括:
- 对组织认为具有战略意义的外部项目所做的提交数量
- 贡献的开发者数量。他们是谁,他们贡献了哪些项目?
- 组织雇佣的项目维护者数量(招聘和培养)
- 您贡献的项目的健康状态
- 情感分析:您的组织在开源社区中的声誉
- 开发者是否知道贡献的政策?(您有一个,对吧?)
- 他们是否遵循贡献的流程?(例如,他们是否必须签署CLA等)
- 他们是否向您求助,您是否及时提供帮助?
- 软件发布之间的时间——是在增加还是减少?
- 与维护分支代码相比,向上游贡献的工程成本是多少?
目标3:创建和培养开源项目。
这是许多以工程为重点的大型组织(如Facebook、Google、Microsoft、Twitter等)开源专项的主要目标。他们正在创建数百(甚至数千)个旨在解决棘手技术问题的开源项目。目标是吸引外部用户和贡献者带来新的想法,并帮助以更快的速度推进技术——加州大学伯克利分校教授Henry Chesbrough将这一概念称为开放式创新。
“你如何让世界上最聪明的人在你公司工作?嗯,你开源一些东西,然后说服他们为你的项目做出贡献!”—Chris Aniszczyk,开放容器倡议的执行董事和云原生计算基金会的首席运营官
衡量项目健康可用的众多数据点是跟踪这一目标的关键(见下一节的前5名)。但还有其他考虑因素:
- 是否有明确的创建新开源项目的政策,开发者是否知道?
- 是否有创建新项目的明确且简便的流程,开发者是否遵循?
- 外部人员对您组织的项目做出贡献有多容易?
- 项目维护者热情且乐于助人
- 项目维护良好且得到支持
- 代码有良好的文档记录
- 如何贡献定义明确
- 其他定量指标,如新贡献者数量、创建的问题数量、关闭问题所需的时间等(见下一节)
- 您的项目收到的外部贡献的数量和多样性
- 您组织项目的受欢迎程度:GitHub星标、社交媒体关注者等
- 在部署和/或生产中使用的用户数量
- 您组织启动的项目的数量、广度和质量。例如,与移动或数据基础设施相关的项目等
- 项目及其相关产品的性能提升
- 发布之间的时间
“在上半部分,我们决定我们希望有更多的旗舰项目启动,并使开源过程更加严谨。但那背后没有数字。这只是意味着重新审视如何启动开源项目的过程。”—Christine Abernathy,Facebook。
目标4:招募和保留开发者。
作为一个组织参与和创建开源项目是吸引开发者的绝佳方式——并且可以快速地让他们入职,同时减少培训所需的资源。使用或为您的项目做出贡献的开发者在加入组织时已经熟悉您的流程、工具和技术。(请参阅我们关于招募开源开发者的指南。)
但作为项目经理,您可能没有直接参与招募开发者的角色,并且可能不清楚您组织参与开源对招聘的直接效果。为了帮助更直接地连接项目工作和招聘,Facebook进行了半年一次的调查,询问新员工三个基本问题:
- 他们是否知道公司的开源专项?
- 这种意识如何影响他们加入公司的决定?
- 他们对开源的经验是否适用于他们现在所做的工作? “我们使用调查来衡量我们开源文化的健康程度,它反映了人们如何看待我们的开源项目的总体有效性。很高兴看到数字呈上升趋势。”—Christine Abernathy,Facebook的开源开发者倡导者。
开发者招聘的其他常见指标包括:
- 员工使用和贡献的开源项目
- 新员工是如何听说组织的
- 您通过开源项目招募的开发者数量
- 您招募(和培养)的项目维护者数量
- 新员工入职所需的时间
- 开源开发者在职业生涯中的晋升情况
- 开发者的贡献作为工作表现的一部分进行评估
- 开发者因其贡献而获得认可和奖励
- 开发者在贡献方面获得帮助和支持
目标5:推广开源文化。
开源专项对工程人才的贡献很大程度上也归功于在组织内培养开源文化和实践。这是因为拥抱开源的组织被认为是开发者工作和创新的好地方。开源专项经理通常是组织内开源精神的大使,同时监督协作的政策和实践。
跟踪开源文化在组织内的发展对于衡量项目的有效性至关重要。一些常见的衡量开源文化采纳的方法包括:
- 管理层和各部门(从工程到市场营销和公共关系)对开源战略和项目的认识和支持
- 在开源社区中的品牌和知名度——您的组织是如何被感知的
- 参与度——您以积极的方式参与开源社区
- 培训和指导——您与开发者合作,提高他们对开源的贡献和项目,寻找贡献的机会,并学习开源社区的工具和流程,确保贡献者从他们的同事和经理那里得到支持
- 采用通用工具集
- 代码质量符合开源/外部使用的标准
- 代表组织倡导——参加和在会议上发言,撰写文章或教程等
- 赞助基金会、团体或黑客马拉松
目标6:将开源社区利益与产品利益对齐。
社区倡导是开源专项中一个相当新但日益流行的角色。您经常充当项目开发者和采用者社区之间的联络人——代表基于您的开源代码构建产品的外部用户的声音,并将信息反馈给产品管理团队。
这是一个重要角色,确保您的产品与服务从您的开源社区中获益,从而使您的开源专项与组织更广泛的商业战略和目标保持一致。一些衡量您倡导成功的指标包括:
- 来自组织外部的贡献有多少?
- 组织外部的全职贡献者有多少?
- 有多少外部贡献的代码被重新整合到产品中?
- 有多少员工是从开源贡献中招聘来的?
需要跟踪的内容
对于开源专项来说,衡量成功和跟踪进展的方法有很多。项目健康不是唯一需要跟踪的方面,但它仍然非常重要。问题在于,围绕开源项目有大量的数据可用。任何可以获得数据的方面,都可以收集和跟踪。再次强调,每个组织跟踪的指标——以及他们如何使用这些数据——在很大程度上取决于他们对项目的目标,以及他们在市场和开源社区中所面临的独特挑战。
“我们收集我们能够获取的数据,因为我们有这些数据,但我们不只关注数字。我们关注的是确保我们有正确的结果。”—Gil Yehuda,Oath(雅虎+美国在线)的开源高级总监
对于一些(疯狂或完全自动化的)项目经理来说,答案是跟踪所有事物。但对于大型组织来说,特别是有那么多项目,跟踪一切并从中得出任何意义是不可能的。那么,真正表明一个开源项目健康状况的指标是什么呢?
以下是评估你开源专项整体健康状况的顶级指标。这些只是更严格和深思熟虑分析的起点。请记住,这些是帮助负责确保多个项目健康状况的项目经理的提示。项目本身也应该跟踪自己的健康指标。GitHub的开源指标指南为项目维护者应该关注什么提供了很好的概述。
这些数字可以很容易地使用免费和开源的工具,以及商业产品从GitHub收集。定期(每月、每季度、每年)测量它们,以帮助为个别项目以及整个项目的总体进展设定基准。在管理报告中使用它们,并帮助您的开发者改进您的项目。
“我们定期尝试检查并看看,项目是否健康,以及给他们一些建议,告诉他们应该如何做得更好。但我们不直接管理。我们只是给他们数据,然后在我们能够或必要时,稍微推动他们。”—{Christine Abernathy}(https://twitter.com/abernathyca),Facebook。
贡献者数量(以及外部与内部贡献的比例)
项目起初大多数贡献来自内部开发者,并随着源代码的使用或分叉逐渐包括更多的外部贡献。那些能够持续吸引多样化社区的、健康的项目,其大部分贡献来自项目生态系统中对代码有商业依赖的其他公司。(还记得有1000多家公司为Kubernetes贡献代码吗?)
那些持续吸引新外部贡献者的项目,很可能在维护项目、欢迎贡献者和整合社区反馈方面做得很好。(注意:对于那些没有扩大贡献者基础的项目,这可能仍然成立!)
提交、开启和接受的拉取请求数量(以及它们保持开启状态的时间长度)
当一个贡献者发现一个错误或者有一个他们能够(并且有权限)修补或编写的功能请求时,他们会这样做并提交一个拉取请求(PR)。跟踪拉取请求的数量以及它们的处理情况,展示了多少代码是由非雇员的贡献者提交的,因此这是衡量外部对您项目兴趣水平的一个指标。
PR保持开启状态的时间长度也表明了您的项目维护者对外部贡献者的反应速度和欢迎程度。如果一个PR长时间未得到回应,潜在的贡献者可能会将他们的好想法带到其他地方。
“当我们有一个好项目时,我们可能没有拉取请求开启超过最多两到三个月。实际上,这已经很长了。”— Christine Abernathy,Facebook。
请记住,这些指标高度依赖于项目的大小。Facebook的小型项目会尽量保持开启的拉取请求数量在10个或更少。但对于有大量社区输入的大型项目来说,与维护者的数量相比,保持PR在这个限制之内将是具有挑战性的。审查这些拉取请求需要时间,所以大型项目往往有更长时间的开启PR。
Facebook的开源办公室经常在数据库中运行查询,并挑选出开启PR最多的前五个项目。他们确定几个问题,然后借此机会与项目的维护者开展对话。他们向他们提出几个问题,以找到问题的根源,并看看什么可能有助于解决问题。大多数情况下,这只是重新集中他们的注意力,并提醒他们保持社区满意的重要性。但偶尔,深入研究这些数字会指向项目的更深层次问题。许多开启的PR,或者旧的PR,可能意味着只有一两个人在维护项目——这是一个潜在的红旗。
提交的问题数量(以及它们保持开启状态的时间长度)
没有时间、权限或能力提交拉取请求,但遇到代码问题的用户可以将他们的漏洞和功能请求作为问题提交。问题的数量以及它们是如何处理的,可以表明项目的使用者采纳程度以及维护者对用户需求的反应速度。
这个数字当然取决于问题是如何跟踪的。对于仅使用GitHub来跟踪错误项目,问题可能保持开启的时间要比使用GitHub跟踪包括功能请求在内的问题的项目要短得多。这些考虑因素会影响问题年龄的延长或缩短。
每个贡献者的提交数量(外部与内部)
项目相对于总数拥有的外部提交数量是另一个表明项目在开放创新方面效果如何的指标——即从外部引入新想法。健康的项目将看到外部贡献者的比例随时间增加。测量每个贡献者的提交数量也有助于评估您的项目是否吸引了新贡献者,以及这些新贡献者是否持续参与。
外部采用者数量
每个开源项目都应该有一种方法来跟踪选择在生产环境中采用该软件的组织。无论是通过一个ADOPTERS.md文件,还是在README中的简单列表,关键是要跟踪这个列表,并确保它随时间增长。如果外部采用者的数量停止增长或减少,这可能预示着项目成熟或项目过时。
创建或贡献的项目数量(整个项目)
为您的组织发布的每个项目跟踪这些指标,同时也要跟踪您的开发者积极贡献的项目。在制定开源策略的过程中,您应该已经确定了对业务至关重要的项目,并为贡献给这些项目划拨了一些投资。衡量您的组织开源成功的不仅仅是通过您自己的开源项目的健康程度,还要通过其整体的开源活动来衡量。这包括您依赖于产品开发和业务运营的项目的健康程度,以及确保您的组织在法律上符合您使用或发布的任何项目的开源许可证。(请参阅我们的开源合规计划出版物。)
其他需要跟踪的指标
基本的项目指标是了解您开源贡献情况的良好起点。但成功的项目经理需要更深入地研究其他重要指标。
根据您的目标,以下是您可以(也许应该)跟踪的众多其他事项。请记住,数字本身不是目标——目标是通过长期跟踪它们并在数据中发现模式来指导项目和流程的改进。分别对每个项目进行测量,并跨项目进行综合测量,以全面了解您的项目的产出和结果。
- 流行度/知名度
- 访问项目网站的访客数量
- GitHub/GitLab上的总关注者数量
- 社交媒体账户(如Twitter、Facebook或LinkedIn)上的关注者数量
- 新闻剪辑和媒体报道
- 组织和主持的聚会数量(例如,通过meetup.com)
- 影响力
- 在战略性项目中担任维护者/领导角色的员工数量
- 项目贡献者的多样性
- 被拒绝的补丁,以及拒绝的原因
- 采用情况
- 下载数量
- 创建的分叉数量
- 贡献的外部公司数量
- 采用阶段(在概念验证和生产中的部署数量)
- 商业依赖(产品)的数量和质量——这可以通过查看对您项目做出贡献的公司,以及关注新闻和行业媒* 体来跟踪。
- 项目成本
- 员工:工程、公关与营销、法律
- 基础设施和支持
- 工具
- 会议出席和旅行
- 培训
- 会员资格和捐赠
结束语
组织会以最适合他们需求的方式评估他们的开源专项、项目和贡献。最重要的是要记住,设定一个战略和逐步实现目标。您跟踪的内容以及方式自然会随之而来。
致谢
贡献者:
- Christine Abernathy,Facebook的开源开发者布道师。
- Chris Aniszczyk,云原生计算基金会的首席运营官。
- Joe Beda,Google Kubernetes的创始工程师,以及Heptio的联合创始人兼首席技术官。
- Sarah Novotny,Google的Kubernetes社区经理。
- Gil Yehuda,Oath(雅虎+美国在线)的开源高级总监。