前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TODO指南:在开源社区建立领导力

TODO指南:在开源社区建立领导力

作者头像
CNCF
发布2019-12-05 13:37:08
3820
发布2019-12-05 13:37:08
举报
文章被收录于专栏:CNCFCNCF

这些开源指南是由TODO小组与Linux基金会和更大的开源社区合作开发的。他们从从事开放源码开发的领先公司收集最佳实践,旨在帮助你的组织成功地实现和运行开源计划办公室。我们期望这些指南通过社区贡献而发展的活文档。 对于针对个人贡献者定制的指南,我们推荐GitHub的社区指南(https://opensource.guide/zh-cn/)。

集成到开源社区需要时间和精力,并且需要一种新的产品开发方法。传统的专有开发需要保密和管理层次结构,开源开发需要开放性和价值共识。代码贡献,而不是标题或职位,决定了开源项目的影响力和技术方向。

开源项目是在不同的地理位置分散的社区中开发的,这些社区有自己的规则、约定、工具和流程。简而言之,每个社区都有自己独特的文化,建立信任,合作方式和文化理解需要时间才能在开源中有效。

本指南解释了组织如何在他们所涉及的商业依赖的开源项目中建立领导力和影响力。了解项目中的领导力文化和角色,决策的制定方式,组织如何建立领导力,以及成为开源社区的优秀领导者的技巧。

目录

  • 为什么要在开源项目中建立领导力
  • 开源的领导文化
  • 企业 vs. 开源的领导
  • 治理概述
  • 文化概述
  • 协作项目中的领导角色
  • 领导角色矩阵
  • 如何成为领导者
  • 结语
  • 鸣谢

为什么要在开源项目中建立领导力

虽然开源文化是协作的,但上游的贡献只是塑造开源项目进展的第一步。如果项目对贵公司自己的产品至关重要,那么在指导或影响项目方向方面发挥积极作用也很重要。

虽然开源项目已经反复证明了合作的价值,甚至 - 尤其是 - 包括竞争对手,但在项目方向上没有发言权,很快就会证明是竞争劣势。这就是为什么在开源项目中建立和保持领导力是企业策略和目标的关键。然而,它并不像敲桌子那么容易,能够以现金为基础的影响力。

开源的领导文化

公司通常首先假设开源社区的领导力与领导者在公司中的工作方式相同。它不是。

“公司经常经历一个思考阶段'哦,好吧,我们是巨大的。为什么我们不能把拳头放在桌面上,只是让社区做我们想做的事情?”Guy Martin,Autodesk Open@ADSK计划主任解释道。 “他们很快意识到这种策略是行不通的。他们逐渐明白,获得领导力的唯一途径是在社区内获得这一角色。而这样做的唯一方法就是获得信誉并做出贡献。”

企业 vs. 开源的领导

虽然在开源项目中获得领导对于公司在商业领域的成功至关重要,但采用这种全新的产品开发方法往往是违反直觉的,有时在开始时很尴尬。

传统的专有开发需要保密和管理层。相比之下,头衔和职位在开源开发意义不大,而是强调开放和共识。

代码贡献决定了开源项目的影响力和技术方向。这意味着没有对代码贡献的捏造;它们必须是实质性的,并以某种方式真正推进项目。

刚开始,对上游贡献和公开合作就像是赠送。但这种感觉不是基于开源的现实;相反,这一阵阵的忧虑是在思想上和行动上需要做出重大改变,对创新是非常必要。

开源领导思想包括思考:

  • 影响,而不是控制
  • 透明作为众包解决方案的手段,而不是曝光
  • 领导,而不是放牧

成功地从专有的转变为开源的思维模式和文化需要时间和精力,有时需要定期提醒这样做的好处。Ibrahim Haddad,三星电子研发副总裁兼开源负责人建立了这个图表,以便于参考。

治理概述

开源社区中的治理指南往往很少,但它们仍然严格执行。行为准则或社区准则是社区独有的,但通常涉及可接受和预期的行为以及处理不可接受的行为或其他事件的程序。治理策略详细说明了开源项目的策略、结构和路线图的管理。维护策略通常涉及其他项目决策,例如软件更新。

但是,项目和社区层面及其周围的治理并不代表整个治理政策和问题。这些也存在于开源软件被商业利益集团或其他组织消费、贡献、重新分发和/或生产的地方。因此,开源治理必然是更广泛的IT治理工作的一部分。

公司往往会遇到类似的问题,例如如何使用开源的多个流程,在社区中贡献上游的不一致方式,以及内部如何创建开源项目的差异。制定标准化的治理组合是驯服混乱的关键。

“我们的目标是为贡献上游提供一个单一的流程,而作为一名工程师,我希望它能够简化,”Martin说。 “我不想要一个为期十周的流程,其中包含500页文档,用于修复五行错误,因此我使用合法工作来简化工作流程,以便工程师可以在合理的时间内完成工作。然后我们就公司代码创建开源项目做了同样的事情。”

每个公司最好在自己的开源治理政策和流程中制定详细信息,以便最适合公司实际运作的方式;实际上反映了如何在社区层面最好地完成治理。但请注意,您可能无法为公司中的所有开源活动重复单个流程。

一致的治理计划可防止出现巨大的版本偏差,以及开源许可和安全问题。 “开源使用的一致治理模式有助于确保合规性,以便在我们发货时,我们知道我们已经获得了正确的许可证合规性。”

文化概述

虽然迫切需要将组织的内部文化转变为开源的心态,但必须在不忽视或断开公司墙外的开源社区的情况下实现这一目标。

“为了发展对开源项目的影响,你必须让一群你不认识的人,他们在不同的公司工作,并且可能有不同的目标与你达成一致,”Gil Yehuda,Oath(Yahoo + AOL)开源高级主管解释道。

这说起来容易做起来难,因为争议和挫折很常见,决议可以根据社区的共识采取多种方向之一。

“在一个开源社区,你有一些人为不同的公司工作,这些公司可能有很多共同目的和共同的结果以及一些争用和交叉目的,”Yehuda解释道。

例如,可能有一组开发人员想要新功能,因为他们需要它来使某些东西工作,而另一组则不想要新功能,因为他们需要稳定性。

“也许新功能会影响稳定性或可扩展性。耶胡达解释说,这将是一场战斗,或者至少会有一些紧张。

考虑到没有人负责做出决定,解决问题以使项目在一个方向或另一个方向上进行是一个不小的壮举。相反,这是一个共同的决定。

“如果你在项目中有更多的影响力,那么可以帮助社区达到你认为有利的解决方案的事情之一,”Yehuda说。“如果你有领导能力并且你是社区中值得信赖的成员,把社区的利益放在心上,那么他们即使在决定可能对他们产生短暂的负面影响时也会支持你。”

但是,建立这种领导力并维护它既是公司的使命,也是个人开发人员的目标。

Oath的方法是指示其开发人员在看到可能引起争议的情况时参与公司协助。

“我们有积极的咨询,我们有关于情况的内部对话以及如何最好地处理它们,我们让开发人员彼此分享有关情况以及他们如何解决问题的轶事,”Yehuda说。

同样重要的是要理解领导力取决于人,而不是公司。因此,即使个体开发者得到他或她的雇主的支持和帮助,如果开发者选择离开,该雇主也有可能失去影响力。

“如果你有一个对你的产品非常关键的开源项目,并且你只有一个人从你的公司做出上游贡献,那么你有一个单点故障,”Martin解释道。 “你必须制定一个继任计划,它需要包括你公司的几个人。”

这意味着贵公司的多人将进行上游贡献。对这个想法的一个常见的第一反应是害怕在开源项目上占用太多的人力资源,其他公司将从中受益。但如果你安排好时间,情况并非如此。

“当使用较少Joe Smith的时间用于上游贡献时,工程管理更加可口,因为这个负担与其他三到四个开发人员共享,”Martin说。

通过平衡工作负载,您还可以降低公司在关键开发人员离职时失去项目影响的风险。对于那些积极寻求提高他们在社区建立领导地位的开发人员来说,这也是一个有吸引力的计划,因为这最终会提升他们的职业生涯和赚取能力。更多开发人员在此计划中发挥主导作用。

此外,公司可以通过内部innersourcing采用开源实践和原则,以完成文化向开源的转变,提高创新率和成功率,并进一步与开源社区建立联系,从而帮助建立领导力并吸引开发人员。

简而言之,如果目标是建立和保持领导力,从而对关键项目进行一定程度的控制,那么文化在其所有细微差别以及多个层面都是必不可少的。

通过这一切,记住要注意百分之一的规则。“90%的人都是骑行并且被动地参与 - 这是用户社区;9%的人积极参与,提交错误,公开回答问题 - 我们称之为‘贡献者’;1%有助于指导或控制项目,分配错误,确定方向 - 这些是‘维护者’,或者更简单地说是领导者,”Jeff Osier-Mixon,英特尔/ Yocto项目。

每个项目都是独特的;以项目为基础适应项目。

协作项目中的领导角色

虽然角色看起来与公司角色和结构类似,但每个项目都是不同的,并由一组特定的社区准则和治理策略进行结构化和管理。请务必阅读文档,加入IRC进行实时,私人聊天,加入邮件列表等,以获取有关如何定义角色以及如何构建和管理项目的指导。

同时,以下内容将使您对一些常见类型的领导角色有一个大致的了解。

技术领导

  • 提交者/维护者
  • TAB/TSC成员
  • TSC主席/首席架构师
  • 文档/技术作家 - “这是一个特例维护者”

治理领导

  • 执行董事
  • 委员会/小组委员会
  • 董事会成员/成员代表

运营领导

  • 项目经理
  • 社区管理者和倡导者

领导角色矩阵

请记住,虽然这些角色类似于历史管理层次结构中的传统角色,但它们并不相同。人们不能简单地将价值,过程和原则从旧的封闭模型转换到新的开源模型。在许多方面,它们是直接的对立面,或者可能是镜像。无论如何,它们在每一个重要方面都是不同的。选择一个是拒绝另一个。

开源领域的领导者对透明度感到舒适,甚至提高,并必须在项目能够取得进展之前达成共识。对于那些喜欢坚持传统业务结构的人来说,流程和领导风格可能令人抓狂。

为了应对在这场彻底的文化变革中经常遇到的挫折,“许多公司将采取阻力最小的道路,这是:哦,这是伟大的。我将从这个开始作为基础,分叉并在内部做我自己的事情,”Martin说。

“问题是,从长远来看,这是不可持续和扩展的,因为你越远离社区的其他人,当你想从社区中获得下一次重大升级时,它就会越难,”他说。

简单地说,开源是一项社区工作,你所做的任何事情都会让你的工作远离社区,这最终将对你的公司产生不利影响。

如何成为领导者

成为协作环境中的领导者需要相当多的人员技能,并且不愿意将任何工作视为低于您的级别。

“这很简单,只需注意某些事情需要完成,并做到这一点 - 提交一个错误,回答一个问题,提出要坐在会议的展位上。” - Jeff Osier-Mixon,英特尔开源社区经理,在2017年开源领导峰会上发言。

当然,它需要大量的技能在开源和无畏大胆使用它们 - 但只有在你研究了土地之后,才能理解群体动态,并自己完成一些肮脏的工作。

换句话说,成为领导者始于赢得团队的尊重。你不能要求它,你必须获得它。

在哪里加入以证明您的能力并获得领导力

项目记录了如何加入委员会,成为维护者,以及如何在几乎任何级别加入。查看这些文档以找到适合该组的地方。你可以从任何你喜欢的地方开始,就不要插队。

“一个人能够发挥影响力的一件事就是倾听,理解,真正尝试在进入之前阅读情况。如果你能养成这种习惯,那么我认为人们会尊重你的贡献并发现你更有影响力,”Yehuda说。

开源会议还提供了一种很好的方式来满足社区中的其他开发人员和领导者。除了网络,在这些活动中进行演示是一种值得注意的方式,可以分享您和您公司的成就以及对开源项目的贡献。

Yehuda说,他的公司Oath帮助开发人员磨练他们的演讲技巧并完善特定演示文稿,以便他们在舞台上取得成功。实践变得完美,因此开发人员制作的演示文稿越多,他们就越能做到这一点 - 他们的面孔,名称和工作对开源社区的认识就越明显。

然而,贡献上游将在社区中建立您的凭据和声誉方面发挥最大作用。动手并修复看到的错误,并做出有助于整个社区的贡献,而不仅仅是您自己的项目。

加入 vs. 创建项目

加入一个项目似乎是一个通向领导职位的缓慢之路。实际上,确实需要时间。但是,它也具有优势,包括通过社区已经完成的工作获得的直接收益,而无需开始自己的项目。

开始自己的项目以建立领导力,不会给你带来太多。

正如Martin所说的那样,“如果你是沙盒中唯一的一群孩子,都来自同一家公司,你真的是领导者,还是你们只是这个项目的唯一人?”

如果你确实开始了一个项目,那么除了建立领导之外的其他原因是这样做的,因为坦白说没有其他人可以加入。如果您的项目不是很好,或者与已建立的项目竞争,那就更是如此。

“开始一个项目需要做很多工作。请不要启动它如果您的代码可以更好地贡献到另一个项目,您可以根据代码贡献成为该项目的领导者,“Martin建议道。

技术贡献

捐赠代码是开源社区的重要业务。建设项目正是联合演习的重点。有了很多人的手,工作就更轻了,通过许多贡献降低了风险,提高了质量。无论如何,这些都是目标。

最重要的规则是确保您的贡献对其他人有用,而不仅仅是自我服务。但有用性并不仅限于重大进步;小错误修复和其他调整也很受欢迎。关键是要使您的贡献普遍有用,无论大小。

Ibrahim Haddad还建议贡献者遵循正确的编码风格,在项目的提交过程中工作,提供文档和解释,听取反馈,并耐心等待接受。

招聘人才

开源开发人员供不应求已经不是什么秘密了。考虑到开源项目的采用率处于历史最高水平并且没有放缓的迹象,在可预见的未来情况可能仍然如此。这不仅意味着很难找到熟练的开发人员来招聘,而且很难留住他们。

2016年Cloud Foundry报告发现,仅在美国就有“25万个软件开发人员就业机会,以及需要技术技能的50万个工作岗位空缺。”此外,分析师预测,开发人员工作空缺数量将“在未来十年内达到一百万”。

开源开发者的需求则更甚。

您仍然可以找到谁是领导者,谁是开源社区的常规和技术贡献者,并尝试直接雇用他们。或者,您可以要求他们推荐他们自己想要合作的开发人员。

“如果你计划聘请维护人员,或雇用一个强有力的贡献者,请记住,这些人的需求量很大,他们是地球上最灵活的人。意思是,他们可以从公司到公司,并且仍然在同一个项目上工作。唯一改变的是签署薪水的公司名称,”Martin说。

您可以在“TODO指南:招募开源开发者”找到有关雇用开源开发人员的其他指导。

构建人才(最好的方法)

幸运的是,开源是如此热烈的需求,开发人员积极寻求机会开发或磨练他们的开源能力。 Martin说,到目前为止他接受采访的每个开发人员都会问他公司将如何帮助他建立自己的开源品牌。帮助开发人员在开源社区中发挥领导作用是一项重要的优势,并且在招聘方面非常有用。

因此,提高自己公司在开源工作中的知名度也可以帮助招募开发人员。有些公司甚至提供开源培训以增加吸引力。在会议上展示公司的开源项目并在社区中贡献代码是提高公司知名度的最佳方式。要求您的开发人员与其他开发人员联网并邀请他们加入也很有效。

吸引开发人员的另一个关键方法是提供学徒培训。开发人员喜欢处理具有大量声誉建设挑战的重大项目。提供学徒和辅导计划往往是一次成功的吸引力,也是利用已有人才的好方法。

最重要的是,获得社区的信任,以便您的公司对开源开发人员和寻求通过与值得信赖的开源领导者合作来推进其职业发展的开发人员具有吸引力。

“与其他任何人一样,商业动机的开发人员通过他们贡献的质量和数量在项目中获得影响。” - 开源指南,GitHub,领导和治理,企业员工。

策略性贡献

策略贡献对建立领导力至关重要。它们倾向于解决整个生态系统中共享的大问题,或提供推动项目超越社区设定目标线的关键进步。

但是,您不能只是发布代码而忘记它。在提供文档,扩展生态系统,合作以进一步推进此代码或工具集等方面还有很多工作要做。保持参与并保持可见和可靠是关键。

非技术的贡献和支持

除了技术贡献、策略和其他方面,有贡献和支持社区的其他方式,从而进一步建立领导力。

这些包括为开发人员教育做出贡献并提供支持,并提供指导。为技术方面提供支持是建立领导力的另一种成功方式。

关键是环顾四周,看看社区除了技术贡献之外还需要什么,然后再加强其中一些贡献。

结语

总而言之,成为一名优秀的领导者并赢得影响力需要时间和努力。

成为领导者的具体方法包括:

  • 适应OSS项目文化、实践和工具。努力适应并遵守规则和流程。记住它不是关于你;是关于这个项目。
  • 做繁重的工作。项目需要工作,而不是全明星。此外,如果你不能做这项工作,你就无法获得领导权。快速向您展示可以并将完成所需的工作。
  • 宽宏大量。贡献有益于整个项目的代码。
  • 建立共识。真正的领导者可以建立共识,努力在成为领导者之前帮助达成共识,以表明你不是一个暴君。
  • 接受领导的变化。认识并接受领导角色移动的是人,不是雇佣了他们的公司。

鸣谢

贡献者:

  • Guy Martin,Autodesk
  • Gil Yehuda,Oath

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

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

本文分享自 CNCF 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档