如何使用 Libraries.io 数据,来自数百万开源项目

本月 Libraries.io 发布了超过 2500 万个开源项目的元数据。
452 位读者喜欢这个。
Open lightbulbs.

Opensource.com

如果我们将 Google 在 1998 年应用于索引互联网的技术应用于开源软件世界会怎么样? 这正是 Andrew Nesbitt 在 2014 年的想法,这促成了 Libraries.io 的创建,这是一个用于索引其他开源项目的开源项目。 本月 Libraries.io 发布了超过 2500 万个开源项目的元数据。

您可以立即从 Zenodo 下载,但是您可以用它做什么呢? 为了了解此数据集包含的内容,我将快速了解一下它的收集方式。

数据是如何收集的

Libraries.io 中的一切都始于软件包管理器。 我们从 33 个软件包管理器索引项目元数据,并在可能的情况下从其源代码存储库中填补空白。 我们解析项目清单(gemfile、package.json 或类似文件),其中包含来自其他项目的代码,并存储它们之间的链接。

项目存储库是此数据集中的关键区别之一。 项目通常是通过一个或多个软件包管理器分发的组件。 存储库可能属于项目,但最常见的是使用者,将项目合并到应用程序或服务中。

存储库依赖项(超过 1 亿个)是此数据集的核心。 它们定义了存储库与它们所构建的项目之间的链接。 使用这些链接,我们可以轻松地发现开源中使用的最流行的项目。 但我们可以更进一步。

依赖项定义了项目之间的链接,每个项目都有自己的一组依赖项,称为传递或深层依赖项。 我们可以遍历出现的树状结构,以发现开源中使用的最有价值的项目。

这两个用例是将 Andrew 和我聚集在一起的粘合剂:Andrew 构建了 Libraries.io 以解决发现和推荐问题,而我在 OpenSSL 中的 Heartbleed 问题之后一直在研究识别关键的 OSS 项目。

当然,没有一个软件是不可变的常数。 版本定义了项目发布的版本,依赖项映射到该版本,每个版本都有自己的依赖树。 存储库可以定义对单个“固定”版本的依赖,也可以定义版本范围,例如 >1.1.5。 如果软件包管理器不支持版本的概念,则使用 标签来跟踪项目的发布,从其源代码中拉取标记的发布。

最后,我们为了方便起见提供了一个非规范化表 具有相关存储库字段的项目,它内联项目和存储库数据,以节省您自己创建这些链接。

这就是我们拥有的资源,我们可以用它做什么呢? Libraries.io 为我们提供了一些示例。

搜索

毫不奇怪,Google 采用的方法移植到开源软件上会产生一个出色的搜索引擎。

Libraries.io 本身主要是一个跨平台搜索引擎,使用流行度和价值度量来优先考虑最常用的组件。 Libraries.io 还支持在第三方站点(如软件包管理器 Bower 和搜索引擎 DuckDuckGo)上进行搜索。

Libraries.io 的目标是创建一个更强大的开源生态系统。 我们将通过成为以开发者为中心的服务实用程序来最快地实现这一目标。 此数据发布可用于创建地图,而 Libraries.io 的 API 可用于保持地图的更新。 该团队特别热衷于支持其他在搜索方面苦苦挣扎的软件包管理器。

开发者工具

软件的生产速度和复杂性正在加速。 开发者依靠工具来自动化许多流程,否则这些流程会占用他们解决新的、有趣问题的宝贵时间。

Libraries.io 帮助开发者掌握其应用程序基础结构的不断变化的依赖关系,突出显示维护人员的潜在问题,例如过时、已弃用和无人维护的软件,以及许可不兼容的项目。 我们的新兴 CI 工具 DependencyCI.com 将这些检查构建到开发过程中,同时支持 Libraries.io 的开发。

优先级和贡献

Libraries.io 已经与关注 Nadia Egbhal 的 福特基金会的道路和桥梁报告中强调的问题的组织合作,福特基金会是支持该团队的两个基金会之一。 该报告揭示了一个非常现实的问题,即我们都依赖的一些关键开源项目在工作场所、家庭和任何地方都得不到充分支持。 世界正在意识到这个问题,而 Libraries.io 是用于解决此问题的中心资源之一。

在过去的两年里,我们一直在亲自试验这些数据。 我们构建了页面来突出显示重要的项目、关注度太低和贡献者太少的项目。 将目光投向这些类型的项目,向希望利用自己的时间做出贡献或直接从自己的贡献中受益的贡献者推荐它们,是 Libraries.io 为创建更强大的生态系统和提高所有软件质量而采取的方法之一。

如果您想使用 Libraries.io 的数据,您可以立即从 Zenodo 下载。 有关更多信息,请查看文档

标签
Ben with a coffee.
@librariesio 和 @dependencyci 的另一位成员。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.