This is a quick follow-up on the discussion re the meaning of deprecated back on the lucee support list a while ago.
I’d like to propose the following categorisation for the future:
- Normal (no category): this is a normal feature and we think it’s good and appropriate to be used in the language.
- Avoid: We think this is not the best way of doing something, but hey - if you think or feel you need to, go ahead.
- Deprecated: Avoid + this might (or might not) be removed of the language at any future version (or replace “any” with “in 2+ versions from now” etc.). Also there’s no active development going into this function or feature anymore.
- Hidden/Removed: Deprecated + it might still exist in code (or not), but it’s certainly removed from the docs and will be removed from code at some point. If you use this - tough luck.
Note: the new thing I’m proposing with this is “Avoid”. It caters for a very specific scenario in which we have (or want to) deal with 3 or so different CFML engines and want to keep compatibility options open without having to use “deprecated” (which is often understood as: this will be removed).
For instance CreateObject could be set to “Avoid” in the CFML dialect in Lucee 5. That means it’s not deprecated but we still express our opinion that CreateObject is a stupid function from a conceptual point of view and that we really think there are better ways of doing this.
And yes: all my suggestion does is introducing a nuance between Avoid and Deprecated, but I think it’s a valuable nuance.