Learning path

Full curriculum

Full curriculum

Arrows go from each prerequisite to the units that depend on it. Hover or focus a unit to highlight its path.

Unit content

Semantic versioning and deprecation

A version number communicates which published interface a consumer is selecting. Semantic Versioning uses the form

$$\text{MAJOR.MINOR.PATCH}$$

to classify changes to a declared public API:

  • PATCH: backward-compatible fixes;
  • MINOR: backward-compatible additions;
  • MAJOR: incompatible changes.

The numbers are only useful when the project has a clear public contract. Changing an undocumented implementation detail does not necessarily require a major version, while changing documented behavior can.

Deprecation provides a transition before removal. The old interface remains usable but is marked for replacement, documentation points to the new path, and consumers are given time or tooling to migrate.

Versioning does not make incompatible changes safe by itself. It communicates them. Systems that cannot update every consumer simultaneously still need compatibility windows and migration plans.

A useful version policy therefore connects release numbers to the actual stability promises made to users and dependent software.