Skip to content
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

Add versioning details to spec and primer #67

Merged
merged 4 commits into from
Oct 3, 2022

Conversation

afrittoli
Copy link
Contributor

@afrittoli afrittoli commented Sep 22, 2022

Add details about the specification versioning, the
event versioning and the schemas. Update the spec version
to 0.1.0-draft as starting in-progress version.

Update vocabulary and examples

Fixes #43

Signed-off-by: Andrea Frittoli andrea.frittoli@gmail.com

Add details about the specification versioning, the
event versioning and the schemas. Update the spec version
to 0.1.0-draft as starting in-progress version.

Signed-off-by: Andrea Frittoli <andrea.frittoli@gmail.com>
Signed-off-by: Andrea Frittoli <andrea.frittoli@gmail.com>
@e-backmark-ericsson
Copy link
Contributor

I miss some reasoning in the proposed versioning section in the primer about why the individual event versions don't need to include the patch level on their semantic versions. Is there such a reasoning that could be documented?

As a reference, in Eiffel we do use version stepping on patch level, when for example a valid list of characters for a string value in an event is decreased, as can be seen in this document: https://github.com/eiffel-community/eiffel/blob/master/eiffel-syntax-and-usage/versioning.md#rules-for-patch-minor-and-major-versions

Maybe that is unnecessarily complex and we could use minor version stepping in such cases as well, but I believe some kind of reasoning would be valuable to provide in the primer for that.

@afrittoli
Copy link
Contributor Author

I miss some reasoning in the proposed versioning section in the primer about why the individual event versions don't need to include the patch level on their semantic versions. Is there such a reasoning that could be documented?

As a reference, in Eiffel we do use version stepping on patch level, when for example a valid list of characters for a string value in an event is decreased, as can be seen in this document: https://github.com/eiffel-community/eiffel/blob/master/eiffel-syntax-and-usage/versioning.md#rules-for-patch-minor-and-major-versions

Maybe that is unnecessarily complex and we could use minor version stepping in such cases as well, but I believe some kind of reasoning would be valuable to provide in the primer for that.

Oh, interesting, I didn't include patch level because I didn't see a use case for that, but even if that were true it is still worth commenting about it in the spec as you mentioned.

I imagined patch level would be used for things like addressing security issues which need to be back-ported, fixing regression issues, and at first sight it didn't seem applicable to events, but perhaps it is.

@afrittoli afrittoli mentioned this pull request Sep 28, 2022
@afrittoli
Copy link
Contributor Author

Thanks for sharing the Eiffel docs about this @e-backmark-ericsson. Looking at the description of "patch":

patch: The patch version is incremented for changes that do not affect event structure, do not carry semantic significance and do not introduce additional legal values. To exemplify, narrowing a string pattern in a schema (e.g. from [a-zA-Z_] to [a-zA-Z]) would require the patch version to be stepped.

The example provided seems like a backward incompatible change to me, as existing valid producers might stop working.
Do you have a different example of what a patch version could include?

@afrittoli
Copy link
Contributor Author

Update from the chat on slack, from Emil

It depends on whether you look at an event from producer or from consumer perspective I guess. From consumer perspective, narrowing a string schema shouldn't affect the consumer at all. Adding a new parameter to an existing json object in the event though could affect the consumer, depending on how it is implemented, as the schemas says that no additional properties are not allowed in the json objects. So, your comment on versioning in the primer saying 'as long as it ignores extra fields' is important here. Depending on language, it might be more efficient to implement the consumer in a way that it does not ignore extra fields, and thus it should be concerned about increments on the minor version, but could neglect increments on the patch version (if we add patch version numbering).

@afrittoli
Copy link
Contributor Author

@e-backmark-ericsson Updated based on your feedback - I added the patch version for events.

Based on the discussion on the PR and slack, adding the patch version
for events as well.

Signed-off-by: Andrea Frittoli <andrea.frittoli@gmail.com>
Copy link
Contributor

@e-backmark-ericsson e-backmark-ericsson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A minor (patch) correction needed.

spec.md Outdated Show resolved Hide resolved
Co-authored-by: Emil Bäckmark <emil.backmark@ericsson.com>
@afrittoli afrittoli merged commit 22688e3 into cdevents:main Oct 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Versioning strategies
2 participants