Package Management as Org Chart
9 hours ago
- #dependency-management
- #software-architecture
- #organizational-structure
- Conway’s Law states that an organization's system design mirrors its communication structure, including dependency management strategies.
- Dependency management tools encode resolution strategies and manifest formats that define permissible dependencies and how conflicts are resolved.
- Different strategies reflect organizational dynamics: monorepos enforce uniformity, workspaces allow autonomy, and tools like Bazel enforce explicit dependencies.
- Maven uses 'nearest-wins' mediation, prioritizing proximity in the dependency tree, akin to top-down organizational decision-making.
- Containerization (e.g., Docker) shifts control to developers, while infrastructure-as-code (e.g., Terraform) creates interfaces to reduce paging.
- Runtime dependency negotiation (e.g., module federation) defers version resolution to avoid inter-team conflicts, reflecting fragmented leadership.
- Strategies like vendoring dependencies or using lockfiles represent responses to past issues, such as upstream instability or bad experiences.
- Automated tools (e.g., semantic-release) reduce human liability in releases, and Go's MVS ensures upgrades occur only when explicitly required.
- Onboarding tools (e.g., Brewfile) may formalize processes but often fail, relying on informal support channels like Slack for actual setup.