docs/src/process/version.md
This document describes semantics and processes for providing version numbers for Open MCT, and additionally provides guidelines for dependent projects developed by the same team.
Versions are incremented at specific points in Open MCT's Development Cycle; see that document for a description of sprints and releases.
Individuals interested in consuming version numbers can be categorized as follows:
Software versions should be reflected in the user interface of the application in three ways:
Open MCT shall provide version numbers consistent with Semantic Versioning 2.0.0. In summary, versions are expressed in a "major.minor.patch" form, and incremented based on nature of changes to external API. Breaking changes require a "major" version increment; backwards-compatible changes require a "minor" version increment; neutral changes (such as bug fixes) require a "patch" version increment. A hyphen-separated suffix indicates a pre-release version, which may be unstable or may not fully meet compatibility requirements.
Additionally, the following project-specific standards will be used:
| Sprint | Suffix |
|---|---|
| 1 | -alpha |
| 2 | -beta |
| 3 | -rc |
"External API" refers to the API exposed to, documented for, and used by plug-in developers. Changes to interfaces used internally by Open MCT (or otherwise not documented for use externally) require only a patch version bump.
At the end of a sprint, the project manager should update (or delegate the task of updating) Open MCT version numbers by the following process:
package.json-next suffix from the version in package.json.package.json on the new branch created in
the previous step.
The commit message should reference the sprint being closed,
preferably by a URL reference to the associated Milestone in
GitHub.git tag v0.9.3-alpha)git push origin v0.9.3-alpha).Open MCT v0.9.3-alpha)package.json change package to be public (private: false)npm publish --dry-run
if necessary.npm publish --access public)
NOTE: Use the --tag unstable flag to the npm publish if this is a prerelease.https://www.npmjs.com/package/openmct)package.jsonmaster branch.-next suffix.package.json on the master branch.
The commit message should reference the sprint being opened,
preferably by a URL reference to the associated Milestone in
GitHub.master branch.Projects dependent on Open MCT being co-developed by the Open MCT
team should follow a similar process, except that they should
additionally update their dependency on Open MCT to point to the
latest archive when removing their -next status, and
that they should be pointed back to the master branch after
this has completed.