最佳 开源 人脸识别算法_开源项目的最佳社会结构是什么?

最佳 开源 人脸识别算法

代码审查是一种实践,可促进开源项目中的快速协作,知识共享和最高质量。 代码审查的社会结构是项目的定义特征。 开源项目的最佳社会结构是什么?

在本文中,我们通过分析三个常见模型来研究这个问题:仁慈的生命独裁者(BFDL),层次结构和社区模型,其中包含两个量化其健壮性和信息传输能力的图论指标。

代码审查社会结构

在像Facebook和LinkedIn这样的人流行之前,开源项目通过邮件列表发展了社会结构。 在那段历史中,出现了一些管理代码审查和集成的组织结构。

图1:仁慈的独裁者生命图代码模型回顾了社会结构。

终身仁慈的独裁者一词是指控制项目方向的单个人,例如Python编程语言的Guido van Rossum。 对于较大的项目,这仅适用于存在争议或争执的问题,但极权主义极端主义的模型由图1表示。在此模型中,一个人在提交所有补丁之前都要对其进行检查和控制。 当分叉并为单所有者存储库创建请求请求后检查补丁时,这种结构由GitHub之类的工具构建。

图2:分层代码审查社交结构的图形模型。

可以考虑的另一个模型是层次结构 ,如图2所示。熟悉军方和工业时代的公司,将军委派给中尉,再委派给少校,等等。沿着层次结构前进。 一个著名的例子是Linux内核,Linus Torvalds将内核的各个子系统委派给中尉。

图3:社区代码审查的社会结构图模型。

我们将考虑的第三个模型是社区结构 (图3)。当成员按其意愿和能力发表评论时,就会出现这些自组织网络。 Gerrit之类的工具鼓励这种类型的网络,或者鼓励任何人进行显示在标签评估板上的审查。 有趣的是,社区成员执行的评论数量遵循幂律 ,就像所提交代码分发一样。

量化其属性

我们可以使用社交网络理论中定义的指标评估图1-3中的模型。 在这些模型中,每个节点代表一个人,每个边缘代表一个代码审查。

图可视化中节点大小通过信息传输, 紧密度中心度进行缩放。 紧密度中心度是一种归一化的度量,其值的范围从零到一,它量化了与代码检查网络中所有其他人员的平均距离的倒数。 当亲密性很高时,知识就可以很好地交流。 高亲密性意味着可以传递许多对等方的经验和知识,因此网络的规模可以增强个人的贡献。

图可视化中节点颜色是根据节点对于维护网络内通信的关键程度进行映射的。 蓝色节点之间的中间度较低,红色节点之间的中间度较高,紫色色调节点位于中间。 中间性中心度是对通过审阅者的最短路径数量的标准化度量。 具有高度中间性的节点很难反映出该网络的健壮性 —如果这些节点发生故障,则网络中的通信将崩溃。

模型如何表现

BDFL模型(图1)在信息传输(紧密度中心)方面表现很好,但缺乏鲁棒性。 由于中央BFDL节点参与了所有审阅,因此他们传授了自己的知识并传递了网络中其他所有参与者的信息。 但是,中央BFDL节点也是单点故障。 如果BDFL切换工作,休假,发现一种新的编程语言,被公交车撞到,被外星人绑架等,网络将崩溃。 中央节点的程度 ,执行的代码审查次数也很高。 这很可能导致烧坏 ,并使网络难以扩展。

尽管图2中的层次结构可以扩展,而无需任何单个节点具有较高的程度,但它在鲁棒性和信息传输属性上都失败了。 网络容易遭受层次结构顶部的损失。 可视化为节点大小的信息传输在整个网络中都很差。

尽管图3中的社区代码审查结构缺乏图1或图2中发现的规则性,但它既具有很高的信息传输能力,又非常健壮。 尽管没有明确的BFDL或层次结构的顶层,但领导者仍然以这种结构出现。 领导角色由行动(例如,执行的评论的数量)而不是其在网络中的位置决定。 但是,这种自由形式的组织还有其他要求。 需要更多的通信量-比其他模型有更多的优势。 此外,这种情况还需要工具和客观标准来做出有效的决策; 是否合并补丁可以取决于它是否通过了所有单元测试 ,是否已达到标准测试代码覆盖率 ,是否通过了自动样式检查等,这与“ 丹中尉是否说过”相反。

结论

我们已经看到,社区代码复审结构在数学上优于集中式或分层系统,因为它可以有效地传播知识,并且容易受到人们不断变化的生活状况或不良绩效或倦怠的影响。 当然,这些并不是唯一重要的因素-例如,这些模型并不能体现个人经验水平的价值。

ITK代码审查网络。单击以获取完整的可视化效果。

图4:实际项目Insight工具包(ITK)的代码审查网络。 像其他图一样,节点的大小与其紧密度有关,节点的颜色由它们的紧密度来编码。 边缘的宽度与评论的数量有关。 单击以 获取完整的可视化效果

同样,在这些理想化模型之一中,没有将真实项目明确分类。 大多数是所描述模型或其他模型的混合体。 一个基于真实数据的示例是Insight Toolkit的代码审查结构,图4。声称在BFDL模型下运行的项目如果没有一些分布式工作负载就无法扩展。 声称在社区结构下运营的项目会受到终身运营的影响。

最后,重要的是要记住,代码审查结构对于执行代码审查的人员而言是次要的。 开源社区中的代码审查实践是相互学习和相互服务的机会。


本文提供的用于分析和可视化的源代码可在GitHub上获得 。 图4中的数据和可视化来自描述ITK在可重复研究中的作用的文章

翻译自: https://opensource.com/life/14/5/best-code-review-open-source-projects

最佳 开源 人脸识别算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值