English | 简体中文
Criticality Score 项目旨在基于开源项目在开源生态系统中的关键性和下载量开展关键开源项目评估和排名。与仅依赖 GitHub 指标的传统方法不同,该项目结合了来自各种 Linux 发行版的数据,以提供更全面的分析。
通过收集和分析来自多个来源的指标,该项目提供了一个评估开源项目关键性的强大和全面的框架。
与 ossf/criticality_score 的区别
- 发行版依赖:收集来自各种 Linux 发行版(例如 Debian、Arch、Nix、Gentoo)的数据,以评估开源软件的依赖性。
- 支持所有 Git 仓库:分析来自任何 Git 平台的仓库,而不仅仅是 GitHub。
- 全面的指标收集:从 Git 仓库和包管理器收集更广泛和更精确的指标,例如提交次数、组织数量比 GitHub API 更准确。
- 指标定制友好: 可定制任意用于关键性评估算法的指标,而不是仅使用 Github API 中收集到的 metrics。
- 无需依赖 Google Cloud 或 BigQuery:
ossf/criticality_score
依赖于 Google Cloud 服务,难以迁移到其他平台。该项目独立于特定云服务运行,确保易于部署。 - 简易部署:只需运行一个脚本,系统将通过 Docker 自动建立数据库,完成设置。
- 提供附加信息:提供额外的信息,例如各个仓库(依赖项)之间的关系。
如果您想收集 gentoo 的数据,请参阅 如何设置 Gentoo prefix 设置 Gentoo prefix。
然后确保已安装 docker
和 docker-compose-v2
,并运行以下命令。
export GENTOO_PREFIX_DIR=<你的 Gentoo prefix 路径> # 如果没有设置 Gentoo prefix,请忽略
export GITHUB_TOKEN=<你的 GitHub Token>
./setup.sh
-
启动脚本完成后,尝试连接到数据库(密码存储在 data/DB_PASSWD 中)。
-
手动填充 arch_packages 和 debian_packages 中的 git_link 字段,最后运行以下命令。如果 git_link 数据已存在,可以使用 scripts/copy-gitlink.py 工具将数据复制到数据库中。
-
首次运行以下命令以收集和计算分数,这将需要几天时间完成。
docker compose exec app bash /gitlink.sh
我们建立了一个包含三个维度的模型:
-
Git 元数据:
指标 描述 原因 阈值 权重 created_since 项目存在的时间越长,越可能被广泛使用或依赖,代表着项目的成熟度和稳定性。 较老的项目通常拥有更大的用户基础和更完善的测试。 120 个月 1 updated_since 长时间未更新的项目可能不再维护,从而降低了其可靠性和依赖性。 未维护的项目不太可能保持安全性或与当前的使用需求相关。 120 个月 -1 contributor_count 更多的贡献者表示项目更受到关注,社区活动更活跃,项目更重要。 多样化的贡献展示了社区的活跃度和广泛的支持。 40,000 2 org_count 来自多个组织的贡献表明项目有跨组织的依赖,具有广泛的影响力。 跨组织的贡献突出显示了该项目的普遍性和重要性。 8,400 1 commit_frequency 较高的代码变更频率表示项目活跃,但也可能意味着潜在的漏洞风险。 活跃的提交表明项目开发的响应速度,但可能需要注意代码质量问题。 1,000 次提交 1 -
发行版依赖:
指标 描述 原因 阈值 权重 dist_impact 表明该项目在不同软件发行版中的依赖情况,展示其在生产环境中的使用和稳定性。 广泛的发行版使用表明项目在实际生产环境中的实用性和可靠性。 1 5 pagerank 通过每个发行版中的依赖比例和相应包的 PageRank 分数计算得出。 在发行版中较高的 PageRank 表示更大的重要性和影响力。 1 5 default_install 表示该项目是否默认包含在某些发行版的安装中(1 表示包含,0 表示不包含)。 TODO: 将提供有关默认安装指标的更多详细信息。 默认安装表示项目的基本角色和可靠性。 1 2.5 -
语言生态系统 (npm, pypi):
指标 描述 原因 阈值 权重 dist_impact 通过语言生态系统中的依赖比例计算得出,展示其在开发生态系统中的重要性。 依赖较多的项目对开发生态系统至关重要。 1 5 pagerank 依赖关系图中每个包的重要性;我们使用 PageRank 算法来计算此指标。 TODO: 将提供有关 PageRank 计算的更多详细信息。 PageRank 较高的项目在生态系统中更为关键。 1 5