如何利用开源,帮助软件开发团队成长

作者 | Al Sene

译者 | 明知山

策划 | 丁晓昀

近年来,开源软件的使用和开源贡献程度在显著增加,并继续成为开发者个人和专业项目的来源。对许多新进入软件开发领域的人来说,为开源项目做出贡献已经成为一种仪式。开源社区在帮助初级开发者解决技术问题的同时,也为他们提供了很好的学习和交流机会。

在许多方面,为开源项目做贡献也变得比以往任何时候都容易。软件协作和开发平台(如 GitHub)的发展使得参与开源贡献的机会变得更加大众化,而行业活动(如 Hacktoberfest)或社区论坛也成为开发者寻找他们第一个贡献项目的地方。

开源软件对科技行业和开发者来说至关重要,这一点毋庸置疑。然而,开源社区仍然面临着各种各样的挑战。围绕开源建立的社区和开源所提供的好处是非常有影响力的——技术领导者会鼓励更多的人参与其中,包括他们的团队和整个行业。

开源参与度

DigitalOcean 最近发布的一项关于开源社区状态的报告表明,大约 50% 的被调查开发者表示他们在过去的一年中参与了开源。在参与的开发者当中,几乎所有人(93%)表示,自疫情开始以来,他们的参与程度要么提高了,要么保持不变。这表明,尽管过去几年疫情对开发者的工作与生活带来了影响,但致力于开源的开发者已经找到了将这种实践融入日常和“新常态”的方法。

参与开源贡献所面临的挑战

然而,即使是最坚定的开发者也承认,时间约束是参与开源项目的最大障碍之一。DigitalOcean 的研究发现,大多数参与开源项目的开发者每周会花 1 到 5 个小时在开源项目上,并将“缺乏资源 / 时间”和“技术债务”列为他们目前面临的两大挑战。

除了时间约束之外,开源世界有时可能不欢迎那些努力参与的人。Carnegie Mellon 对开源动态的一项研究表明,开源项目贡献者之间的交流可能会演变为“上下文相关的、微妙的和消极的”评论,或者贡献者可能会发现他们面对的是僵化而死板的贡献策略。当项目面临严重的文档负债时,开源项目贡献者之间的交流也会迅速中断。当(大多数)开源项目受到时间和资源的约束时,首先受影响的是文档化程度。如果没有完整的文档,新人将面临非常陡峭的学习曲线,这导致他们很难参与贡献,除非他们已经非常熟悉项目。

与技术行业的其他领域一样,软件项目也缺乏多样性和包容性。DigitalOcean 的研究发现,虽然大多数开发者认为开源的包容性在过去几年中有所提升,但少数群体的成员对这种看法存在异议——有 26% 的少数群体成员不认同开源的包容性,而非少数群体的这一比例只有 12%。管理开源项目的贡献者已经在寻找各种各样的解决方案,试图减轻有害行为,例如通过禁令和积极的审核来强制执行行为准则,但即使是这些解决方案也严重依赖于审核人员在这些项目上的时间投入。

在目前的状态下,开源贡献似乎介于“爱好”和“志愿者工作”之间。为开源项目腾出时间的开发者正在做着重要和创新的工作,但这些工作往往没有得到各方的承认,尤其是那些从这些工作成果中受益的公司。开源软件的诞生方式(即软件是如何由大多数没有或缺乏资源的人在网上构建、开发和更新的)与开源技术在当今公司发展中所扮演的角色相去甚远。

开源为我们带来了什么

技术领导者和开发者一直承认开源软件对他们的公司产出了巨大影响。64% 的开发者表示,他们公司 50% 或更多的项目使用了开源软件,这一比例在初创公司和小型企业中甚至更高。35% 的初创公司和中小企业在其 50% 或更多的项目中使用了开源代码,而大型企业的这一比例为 28%。

当大公司公开谈论开源时,通常会从安全性的角度出发。亚马逊、谷歌和微软等公司已经加入了各种基金会和组织,如开源安全基金会(Open Source Security Foundation,OpenSSF),这个基金会专注于改善开源开发和实现中的网络安全实践,并确保开源的“供应链”安全。这些团体和组织对于开源软件的长期成功和可持续发展来说非常重要,但并没有太多地关注如何解决开发者在维护开源项目中所面临的困难。当开发者被问及安全方面的考虑时,大多数人(43%)相信雇佣专门的安全专家来监督项目或者增加对贡献者本身的报酬和培训有助于提高安全性。

