The Difference Between Deprecated, Depreciated and Obsolete

Terminology

Terminology Problem Overview


There is a lot of confusion about this and I'd like to know, what exactly is the difference between depreciated, deprecated and obsolete, in a programming context, but also in general.

I know I could just look at an online dictionary, and I have, even at many, but they don't all agree, or there are differences in what they say. So I decided to just ask here, considering I also want an answer in a programming context.

If I understand right, deprecated means it shouldn't be used anymore, because it has been replaced by a better alternative, or just because it has been abandoned. Obsolete means it doesn't work anymore, was removed, or doesn't work as it should anymore. And depreciated, if I understand right, once more, has completely nothing to do with programming and just means something has a lowered value, or was made worse.

Am I right, or am I wrong, and if I am wrong, what exactly do each of these mean?

Terminology Solutions


Solution 1 - Terminology

You are correct.

Deprecated means that it is still in use, but only for historical purposes and it will be removed probably in the next big release. It is recommended that you do not use deprecated functions or features - even if they are present in the current library for example.

Obsolete means that is already out-of-use.

Depreciated means the monetary value of something has decreased over time. E.g., cars typically depreciate in value.

Also for more precise definitions of the terms in the context of the English language I recommend using https://english.stackexchange.com/.

Solution 2 - Terminology

Records are obsolete, CDs are deprecated, and the music industry is depreciated.

Solution 3 - Terminology

In the context of describing APIs and such, "depreciated" is a misreading, misspelling, and mispronunciation of "deprecated".

I'm thinking people have just seen "depreciated" so often in other contexts, and "deprecated" so rarely, that they don't even register the "i" or lack thereof. It doesn't exactly help that their definitions are similar either.

Solution 4 - Terminology

Obsolete: should not be used any more

Deprecated: should be avoided in new code, and likely to become obsolete in a later version of the API

Depreciated: usually a typo for deprecated (depreciation is where the value of goods goes down over time, e.g. if you buy a new computer its resale value goes down month by month)

Solution 5 - Terminology

In computer software standards and documentation, the term deprecation is used to indicate discouragement of usage of a particular software feature, usually because it has been superseded by a newer/better version. The deprecated feature still works in the current version of the software, but it may raise error messages or warnings recommending an alternate practice.

The Obsolete attribute marks a program entity as one that is no longer recommended for use. Each use of an entity marked obsolete will subsequently generate a warning or an error since they are no longer in use or does not exist.

EDIT:

depreciated : Not sure how this relates to programming

Solution 6 - Terminology

With all due respect, this is a slight pet peeve of mine and the selected answer for this is actually wrong.

Granted language evolves, e.g., "google" is now a verb, apparently. Through what's known as "common use", it has earned its way into official dictionaries. However, "google" was a new word representing something heretofore non-existent in our speech.

Common use does not cover blatantly changing the meaning of a word just because we didn't understand its definition in the first place, no matter how many people keep repeating it.

The entire English-speaking computer industry seems to use "deprecate" to mean some feature that is being phased out or no longer relevant. Not bad, just not recommended. Usually, because there is a new and better replacement.

The actual definition of deprecate is to put down, or speak negatively about, or to express disapproval, or make fun of someone or something through degradation.

It comes from Latin de- (against) precari (to pray). To "pray against" to a 21st century person probably conjures up thoughts of warding off evil spirits or something, which is probably where the disconnect occurs with people. In fact, to pray or to pray for something meant to wish good upon, to speak about in a positive way. To pray against would be to speak ill of or to put down or denigrate. See this excerpt from the Oxford English Dictionary.

  1. Express disapproval of: (as adjective deprecating) he sniffed in a deprecating way

  2. another term for depreciate ( sense 2). he deprecates the value of children’s television

What people generally mean to convey when using deprecate, in the IT industry anyway, and perhaps others, is that something has lost value. Something has lost relevance. Something has fallen out of favor. Not that it has no value, it is just not as valuable as before (probably due to being replaced by something new.) We have two words that deal with concept in English and the first is "depreciate". See this excerpt from the Oxford English Dictionary.

  1. Diminish in value over a period of time: the pound is expected to depreciate against the dollar

  2. Disparage or belittle (something):

Notice that definition 2 sounds like deprecate. So, ironically, deprecate can mean depreciate in some contexts, just not the one commonly used by IT folk.

Also, just because currency depreciation is a nice common use of the word depreciate, and therefore easy to cite as an example, doesn't mean it's the only context in which the word is relevant. It's just an example. ONE example.

The correct transitive verb for this is "obsolete". You obsolete something because its value has depreciated.

See this excerpt from the Oxford English Dictionary.

Verb - Cause something to be or become obsolete by replacing it with something new.

It bugs me, it just bugs me. I don't know why. Maybe because I see it everywhere. In every computer book I read, every lecture I attend, and on every technical site on the internet, someone invariably drops the d-bomb sooner or later. If this one ends up in the dictionary at some point, I will concede, but conclude that the gatekeepers of the English lexicon have become weak and have lost their way... or at the very least, lost their nerve. Even Wikipedia espouses this misuse, and indeed, defends it. I've already edited the page thrice, and they keep removing my edits.

Something is depreciated until it is obsolete. Deprecate, in the context of IT, makes no sense at all, unless you're putting down someone's performance or work or product or the fact that they still wear parachute pants.

Conclusion: The entire IT industry uses deprecate incorrectly. It may be common use. It may be some huge mis-understanding. But it is still, completely, wrong.

Solution 7 - Terminology

I wouldn't say obsolete means it doesn't work anymore. In my mind obsolete just means there are better alternatives. A thing becomes obsolete because of something else. Deprecated means you shouldn't use it, although there might not be any alternatives. A thing becomes deprecated because someone says it is -- it is prescriptive.

Solution 8 - Terminology

  • "Obsolete" means "has been replaced".
  • "Depreciated" means "has less value than its original value".
  • "Deprecated" means to expressly disprove of and was popularised due to misspellings in two technical articles where the authors used deprecated without an "i". One in 1999 and the other in 2002 referenced in the dictionaries as origins.

Prior to that time frame we were reading comments like // depreciated in API documentation including the MS MSDN.

The use of deprecated in the tech industry is therefore completely incorrect and evidence of how a technical writer can produce a bug that can live in a language and someone should finally put the bug to rest.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMark OtarisView Question on Stackoverflow
Solution 1 - TerminologyElzo ValugiView Answer on Stackoverflow
Solution 2 - TerminologyTim EckelView Answer on Stackoverflow
Solution 3 - TerminologycHaoView Answer on Stackoverflow
Solution 4 - TerminologyMatthew StrawbridgeView Answer on Stackoverflow
Solution 5 - TerminologyFranklineView Answer on Stackoverflow
Solution 6 - TerminologyJasonovichView Answer on Stackoverflow
Solution 7 - TerminologySuprView Answer on Stackoverflow
Solution 8 - TerminologyHank HatchView Answer on Stackoverflow