This line about the monorepo from the Dan Luu post always confuses me:
> With a monorepo, you just refactor the API and all of its callers in one commit.
I have experience working a monorepo at a mid-sized tech company (~1000 developers) and with Brazil at Amazon (tens of thousands of developers).
It's true that at my monorepo company, that's how we did it. However, I don't understand how this would work at Amazon's scale—for some packages you simply cannot update all the consumers at once and also as the vendor of an API, it's not my job to update the consumers. So I need to be able to have multiple versions of my interface resident at the same time. Brazil solves this problem with version sets.
How is it solved in these vaunted monorepos at Facebook and Google? If there are N core libraries that each have two versions of their APIs, it it possible for consumers to each pick and chose which APIs to use, or it enforced that libraries just have one version that is "live" at any time?
In general, most of these companies have automated tools to accomplish things like this. If you look at Steve Yegge's recent rant about GCP, you'll note that he mentions this as a use case for his tool, Grok. Link: https://medium.com/@steve.yegge/dear-google-cloud-your-depre...
> With a monorepo, you just refactor the API and all of its callers in one commit.
I have experience working a monorepo at a mid-sized tech company (~1000 developers) and with Brazil at Amazon (tens of thousands of developers).
It's true that at my monorepo company, that's how we did it. However, I don't understand how this would work at Amazon's scale—for some packages you simply cannot update all the consumers at once and also as the vendor of an API, it's not my job to update the consumers. So I need to be able to have multiple versions of my interface resident at the same time. Brazil solves this problem with version sets.
How is it solved in these vaunted monorepos at Facebook and Google? If there are N core libraries that each have two versions of their APIs, it it possible for consumers to each pick and chose which APIs to use, or it enforced that libraries just have one version that is "live" at any time?