Skip to content

Versioning

Flynn Duniho edited this page May 30, 2024 · 2 revisions

MEME App versions are tracked in two ways:

  1. package.json defines
    • title: displayed in the titlebar of the Electron App
    • version: displayed to the right of the title in the titlebar
    • description: displayed just below the title bar
  2. Released versions are tagged via git

Semantics

In versioning semantics, the 1.2.0 is the next planned release of new features, and is a minor release (indicated by the .0). The commits up to that branch are "prereleases", and go by the standard definition:

  • alpha adds some change to the release being developed. In SemVer the standard is alpha.1, alpha.2, etc because there could be hundreds of alphas
  • beta is when the release being developed is feature complete...everything that's supposed to be in the release is there, but not fully debugged. There can be multiple beta stages; the idea is we're not adding anything new at this point. If there is, that goes into the NEXT minor or patch release.
  • rc is a release candidate that often goes to QA or other external testing party. At this point the beta process has been pretty rigorous and we're sure it's perfect enough. Once the external party has tested and validated this, then release candidate is the one that becomes release. If there are issues, it's back to the next beta in the sequence until we're ready to produce a second release candidate.

For example, if we're still adding features, we would the version to 1.2.0-alpha.1. As we add new things to it, we would increment to 1.2.0-alpha.2, 1.2.0-alpha.3...until all features planned for the 1.2.0 release are in, then we increment to 1.2.0-beta.1 for overall testing by more people. If additional fixes are needed, increment the beta.2, beta.3, etc. Once that's all ready, then we go to 1.2.0, which is designated as the final release. (1.2.0-final is not neceseeary).

How to Update the Version

  1. Manually update 'package.json' and commit the change.
  2. When ready to tag, use git to tag the release.

Do NOT use npm version xxx as this will auto-increment, auto-tag, and auto-commit the version.

History

See also !92