2018 · 26 citations · 18 references
ComputingComputer ScienceInformation TechnologySoftware EngineeringSystems ArchitectureSystems ProgrammingApplication Programming InterfacesDependency ManagementKnowledge RepositoriesSoftware MaintenanceSoftware ReuseVersion ControlAccess Control DesignMonolithic ArchitectureVersion Dependency Management
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.
18
Fay W. Chang, Sanjay Ghemawat, Wilson C. Hsieh et al. · ACM Transactions on Computer Systems · 2008 · 3.4K citations
Rcs — a system for version control
Walter F. Tichy · Software Practice and Experience · 1985 · 950 citations
The promises and perils of mining GitHub
Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe et al. · 2014 · 755 citations
The source code control system
Marc Rochkind · IEEE Transactions on Software Engineering · 1975 · 711 citations
A large scale study of programming languages and code quality in github
Baishakhi Ray, Daryl Posnett, Vladimir Filkov et al. · 2014 · 385 citations