Advantages and Disadvantages of a Monolithic Repository: A Case Study at Google
Jaspan, Ciera and Jorde, Matthew and Knight, Andrea and Sadowski, Caitlin and Smith, Edward K. and Winter, Collin and Murphy-Hill, Emerson
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.
@inproceedings{jaspan+:icse18-advantages-disadvantages-monorepo,
address = {New York, NY, USA},
author = {Jaspan, Ciera and Jorde, Matthew and Knight, Andrea and Sadowski, Caitlin and Smith, Edward K. and Winter, Collin and Murphy-Hill, Emerson},
booktitle = {Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice},
date-added = {2020-11-15 23:36:57 -0800},
date-modified = {2020-11-15 23:36:57 -0800},
isbn = {9781450356596},
location = {Gothenburg, Sweden},
numpages = {10},
pages = {225--234},
publisher = {Association for Computing Machinery},
series = {ICSE-SEIP '18},
title = {Advantages and Disadvantages of a Monolithic Repository: A Case Study at Google},
year = {2018},
bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxA8cGFwZXJzL2phc3BhbitpY3NlMTgtYWR2YW50YWdlcy1kaXNhZHZhbnRhZ2VzLW1vbm9yZXBvLWEucGRmTxEB/AAAAAAB/AACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////H2phc3BhbitpY3NlMTgtYWR2YSNGRkZGRkZGRi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAQADAAAKIGN1AAAAAAAAAAAAAAAAAAZwYXBlcnMAAgBbLzpVc2VyczpnYW1ibGluMjpzcmM6YnVpbGQtYmliOnBhcGVyczpqYXNwYW4raWNzZTE4LWFkdmFudGFnZXMtZGlzYWR2YW50YWdlcy1tb25vcmVwby1hLnBkZgAADgBsADUAagBhAHMAcABhAG4AKwBpAGMAcwBlADEAOAAtAGEAZAB2AGEAbgB0AGEAZwBlAHMALQBkAGkAcwBhAGQAdgBhAG4AdABhAGcAZQBzAC0AbQBvAG4AbwByAGUAcABvAC0AYQAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAWVVzZXJzL2dhbWJsaW4yL3NyYy9idWlsZC1iaWIvcGFwZXJzL2phc3BhbitpY3NlMTgtYWR2YW50YWdlcy1kaXNhZHZhbnRhZ2VzLW1vbm9yZXBvLWEucGRmAAATAAEvAAAVAAIAD///AAAACAANABoAJABjAAAAAAAAAgEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAmM=},
bdsk-url-1 = {https://doi.org/10.1145/3183519.3183550}
}