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)の2つの主要なプログラミング言語クラスタを同定し、ユーザー主導の系統樹的ツリーを構築した。これにより、オープンソースソフトウェア開発における構造的パターンが明らかになった。

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)と照合することで、言語の人気トレンドの妥当性を検証した。

実験結果

リサーチクエスチョン

  • RQ1GitHubのリポジトリ全体におけるプログラミング言語使用の支配的構造的パターンは何か?
  • RQ2ユーザーのコントリビューションとリポジトリにおける共起性に基づいて、プログラミング言語はどのようにクラスタリングされるか?
  • RQ3現代のソフトウェアプロジェクトにおける主言語と補助言語の関係は何か?
  • RQ4コード行数の割合やPageRankといったメトリクスは、トップリポジトリにおける補助言語をどのようにランク付けするか?
  • RQ5GitHubにおけるユーザー主導の相互作用は、プログラミング言語使用の系統的進化に類似した構造をどれほど反映しているか?

主な発見

  • GitHubの1000万人のユーザーのうち、時系列的コントリビューションパターンに基づくと約10%がアクティブとされる。
  • 2つの明確なプログラミング言語クラスタが出現する:Webプログラミング(JavaScript、Ruby、PHP、CSS)とシステム指向言語(C、C++、Python)。
  • ユーザー・リポジトリ相互作用から導出されたプログラミング言語の系統樹的ツリーは、機能的・使用ベースの関係を反映した階層的構造を示している。
  • トップ1000のリポジトリでは複数のプログラミング言語が一般的に使用されており、JavaScriptとHTML/CSSが頻繁に補助言語として登場する。
  • PageRankとコード行数の割合は、異なるトップ補助言語を特定する:JavaScriptは両方の指標で高いランクを獲得しているが、TypeScript や Go は高インパクトリポジトリにおいて顕著な存在感を示している。
  • 本研究は、GitHubにおける言語の人気がStack Overflow や TIOBEのランク付けと相関しているが、完全には一致しないこと、すなわちプラットフォーム固有のダイナミクスが存在することを確認した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。