This is a discussion that we've been tossing around on discord off and on, this forum post serves as something a bit easier to keep track of.
Essentially, the SCP doesn't have a path to outright removal of features, only deprecation. To clarify:
- Remove: Completely wipe the existence of a feature from the codebase, making any of its former triggers and methods to use it flagged as an error
- Deprecate: Feature still works, but it won't be upgraded anymore and you may get scolded for using it.
Vanilla features will only ever be deprecated, for the simple fact that we must uphold the Golden Rule of "Thou Shall Not Break Retail," however, any and all features added
to the engine by the FSO-SCP is subject to removal. Of course, whats holding us back from doing so is that it'll break any and all mod that uses them (a Bad Thing).
However, if all we ever do is deprecate features and not be allowed to remove ones (especially ones that have their functionality merged, superseded, or outmoded by another feature) we wind up with a ton of crusty code sitting around, getting in the way of maintenance and new work.
We have deprecated sexp's, but to my knowledge we don't have a proper End-of-life cycle for features in general. To start off the discussion, I suggest the following End-of-Life cycle:
- Deprecate a feature for some agreed upon time, such as two release cycles (half a year) or four release cycles (a full year)
- Once the time period is up, remove the feature. Trying to activate the feature through whatever mechanism it uses should return an error message stating when the feature was removed.
- Depending on the type and severity of the feature, this error message may or may not be blocking further execution of the game.