We have a few definitions for the terms obsolete and deprecated.
MDN definition for obsolete
On MDN, the term obsolete marks an API or technology that is not only no longer recommended, but also no longer implemented in the browser. [...] For Web standard technology, the API or feature is no longer supported by current, commonly-used browsers. MDN reference
MDN definition for deprecated
On MDN, the term deprecated marks an API or technology that is no longer recommended, but is still implemented and may still work. These technologies will in theory eventually become obsolete and be removed, so you should stop using them. [...] For Web standard technology, the API or feature has been removed or replaced in a recent version of the defining standard. MDN reference
Current BCD definition for obsolete
A boolean value that indicates if the functionality is only kept for compatibility purpose and shouldn't be used anymore. It may be removed from the Web platform in the future. BCD reference
Currently, BCD does not have the term deprecated in the status object.
Request for comments: Should we rename obsolete to deprecated in BCD?
In BCD, version_added
and version_removed
indicate support ranges and whether support has ended.
I think it isn't necessary to also have "no longer implemented in the browser" as a meaning for obsolete. The current BCD definition for obsolete also doesn't mention this, it is only in the historical MDN meaning, but people get confused by these two definitions.
Further, on MDN, the deprecated meaning includes "is still implemented and may still work". I think in BCD we shouldn't have this as an implicit meaning of deprecated as we have version_added
and version_removed
for when something is supported or not.
Probably deprecated is the more common term for indicating the recommendation status ("do not use this anymore", "it's no longer recommended", "the spec discourages this", etc). So, I think we should use deprecated instead of obsolete. A definition for deprecated in BCD could be:
A boolean value that indicates if the feature is no longer recommended. It might be removed in the future or might only be kept for compatibility purposes. Avoid using this functionality.
On the Web platform, features are rarely ever removed, because the Web needs to be compatible. For WebExtensions, or other APIs, where deprecated features might actually be removed, I think that deprecated is still a good term, too, as we're not mixing implementation status and recommendation status in our definition.
Motivation
I thought it would be nice to answer why we are thinking about this anyway why it isn't entirely bikeshedding (but somewhat bikeshedding). So here is my take:
Fundamentally, I think BCD should have well defined answers to the two questions "Can I use this?" and "Should I use this?".
- For "Can I use this?" (is it possible, how and when?), the support object including
version_added
and version_removed
and caveats like flags, alternative names etc. give you answers.
- For "Should I use this?" (is it recommended?), the status object should give you answers.
- if you only want to use non-experimental features, the
experimental
boolean should be false for you
- if you only want to use web standard features, the
standard_track
boolean should be true for you
- if you only want to use features that aren't discouraged to be used (either because the feature is only available still for compat reasons, or is planned to be removed), the
deprecated
boolean should be false for you.