开源中同行评审的效力如何?

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

Opensource.com

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

一个标准的开源同行评审流程的例子始于软件作者将其代码和文档提交到其项目的邮件列表。然后,其他贡献者和项目经理会对其进行检查;在更改被接受或拒绝之前,社区和作者之间会讨论潜在的问题和改进。GitHub 使用版本控制软件 Git 来提供一个简化的系统,项目经理可以在其中监督其源代码,同时仍然允许代码审查。由于其易用性,截至 2011 年,GitHub 已成为版本控制和代码审查的热门主机,拥有超过 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 中的错误,甚至获得承认?
也许开源开发人员只是在防御 kook 垃圾邮件和破坏者,但他们为外部审阅者设置了过去不存在的障碍。如果您正在寻找 shellshock 和 heartbleed 花了这么长时间才被报告和修复的原因,请从那里开始。

将“the Linux kernel driver”改为“a Linux device driver”

回复 访客 (未验证)

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

回复 访客 (未验证)

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

回复 访客 (未验证)

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

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.