3 ms·
It works well when most of your code is written in-house. If you have a lot of external dependencies -- not so good. The problem is what version of the third-p
by deepsun 10y ago
It works well when most of your code is written in-house. If you have a lot of external dependencies -- not so good.
The problem is what version of the third-party dependency is various projects in the BIG repo should depend on.
Article mentions that: "To prevent dependency conflicts, as outlined earlier, it is important that only one version of an open source project be available at any given time. Teams that use open source software are expected to occasionally spend time upgrading their codebase to work with newer versions of open source libraries when library upgrades are performed."
So if you have a lot of external dependencies -- you need a dedicated team to synchronize them with all your internal projects.
- willvarfar 10y agoThe article doesn't say that google need dedicated teams to synchronize with external open source projects. The teams that use each external dependency are responsible for maintaining that as par the course.
- cpeterso 10y agoBut the teams using the external dependency need to synchronize with each other before they can (all) update to a new version.
- nevir 10y agoIt can still be painful to use open source projects internally because of the monorepo's structure. There was/is a rule to have a maximum of one version of any given OSS package at a time (more or less). In general, the rule was good, as it kept most teams up to date with the latest security patches, etc. It did, however, incur a fair bit of pain, as you frequently had to bump a myriad of dependents whenever bumping some package. And npm packages were/are a real nightmare to manage due to that rule. Particularly when you have some popular npm packages that end up (transitively) depending on 3+ versions of a particular package.
- cmrdporcupine 10y agoWhen submitting a third party package to the repo you become the third party package maintainer. And it's your responsibility to make sure you don't break the world when updating it. If people using it want a newer version (only one version can live in the repo, by policy) it is generally their responsibility to manage that transition. It's been a long time since I managed a third party package, but that's my rough recollection. The other thing is that third party packages are checked in as source. Everything is built from source at Google.
- iamchrisle 10y agoThis is still how it's done today.