Skip to content

Adopt Effver #559

@almarklein

Description

@almarklein

This is a proposal to adopt EffVer for versioning. Learned about this on Euroscipy: https://jacobtomlinson.dev/effver/.
We kinda used SemVer until now, except we're still in the 0.x yolo fase, so it doesn't really matter/count.

My short summary

Like SemVer, EffVer adds semantics to the numbers, but in a different way: where SemVer promises something about the kind of changes, depending on what number is bumped, in EffVer it says something about the expected amount of work for downstream devs. The idea is that it gives a more honest signal to downstream devs.

For more details, please follow the link above, and maybe semver-will-not-save-you to understand why SemVer often does not live up to its promise.

A practical comparison

SemVer EffVer
bugfix x.y.Z x.y.Z
new feature (but does not break anything) x.Y.z x.y.Z
small backwards incompatibilty X.y.z x.Y.z
major changes to API X.y.z X.y.z

So downstream libs should typically pin to x.y in EffVer.

My take

  • SemVer is nice for projects that actually support multiple release branches (e.g. Python 2.x and Python 3.x).
  • For projects that release more "linearly", EffVer makes more sense.
  • For applications CalVer makese sens IMO (anything that does not have an API.

Special note for wgpu-py

When we update wgpu-native, I always try to isolate this into a new release, so that users can chose between two versions that are the same except for the version of wgpu-native. With EffVer I can pick whether to bump x, y, or z, depending on e.g. the amount of shader code that people will need to update.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions