Multiple external dependency closures in Bazel
Blog post from Aspect Build
Organizations transitioning to a monorepo often face the challenge of managing dependencies across applications, leading to decisions between a single version policy, multiple versions, or a middle-ground approach. The use of Bazel and its handling of dependencies across different programming languages—such as Python, JavaScript, and Go—plays a critical role in these decisions. Single version policies, like those used by Google, centralize dependency management but require robust automated testing and shared responsibility for updates. Conversely, many-versions policies allow each application to manage its own dependencies but risk version conflicts and complicate management. A couple versions policy serves as a compromise, maintaining some level of governance while allowing for disjoint dependency graphs. The text also highlights the challenges and potential solutions in aligning dependencies and handling external hosted runtimes, which may impose additional constraints on dependency management strategies.