Add versioning convention

This commit is contained in:
jhaas 2026-07-25 14:59:21 +00:00
commit 18ef99409a

50
README.md Normal file
View file

@ -0,0 +1,50 @@
# jhaas
Home lab / personal projects. This repo has no code — Forgejo renders its
`README.md` on the profile page, so it's used to hold conventions that
apply across every repo below, instead of duplicating them in each one.
## Versioning: `YY.MAJOR.MINOR-BUILD`
All projects version releases (git tags, changelog entries, artifact
filenames) as:
```
YY.MAJOR.MINOR-BUILD
```
Example: **`26.0.0-1`**
| Field | Meaning | Effect when bumped |
|---------|------------------------------------------------------|------------------------------|
| `YY` | Two-digit calendar year of the release | — |
| `MAJOR` | Breaking / incompatible change | resets `MINOR` → 0, `BUILD` → 1 |
| `MINOR` | New feature, non-breaking addition | resets `BUILD` → 1 |
| `BUILD` | Anything else on the same `YY.MAJOR.MINOR` (fix, rebuild, tweak) | +1 |
`YY` simply tracks the calendar year the release happened in — it does not
by itself force a `MAJOR`/`MINOR`/`BUILD` reset. A project can go from
`25.2.1-4` straight to `26.2.1-5` if nothing breaking or new landed around
New Year's.
### Example progression
```
26.0.0-1 first release of the year, MAJOR 0 / MINOR 0
26.0.0-2 bugfix rebuild, same MAJOR.MINOR
26.1.0-1 new feature added -> MINOR bumped, BUILD reset
26.1.0-2 another small fix
27.0.0-1 breaking redesign, new year -> MAJOR bumped, MINOR/BUILD reset
```
### Git tags
Tag releases as `vYY.MAJOR.MINOR-BUILD`, e.g. `v26.0.0-1`.
### Where this shows up
- Git tags on the release commit
- `CHANGELOG.md` (if the project has one)
- Optionally, a small version string in a project's `docs/index.html`
footer (see [projects-hub](https://git.joha.mywire.org/jhaas/projects-hub)
for the hub convention those pages follow)