Release process¶
This page describes how FedMS releases happen.
Living process
The release cadence and the exact tooling for FedMS are still being formalized as the framework approaches a 1.0. This page captures the current state.
Versioning¶
FedMS uses semantic versioning at the component level.
Each component module (fedms/federation, fedms/content,
fedms/task, fedms/eca, fedms/attachment, fedms/locale,
fedms/scripts) versions independently.
The profile (fedms/profile) is the integration point — its
version typically reflects the framework as a whole.
Current version (per fedms.info.yml): 0.9.0 — pre-1.0.
Branching model¶
Every FedMS repo follows the same branching model:
1 2 3 4 5 6 7 8 9 10 11 | |
developis the default branch. All MRs target it.- Tagged releases are cut from
develop(or a short-lived release branch). mainreflects the latest stable.
How a release happens¶
Component module release¶
- Open the module repo.
- Ensure
developis green and includes the changes you want to ship. - Bump the version in
fedms_X.info.yml. - Update
CHANGELOG.md(if the repo has one). - Commit and push.
- Tag the release:
1 2 | |
- The Composer registry picks up the tag automatically.
Profile release¶
The profile release follows the same flow, plus updating
composer.json to pin the required component versions.
Recipe release¶
Same flow. Recipes are tagged independently.
Composer registry¶
All fedms/* packages are published to the group-level Composer
registry at:
1 | |
The registry indexes both tagged releases and dev-* branches.
Tenant composer.json files typically use:
1 2 3 | |
…which prefers the latest tagged release but accepts the bleeding
edge from develop during active development.
Deployment to tenant sites¶
On managed SaaS, the LakeDrops operations team handles deployments. The typical flow:
- A tenant deployment pipeline runs nightly.
- It runs
l3d composer updateto pick up the latest framework versions. - It runs
l3d ahoy fedms update-configto apply any imperative-config updates. - It runs the Playwright smoke tests against the live URL.
- If smoke tests pass, the deployment is finalized; if they fail, it rolls back.
The deployment-test framework is being formalized at
fedms/components/profile#20.
Changelog conventions¶
Components that have a CHANGELOG.md follow the
Keep a Changelog format:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Breaking changes¶
When a release introduces a breaking change:
- Bump the major version.
- Document the breaking change prominently in the changelog.
- Provide an upgrade path — a
hook_update_Nor an Ahoy command that migrates existing tenants. - Open a tracking issue and link from the changelog.
Breaking changes should be rare before 1.0 (this is a pre-1.0 framework) and very rare after.
Pre-release versions¶
For pre-release tags, use the semver pre-release format:
1 2 3 | |
Tenant-specific releases¶
Tenant sites are versioned independently from the framework. They
typically don't use semantic versioning — instead they tag releases
by date or by milestone (e.g. 2025-Q4).
Next steps¶
- Contributing — the upstream change workflow.
- Config management — how config flows through releases.
- Testing — what runs before a release.