Deprecation

Deprecation is the discouragement of use of something human-made, such as a linguistic term, a proper name, a feature, design, functionality, piece of code, or practice. Typically a thing previously used is deprecated because it is—or is claimed or thought to be—inferior compared to other options now available. Deprecation is thus a mechanism for future improvement. Deprecation implies that the community (generally, or a community of experts, or a professional body governing a sector or industry) has determined that future use—of the term, name, device, design, or feature—is unwise; but also that its replacement or removal, from that which is extant, is not required or is non-urgent.
Something may be deprecated even though past or extant applications of it might still be useful or functional in particular contexts—the goal here need not be the complete replacement of that which has been deprecated but rather an improvement on some broad metric (eg, safety) of the stock of that thing over time. Thus: deprecation of archaic terms to obtain consistency and readability in language/terminology; deprecation of obsolete electrical components to improve safety and compatibility in the housing stock; or deprecation of certain shared code to improve an open-source software project.[1]
Deprecation typically implies or foreshadows a phasing out, a withdrawal or removal from availability, or a discontinuance of use or support, at some time in the future.
Etymology
[edit]In general English usage, the verb "to deprecate" means "to express disapproval of (something)". It derives from the Latin deponent verb deprecari, meaning "to ward off (a disaster) by prayer".
An early, documented usage of "deprecate" in the relevant sense is in Usenet posts in 1984, referring to obsolete features in 4.2BSD and the C programming language.[2] An expanded definition of "deprecate" was cited in the Jargon File in its 1991 revision,[3] and similar definitions are found in commercial software documentation from 2014[1] and 2023.[4]
Software
[edit]Deprecation is an improvement mechanism commonly used in software development, particularly where projects involve a large community of users or coders, or have long or complex development histories, or are rapidly iterating (thus generating more supersedence).
While a deprecated software feature remains in the software, its use may raise warning messages recommending alternatives or alternative practices. Deprecated status may also indicate the feature will be removed in the future. Features are deprecated, rather than immediately removed, to provide backward compatibility and to give programmers time to bring affected code into compliance with a new standard.
Notable reasons for deprecation include:
Reason | Example(s) |
---|---|
The feature has been replaced by a more powerful alternative feature. | The Linux kernel contains two modules to communicate with Windows networks: smbfs and cifs . The latter provides better security, supports more protocol features, and integrates better with the rest of the kernel. Since the inclusion of cifs , smbfs has been deprecated.[5]
|
The feature contains a design flaw, frequently a security flaw, and so should be avoided, but existing code depends upon it. |
|
The feature is considered extraneous and will be removed in a planned future version. | Early versions of the Web markup language HTML included a FONT element to allow page designers to specify the font in which text should be displayed. With the release of Cascading Style Sheets and HTML 4.0, the FONT element became extraneous, and detracted from the benefits of noting structural markup in HTML and graphical formatting in CSS. Thus, the FONT element was deprecated in the Transitional HTML 4.0 standard, and eliminated in the Strict variant.[8]
|
A planned future version of the software will make major structural changes, making it impossible or impractical to support older features. | When Apple Inc. planned the transition from Mac OS 9 to Mac OS X, it created a subset of the older system's API which would support most programs with minor changes: the Carbon library (which has since been deprecated itself), available in both Mac OS 9 and Mac OS X. Programmers who were, at the time, chiefly using Mac OS 9, could ensure that their programs would run natively on Mac OS X by using only the API functions supported in Carbon. Other Mac OS 9 functions were deprecated, and were never supported natively in Mac OS X.[9] |
Naming consistency. | An API may inconsistently mix spellings such as "color" and "colour" as a result of different developers using different spellings. To enforce consistency, all identifiers using one spelling would be duplicated for[clarification needed] the other spelling and identifiers using the unfavored spelling deprecated. |
A feature that once was available independently is combined with its co-feature. | In VLC Media Player, VLC used to stand for "VideoLan Client", and a separate "VideoLan Server" was available as its co-feature. Both the client and server became available in the same package, and so getting one independently would be impractical.[10] |
Devices, equipment, standards and codes
[edit]A building code example is the use of ungrounded ("2-prong") electrical receptacles (UK English: "unearthed"). Over time, these older devices were widely deprecated in favor of safer grounded ("3-prong") receptacles. The older, ungrounded receptacles were still permitted in many places by "grandfathering" them in existing electrical wiring, while prohibiting them for new installations. Sales and usage of ungrounded receptacles thus declined; and, if they were even still available for legal purchase in a location, they would be seen as obsolete, and would generally be intended only for repairs to existing, older electrical installations.
In technical standards, use of a certain clause may be discouraged or superseded by new clauses. As an example, in the Ethernet standard IEEE 802.3-2012, parts of Clause 5 (Layer Management) are deprecated or superseded by Clause 30 (Management).
Names and terminology: science, medicine, chemistry
[edit]In writing and editing, usage of a word may be deprecated because it is ambiguous, confusing, or offensive to audiences or certain members thereof. For example, the words sanction and inflammable may be misinterpreted because they have auto-antonymic or self-contradictory meanings; writing style guides often recommend substituting other words that are clearly understood and unambiguous. Some words, or word usages (meanings), that have acquired different connotations over time (such as gay, or colored), may be deprecated to avoid issues (or distraction) due to ambiguity, obsolescence or offense.
Deprecation may also occur when a technical or scientific term becomes incorrect or obsolete, either through change or supersession or further scientific discovery or the development of new scientific consensus.[clarification needed] An example from paleontology is the previous (and now discontinued) deprecation of the term Brontosaurus in favor of the genus Apatosaurus (which Brontosaurus was, for a time, thought to be a part of).[11][12]
Some deprecated terms in medicine are consumption (tuberculosis), grippe (influenza), and apoplexy (stroke). Superseded or misleading names of medical conditions or diseases are often deprecated, in order to avoid confusion, stigma, or misunderstandings about their risks (eg, "gay related immune deficiency syndrome", the initial term for HIV-AIDS, was erroneous and discriminatory and quickly deprecated). A recent example is "monkeypox", the deprecated term used initially to describe what the medical community now refers to as Mpox.
In chemical nomenclature, the international standards organization IUPAC (International Union of Pure and Applied Chemistry) has deprecated the term "methyl ethyl ketone", and now recommends using the term "ethyl methyl ketone" instead.[13]
See also
[edit]- Abandonware
- Grandfather clause
- List of deprecated terms for diseases
- Obsolescence
- Orphaned technology
References
[edit]- ^ a b "JEP 277: Enhanced Deprecation". openjdk.java.net. Archived from the original on 19 September 2018. Retrieved 9 February 2018.
- ^ Shea, Ammon. "A New Meaning of 'Deprecate'". Words We're Watching. Merriam-Webster. Retrieved 1 March 2023.
- ^ Raymond, Eric S.; Steele, Guy L., eds. (July 1992). The Jargon File, Version 2.9.10. Retrieved 1 March 2023 – via Project Gutenberg.
- ^ Stewart, Meghan (27 February 2023). "Windows client features lifecycle". What's new in Windows. Microsoft. Retrieved 1 March 2023.
- ^ "On the future of smbfs". LWN.net. 15 May 2006. Retrieved 1 March 2023.
- ^ GNU. "Line Input". The GNU C Library. GNU. Archived from the original on 26 January 2021. Retrieved 2 August 2008.
Deprecated function: char * gets (char *s). ... The
gets
function is very dangerous because it provides no protection against overflowing the strings
. The GNU library includes it for compatibility only. You should always usefgets
orgetline
instead. - ^ "Java Thread Primitive Deprecation". Oracle. Archived from the original on 15 October 2011. Retrieved 13 May 2011.
- ^ Musciano, Chuck; Kennedy, Bill (2007). "HTML's Obsolete Expanded Font Handling". HTML & XHTML : the definitive guide (6th ed.). Beijing: O'Reilly. ISBN 978-0-596-52732-7. OCLC 77574682.
- ^ Simenel, Éric (2000). "Carbonization 101". MacTech. Vol. 16, no. 12. Retrieved 1 March 2023.
- ^ "The cross-platform streaming solution". VideoLAN. Retrieved 1 March 2023.
- ^ "Brontosaurus Finally Validated as a Distinct Dinosaur". ABC News. Archived from the original on 9 April 2020. Retrieved 27 June 2020.
- ^ Upchurch, Paul; Barrett, Paul M.; Dodson, Peter (2004). "Sauropoda". In Weishampel, David B.; Dodson, Peter; Osmólska, Halszka (eds.). The Dinosauria (2nd ed.). Berkeley: University of California Press. pp. 259–322. ISBN 0-520-24209-2.
- ^ Nomenclature of Organic Chemistry : IUPAC Recommendations and Preferred Names 2013 (Blue Book). Cambridge: The Royal Society of Chemistry. 2014. p. 725. doi:10.1039/9781849733069-FP001. ISBN 978-0-85404-182-4.
External links
[edit]- How and When To Deprecate APIs from the JDK 5.0 Documentation