Skip to content

Deprecation Process

Br. Samuel Springuel edited this page Aug 18, 2015 · 1 revision

If a change necessitates that a User level function be deprecated, then the following procedure is to be followed for phasing out said function:

  1. The function is marked as deprecated: Use of it raises a warning (using \gre@deprecated) which points to the new syntax which achieves the same effect, and calls said syntax for the user. An entry under ### Deprecated should also appear in CHANGELOG.md which indicates the appropriate new syntax.
  2. The function is marked as obsolete: Use of it does not work, but raise an error (using \gre@obsolete) which points to the new syntax which achieves the same effect. An entry under ### Removed should also appear in CHANGELOG.md which indicates the appropriate new syntax.
  3. The function no longer exists in the code base. Anyone still using it gets the generic "Undefined control sequence" error.

Each of these steps should be in a major or minor release, with step 1 or 2 being a mandatory major (i.e., if step 1 is a minor release, then step 2 must be major, if step 1 is a major release, then step 2 is allowed to be a minor release). It is advisable, therefore, that existing functions which are deprecated or obsolete be moved along this path on the develop branch immediately after a major or minor release is made.

Clone this wiki locally