Monorepo is a way to morph dependency management problem into source control problem within your organization. Currently, FOSS tools solve none of them.
Monorepo is a way to morph dependency management problem into source control problem within your organization. Currently, FOSS tools solve none of them.
But, this is what you get when the barrier of entry for software development has been set so low :)
Millions of developers using tools that they don't fully understand to produce sub-par solutions.
I am so happy that this is the state, so people who can build working, delivered on time solutions are getting paid very well.
Also, with an unsolved problem you get paid to make whatever crazy attempt you want, which is absolutely a perk.
Here's an example: let's say that is you've got a single product with a backend server, database, web frontend, and a iOS app. How would you release all those projects as an atomic unit?
If there's a new field in this release, the database schema needs to be changed on the servers before the backend is released. The backend needs to change before the frontends do. You have no control over the deployment speed of some of those components, so releasing them all at the same time is impossible.
Similar issues would happen if you update 3rd party library, and software using the new Vs. old versions of the library are incompatible.
So the value of this monorepo isn't that you could cut a release for all of the components at once. It is that everyone doing development has a shared view of the current state of the system.
- git on large repo 100% pain 0% fun. hg is slightly better, but not much.
- No version means no prebuilt libraries, which translates to "you need a great build cache to keep build time reasonable".
- "passes all the tests everything is good" if only we can run all the tests on such changes.
- People hate coordinating on imported/pinned third-party dependency versions, sometimes you need tools for large-scale automated changes to make progress, but :(
- Similarly, not all places make all their codes accessible to all engineers.
i.e. source control problem is, sometimes, harder.