Matt Klein
medium.com/@mattklein123 · Personal blog · on HN since 2017
Matt Klein, creator of Envoy proxy at Lyft, writes on software architecture, monorepos, DevOps scaling and open source economics.
What HN saysHN commenters cite his monorepo critique in debates over monorepos, praise his crash-early post, and describe Lyft's Envoy posts as fantastic.
31HN people shared it
6linked it in comments
28stories submitted
427story points
11 months agolast shared
2017people per year2026
Most-shared posts
- 1Monorepos: Please don’t6 people · 355 points · first shared 2019 · 391 comments on HN
- 2The human scalability of “DevOps”5 people · 10 points · first shared 2018 · discussion on HN
- 3The (broken) economics of OSS4 people · 16 points · first shared 2018 · 1 comments on HN
- 4Optimizing impact: why I will not start an Envoy platform company4 people · 12 points · first shared 2017 · discussion on HN
- 5Crash early and crash often for more reliable software3 people · 7 points · first shared 2019 · 1 comments on HN
- 6“Exceptional” Go3 people · 4 points · first shared 2018 · discussion on HN
- 7Envoy joins the CNCF1 people · 13 points · first shared 2017 · discussion on HN
- 8Lyft’s Envoy dashboards1 people · 3 points · first shared 2017 · discussion on HN
- 9The Universal Data Plane API1 people · 3 points · first shared 2017 · discussion on HN
- 10Meltdown and Spectre, explained1 people · 2 points · first shared 2018 · discussion on HN
- 11Career Advice for ICs1 people · 1 points · first shared 2020 · discussion on HN
- 12Embracing eventual consistency in SoA networking (Envoy)1 people · 1 points · first shared 2018 · discussion on HN
- 13Envoy threading model a8d44b9223101 people · first shared 2017
- 14Monorepos please dont e9a271 people · first shared 2021
- 15Homepage1 people · first shared 2020
What HN people wrote when they linked it
autocole · 2024-04-27
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-…
bndw · 2020-03-11
> 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
tsimionescu · 2021-11-12
> 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…
anon9001 · 2021-11-11
> 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.
sasham · 2024-01-22
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
moderation · 2017-09-03
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/