开源中同行评审的力度有多大?

尚无读者喜欢这篇文章。
User experience vs. design

Opensource.com

虽然代码审查在专有软件开发公司中很常见,但开源软件开发的性质通常使得实现标准化的代码评估变得困难。因此,开源社区中成功的行业领导者或项目经理经常采用同行评审技术作为其开发周期中质量控制的标准。

一个标准的开源同行评审流程的例子始于软件作者将其代码和文档提交到其项目的邮件列表。然后由其他贡献者和项目经理进行审查;在社区和作者之间讨论潜在的问题和改进,然后更改被接受或拒绝。 GitHub 使用版本控制软件 Git 提供了一个简化的系统,项目经理可以在其中监督其源代码,同时仍然允许代码审查。由于其易用性,GitHub 已成为版本控制和代码审查的热门主机,截至 2011 年,已向该站点上传了超过 2,000,000 个存储库。

虽然开发人员可以使用工具来进行质量控制,但较小项目的代码审查技术的水平经常被忽视,这导致了混乱和未经检查的补丁发布。由于成熟的开源项目为其开发人员提供了明确的指南,因此不太容易出现这些问题。即使较小的开发团队确实采用了软件同行评审,结果也几乎不统一。正如 Peter Rigby 在其论文《开源软件项目中的同行评审:参数、统计模型和理论》中所述:“我们发现 OSS 同行评审是由授权专家异步进行的,他们专注于其专业领域内的更改。 审阅者就小的更改提供及时、定期的反馈。描述性统计清楚地表明,OSS 审查与传统的检查截然不同。”

证据表明,同行评审可能是发现软件缺陷的最有效形式。在《代码大全》中,作者 Steve McConnell 指出,代码审查在确定软件故障方面的有效性比标准单元测试高出 30% 到 35%。开源开发为项目新成员提供的一个优势是,审查代码对于不熟悉的开发人员来说,既可以轻松地在项目中变得高效,又可以融入社区文化。这也使得项目整体知识能够在程序员团队中传播,而不会淡化社区的优先事项。

开源开发团队需要专注于改进其同行代码审查方法,或开始制定软件评估程序。幸运的是,有很多关于此活动的文档可用。有关软件同行评审的重要性和改进的文章是很好的资源;我喜欢的一篇是:同行代码审查的 11 个最佳实践,作者是 SmartBear Software。它是基本软件同行评审原则的简短摘要。虽然这篇文章没有特别深入地介绍代码评估指南的具体细节,但它确实提供了一个简短的“经验法则”原则列表,以指导开发人员采用更精简和有用的代码审查技术。

随着开源软件越来越成为专有软件的流行替代品,必须改进产品背后的开发技能,以提高社区的可靠性。由采用更充分和标准化的同行代码审查技术的团队开发的软件,可以产生更用户友好和更可靠的程序。确保标准化质量控制方案所需的时间是值得的,因为可以获得更完善的产品。

标签
User profile image.
Eden 是一位软件开发人员,专注于 Web 开发,常驻伦敦。他们是开源软件的倡导者,并喜欢积极为开源社区做出贡献。

7 条评论

在我看来,随着正式的“协作”工具和托管服务的采用,外部人员的同行评审已变得*越来越困难*。
一代人以前,我通过向驱动程序作者发送 uuencoded 补丁和问题的简短描述,修复了 Linux 内核驱动程序中的一个错误。我还向当时领先的 vi 克隆的作者建议了一个功能(鼠标集成),他实现了它。(Vim 在几个月后采用了它,命令是 :set mouse=a)
我今天不知道如何完成这两件事中的任何一件。甚至不知道如何找到方法。你有没有试过修复 Firefox 中的错误,甚至得到承认?
也许开源开发人员只是在防御疯子垃圾邮件和破坏者,但他们为外部审阅者设置了过去不存在的障碍。如果你想知道为什么 shellshock 和 heartbleed 花了这么长时间才被报告和修复,就从这里开始。

我百分之百同意你的看法。我认为开发人员需要拓宽他们当前的编辑代码方法,不仅在公司内部,而且还要面向公众。如果他们害怕破坏者,他们需要雇用更高效的错误报告版主,而不是让公众保持沉默。我理解问题在于资金,但像大多数开源项目一样,有人愿意为这项事业贡献他们的空闲时间。

回复 ,作者:访客(未验证)

我百分之百同意你的看法。我认为开发人员需要拓宽他们当前的编辑代码方法,不仅在公司内部,而且还要面向公众。如果他们害怕破坏者,他们需要雇用更高效的错误报告版主,而不是让公众保持沉默。我理解问题在于资金,但像大多数开源项目一样,有人愿意为这项事业贡献他们的空闲时间。

回复 ,作者:访客(未验证)

文章很有趣!开源分析平台 Piwik 是 Google Analytics 的替代品,正在考虑对大多数贡献(包括来自核心团队成员的贡献)进行合并前代码审查:https://github.com/piwik/piwik/issues/6916

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.