概述
在一篇新的Linux基金会论文《技术债务和开源开发》(Technical Debt and Open Source Development)中,由Ibrahim Haddad博士和Cedric Bail M.Sc.合著,详细探讨了技术债务的原因和后果。它包括关于确定技术债务、如何将其最小化、开源开发的作用以及大规模解决这一问题的策略的讨论。
作者曾在三星研究院的开源小组工作,通过与上游开源项目的合作,直接体验了如何将内部背负的技术债务最小化。他的经验涵盖了数十个跨多个产品和业务单元使用的开源项目,这些项目在上游开发方面具有不同程度的参与和专业知识。
技术债务的定义
技术债务,一个在软件开发中使用的术语,指的是维护源代码的成本,它是由对发生联合开发的主要分支的偏离所引起的。
对技术债务的更广泛的解释是专有代码本身:
一个单独的组织开发了它
组织本身需要携带和维护的是源代码
在某些情况下,组织依赖于合作伙伴维护代码和承担上述债务的能力
以下症状可以确定技术债务:
较慢的发布节奏增加了新特性交付之间的时间
由于代码的复杂性,只有内部开发人员熟悉代码库,所以新开发人员的入职时间变得非常复杂。这种症状的第二个表现是很难留住开发人员或雇佣新的开发人员
至少增加了安全问题,经历了比主上游分支更多的安全问题
随着要维护的代码体变得更大、更复杂,维护代码基维护任务的工作量也变得越来越耗时
与上游开发周期的不一致表现为无法跟上进度,与上游开发和发布周期的不一致
技术债务的后果
制造和背负技术债务将对发展努力产生若干不利影响,包括:
较高的代码维护成本
缓慢的创新和发展周期
支付债务利息--支付技术债务的形式是为了跟上主要部门、竞争和世界其他地区的步伐而需要进行额外的开发
可能在主分支中缺少新特性,或者必须在内部将所有新开发备份到分支中
由于内部分支和公共分支之间的差异太大,导致主分支的重复工作
最糟糕的可能结果是对代码库的长期可维护性的影响,组织经常发现他们在维护自己的fork。
在很多情况下,科技债务在短期内是不可避免的。承担技术债务基本上是开发人员一直需要做出的决定。任何工程工作的长期目标都应该是最小化和消除任何开发工作带来的技术债务。通过适当的政策、流程、培训和工具,组织可以帮助减轻和指导工程工作,从而降低技术债务。
开源具有重要的作用,将您的开发工作与上游开源项目结合起来,可以对组织所背负的技术债务产生直接的积极影响。正如金融债务需要支付利息一样,技术债务也需要支付一种不同的利息:它不是无息的!
技术债务阻碍了您的发展并阻碍了您的新增长,将您的技术债务转移到开源世界基础设施的一部分,降低它,并建立在不断增长的巨人的肩膀上。
点击【阅读原文】下载《技术债务和开源开发》(Technical Debt and Open Source Development)。
联系关于Linux基金会
Linux基金会是非营利性组织,是技术生态系统的重要组成部分。
Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请长按以下二维码进行关注。
本文分享自微信公众号 - LFAPAC(gh_8442c14fe49e)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。