Advantages and Disadvantages of a Monolithic Codebase
Citation: Ciera Jaspan, Matthew Jorde, Andrea Knight, Caitlin Sadowski, Edward K. Smith, Collin Winter, Emerson Murphy-Hill (2018) Advantages and Disadvantages of a Monolithic Codebase.
Interviews software engineers at Google, a company using a monorepo (paper defines criteria for what constitutes a monorepo) and analyzes access logs for tool use at Google to answer research questions:
(1) What do developers perceive as the benefits and drawbacks to working in a monolithic versus multi-repo environment?
(2) To what extent do developers make use of the unique advantages that monolithic repos provide?
Results highlight 5 themes:
- The visibility of a monolithic repo is highly impactful
- Developer tools may be as important as the type of repo
- There is a tension between consistent style and tool use with freedom and flexibility of the toolchain
- There is a tension between having all dependencies at the latest version and having versioned dependencies
- Reducing cognitive load is important, but there are many ways to achieve this
1-5 all contribute to RQ1, while RQ2 is most clearly answered by 1: developers frequently search across monorepo, including outside common libraries and area of responsibility...highlighting 2 and 5, search and dependency management can be achieved with multi-repos, with the right tooling.
Users search across monorepo frequently