Skip to main content

Semantic Versioning (SemVer)

We follow Semantic Versioning (SemVer) to increment version numbers in a structured, consistent way.

The version format is MAJOR.MINOR.PATCH (e.g., 1.XX.X).

Version Structure

MAJOR (BE/FE 1.X.X):

Changes to this number indicate backward-incompatible changes.

Any time we make significant changes that may break existing functionality or require modifications to dependent systems, we increase the MAJOR version.

MINOR (BE/FE 1.XX.X):

Increment this number when new features are added in a backward-compatible manner.

For example, when new functionality is introduced, but existing features continue to work without breaking or requiring changes in other components, the MINOR version is updated.

PATCH (BE/FE 1.XX.X):

Increment this number for backward-compatible bug fixes or minor improvements.

It covers patches, fixes, or small updates that do not introduce any new features or break existing functionality.

Versioning for Backend (BE) and Frontend (FE)

Both the Backend and Frontend follow the same versioning structure (e.g., 1.XX.X), but updates are tracked independently.

Changes in BE might not always correspond directly to FE updates, but both versions are marked separately to communicate the development status clearly.

Release Process:

Before updating a version number, we ensure that the changes are tested and reviewed.

New versions are tagged in the repository with the version number and noted in the release notes for clarity.

Dependencies:

We ensure that when versions of BE or FE change, all dependencies are clearly communicated.

When major or minor versions change, it’s important to check for any dependency or compatibility issues across the codebase.

Tracking releases

Our team uses JIRA to track the tasks and features that go into each release.

Each planned version has its own set of tasks in JIRA, ensuring that development efforts remain organized and transparent.

We usually aim to release once a week on Tuesdays.

Initially we fill all the items in a wishlist of a release i.e 1.30.X. When we have a clear vision on what can be tested and released of the tasks we assign a concrete release version i.e 1.30.0.