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 also7
Documentation Rot
Documentation that has drifted from the system it describes, and is now worse than none.
Method28 connections
Regression
A previously working behavior that a change has broken.
Method23 connections
Root Cause Analysis
Escalating past the visible symptom until you find the layer that actually produced it.
Method49 connections
Semantic Conflict
Two changes that merge cleanly and are incompatible in meaning.
Version Control & Delivery15 connections
Package Manager
The tool that resolves, fetches, and installs dependencies, and pins them for reproducibility.
Systems & Tooling27 connections
Architecture Decision Record
A short document recording one significant technical decision, its context, and its consequences, kept alongside the code so later readers know why the system is shaped the way it is.
Version Control & Delivery9 connections
Changelog
A curated, human-readable record of the notable changes in each version of a project, written for the people who use it rather than the people who built it.
Version Control & Delivery14 connections
Linked from15
- Architecture Decision RecordVersion Control & Delivery
A short document recording one significant technical decision, its context, and its consequences, kept alongside the code so later readers know why the system is shaped the way it is.
- Backward CompatibilityVersion Control & Delivery
Keeping new versions working with old code, data, and clients, the extreme lengths platforms go to preserve it, and the accumulated cost of never being allowed to change.
- ChangelogVersion Control & Delivery
A curated, human-readable record of the notable changes in each version of a project, written for the people who use it rather than the people who built it.
- 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.
- Long-Term SupportVersion Control & Delivery
A release line that receives security and bug fixes for years instead of months, letting users who value stability skip the constant upgrade treadmill.
- 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.
- Release TrainVersion Control & Delivery
Shipping on a fixed schedule whether or not a given feature is ready, so features that miss one release simply wait for the next instead of holding everyone back.
- 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.