We provide a one year long term support on several Decidim versions. The goal is to rely on a stable version of Decidim, that is compatible with most of the modules out there. This document explains how we use semantic versioning, and where to find the long term support versions.
Usage
Add the gem in your Gemfile, in place of decidim
:
gem "decidim",
git: "https://github.com/octree-gva/decidim-lts",
tag: "v0.24.3+0.0.1"
You need to pin the LTS version you want, as post-release tags are ignored by bundle update
, as specified in the Semver 2.0.0-rc.2. This is specific to LTS versions, where we want to have full control on version updates.
Process
We forked Decidim in a decidim-lts repository that offers post-releases to backport and fix bugs. This step explain the git flow we use, and how we select the LTS for the year.
When something is added to the LTS?
- If a blocking bug is reported on the LTS
- Security and dependencies patches.
How do we select the LTS version
- Given a
release/<version>-stable
- The branch did not receive updates for at least three months
- The version is compatible with both
awesome-decidim
andterm-customizer
How do we uses post-release tags.
- Given a LTS (here
0.24.3
):- We make a
lts/0.24.3
on our fork - We backport or fix bugs on feature-branch, like
fix-stuff
- Once reviewed we merge
fix-stuff
inlts/0.24.3
- We push a tag with a post-release tag:
v0.24.3+0.0.1
- We make a
💡 N.B.
We might merge several fixes before pushing a post-release tags, that’s will up to the Repository Maintainer
References
- Post-release tag on SemVer RFC https://semver.org/spec/v2.0.0-rc.2.html#spec-item-10
- Discussions for post-release tags on forks: https://github.com/semver/semver/issues/17