Comment by deepsun
4 years ago
Two more reasons Google doesn't touch others code:
1. They have monorepo with custom build infra, which makes integrating any third_party code pretty hard.
2. In google career culture, one gets promoted for development of something new, not integrating existing proved solutions.
>They have monorepo with custom build infra, which makes integrating any third_party code pretty hard.
Why would it be significantly harder than creating new project?
Different company, maybe different problem, but importing code at Facebook was similarly difficult. The build issues were the least of it. More significant by far were the all-but mandatory requirements to integrate with the in-house deployment infrastructure, service discovery, background-task scheduling, metrics, logs, alerts, data structure libraries, RPC framework, etc. Your project already implemented some of those internally, or used open-source alternatives? Too bad. You could keep the core logic, but practically everything about how it connected to the rest of the world would have to be rewritten. Often, it just wasn't worth it, and a new "FB native" service reimplementing the same functionality was easier. If you didn't do it yourself, some other group would constantly be threatening to do it for you. It's hard to focus on code when you continually have to justify your project's very existence.
One problem I know -- different versions. They actually do have a small amount of third_party libs, but due to "diamond dependency" problem, they are accepting only only one single version of that dependency. And updating that dependency is a huge undertaking (even for small security bugfixes), so those libs are usually outdated.
Kinda similar to OS kernel organization: monolith vs. microkernel.