Skip to main content
QUICK REVIEW

[论文解读] On GitHub's Programming Languages

Amirali Sanatinia, Guevara Noubir|arXiv (Cornell University)|Mar 1, 2016
Distributed and Parallel Computing Systems参考文献 18被引用 6
一句话总结

本文对2007年至2014年GitHub生态系统进行了大规模分析,使用了包含1000万名用户、1600万个仓库和30亿次贡献的数据库。通过将用户-仓库-提交矩阵应用k-means聚类,识别出两类主导的编程语言——Web类(JavaScript、Ruby、PHP、CSS)和系统导向类(C、C++、Python),并构建了基于用户行为的编程语言系统发育树,揭示了开源软件开发中的结构性模式。

ABSTRACT

GitHub is the most widely used social, distributed version control system. It has around 10 million registered users and hosts over 16 million public repositories. Its user base is also very active as GitHub ranks in the top 100 Alexa most popular websites. In this study, we collect GitHub's state in its entirety. Doing so, allows us to study new aspects of the ecosystem. Although GitHub is the home to millions of users and repositories, the analysis of users' activity time-series reveals that only around 10% of them can be considered active. The collected dataset allows us to investigate the popularity of programming languages and existence of pattens in the relations between users, repositories, and programming languages. By, applying a k-means clustering method to the users-repositories commits matrix, we find that two clear clusters of programming languages separate from the remaining. One cluster forms for "web programming" languages (Java Script, Ruby, PHP, CSS), and a second for "system oriented programming" languages (C, C++, Python). Further classification, allow us to build a phylogenetic tree of the use of programming languages in GitHub. Additionally, we study the main and the auxiliary programming languages of the top 1000 repositories in more detail. We provide a ranking of these auxiliary programming languages using various metrics, such as percentage of lines of code, and PageRank.

研究动机与目标

  • 理解GitHub庞大开源生态系统中编程语言使用的结构性与动态模式。
  • 基于用户贡献和仓库交互,识别编程语言之间的相关性与层次关系。
  • 通过代码行数和PageRank等指标,分析顶级仓库中编程语言的流行度与辅助使用情况。
  • 构建基于用户行为的编程语言系统发育树,揭示其演化与功能关系。
  • 为未来软件开发动态研究提供公开可访问的综合性数据集。

提出的方法

  • 收集了2007年至2014年GitHub完整镜像,涵盖用户、仓库、贡献及用户关系数据。
  • 构建用户-仓库-提交矩阵,以表示开发者与项目之间的贡献模式。
  • 应用k-means聚类,基于编程语言在仓库中的共现情况,识别出编程语言的显著分组。
  • 使用层次聚类与无监督学习方法,基于用户-仓库交互推导出编程语言的系统发育树。
  • 分析前1000个仓库,通过代码行占比与PageRank对主要与辅助编程语言进行排名。
  • 将研究结果与Stack Overflow和TIOBE等外部数据源进行对比,以验证语言流行趋势。

实验结果

研究问题

  • RQ1在GitHub的仓库中,编程语言使用的主要结构性模式是什么?
  • RQ2编程语言如何根据其在用户贡献与仓库中的共现情况聚类?
  • RQ3现代软件项目中,主要与辅助编程语言之间存在何种关系?
  • RQ4代码行占比与PageRank等指标如何对顶级仓库中的辅助编程语言进行排名?
  • RQ5GitHub上的用户驱动互动在多大程度上反映了编程语言使用类似系统发育的演化过程?

主要发现

  • 仅约10%的GitHub 1000万名用户根据时间序列贡献模式被认定为活跃用户。
  • 两类显著的编程语言集群浮现:Web编程类(JavaScript、Ruby、PHP、CSS)与系统导向类(C、C++、Python)。
  • 基于用户-仓库交互推导出的编程语言系统发育树,揭示了反映功能与使用关系的分层结构。
  • 在前1000个仓库中,多种编程语言被普遍使用,JavaScript与HTML/CSS常作为辅助语言出现。
  • PageRank与代码行占比识别出不同的顶级辅助语言:JavaScript在两项指标中均排名靠前,而TypeScript与Go在高影响力仓库中表现出显著存在感。
  • 本研究证实,GitHub上的语言流行度与Stack Overflow和TIOBE的排名相关,但并不完全一致,表明存在平台特异性动态。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。