Deprecation
Marking something as superseded and scheduled for removal, without removing it yet.
Deprecation is the practice of declaring an interface obsolete — still working, but no longer recommended, and slated for removal — so dependants have a window to migrate. It is the compromise between breaking people immediately and carrying an alternative forever. The window is worth the trouble because dependants rely on more than the documented interface: Hyrum's Law observes that with enough users, every observable behavior of a thing is depended on by somebody, so the population affected by a removal is never fully knowable in advance.
A deprecation is only useful if it names three things: what replaces the old thing, when it will be removed, and how to tell whether you are affected. Deprecations lacking those degrade into permanent decoration, which is Technical Debt wearing a warning label.
The removal half is where deprecations actually fail. Retiring a component leaves residue that no compiler catches: doc comments referring to the departed symbol, tests keyed on a shape that no longer exists (and which therefore silently walk nothing), change descriptions narrating work that has been undone, and configuration entries that still advertise a value nothing reads. A search for the retired name across the whole repository — including commit messages and documentation, not just source — is the step that finds them. See Silent Failure and Schema Drift.
Version numbering is how deprecations are communicated at the package boundary; see Semantic Versioning.
See also4
Documentation Rot
Documentation that has drifted from the system it describes, and is now worse than none.
Method27 connections
Technical Debt
The future cost of a present shortcut, metaphorically accruing interest.
Method24 connections
Semantic Versioning
A version-numbering convention where the number communicates the kind of change.
Version Control & Delivery14 connections
Regression
A previously working behavior that a change has broken.
Method19 connections
Related3
Nearby in the graph rather than deliberately chosen. Looser, sometimes surprising.
Linked from10
- Documentation RotMethod
Documentation that has drifted from the system it describes, and is now worse than none.
- Game PreservationPlay & Games
The effort to keep games playable against delisting, license expiry, server shutdown and hardware rot.
- Hyrum's LawVersion Control & Delivery
With enough users, every observable behavior of an interface becomes a dependency for somebody.
- Live Service GamePlay & Games
A game operated as a running service rather than shipped as a finished artifact, with the consequences that shift implies.
- Path DependenceMethod
Outcomes shaped by the sequence of past choices rather than by present merit.
- Permissive LicenseVersion Control & Delivery
A license family that imposes little beyond attribution and a warranty disclaimer.
- Schema DriftData & Content
Divergence between a schema and the code, types, or documentation that describe it.
- Semantic VersioningVersion Control & Delivery
A version-numbering convention where the number communicates the kind of change.
- Technical DebtMethod
The future cost of a present shortcut, metaphorically accruing interest.
- Yak ShavingMethod
A chain of prerequisite tasks that stands between you and the task you meant to do.