使用GHTorrent和Libraries.io查询十年的GitHub数据

本文介绍了如何利用GHTorrent数据集在Google Big Query中查询GitHub的历史数据,探讨了JavaScript和Java在开源项目中的主导地位,以及MIT和Apache 2.0许可证的流行。此外,还指出了GHTorrent数据集的局限性,特别是2017年后的不完整性,以及Libraries.io数据集在补充许可证信息方面的价值。
摘要由CSDN通过智能技术生成

我一直在寻找新的数据集,我们可以用它们来展示团队工作的力量。 CHAOS SEARCH将您的Amazon S3对象存储数据变成一个完全可搜索的类似Elasticsearch的集群。 使用Elasticsearch API或类似Kibana的工具,您可以查询找到的任何数据。

当我发现要探索的GHTorrent项目时,我感到非常兴奋。 GHTorrent旨在为可通过GitHub API提供的所有数据构建一个离线版本。 如果您需要数据集,那么这是一个值得签出甚至值得考虑捐赠GitHub API密钥之一的项目

访问GHTorrent数据

有多种方法可以访问和使用GHTorrent的数据NDJSON中提供了这些数据   格式。 这个项目做得很好,可以多种形式提供数据,包括用于还原到MySQL数据库的CSV ,所有对象的MongoDB转储以及Google Big Query。   (免费),用于将数据直接导出到Google的对象存储中。 有一个警告:该数据集的数据集从2008年到2017年几乎完整,但从2017年至今没有那么完整。 这将影响我们确定性查询的能力,但仍然是令人兴奋的信息量。

我选择Google Big Query是为了避免自己运行任何数据库,因此我能够快速下载包括用户和项目在内的完整数据集。 CHAOS SEARCH可以本地分析NDJSON格式,因此将数据上传到Amazon S3之后,我能够在短短几分钟内对其进行索引。 CHAOS SEARCH平台不需要用户设置索引架构或为其数据定义映射,因此它自己发现了所有字段(字符串,整数等)。

在对数据进行完全索引并准备好进行搜索和汇总之后,我想深入研究一下,我们可以学习到哪些见解,例如哪些软件语言是GitHub项目中最受欢迎的语言。

(有关格式化的注意事项:这是一个有效的JSON查询,为了避免滚动疲劳,我们在这里不会对其进行正确的格式化。要对其进行正确格式化,可以将其复制到本地并发送到jq之类的命令行实用程序。)

{"aggs":{"2":{"date_histogram":{"field":"root.created_at","interval":"1M","time_zone":"America/New_York","min_doc_count":1}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["root.created_at","root.updated_at"],"query":{"bool":{"must":[],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"root.language":{"query":""}}}]}}}

对于最近几年关注开源语言状况的任何人来说,这一结果都不足为奇。

Which software languages are the most popular on GitHub.

JavaScript仍然是统治者,尽管有些人认为JavaScript即将淘汰,但它仍然是800磅重的大猩猩,并且可能会保持这种状态一段时间。 Java面临着类似的谣言,这些数据表明它是开源生态系统的重要组成部分。

鉴于DockerKubernetes等项目的普及,您可能会想,“ Go( Golang )呢?” 这是一个提醒的好时机,这里讨论的GitHub数据集包含一些差距,最明显的是2017年之后,那是我看到Golang项目随处可见的时候。 我希望使用完整的GitHub数据集重复此搜索,并查看它是否会改变排名。

现在让我们探索项目创建的速度。 (提醒:这是为了可读性而合并的有效JSON。)

{"aggs":{"2":{"date_histogram":{"field":"root.created_at","interval":"1M","time_zone":"America/New_York","min_doc_count":1}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["root.created_at","root.updated_at"],"query":{"bool":{"must":[],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"root.language":{"query":""}}}]}}}

看到新项目的创建速度同样会令人印象深刻,并且从2012年左右开始会有巨大的增长:

The rate at which new projects are created on GitHub.

既然我知道了创建项目的比率以及用于创建这些项目的最流行的语言,我便想知道这些项目选择了哪些开源许可证。 不幸的是,该数据在GitHub项目数据集中不存在,但是Tidelift的出色团队在其Libraries.io 数据中发布了GitHub项目,使用的许可证以及有关开源软件状态的其他详细信息的详细列表。 将这个数据集导入CHAOS SEARCH只需几分钟,让我看看GitHub上最受欢迎的开源软件许可证:

(提醒:这是为了可读性而合并的有效JSON。)

