Versioning approach for folio-kong and folio-keycloak

This is only a proposal and has not yet been agreed to or implemented.

Overview

Versioning of FOLIO modules is well understood. However, with the introduction of Kong and Keycloak it’s important to establish a common understanding for how these should be versioned.

Approach

We’re familiar with the versions comprised of three components… Major.Minor.Patch. We should continue to use this here.

When releasing folio-keycloak or folio-kong, the major and minor components of the version should be borrowed from the corresponding keycloak or kong version being used. The patch version should start at 0 and be incremented as needed.

For example:

  • Let’s say we start with Keycloak 23.1.2, the first two components of the folio-keycloak release should be 23.1, and the patch version should be 0. v23.1.0

  • We then make some adjustments/additions/customizations (e.g. we add a new keycloak theme). The version of keycloak being used has not changed, so we just bump the patch version. v23.1.0 → v23.1.1

  • Later, we upgrade to Keycloak 25.0.3. Here we borrow the major and minor versions, resulting in a jump from v23.1.1 → v25.0.0.

  • We then need to upgrade to Keycloak 25.0.4 which contains a high priority security fix… This just a requires a patch version bump. v25.0.0 → v25.0.1

  • Keycloak 25.1.0 is released with some feature we’d like to leverage. Again, we borrow the major and minor components. v25.0.1 → v25.1.0

Branching

Creating long-lived release branches for each major+minor version probably makes sense here, as it will allow for easy backporting if needed.

For example: When we upgrade to Keycloak 25.0, we create a long-lived branch b25.0 and cut our v25.0.x releases off that branch. When we upgrade to Keycloak 25.1, we create a long-lived branch b25.1 and cut v25.1.x releases from there.