在较小的范围内,各种水平的开发者借助开源代码库来解决问题、扩展他们的技能或处理新的场景——这些带来了个人和专业方面的好处。35% 的开源开发者表示,他们通过开源贡献提升了自己的技能,19% 的人表示他们与更多人建立了联系,还有 11% 的人甚至因此找到了工作机会。强大的开源社区也是让开发者继续做出贡献的关键——32% 的开发者表示,开源贡献让他们感觉到“意义或作为社区一份子的归属感”,20% 的人甚至扮演了导师的角色,帮助其他社区成员发展他们的技能。

尽管大部分都是无偿的,但这些志愿者工作、指导和社区在保持开源活跃度和参与度方面发挥了关键作用,即使开源开发者面临时间和技术债务方面的挑战。GitHub 2021 年度 Octoverse 状态报告显示,开源社区的指导承诺使开源项目的生产力提高了 46%。这种效应在工作场合中也能看到,“指导几乎让形成强大的文化具有成倍的可能性”。在合适的环境下,强大的开发者社区会让开源变得更好,强大的开源社区也会让开发者变得更好。

开源的未来

当关于公司和组织如何回馈开源社区的问题出现时,支付报酬成了一个首当其冲的话题。开源贡献的报酬是一个备受争议的话题。一方面,大多数开发者(在 DigitalOcean 的报告中有 53% 的开发者)似乎都同意或非常同意个人应该为从他们的开源贡献中获得报酬,而另一方面,也有开发者担心开源盈利或融资模型可能会导致开发生态系统变得更加封闭,而不是更加开放。

企业可能不愿意为开源软件付费,或者为开源贡献付费,但一些行业领袖已经在探索其他替代方案,作为一种与社区更深入合作并“回馈”社区的方式。例如,去年思科聘请了一个开源主管,作为开源计划、思科客户和不同商业团体之间的“结缔组织”,希望为那些“隐形工作”的开发者和维护者提供支持。然而,这些角色或计划在很大程度上依赖于内部有人倡导开源,并说明构建开源社区的 ROI。最近,这些工作落在了开发者关系(DevRel)和开发者倡导团队(这些团队开始在一些大型科技公司中不断发展壮大)的肩上。

开发者认为,公司可能可以将工作时间的一部分分配给开源,这是解决时间和优先级问题的一个潜在的解决方案。79% 的被调查开发者同意或强烈同意公司应该将部分工作时间分配给开源。在未来,开源贡献可以包含在开发者的工作描述中,或者公司可以将开源时间纳入到员工志愿者工作和大型企业常见的社会公益项目中。特别是在后疫情工作场所当中,员工现在比以往任何时候都更有可能希望将自己的时间和技能贡献给他们认为有价值的工作或回馈给社会。如果不鼓励将工作时间分配给开源项目或进行志愿者项目,公司可能会错过一个可以解决开源信任问题和员工参与度问题的解决方案。

激励参与开源的问题也可能是一个代际问题——经验较少的开发者(不足一年)比经验丰富的开发者更有可能在过去的一年中参与过开源项目。我们可以推测,也许更有经验的开发者在成长为更高级的角色时,会遇到更大的时间限制和带宽问题,这将取决于公司如何提供公平的竞争环境让所有类型的开发者都有机会参与到在公司级别的开源计划中。这看起来就像是在生产进度中为开源贡献和评审分配时间,或者让开源责任成为某些角色或头衔的关键组成部分。

最终,技术领导者、公司和个人开发者将不得不协同工作,有效地最大化开源为行业带来的创新和好处,同时又不失去社区和协作的整体价值(这是开源项目的关键)。就目前的情况而言,开源项目代表我们正在通过最好的、最具合作性质和最富激情的方式使用技术。开发者可以获得指导和新的机会,以最符合他们兴趣的方式发展他们的技能。正如大多数工程专业人士和团队领导者已经认识到的那样,工作场所可以多一点这种精神。

作者简介

Al Sene 是 DigitalOcean 的工程副总裁兼架构总经理。Al 负责推动 DigitalOcean 关键服务和产品的创新和速度,以满足客户不断变化的需求。在加入 DigitalOcean 之前,Al 曾担任 DDN 和 NexGen Storage 的工程副总裁,后者被 Fusion-io 和 SanDisk 收购。他还在惠普担任过几个技术和管理职位,并持有存储专利。他在 St. Cloud State University 学习计算机科学,并在 Colorado State University 获得工商管理硕士学位。

https://www.infoq.com/articles/open-source-contributing-development/