Pros:
Knowledge Sharing
Common styles and themes
Easier for team members to switch projects
Easier to track dependencies between projects
Example: I don't have to find the repository where a particular service lives
Engineers can see work and progress of other people
Engineers are not siloed
Cons:
Possibility of a lot of noise/overheads
Examples:
Angular
Babel
Ember
Jest
React
Tools:
For JavaScript/Node.js: Lerna​
Alternatives:
Consider having fewer repos, but larger
Examples:
Actually has many repos, but few (say less than 10)
One huge repository built by Google
​Microsoft's Azure​
Pros:
Independent teams and styles
Cons:
Problems with coordination
Limits knowledge sharing across repositories
Context switching between work across repositories
Hard to enforce styles
Smaller repos, but many
Engineers can be siloed
Hard to track depedency management
Common in:
Microservices
FaaS / Serverless
Examples:
Amazon
Skype
Also known as:
Polyrepo
​ | Monolithic | Non Monolithic |
Monorepo | Option A | Option B |
Multirepo | Option C | Option D |
Pros:
Knowledge sharing
Cons:
Increased operaitonal complexity and cognitive load