Coordinate rollout of breaking changes

When a library introduces a breaking change, consumers can’t update to that version until all their other dependencies which also use the library update to that version first. To enable clients to depend on the latest versions of all their dependencies, propagate breaking changes as quickly as possible.

Perform the rollout in this manner:

  1. Decide whether to introduce the incompatibility in a single release or make the change in two phases.
  2. Make sure that consuming libraries are prepared for the breakage.
  3. Release the incompatible version and make sure that the version propagates up the dependency tree as quickly as possible. In the case of in-place breakage, update the provisionally-approved PRs with published dependency versions, verify that CI passes, remove the “[DO NOT SUBMIT]” text from the title of the pull request, and finally get a formal approval to merge.