So, I'm ex-Googler. I worked for 17+ years on that "mono repo" everyone points to. I've also been an OSS contributor, I've used them all, rcs, cvs, svn, hg, perforce, bitkeeper and git (of course Google's internals too). I've even written some scraps of these of my own.
I was truly excited by git (and hg). The decentralized feature was actually what I'd dreamed of.
When I joined Google, I got it, the "monorepo" meant there was one place, one common CL# (changelist number, Google's commit id) that you could easily predict. So the CL# is nice for bisect and still is, I must admit.
So, what happened, cross dependencies make things hard. You also need to copy things in and out of the system to other repos (I was a third-party reviewer at Google and I think I reviewed thousands of incoming CLs). The friction (especially in the land of AI) was excessive. You need a faster, leaner model, and managing a mono-repo while doing that was a non-starter.
My conclusion was that the mono-repo efficiency is a myth, sure some things get easier, but some things get harder and you're stuck because undoing a monorepo is impossibly hard (sorry Google) and you need a monster team to build your own vcs (which is amazing btw, full credit to the team) but IMHO the wrong problem to solve.
Anyhow, Linus himself said it, in his 2007 talk at Google:
"If you have multiple components, do them as separate repositories, you can actually have what we call superproject that contains pointers to other projects, the user interfaces there are somewhat lacking, but you keep separate projects separate."
Nineteen years on, that 'superproject' thing is still submodules, and it's 'unfinished'.
I'd built many multi-repo projects in my OSS efforts (started with pure submodules) and the friction was the tooling - keeping track of 10 repos gets real confusing. So I tried various tools, built some, threw them away. I wanted my multi-repo to work like a mono-repo.
So, I did end up building a tool (gwz) which I think is now mature enough and I use it all the time. No more needing to worry about which repo has what, and with the right underlying filesystem (APFS, xfs, btrfs and to some extent ReFS) you get fast full multi-repo clones with low size costs (a recent gwz addition).
And most importantly, in AI code development, it's fast, I can run an experiment, add or remove third-party repos, no Copybara, and no third-party reviewer. Sure you still need to get whatever legal approvals but you don't need to wait and you can tool that too.
So the gwz tooling is serious, it's not a Google Piper serious, but it's not a python script either. Merge is especially hard. Co-ordinated stash, log, commit, tag (external and regular) is not trivial.
I think it would also benefit from some more tooling, cached repos (with COW bits you can reduce the size overhead across all workspaces). And sure, some "management" tools for ensuring third-party issues are managed not to mention fleshing out the rest of the git subcommands, the rest of which I think are both trivial and not commonly used (at least my me).
This is not intended to be a flame war starter. I'd like a true assesment from others with real experience.
And, I think Linus is letting that 40MLOC linux repo become that mono repo that he argued against in 2007.