Skip to content

Releases and Deprecation

  • A version number is a promise about compatibility: semver says a major bump may break callers and a minor bump may not.
  • Release from history, not from memory. Conventional commits make the next version and the changelog a function of the commits since the last tag.
  • With enough users, every observable behavior is depended on (Hyrum’s Law), so removing anything needs a policy: announce, warn, measure usage, migrate, then remove.
  • Deprecation is a feature with a budget: it has an owner, a timeline, and telemetry that shows when the last caller is gone.

Read the semver spec and the SWE at Google deprecation chapter, then the Kubernetes policy as a worked example of rules per API maturity level. In the course, craft.11 tags v1.0.0 of your system from a release workflow that writes the changelog, and craft.12 writes the deprecation policy that the API v1 to v2 migration (craft.14) follows.


Shipping is a contract with everyone downstream. Versions, changelogs, and deprecation windows are how that contract is stated, and automation from commit history is how it stays true.

Key ideas:

  • semver: MAJOR.MINOR.PATCH, pre-release and build metadata, and what counts as the public API (for your system: the HTTP surface, the C ABI, the file formats).
  • Release workflow: tag, changelog, built artifacts, all from CI, never from a laptop (craft.11, adding to the CI of dep.05).

Key ideas:

  • Policy: notice period per surface, warnings in responses and logs (Deprecation and Sunset HTTP headers), usage metrics, removal criteria (craft.12).
  • Applied: the openai-subset v1 to v2 migration in Maintenance.
ModuleTopicKindPass
craft.11Commits, semver, releases (v1.0.0)practice11
craft.12Deprecation policypractice11
#ModuleChapterKindPass
1craft.11Commits, semver, releases (v1.0.0)practice11
2craft.12Deprecation policypractice11
TrackConnection
Code Review and CIthe CI gate and commit lint the release builds on
Maintenancemigrations that follow the deprecation policy
Software Engineering at GoogleHyrum’s Law and deprecation at scale