Why comver?¶
comver aims to address several common issues with pure semver ⧉, as discussed in articles like Semantic Versioning Will Not Save You ⧉
Note
comver is not and does not claim to be a silver bullet for versioning challenges. Its goal is to improve upon current practices where possible.
See the points below to understand the movitation and how comver might help!
Strict semver adherence¶
Projects that strictly follow semver (e.g. setuptools ⧉ with over 80 major releases) exhibit:
- Informative versioning that communicates breaking changes and new features, but…
- Frequent releases can dilute the perceived importance of each version to end users
Reluctance to version changes¶
Conversely, some projects are hesitant to increment versions, especially the major version, due to the perceived impact. This is especially visible when moving from 0.x.y to 1.x.y, which implies stability.
In some cases, breaking changes may go unacknowledged to avoid triggering a major version bump, as it is often directly associated with major announcements or formal release cycles.
Irrelevant commits for the user¶
Large projects often include changes unrelated to the core functionality such as CI workflows, tooling updates, or formatting adjustments.
Changes like fix: unify formatting do not impact the behavior of the software but may still influence versioning in traditional schemes.
comver as an alternative¶
comver provides a more focused and automated approach to versioning:
- Enables strict
semveradherence, with versions calculated directly from commits - Supports a "double versioning scheme": use
comverfor the software version, while maintaining a separate, tag-oriented versioning scheme (e.g., via python-semantic-release ⧉) for broader release messaging - Allows simplified user-facing (public release) versions (e.g.
1,2,3) while keeping a detailed internal version for software consistency - Filters out irrelevant commits (e.g., those modifying
.githubworkflows) - Supports separate
comverconfigurations for different parts of the project (e.g., CI, packages, documentation) (WIP)
Tip
See configuration for practical setup examples.