-
The Solar Car 1 Engineering Dashboard will adhere to Semantic Versioning specifications.
-
A version number will, at a minimum1, be constructed as follows: <MAJOR>.<MINOR>.<PATCH>, where MAJOR, MINOR, and PATCH are non-negative numbers dictated by the following types of changes:
- MAJOR - A backwards incompatible API change
- MINOR - A backwards compatible functional change
- PATCH - A backwards compatible bug fix
-
The following are examples of changes that would warrant an update of each version number:
- MAJOR: A change was made to the
sc1-data-format
submodule such that an incoming dataset from the solar car, which had been packed according to the definition (format.json
) in the previous state of the submodule, cannot be unpacked effectively in the backend using the new definition in the updated submodule. Such a change could include signals being added to, removed from, or moved to a new offset within the definition. - MINOR: A new component is added to the front end.
- PATCH: A check for bad packets is added to the backend to prevent errors when attempting to unpack them.
- MAJOR: A change was made to the
-
The versions of the
chase-car-dashboard-frontend
,chase-car-dashboard-backend
, andchase-car-dashboard-data-generator
packages (the "child packages") shall be versioned separately according to the changes made in the respective sections of the project.- These versions will be tracked using the
version
field in the respective child package'spackage.json
andpackage-lock.json
files, and insetup.py
of thechase-car-dashboard-backend
. - For a given update that warrants a new version of any child packages, the versions of the
chase-car-dashboard
andchase-car-dashboard-image
packages (the "parent packages") shall be updated as described in item 6 to reflect the most significant version update made across the child packages.
- These versions will be tracked using the
-
Changes made outside the child packages (e.g. a change to
Dockerfile
) shall only affect the versions of the parent packages, which shall be updated according to item 6. -
For a given non-prerelease version of a parent package, there shall exist a version of the other parent package with the same precedence (see link in item 1 for more information about precedence). These equivalent versions shall be represented as follows:
- An annotated git tag associated with the last commit included in that version shall indicate the full version.
- The value of the
version
field inchase-car-dashboard/package.json
andchase-car-dashboard/package-lock.json
shall reflect the core version of the parent packages. - The tag tied to the
chase-car-dashboard-image
Docker image shall indicate the full version.
Footnotes
-
For a more comprehensive definition of the versioning scheme, see Backus–Naur Form Grammar for Valid SemVer Versions. ↩