[논문 리뷰] On GitHub's Programming Languages
이 논문은 2007년에서 2014년까지 GitHub 생태계에 대한 대규모 분석을 제시하며, 1,000만 명의 사용자, 1,600만 개의 저장소, 30억 건의 기여를 포함한 데이터셋을 사용한다. 사용자-저장소-기여 행렬에 k-means 군집화를 적용하여 웹 프로그래밍 언어(JavaScript, Ruby, PHP, CSS)와 시스템 중심 언어(C, C++, Python)라는 두 가지 주요 군집을 식별하고, 사용자 기반의 계통수 나무를 구축하여 오픈소스 소프트웨어 개발의 구조적 패턴을 드러낸다.
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 군집화를 적용하였다.
- 계층적 군집화와 비지도 학습을 사용하여 사용자-저장소 상호작용 기반의 프로그래밍 언어 계통수 나무를 유도하였다.
- 상위 1,000개의 저장소를 분석하여 주 언어와 보조 언어를 식별하였으며, 코드 라인 비율과 PageRank를 사용해 순위를 매겼다.
- Stack Overflow 및 TIOBE와 같은 외부 자료와 비교하여 언어 인기 추세의 타당성을 검증하였다.
실험 결과
연구 질문
- RQ1GitHub의 저장소에서 프로그래밍 언어 사용에 있어서 지배적인 구조적 패턴은 무엇인가?
- RQ2사용자 기여와 저장소 내 동시 출현 빈도 기반으로 프로그래밍 언어는 어떻게 군집화되는가?
- RQ3현대 소프트웨어 프로젝트에서 주 언어와 보조 언어 간의 관계는 어떠한가?
- RQ4코드 라인 비율과 PageRank와 같은 지표가 상위 저장소 내 보조 언어를 얼마나 잘 순위 매기는가?
- RQ5GitHub에서의 사용자 기반 상호작용이 프로그래밍 언어 사용의 계통수 유사한 진화를 얼마나 잘 반영하는가?
주요 결과
- GitHub의 1,000만 명의 사용자 중 약 10%만 시간적 기여 패tern에 기반해 활성 사용자로 간주된다.
- 두 가지 명확한 프로그래밍 언어 군집이 나타난다: 웹 프로그래밍 언어(JavaScript, Ruby, PHP, CSS)와 시스템 중심 언어(C, C++, Python).
- 사용자-저장소 상호작용 기반으로 유도된 프로그래밍 언어 계통수 나무는 功能적 및 사용 기반 관계를 반영하는 계층적 구조를 드러낸다.
- 상위 1,000개의 저장소에서는 여러 프로그래밍 언어가 일반적으로 함께 사용되며, JavaScript와 HTML/CSS가 자주 보조 언어로 나타난다.
- PageRank와 코드 라인 비율은 서로 다른 상위 보조 언어를 식별한다: JavaScript는 둘 다 높은 순위를 차지하지만, TypeScript나 Go와 같은 언어는 고영향력 저장소에서 강력한 존재감을 보인다.
- 이 연구는 GitHub에서의 언어 인기와 Stack Overflow 및 TIOBE 순위 간에 상관관계가 있음을 확인했지만, 정확히 일치하지는 않음을 확인하여 플랫폼 특유의 동역학을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.