## Release Information

#### Types of Releases

There are three types of releases that can be obtained for NeXtMidas:

Stable Release
  This is an official release of NeXtMidas that has been tested against all major platforms (see release notes for details).
  The first version of a stable release is always `x.y.0`, with subsequent updates used for bug fixes (e.g. `x.y.1`, `x.y.2`). No major changes or enhancements are included between updates of a stable release.
Beta Release
  This is an semi-official beta release of NeXtMidas, while it has been tested against many platforms, there are no guarantees that it is stable.
  Typically there are many updates to a beta version. Each update adds bug fixes and enhancements over the previous update.
Snapshots
  This is an unofficial beta release of NeXtMidas that has not been tested and may not build or run properly.
  Snapshots are not supported and are use at your own risk!
  Snapshots are are intended for use in testing a specific enhancement or bug fix that has been recently added to the NeXtMidas baseline.
  In addition to nightly CVS snapshots available on the NeXtMidas web site, developers may provide snapshots on request.

A fourth class of release is a "With Mods" release. This is a release of NeXtMidas that has been modified by an end user. Since NeXtMidas is open source, you are encouraged to make changes to your NeXtMidas baseline and then submit them to the NeXtMidas developers for possible inclusion in the next release (if you choose to do this, please indicate such in `$NMROOT/nxm/sys/version.txt` and `$NMROOT/nxm/sys/updates.txt`).

#### Version Numbers

Version numbers are three digit numbers in the form `x.y.z`:

Major Version (First Digit)
  This number is incremented only after a major change to the NeXtMidas baseline or after a minor version of 9.
Minor Version (Second Digit)
  Identifies a release series.
  Indicates type of release:
  - Even Value - Indicates a stable series.
  - Odd Value - Indicates a beta series.
Update (Third Digit)
  For stable releases this is used to identify subsequent "bug fix releases" made to patch bugs found in the stable release.
  Periodic releases of beta releases are made, for each release the update is increased by one.

#### Backwards Compatibility

"If it worked in a previous release, but does not work now... it is a bug." -- NeXtMidas Developer's Motto

The NeXtMidas team works hard to provide backwards compatibility between NeXtMidas versions. If your option tree worked in one stable version of NeXtMidas it should build and run in a new (stable) version of NeXtMidas without modification.

Occasionally the NeXtMidas developers will need to "break" a previous functionality in order to fix a bug to to allow an enhancement to be made. Anytime there is a break in functionality that can not be avoided it will be indicated in the "What might break" section of the release notes.

If you find something that worked in a stable version of NeXtMidas that does not work in a subsequent stable version (and isn't listed in the "What might break" section of the release notes), please report it to the NeXtMidas developers ASAP so they can get it fixed.

#### Deprecation

As new features are added to the NeXtMidas baseline old functions/commands may become antiquated or superseded by new features. To keep the NeXtMidas baseline clean these old functions/commands will be marked as deprecated and scheduled for removal.

Once a function/command has been marked as deprecated it will be maintained in a "deprecated" status (i.e. it will work but may issue warnings on build or use) for a minimum of two stable releases of NeXtMidas (or one year, in the unlikely event that three stable releases are made in the same year). After that the deprecated function/command is subject to removal.

This approach gives users a "warning" period during which they can continue to use the deprecated function/command and can (as time allows) update their code to use the replacement for that function/command.