OSS Compass分制切换 | 看算法变身魔法!

OSS Compass
OSS Compass 自 2023 年 2 月 21 日正式对外发布以来,一直在加速迭代,不断优化指标模型及 SaaS 服务。其中 SaaS 服务除了包括原有 Dashboard(看板),近期还为开发者及用户搭建了 Compass Lab(Compass 实验室),供开发者及用户定制自己的模型。本系列文章将为大家逐一解析指标模型、Dashboard 和即将发布的 Compass Lab,以及其他 OSS Compass 新增功能,敬请关注。
嘿,各位开源探险家们!前两期“OSS Compass 功能更新”系列文章已经震撼登场,揭开了“Compass 徽章”和“Dashboard 图表 Y 轴缩放功能”的神秘面纱。今天,小编终于为大家带来期待已久的“百分制”功能更新啦!这个功能和 OSS Compass(以下简称“Compass”)评估指标模型的算法密切相关哦。废话不多说,让我们一起来看看这个厉害的算法是如何变身 魔法的吧!
01 故事开始:Compass 与 Criticality Score
Compass 的初衷是让开源项目的评估更科学、更客观,它的模型算法、后端组件原型最初来自于 CHAOSS。而 CHAOSS 使用的部分模型算法最初参考了 Criticality Score。
Criticality Score,听起来很神秘,它是由 Google 开发、通过开源安全基金会 (OpenSSF) 开源的一个量化开源项目重要性/关键性的评估项目。通过选取诸如“贡献者数量”、“提交频率”、“过去一年的发版数量”等指标,再利用公式计算出开源项目的重要性。而它使用的神奇公式是这样的:

这个公式涉及三个神秘变量:ai、Si 和 Ti。ai 代表第 i 个指标的权重,Si 是该指标的值,Ti 则是指标的阈值。阈值指的是指标可以达到的最大值。
采用 log 函数进行归一化操作是常用方法,但这个公式有点特别:分子和分母都使用了 log(1+x)形式而非 log(x),+1 的作用是确保最终计算结果是正数;而分母使用了 log(1+max(Si,Ti)),max 的目的是当 Si < Ti 时,分母固定为常量 log(1+Ti),而 Si > Ti 时,公式结果恒为 1。
这样一番复杂的计算,让 C 值处于 0-1 之间,真是算法的奇妙魔法!
02 魔法的优势与局限:Criticality Score
Criticality Score 的算法在评估开源项目时,确实有着超高优势,充分考虑了指标取值的差异,同时还允许灵活调整权重。不过,魔法也有一些局限性,例如计算结果本应在 0-1 之间,但在实际应用中可能出现负数或大于 1 的情况,这可不太科学哦!
而且 Criticality Score 定义的指标并不够全面,被批评不够准确和客观。嗯,虽然是魔法,但也有待改进!
03 Compass 的魔法优化
Compass 闪亮登场!为解决魔法的局限性,我们做了优化!
首先,我们去除了“Criticality Score”中一些无意义的指标,增加了更为合理的评估指标。目前,Compass 选取了 30 多个评估指标(还在不断增加中),涵盖生产力、稳健性和创新力三个维度,并将这些指标巧妙地组合起来,打造了一个完整的评估体系。
其次,我们设置了合理的权重和阈值。借助专家经验和 AHP 层次分析法,计算出可靠的权重。同时,根据对百万个开源项目代码仓的观测结果,设定了合理的阈值。真是玩出了魔法的精妙!
最后,我们对 0-1 之外的计算结果进行了标准化处理,保证这些结果最终都在 0-1 之间。这样一来,魔法的结果更科学啦!
为了验证优化方案,我们把优化后的指标模型计算结果与 Google Criticality Score 的计算结果进行了比较,最终发现两者具有显著的强正相关性。
此外,Compass 也在不断改进算法,未来我们将推出全新的算法体系欢迎加入,让我们一起创新算法吧