{"aggs":{"2":{"terms":{"field":"Repository License","size":10,"order":{"_count":"desc"}}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["Created Timestamp","Last synced Timestamp","Latest Release Publish Timestamp","Updated Timestamp"],"query":{"bool":{"must":[],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"Repository License":{"query":""}}}]}}}

结果显示了一些明显的异常值:

Which open source software licenses are the most popular on GitHub.

如您所见, MIT许可证Apache 2.0许可证远远超过了用于这些项目的其他大多数开源许可证,而各种BSD和GPL许可证紧随其后。 鉴于GitHub的开放模型,我不能对这些结果感到惊讶。 我猜想用户(而不是公司)创建了大多数项目,并且他们使用MIT许可证来简化其他人的使用,共享和贡献。 那个Apache 2.0   鉴于有多少公司希望确保其商标得到尊重并为其业务提供开放源代码,因此授权是正确的。

现在,我确定了最受欢迎的许可证,我很好奇看到使用最少的许可证。 通过调整我的上一个查询,我将前10名倒了到前10名,并且使用伊利诺伊大学只能找到两个项目-NCSA开放源代码许可证 。 我以前从未听说过该许可证,但是它非常接近Apache 2.0。 有趣的是,在所有GitHub项目中使用了多少种不同的软件许可证。

The University of Illinois/NCSA open source license.

伊利诺伊大学/ NCSA开源许可证。

之后,我进入一种特定的语言(JavaScript)以查看那里使用的最受欢迎的许可证。 (提醒:这是为了可读性而合并的有效JSON。)

{"aggs":{"2":{"terms":{"field":"Repository License","size":10,"order":{"_count":"desc"}}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["Created Timestamp","Last synced Timestamp","Latest Release Publish Timestamp","Updated Timestamp"],"query":{"bool":{"must":[{"match_phrase":{"Repository Language":{"query":"JavaScript"}}}],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"Repository License":{"query":""}}}]}}}

此输出有一些意外。

The most popular open source licenses used for GitHub JavaScript projects.

即使使用npm init创建的NPM模块的默认许可证是Internet系统联盟(ISC)的许可证,您仍可以看到,其中许多项目使用MIT以及Apache 2.0作为其开放源代码许可证。

由于Libraries.io数据集包含丰富的开源项目内容,并且由于GHTorrent数据缺少最近几年的数据(因此缺少有关Golang项目的任何详细信息),我决定运行类似的查询以查看Golang项目如何许可他们的代码。

(提醒:这是为了可读性而合并的有效JSON。)

{"aggs":{"2":{"terms":{"field":"Repository License","size":10,"order":{"_count":"desc"}}}},"size":0,"_source":{"excludes":[]},"stored_fields":["*"],"script_fields":{},"docvalue_fields":["Created Timestamp","Last synced Timestamp","Latest Release Publish Timestamp","Updated Timestamp"],"query":{"bool":{"must":[{"match_phrase":{"Repository Language":{"query":"Go"}}}],"filter":[{"match_all":{}}],"should":[],"must_not":[{"match_phrase":{"Repository License":{"query":""}}}]}}}

结果与Javascript完全不同。

How Golang projects license their GitHub code.

Golang提供了惊人JavaScript逆转功能,几乎是MIT上Apache 2.0许可的Golang项目数量的三倍。 尽管很难确切解释为什么会这样,但是在过去的几年中,Golang出现了巨大的增长,特别是在开发项目和提供开源和商业软件的公司中。

如上文所述,这些公司中的许多公司都想实施其商标,因此,使用Apache 2.0许可证是有意义的。

结论

最后,通过深入研究GitHub用户和项目数据转储,我发现了一些有趣的结果。 我肯定会猜中其中一些,但一些结果也令我感到惊讶,尤其是离群值,例如很少使用的NCSA许可证。

总而言之,您可以看到CHAOS SEARCH平台如何使我们轻松快速地找到有趣问题的复杂答案。 我深入研究了该数据集并接受了深入的分析,而不必自己运行任何数据库,甚至将数据廉价地存储在Amazon S3上,因此几乎不需要维护。 现在,我可以随时问有关数据的任何其他问题。

您还问什么其他问题,以及使用哪些数据集? 在评论中或在Twitter @petecheslock上让我知道。

本文的一个版本最初发布在CHAOS SEARCH上


接下来要读什么

翻译自: https://opensource.com/article/19/5/chaossearch-github-ghtorrent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值