-
-
Notifications
You must be signed in to change notification settings - Fork 550
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Semantic Versioning of canonical data. #673
Comments
Maybe .. Given a version number MAJOR.MINOR.PATCH, increment the: |
The MAJOR number could be reserved for changes in the structure of the tests, things that would probably break any well designed test generator. |
Good point. Than we move the new test cases and input/output changes to MINOR and put the cosmetic changes (rewrite/typos/etc) of descriptive fields into PATCH . |
I'm writing a proposal so that we can discuss the details. There are a lot of corner cases... |
This is what I got until now, @behrtam . I tried do adapt SemVer to the canonical data.:
Only changes in the test suite in a fundamentally incompatible way should
These are the changes that would break even a well behaved test generator.
Non-breaking changes that alter the meaning of the tests, making previously
Anything else that do not change the meaning of the tests should bump the
What do you think about it? |
I just updated the proposal, @behrtam, because test cases' ordering seems to be important in Exercism, so reordering would change the meaning of the test suite, implying a bump in the MINOR version. |
I wondered if I might have summarised it as:
Under this thought, I would put a reordering in minor. Then again, some tracks might want to rerun their generator even on patch-level changes, so maybe I have the demarcation between minor and patch incorrect. |
Great summarization, @petertseng.
I completely agree!
What matter here is conveying information to the tracks about what changed:
The only drawback here is being forced to bump the PATCH on json-irrelevant changes, but they are so uncommon that I don't see the need to add one more level of versioning just for that, which would make everything even more confusing. |
@rbasso @petertseng I agree with the proposed setup. Looks great. |
@rbasso Have we documented the proposed semantic versioning scheme somewhere? |
I don't think we did, @ErikSchierboom. I just added the |
Hmmm, I would to see it documented somewhere, or at least a link to this document be added in a logical place (but where). What do you think? |
Considering that the documentation for the new schema is in the README.md, it should probably be inserted there. Maybe a reference in the CONTRIBUTING.md would be necessary...not sure. |
Delete ignored key from config.json
As questioned in #671, we still don't have defined how to version the
canonical-data.json
files in the new schema. I think we should strive to get something like SemVer.Edit: Below we well keep updated the proposed semantic versioning resulting from the discussion.
Current proposal
Adapting from SemVer 2.0.0 ...
Only changes in the test suite in a fundamentally incompatible way should
change the MAJOR version:
MAJOR changes would break even well-behaved test generators, that are not affected by test grouping/nesting.
Non-breaking changes that alter the meaning of the test suite, making previously
passing solutions possibly fail, or failing solutions fail at a different spot, should bump the MINOR version:
MINOR changes would never break well-designed test generators, because the test-generation logic remains exactly the same.
Anything else that do not change the meaning of the tests should bump the
PATCH version:
The text was updated successfully, but these errors were encountered: