Advantages and Disadvantages of a Monolithic Repository: A Case Study at Google | IEEE Conference Publication | IEEE Xplore

Advantages and Disadvantages of a Monolithic Repository: A Case Study at Google


Abstract:

Monolithic source code repositories (repos) are used by several large tech companies, but little is known about their advantages or disadvantages compared to multiple per...Show More

Abstract:

Monolithic source code repositories (repos) are used by several large tech companies, but little is known about their advantages or disadvantages compared to multiple per-project repos. This paper investigates the relative tradeoffs by utilizing a mixed-methods approach. Our primary contribution is a survey of engineers who have experience with both monolithic repos and multiple, per-project repos. This paper also backs up the claims made by these engineers with a large-scale analysis of developer tool logs. Our study finds that the visibility of the codebase is a significant advantage of a monolithic repo: it enables engineers to discover APIs to reuse, find examples for using an API, and automatically have dependent code updated as an API migrates to a new version. Engineers also appreciate the centralization of dependency management in the repo. In contrast, multiple-repository (multi-repo) systems afford engineers more flexibility to select their own toolchains and provide significant access control and stability benefits. In both cases, the related tooling is also a significant factor; engineers favor particular tools and are drawn to repo management systems that support their desired toolchain.
Date of Conference: 30 May 2018 - 01 June 2018
Date Added to IEEE Xplore: 30 August 2018
ISBN Information:
Conference Location: Gothenburg, Sweden

1 Introduction

Companies today are producing more source code than ever before. Given the increasingly large codebases involved, it is worth examining the software engineering experience provided by the various approaches for source code management. Large companies with multiple products typically have many internal libraries and frameworks, and a vast number of dependencies between projects from entirely separate parts of the organization. Successfully organizing these dependencies and frameworks is crucial for development velocity.

Contact IEEE to Subscribe

References

References is not available for this document.