Skip to content

Versioning guidelines #938

Closed
Closed
@NobbZ

Description

@NobbZ

Today 3 PRs have been made (perhaps more that slipped my RADAR), which all bumped MAJOR version, because of trivial changes.

In all 3 PRs voices rose that wanted a less drastic version bump:

But the current versioning and bumping guidelines tell us this:

  • MAJOR changes should be expected to break even well-behaved test generators.
  • MINOR changes would never break well-designed test generators, because the test-generation logic remains exactly the same.
  • PATCH changes would never break well-designed test generators, because the test data remains exactly the same

[enumeration mine, detailed descriptions omitted for now]

After reading this TL;DRs of the various kinds of version bumps, some question arise.

  • What is a “well-behaved” testgenator?
  • What changes except for renaming, adding, removing or reordering tests, will not break a generator?

Even worse, on a further read of the more thorough description of each bump I found this:

[bump PATCH when] Regrouping/"Renesting" test cases without changing test case ordering.

But how is changing the nesting, not changing the logic of the testgenerator? It can't find the tests anymore where it expects them.

Also I do feel, that adding and removing testcases, may end in a completely different way to solve the exercise, which makes the whole testsuite incompatible with its previous version, so it should be a MAJOR bump here, instead of a MINOR as in the document:

[bump MINOR when] Adding or deleting test cases.

Nearly the same reasoning applies in my eyes for the other two cases where a MINOR were sufficient, but I'd do a MAJOR because it changes the way to solve the exercise drastically:

  • Changing the test cases inputs and/or outputs.
  • Changing the test cases ordering.

When we introduced the versioning scheme, I've understood it as versioning the exercise, today I learnt it's meant to version the generator.

I do not think this is the way to go, but I will not try to change that anymore, I think I'm just to late to the party to change this, but what I can try, is to simplify the current bumping guide and remove ambiguity:

  • Bump MAJOR when you do not bump MINOR
  • Bump MINOR on fixing typos in comments and descriptions or you are reformatting/reordering the JSON document without changing its semantics.
  • Remove PATCH from versioning scheme

Basically, this would mean, everything which could break existing solutions or examples or testgenerators gets a MAJOR bump. MINOR bumps are for semantically no-ops…

Edit: Fix typos

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