首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 基金会企业开源指南系列之四 - 度量开源项目的成功要素(上)

Linux 基金会企业开源指南系列之四 - 度量开源项目的成功要素(上)

作者头像
开源社
发布2019-05-29 15:47:44
4800
发布2019-05-29 15:47:44
举报
文章被收录于专栏:开源社开源社

引言

开放源代码办公室经理必须为自己所付出的努力进行投资回报率的计算。本篇指南旨在概述企业经理们评估他们开源项目、办公室、以及贡献的常见做法。

学习如何来衡量各项指标,如何定义开源项目的成功,以及如何充分利用各种信息来改进开源项目办公室的目标,说明有效性、并获得更多的支持。

01

如何定义成功

明智的公司对于参与开源开发的价值是有深刻理解的,当然基于此,还会设定关于如何利用和参与开源的目标。但是,天下没有”包治百病的良药”,对于开源项目来说每个项目还有一些细微的差别。设置目标、跟踪各种指标,这些都会随着你投入开源的程度不同而不同:如雇佣的开发人员、通过开放的创新带来新的想法和技术,进而达到快速上市、低成本的开发、或是其它原因。

对于贵司独一无二的战略来说,设置目标是首要的事情,而且要谨记:去寻求高管团队的认同,以确保开源战略与整体业务战略保持一致。也就是说,无论其行业、产品或业务战略有何不同,开源项目负责人都有一些标准化的方法来评估项目的成功。它们通常有:

  • 开发者在外部开源项目中的参与度和影响力
  • 贵司在开源社区的声誉
  • 贵司在雇佣开发者和留住人才方面的能力评估
  • 贵司自个的开源项目健康度,重大业务相关项目的开发者参与度
  • 管理开源许可证合规性的成效如何

02

为何设置目标

在开始正式的开源项目跟踪之前,或者说在更为深入的探讨之前,让我们花上短暂的几分钟时间来讨论下如何设置一个可实现的目标,而且要时刻的对它进行评估。

没有人愿意运作一个失败的开源项目,所以要时刻关注它的发展状态,以便于进行及时的调整。所以首要的就是跟踪项目的进展,这样可以确保贵司所投资的开源项目(无论是内部还是外部)保持健康发展,如社区的回应、公司的形象、以及是否有助于满足开源项目的其它更为广泛的目标。经常性的、有规律的跟踪也有助于校准开源项目的基准,有异常情况可以及时获得警告,以便在项目偏离既定方向、违反法律合规要求的时候,甚至在必要的时候,可以优雅的关闭项目。

事无巨细(而且也是战略性的)的衡量同样可以在为高层的管理者做报告时,提供良好的素材,定期报告有助于确保项目与自身目标和整体业务战略保持一致,并能够帮助项目经理获得行政领导对项目的内部支持(特别是在项目达到甚至超过目标的时候!)

例如,Facebook的开源项目办公室会定期在内部公布其开源项目的月度状况,并向管理层发送执行报告。

“作报告这件事对于提高知名度是个不错的方法。尽管说Facebook是对开源有着蛮重视的程度的(作为一家公司来讲),换个思路,即使这样,在公司的内部去推广项目,并展现出该有的价值,总归是件值得的事情。”

– Christine Abernathy, Facebook 开源开发者布道师

定期公开项目结果还有助于提高潜在的合作伙伴、用户和开发人员对于贵组织所开展的开源活动有一个充分的认识。

在开源社区中获取关于项目结果的评价——好的、坏的和难听的——可增强项目的透明度、问责制和可信性。

FacebookGoogle 在开源项目展示有着非常良好的标杆效果。

03

如何设置目标

接下来,我们就为自己的开源项目设置一个远大的目标,除此之外,还要考虑下如何实现这个目标,而且要有具体的时间规划。首先,在开始的时候就建立绩效基准是百利而无一害的,使用恰当的工具来收集数据,而且要确保数据的来源是纯粹和干净的,当然格式上是你(以及你的上司)可以理解的。很多的公司都为他们的开源项目创建了各种指标的可视化展示,以便能够统一的追踪所有数据并提供项目快照,从而达到快速评估进程的目的。(更多内容可以参考《开源项目管理工具指南》)

接下来,开源项目办公室的经理、相关者就要坐下来一起商量(以Facebook为例,这些相关的人包括工程领导、项目维护者等),然后一起决定在往后的3~6个月(小步快跑、实际见效)要做的事情。在这个周期结束后,就要回顾所完成的实际情况,并根据此完成情况来调整下一阶段的目标和策略。

“我倾向于根据社区的痛点来寻找衡量指标,并尝试改良这些指标以提升社区的质量。”

– Sarah Novotny, Kubernetes 社区经理,来自 Google

