如果我们应用Google于1998年将互联网索引到开源软件世界的技术,该怎么办? 这正是Andrew Nesbitt在2014年的想法,导致了Libraries.io的创建,这是一个为其他开源项目建立索引的开源项目。 本月,Libraries.io发布了超过2500万个开源项目的元数据。
您可以立即从Zenodo下载它 ,但是该怎么办? 为了了解此数据集中包含的内容,我将快速查看其收集方式。
如何收集数据
Libraries.io中的所有内容都始于包管理器。 我们为来自33个程序包管理器的项目元数据编制索引,并在可能的情况下填补其源代码仓库中的空白。 我们解析项目清单(一个gemfile,package.json或类似文件),其中包含来自其他项目的代码并存储它们之间的链接。
项目和存储库是此数据集中的主要区别之一。 项目通常是通过一个或多个程序包管理器分发的组件。 存储库可能属于一个项目,但大多数情况下它们是使用者,将项目合并到应用程序或服务中。
存储库依赖关系 (其中超过1亿个依赖关系)是此数据集的核心。 它们定义了存储库和基于它们的项目之间的链接。 使用这些链接,我们可以轻松地发现开源中使用的最受欢迎的项目。 但是我们可以走得更远。
依赖关系定义了项目之间的链接,每个链接都有自己的一组依赖关系,称为传递性或深度依赖关系。 我们可以走走出现的树状结构,以发现开源中使用的最有价值的项目。
这两个用例是安德鲁和我在一起的粘合剂:安德鲁建立了Libraries.io以解决发现和推荐问题,而在OpenSSL中发生Heartbleed问题之后,我一直在寻找确定关键的OSS项目。
当然,没有软件是不变的常数。 版本定义了一个项目版本,在该版本上映射了依赖项,每个版本都有其自己的依赖关系树。 存储库可以定义对一个“固定”版本或一系列版本(即> 1.1.5)的依赖。 如果包管理器不支持版本的概念,则使用标签来跟踪项目的发布,而是从其源中提取已标签的发布。
最后,我们可以方便地进行具有相关存储库字段的非规范化表项目,这些项目可以内联项目和存储库数据,从而可以节省您自己创建这些链接的时间。
这就是我们必须处理的事情,我们该如何处理? Libraries.io为我们提供了一些示例。
搜索
毫不奇怪,谷歌采用的方法转换为开源软件会产生出色的搜索引擎。
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下载 。 有关更多信息,请查阅文档 。