My Thoughts on Monorepo
shekhargulati.com
shekhargulati.com
``` Monorepos could slow down developers because of slow build times, poor tooling, and merge conflicts.
Most developers still in 2020 struggle to cleanly merge code. Git is slow for projects with large numbers of files and history. There is cognitive overhead involved as developers have to get comfortable with a much larger code base than they would have with multirepo setup.
To do monorepo well require investment in tooling that most organization non-tech leadership will fail to understand ```
Monorepo is clearly more desirable than distributed repo. But it's not a cheap solution.
Sounds like the hiring bar is too low.
While it is possible (if difficult) in git, some VCS systems struggle even harder with this: Perforce and derivatives, for example, simply can't, by design, perform atomic test & commit.
¹like once a month, or so, over the whole company
What makes testing the end result of the merge tricky, I suppose, is that it changes over time. (As other people merge into whatever "stabilize branch" you have, the result of merging your branch and the new HEAD of the stabilize branch must change.)
We see this often with lockfiles (someone updates a dep, someone else adds a new dependency; the merge is a new dependency to a version of the dependency that no longer exists), or version numbers that get incremented (each author increments once; the second merge, git will consider it the same add on both sides, and not a conflict, so the result it original_version+1, when it should be original_version+2).