This document describes the practices we use when developing and maintaining Apso.
We encourage contributions to be in the form of pull requests. We keep track of a Changelog but it's not expected for pull requests to eagerly update it. The Changelog should instead be updated prior to a release.
We try to adopt MAJOR.MINOR.PATCH Semantic Versioning 2.0.0:
- PATCH version Z (x.y.Z) is incremented if only backwards compatible bug fixes are introduced.
- MINOR version Y (x.Y.z) is incremented if new, binary backwards compatible functionality is introduced to the public API. A source breaking but binary compatible change is allowed between MINOR versions.
- MAJOR version X (X.y.z) is incremented if new binary backward breaking changes are introduced.
Before releasing, create, if it doesn't exist yet, a Changelog entry for the version you're releasing, following the template.
To figure out what to include in the Changelog, you can check the timestamp of the last tag like the following (replacing the actual tag name):
$ git show -s --format=%ci v0.23.0 | cat
tag v0.23.0
Tagger: Beatriz Magalhães <bmagalhaes@kevel.com>
Release 0.23.0
2025-06-09 16:32:51 +0100Then, you can use the GitHub CLI to list the actual PRs (replacing the timestamp with the timestamp of the tag obtained above):
$ gh pr list --limit 100 --state merged --search "base:master merged:>2025-06-09T16:32:51+0100" --json title,url,number --template '{{range .}}- {{.title}} ([#{{.number}}]({{.url}})).{{"\n"}}{{end}}' | tacIt's recommended to open a PR with the Changelog changes so that they can be reviewed by someone else from the team.
To release the artifacts in the Sonatype's release repository, which eventually gets synced to Maven
Central, simply use sbt to run release from the master branch. This
will result in the releasing of all the apso-* libraries.