除了绩效基准指标之外,在为项目设定目标时,还需要考虑以下几点:

  • 战略调整: 所设定的目标是否与核心业务战略、产品目标以及其他内部业务目标保持一致?
  • 控制级别: 项目经理是否可以直接控制结果?或是项目经理、工程人员、法律人员或其他职能人员共同控制?设定控制范围内可实现的目标。
  • 项目的差异化: 不同的项目应该根据自己的实际情况而设定相应的目标,这要具体的取决于项目目的、社区组成、技术栈等等因素。举例来说,Facebook 一度意识到 JavaScript 的项目会经常性的频繁的创建分支,在多次的重复之后,事后获得的教训就是这些分支的指标毫无意义,对于衡量项目的健康度没有顶点帮助。
  • 数量和质量: 并非所有目标都应与数字挂钩。改进项目流程的质量是非常重要的,甚至要远远比数量更为重要。因为有时候会发现,仅仅是达到了所规定的数字目标,并不就意味着项目质量没有问题。也有的时候,一个小的项目,数量上并没有什么让人惹眼的增长,但是因为有过硬的质量而充满光明的前途。

“你拥有半打数量的贡献者,以及一打不是维护者的活跃人士,但是拥有健康的讨论、PR也会得到及时的处理、重要的功能特性有着完整而清晰的表达。这本身就表示这是一个正在成长的健康的社区,但是,它可能并没有值得炫耀的star数量和fork的次数,但是那样又如何,这一切并不能阻止这是一个有着良好商机的优秀项目。所以我更加的倾向于考虑社区如何与其自身互动、如何发展和指导新的领导者、以及如何解决到现有的难题。”

– Sarah Novotny, Kubernetes 社区经理,来自 Google

04

目标实例

一旦谈到开源项目成功的量化问题,那么人们都会将注意力聚焦在项目的指标上,诸如:贡献者的数量、代码行数、项目数量等等。本章节的内容就是事无巨细的来评估项目的健康度的。但是,这里要提醒大家的是,数字并不能代表一切,尽管它很重要,除此之外还有很多其他的重要方法可以用来评估项目的成功与否的。不过,我们这里只谈能够实际量化的。

“我认为使用指标作为一种报告趋势的方法是好的。但把指标作为衡量成功的唯一方式将会给您带来麻烦。”

–Joe Beda , 曾是 Google 发起 Kubernetes 项目的工程师之一,Heptio 的 CTO 兼联合创始人

Beda 所作出的解释是,Kubernetes 是 GitHub 上发展速度最快的开源项目之一,在过去三年里吸引了来自1,181家公司的2,760位开发人员,有超过 80,000 次提交。但项目伊始就以技术和技术的使用作为衡量成功的标准,并非是依靠“所谓的开源量化指标”。

以下我们要介绍的是作为开源项目办公室常见的目标,以及项目经理为了追踪项目的整体进程所采取的办法。其中有一些目标本身无法评估,但这些目标与流程改进、效率提升以及质量改善息息相关。其他目标可以通过调查或其他评估方法来衡量,如定期、积极地征求口头或书面的反馈意见。(请积极的与你的团队进行有效沟通!)

目标1:确保高效且合法合规的开源代码采用

这部分通常是一个企业开始参与开源的第一步,当他们意识到使用大量的开源软件,无论是其基础设施,还是在他们的产品和服务中,又或者是二者都存在。那么开源项目办公室就会帮助整个公司制定中心化的策略,以及围绕使用开源、追踪使用的具体情况的决策制定,并确保组织不会违反其在各种开源许可下的法律义务。开源项目办公室还可以跟踪它们如何帮助开发人员解决他们可能遇到的任何法律问题。

衡量这个首要目标的一些最常见方法是致力于确保政策和进程按计划的方式运行,同时确保组织活动保持合法合规:

  • 目前项目采用的开源代码是多少?
  • 这些所采用的代码是否被很好的跟踪?
  • 是否确保使用开源代码的政策已经准确的传递到公司基层,最重要的开发人员是有了解的
  • 引入代码的流程和工具清楚明确,且开发人员遵行这些流程与工具。
  • 哪些产品和服务使用了第三方代码?
  • 您有多少合规操作?这些问题的解决速度有多快? (贵司是否有合规的项目流程?请参阅我们来自《开源合规项目》的法律资源以获取有关此主题的更多信息。

目标 2: 提高开发者的生产力

一旦开始跟踪和管理开源项目的状况,首要确保的事情就是能够让开发者以最轻松的形式参与到开源项目中来。假如说工程师们想要为项目提交一个漏洞修复或是增加一个新的特性,整个过程就像是剥洋葱般的繁琐,那么这就是在彼此浪费生命,可能更糟糕的是这个新提交的功能恰是贵司所需要的。

开发者通过直接为上游提交贡献,可以节省大量的时间,如果是选择自行切出分支去维护的话,时间稍久就会产生大量的技术债务。

“我们是经常将自家的团队比作是为那些正在参与马拉松长跑比赛的运动员提供补给,尽管我们可能本身不是参赛者。我们会鼓励开发人员按照我们既定的方向前进,因为我们知道,从长远的角度来看,对于实现目标是有益处的。我们尽最大可能的为他们提供服务,而不是去为他们增加障碍。” – Gil Yehuda, 开源高级总监,来自 Oath (Yahoo + AOL)

与此目标相关的指标,致力于让开发者们对开源项目的贡献能够以最轻松和舒适的方式进行,当然同时也要增加一些贵司向上游贡献的代码总量。当消除了那些让开发效率低下的障碍时,进而使审批流程清晰快捷,那么我们就可以期待更多的贡献和效率。

以下所列的可跟踪的清单供参考:

  • 作为战略性团队识别外部项目的提交数量
  • 做出贡献的开发者数量。如果可以的话,收集到他们是谁?以及为那个具体的项目做了贡献?
  • 以公司雇员身份(在职和实习)出现的项目维护者数量
  • 项目贡献健康度
  • 贵司在开源社区中的声望分析
  • 开发人员是否了解贡献政策?(贡献政策已经制定?)
  • 开发者是否遵行贡献流程?(即开发者必须签署 CLA 之类。)
  • 是否有开发者寻求帮助,社区现有成员是否能够及时的提供帮助?
  • 软件版本发布之间的时间差 —— 是延期还是提前发布?
  • 向上游做贡献的工程成本和维护分支代码的工程成本之间的差异对比 (开源之道注:这条太关键了,可以有效的防止搭便车者。)

目标 3: 创建开源项目,并使其野蛮成长

此目标对于很多大型、倡导工程师文化的公司来说是他们开源项目办公室的首要目标,比如Facebook,Google、微软、Twitter、等等不一而足。他们均已创建了数以百计(甚至上千)个开源项目,目标就是解决较难的技术问题。目的就是吸引外部的用户和贡献者,使得能够为项目带来全新的想法、进而更快的推动技术的发展。(这个观点来自加州大学伯克利分校的 Henry Chesbrough 教授,可以在其著名的开放式创新一书中找到详细诠释。)

“ 你究竟是如何让这个世界上最聪明的人在贵司上班的? 道理很简单,将你的项目开源,他们就会来做贡献的!”

– Chris Aniszczyk, 云原生计算基金会 COO (原Twitter的开源主管)

正如上面提到,这个目标是收到各位重视的,所以跟踪它的数据点来衡量项目健康度是蛮多的,以下是一些建议性的参考:

  • 是否有创建新项目时明确的政策,以及开发人员是否了解这些政策?
  • 是否有创建新项目时,有可以使用的清晰且简捷的流程,以及开发人员是否遵行这些流程?
  • 外部人员为贵司的项目做贡献时有多便捷?
  • 项目维护人员是愿意接纳他人,并乐意提供帮助的
  • 项目得到很好的维护和支持
  • 代码拥有良好的文档
  • 如果参与贡献,有着清晰明了的说明

其他定量指标,如新贡献者的数量、创建问题的数量、解决问题所需时间等(请参阅下一章节),以下列出的是较直观的:

  • 项目所获得的外部贡献比重,以及社区的多样性
  • 贵司项目的受欢迎程度:GitHub关注数、社交媒体粉丝数等等
  • 采用贵项目的成型产品或部署了的用户数量
  • 贵司所发起项目的数量、范围、质量等,比如说,移动端、数字基础设施等等相关的项目描述
  • 项目以及其相关产品的表现
  • 发布的时间间隔

就Facebook的开源来说,我们大概有一半的时间是花在了决定开展更多的旗舰级项目上来着,并制定了一个较严格的流程。但是无法为大家列举出具体的数据来,它只是意味着每个开源项目的创建都要经历这个review的过程。”

– Christine Abernathy, Facebook.

目标 4: 雇佣和留住开发者

作为一家企业来讲,不论是参与到已有的开源项目中,还是发起自身的开源的项目,均是吸引开发者的绝佳路径,而且从开源社区吸引过来的开发者可以快速的上手,只需要很小的成本就可以让他们成长。这些开发者们已经参与到贵司的项目中,那么一旦贵司招聘了他们,他们早已对相应项目的流程、工具、以及相应的技术了然于胸,(具体如何招聘开源开发者,请参阅本指南另外专门的篇幅。)

但是作为开源项目办公室的一名经理,你可能没有机会担当直接招聘开发者的角色,而且还有一种情况就是贵司参与开源的影响力是否能招聘到相应的人才也不是太明朗。Facebook 就遇到了这样的情况,Facebook 为了解决这样尴尬的局面,为了促使项目工作与招聘之间建立更为直接的联系,于是做了一个询问新员工三个基本问题的调查:

  • 你是否对于公司的开源项目很在意?
  • 在意的程度是如何影响你加入公司的决定的?
  • 在开源方面的经验是否适用于现在所从事的工作?

Facebook 通过调查来”把脉“ 开源文化的健康程度,它同时说明了人们如何看待我们开源项目的整体效应,尤其是有具体的数字衡量时,情况会明朗很多。”

– Christine Abernathy,Facebook 开源开发者布道师。

这里还有一些招聘开发者时的一些建议:

  • 有哪些开源项目是公司员工们使用而且参与贡献的
  • 新进的员工是如何获得公司的信息的
  • 通过开源项目吸引来的开发者数量
  • 已经招聘到了多少位项目维护者(或者是正在培养中)
  • 新员工上手需要多长时间
  • 开源开发人员如何在他们的职业生涯中大显身手
  • 开发者的贡献被作为工作绩效的一部分来评估
  • 开发者的贡献是被公司认可并奖励的
  • 开发者同样在参与共享的过程中也会获得其他社区成员的帮助和支持

目标 5:推崇开源文化

开源项目该如何做才能培养出优秀的工程人才,在很大程度上取决于公司内部开源文化和开源实践的培育。事实已经证明,开源的组织是开发人员乐意工作和创新的绝佳形式,另外,作为开源项目办公室的负责人,一部分工作还要担当起开源文化的宣传者,同时还要负责监管开源协作的政策和具体实践。

对于衡量项目的有效性来讲,在组织内部如何跟踪开源文化的进展是非常重要的。以下是常见的衡量采用开源文化的方法:

  • 管理层以及包括工程、营销和公共关系等所有部门中的个人贡献者对于开源战略与开源项目的理解和支持
  • 在开源社区的品牌与知名度 - 它们如何看待贵组织
  • 参与度 - 以积极的正面的方式参与到开源社区
  • 培训和导师制 —— 要和开发者战斗在一线,改进他们的开源贡献意识以及项目本身,积极的寻找机会去做出贡献,而且要学习社区的工具和流程,一定要确保贡献者们能够获得同行和管理者的积极支持。
  • 采用的常见的工具集合
  • 代码的质量要过关,能够获得社区内/外部的接受
  • 要去代表整个项目去积极的进行宣传 - 如参加一些研讨会,最好能够申请到演讲机会,要去撰写技术文章、教程等等。
  • 赞助一些开源组织或线下的活动,如基金会、开源组织、或者是黑客松会议等。

目标 6: 使开源社区利益与产品利益保持一致

在开源项目中,社区布道虽是一个新进的岗位,但是正在变得日益流行。那么作为布道师,就会经常扮演沟通联络项目开发者和社区项目的使用者之间协调的角色 —— 不仅代表来自外部用户构建开源代码的声音,还要承担起将信息反馈给贵司产品管理团队的责任。

这是非常重要的角色,它需要确保贵司的产品和服务能够从开源社区中获益,因此,开源项目要和贵司更为广泛的业务战略和目标保持一致。这里给出几条衡量你的布道效果的指标:

  • 有多少位参与贡献的成员是来自公司的外部?
  • 有多少位来自公司外部的贡献者是全职做的?
  • 有多少来自外部贡献的代码已经合并到贵司的产品中了?
  • 从开源的贡献者中雇佣了几位?

鸣谢

参与本指南的作者有:

  • Christine Abernathy , Facebook 开源开发者布道师。
  • Chris Aniszczyk , 云原生计算基金会 COO (原 Twitter 的开源主管)
  • Joe Beda , 曾是 Google 发起 Kubernetes 项目的工程师之一, Heptio 的 CTO 兼联合创始人
  • Sarah Novotny , Kubernetes 社区经理,来自 Google
  • Gil Yehuda ,开源高级总监,来自 Oath ( Yahoo + AOL )

这些资源是与 TODO (公开对话,开放式开发)小组 – Linux 基金会的专业开源程序网络小组合作创建的。 特别感谢那些贡献自己的时间和知识来制作这些综合指南的开源项目经理。 参与的公司包括 Autodesk,Comcast,Dropbox,Facebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung 。 要了解更多信息,请访问 todogroup.org 。我们邀请您在 GitHub 上下载、传播,如果可以请积极的参与这些指南。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档