Many organizations undergo rapid digital transformation nowadays. In such a setting, a common challenge is the understanding of software development dynamics. Horizontal relations between development teams are typically obscure and unobvious at a glance. Yet understanding them is important to manage organizational structure, plan hiring, and prioritize work.
This paper introduces complementary methods to analyze contributors to open source projects. We study several orthogonal contributor features to obtain an overview of existing collaborations and evaluate our methods on the GitLab organization, a large software company with over 500 employees and 110 projects with more than 2,000 external contributors as of 2019. The considered features include the alignment of commit time series, the developer experience reflected in contributed lines of code (LoC), and topic models related to code naturalness (Allamanis et al., 2017). We harness dimensionality reduction and clustering for visualization.
2 Related Work
Some researchers have already explored developer collaboration and recommendation through analysis of the coding activities. For example, Montandon et al. (2019)
Differing from these, we detect collaborators by working with fine-grained information from every commit: we analyze every file in the repository’s history.
This section presents a combination of three complementary developer analyses, and each clarifies a particular aspect of developers’ characteristics.
3.1 Data Processing
To gain the quantitative insight into source code required by further analyses, we employ Hercules111https://github.com/src-d/hercules and Gitbase222https://github.com/src-d/gitbase—tools that allow efficient and rapid mining of Git repositories. We gather the number of contributed lines per programming language per developer, the ownership information about each file (who edited each line the last), and the commit dates. We also extract the identifiers from each file and store their frequencies. There is the need for matching Git signatures to contributors. Therefore we aggregate all co-occurring emails and names to a single identity by finding connected components in the corresponding undirected co-occurrence graph. We have to exclude signature stubs such as gitlab@localhost. The help of GitLab API is intentionally avoided for versatility reasons.
3.2 Commit Time Series
The first analysis is grounded on aligning developers’ commits time series. People who work in a team tend to create commits at correlated times, because they often work on related, mutually dependent features. The relative commit frequency depends on the shared team planning, notably the deadlines. We found empirically that the absolute values of the time series are less important than the distribution shape.
Thus we extract how many commits were done by each developer per day, divide the values by the mean to normalize the resulting time series, and calculate the pairwise distance matrix using Fast Dynamic Time Warping (Salvador & Chan, 2007). Then we perform DBSCAN (Ester et al., 1996) clustering and run UMAP (McInnes et al., 2018) dimensionality reduction to visualize the clusters. Both mentioned algorithms operate on the explicit distance matrix.
3.3 Contributions by Programming Languages
The following way of grouping developers is based on the programming language, the amount and the nature of contributions (line additions, modifications, and deletions). Intuitively, these coarsely correlate with developer seniority and activity domains. Hence we exclude text markup files from the analysis. We reduce the influence of outliers by saturating all the values to the 95th percentile. Our distance metric is L2
. We visualize the distribution by applying UMAP, which preserves the local topological relations that should be highlighted in our case. We calculate clusters in the embedding space using K-Means, and their number is determined by the elbow rule. Running K-Means in the original space produces worse results due to its high-dimensionality and sparsity.
3.4 Source Code Identifiers
To complement the commit activity and the programming language usage analyses, we leverage the content of developers’ contributions in order to assign them topics that are representative of their activity. We compute the representation for each code file based on its content as a bag of TF-IDF scores of its identifiers. We then represent each developer by aggregating the representations of the code files they edited with a sum weighted by the proportion of the owned lines in each file. Finally, we apply ARTM (Vorontsov et al., 2015) to find decorrelated, sparse topics fitted to those representations and label them manually having obtained their most likely and specific terms.
We evaluate the three presented analyses on the codebase of the GitLab organization. That comprised 117 repositories, totaling 145 programming languages, 44,272 files and 12,895,956 lines of code in April 2019. Among the 2,956 contributors, we detected 210 current GitLab employees split in 37 teams (this is a lower bound given the algorithmic difficulties detailed in Section 3.1). A mapping from developers to teams is publicly available333https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/team.yml.
Fig. (a)a and Fig. (b)b reveal the temporal commit coupling of the contributors. GitLab employees are sorted into two clusters among five; commit activity alignment proves to be a reliable way to tell GitLab employees from external contributors. However, the finer structure often does not respect the teams. For example, cluster #2 groups high frequency committers across the company, one of them being GitLab’s CEO.
Finally, to evaluate the quality of a code topic, we retrieve the teams of the contributors for whom the evaluated topic is the preponderant one. Results shown in Table 1 highlight that the topic modeling analysis strongly correlates with GitLab teams. Table 2 shows examples of manually created labels.
This paper demonstrated how to identify existing collaborations in an organization by exploring the topological structure of three feature spaces of a codebase: commit activity, usage of programming languages, and topics of source code identifiers. Clustering proved insightful: we observed a good match with existing development teams in the GitLab organization, and additionally found several product-oriented inter-organizational squads. We traced the partial transition from Ruby to Go in GitLab’s backends, which was indeed decided at the company level. Commit series alignment distinguished between external and internal contributors well.
Our future research directions include leveraging the commits to external repositories since developers usually contribute to several open source projects that do not belong to their company. Furthermore, it would be interesting to study how engineering teams have evolved as the company has grown. We believe that combining the recent advancements in machine learning with the expressive features can shed light on relevant coding collaboration opportunities.
- Allamanis et al. (2017) Miltiadis Allamanis, Earl Barr, Premkumar Devanbu, and Charles Sutton. A survey of machine learning for big code and naturalness. ACM Computing Surveys, 51(4):81, 2017.
- Ester et al. (1996) Martin Ester, Hans-Peter Kriegel, Jorg Sander, and Xiaowei Xu. A density-based algorithm for discovering clusters a density-based algorithm for discovering clusters in large spatial databases with noise. In Proceedings of the International Conference on Knowledge Discovery and Data Mining, pp. 226–231, 1996.
- Greene & Fischer (2016) Gillian J. Greene and Bernd Fischer. Cvexplorer: Identifying candidate developers by mining and exploring their open source contributions. In Proceedings of the International Conference on Automated Software Engineering, pp. 804–809, 2016.
- Hauff & Gousios (2015) Claudia Hauff and Georgios Gousios. Matching github developer profiles to job advertisements. In Proceedings of the International Conference on Mining Software Repositories, pp. 362–366, 2015.
- Markovtsev & Kant (2017) Vadim Markovtsev and Eiso Kant. Topic modeling of public repositories at scale using names in source code. ArXiv, 1704.00135, 2017.
- McInnes et al. (2018) Leland McInnes, John Healy, and James Melville. Umap: Uniform manifold approximation and projection for dimension reduction. ArXiv, 1802.03426, 2018.
- Montandon et al. (2019) João Eduardo Montandon, Luciana Lourdes Silva, and Marco Tulio Valente. Identifying experts in software libraries and frameworks among github users. ArXiv, 1903.08113, 2019.
- Salvador & Chan (2007) Stan Salvador and Philip Chan. Toward accurate dynamic time warping in linear time and space. Intelligent Data Analysis, 11(5):561–580, 2007.
- Vorontsov et al. (2015) Konstantin Vorontsov, Oleksandr Frei, Murat Apishev, Peter Romov, and Marina Dudarenko. Bigartm: Open source library for regularized multimodal topic modeling of large collections. In Proceedings of the International Conference on Analysis of Images, Social Networks and Texts, pp. 370–381, 2015.