Matt Klein, creator of Envoy proxy at Lyft, writes on software architecture, monorepos, DevOps scaling and open source economics.
HN commenters cite his monorepo critique in debates over monorepos, praise his crash-early post, and describe Lyft's Envoy posts as fantastic.
> I strongly disagree with that, but I'll let this blog post explain it better than I can: https://medium.com/@mattklein123/monorepos-please-dont-e9a27...
That article completely misses the point about project history - a monorepo has the full history of your project, while multiple repos split that history. If you have a good split, everything is fine, but if you're moving code between repos relatively often, everything gets muddled.
It also overstates the need for build artifact management in a monorepo. For 3rd party code that has a good package management solution you can use that, while still using the simpler solution of no dependency management for internal libraries, in the good old C tradition. I will again point to the Linux kernel as a good example of doing this successfully - they don't do any kind of versioned build artifacts for any of the many tens of libraries they use - they just rely on git.
> I thought it was fairly well known that monorepos came directly from Google as part of their SRE strategy. It didn't even come into common usage until around 2017 (according to wikipedia). If I'm remembering correctly, the SRE book recommends it, and that's why it gained popularity.
While Google may have coined this term in 2017, the idea of keeping all of an organization's code into a single repo was around since forever. The ~1k dev company I work for had a single Perforce repo with history going back to 1998 or something like that.
> Also, I don't believe that…
> Monorepos are much easier for everyone to use, and are the only natural way to manage code for any project.
I strongly disagree with that, but I'll let this blog post explain it better than I can: https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b
> You keep talking about Google, but a much more famous monorepo is Linux itself.
I thought it was fairly well known that monorepos came directly from Google as part of their SRE strategy. It didn't even come into common usage until around 2017 (according to wikipedia). If I'm remembering correctly, the SRE book recommends it, and that's why it gained popularity.
Also, I don't believe that Linux is a valid interpretation of "monorepo". Linux is a singular product. You can't build the kernel without all of the parts.
A better example would be if there was a "Linus" repo that contained both git and linux. There isn't, and for good reason.
> The fact that git is very poor at scaling monorepos might mean that it's a bad idea to use git for larger organizations, not that it's a bad idea to use monorepos. If git can be improved to work with monorepos, all the better.
Any performance improvement in git is welcome, but anything that sacrifices a full clone of the entire repository is antithetical to decentralization.
The whole point of git is decentralized source code.
Monorepos are indeed causing problems with git, and this is one of the main arguments against them (see [1]). Some companies are building their own solutions (Google, Meta), and some are splitting their monorepos because of these problems. IMO if a company wants to run a monorepo for their reasons, they shouldn't be limited by their VCS.
The technical details are for the readers who want to know, I agree it's not really important for the users (most of them, at least).
[1] https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b
Good article by the creator [0] on how Lyft's relatively new L4-7 proxy called Envoy [1] handles multi-threading at https://medium.com/@mattklein123/envoy-threading-model-a8d44b922310. There are now more people at Google contributing to Envoy than Lyft.
0. https://twitter.com/mattklein123/
1. https://lyft.github.io/envoy/
Very enjoyable read, and this single supervisor is similar to how I set up an application at a previous startup, where we unwrapped everything. This reminds me of one of my favorite posts https://medium.com/@mattklein123/crash-early-and-crash-often-for-more-reliable-software-597738dd21c5
> Lyft, on the other hand, disappointed me
Lyft has put out some fantastic blog posts around their work on Envoy. Check out the posts by Matt Klein: https://medium.com/@mattklein123