Evolving a shared library with an API in flux is a tough problem, but there’s plenty of principles, practices and patterns around this.
Parallel Change - Parallel change, also known as expand and contract is a pattern to implement backward-incompatible changes to an interface in a safe manner by breaking the change into three distinct phases: expand, migrate, and contract.
Postel’s Principle - Be conservative in what you send; be liberal in what you accept.
Refactoring Module Dependencies - Some patterns for refactoring module dependencies
Package Management Principles - Principles of packages (REP, CCP, CRP, ADP, SDP, SAP). Think of these as a higher-level version of SOLID.
Strangler Application - A metaphor describing growing a new system around the edges of old.
Asset Capture - A strategy for migrating between a strangler application and back again.
On the Criteria to be used in Decomposing Systems into Modules - Parnas’ classic paper on modular systems (referenced by Tim in his recent talk).
Escape Integration Test Syrup - Talk from Agile on the Beach about testing and rapidly changing dependencies.
Semantic Versioning - For completeness!