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
semver
adherence, with versions calculated directly from commits - Supports a "double versioning scheme": use
comver
for 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
.github
workflows) - Supports separate
comver
configurations for different parts of the project (e.g., CI, packages, documentation) (WIP)
Tip
See configuration for practical setup examples.