Versioning
The firmware, python interface (aka controller), and GUI (aka controller_gui) are versioned independently. Each one gets a version number as following:
- Firmware:
vXYZ - Controller:
vX.Y.Z - GUI:
vX.Y.Z
The overall project is also versioned and tagged on GitHub.
Each tag is named vX.Y.Z and is associated with a release.
In above examples, X, Y, and Z
follow
semantic versioning
guidelines and are:
X: Major version (breaking changes)Y: Minor version (non-breaking changes)Z: Patch version (bug fixes)
The dependency flow is as following:
graph LR
A[Firmware] --> B[controller];
B --> C[GUI];
This means, e.g., that the GUI depends on both, the firmware and the controller.
Generally, major and minor versions for every part of the project should agree with each other. The patch version can and will differ.
Note
The patch version for the whole project is the sum of all the firmware, controller, and GUI patch versions.
Major versions
Major versions are reserved for breaking changes. This means that either the hardware, firmware, or the software are incompatible with previous versions.
Minor versions
Minor versions are reserved for non-breaking changes,
where new features are added.
A GUI version v0.1.0 will be compatible
with firmware versions v010 and v020
as well as with controller versions
v0.1.0 and v0.2.0.
Warning
The GUI with version v0.2.0 however
will not be compatible with
firmware or controller versions that are lower than v0.2.0.
The same holds true for the controller,
which will not be compatible with firmware versions
with lower minor versions.
Patch versions
Patch versions are reserved for bug fixes.
Changelog
See here.