Skip to content

Releases and versioning

Thomazella Ribeiro edited this page Apr 26, 2024 · 1 revision

releases and versioning

This is a multi package repo, which is not fully supported by go. The guidelines here are meant to guide and organize releases and versioning. We mostly follow the go guidelines with minor changes.

"root version" and root updates

Refers to the version of the root module, the go.mod at the root of the repo. There is technically only one package in this repo, the root package github.com/tcodes0/go Root releases start at unstable major v0 and go up from there, but they should not go into v2. A new major of the root package makes no sense, since it is only an aggregator for the packages living under src, and we would need to prefix the module with v2; and that would apply to all packages. A root changelog will be maintained detailing the updates in each root version; a package omitted from a given version has not been updated in that version.

keep all commits to main tagged

Non release commits should be tagged with -pre, release commits should be semver tagged. This might help alleviate common mistakes like installing a pseudo-version from the tip of the default branch instead of the latest semver version.

single go.mod

see #5 for context on this decision

package versions

Packages are versioned independently and follow standard semver. Packages will document their own versions; there will be a table on each package's documentation that translates a root version to a semver package version. Packages will maintain a changelog that details patches, minors and major changes. Packages will not use tags for their releases, due to lack of support from go and to avoid conflict with root tags, confusion.

releasing a new package version

  1. send a PR and update the package's code under src; iterate with code-reviewers
  2. bump root version by a patch or minor
  3. update package version on documentation by a major, minor or patch
  4. update package documentation relating root version to package version
  5. If a release is desired, push a new main semver tag, else push a pre-release tag