-
Notifications
You must be signed in to change notification settings - Fork 4
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
Versioning #120
Versioning #120
Conversation
…ich input file was responsible when the build fails.
…mmentary from the end of bullet point relating to Addition of features spec points.
…emoval, and define Replacement.
…far made for specification version 2.0 and service version 2.
…that I am not seeing locally. Happens when loading meta.yaml: /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:457:in `parse': (/home/runner/work/specification/specification/meta.yaml): found incompatible YAML document at line 1 column 1 (Psych::SyntaxError) from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:457:in `parse_stream' from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:391:in `parse' from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:280:in `unsafe_load' from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:583:in `block in unsafe_load_file' from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:582:in `open' from /opt/hostedtoolcache/Ruby/3.0.4/x64/lib/ruby/3.0.0/psych.rb:582:in `unsafe_load_file' from ./scripts/build:75:in `<main>'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks for putting those links in the description :)
A couple of notes:
- Rather than including the noise of bygone spec points in the specification itself at the cost of readability, might it be worth making a script to detect resurrected spec point IDs in CI (similar to
find_duplicate_spec_points
)? - I looked through some examples of recent spec changes and I think there are probably some edge cases where it's not clear to me how specification version would be incremented. Clarifications to the spec like Require agents specified by
ClientOptions#agents
to have a version #112 Spec: add G4a, clarifying that protocol version should be treated literally #97 would only necessitate a change to SDK implementations in some cases so would you say those are major or minor?
Thanks for your approval comment, @owenpearson. Your observations touch on areas that have definitely been swimming around my head while incubating this work! 😅 Here's my thoughts... Noise of bygone spec pointsThese are not the prettiest things to wade past when reading the features spec, so I get your point. For now, however, I would prefer to keep them in:
Edge cases for specification version incrementsClarification of edge cases is definitely important, but given the reviewer count on this PR then I would ideally like to see reviews come in based on this current scope (warts and all) and then iterate with a new PR later on... either proactively covering past edge cases, and/or reactively covering future edge cases as we encounter them. As we've discussed elsewhere, this is still an improvement so worth merging - on the assumption there's not feedback from others to raise concerns relating to something being blatantly wrong or unworkable. 🤞 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, and thank you for making it easy to review! I have a couple of overall questions…
Why do we have a Specification version number?
I'd be interested to know what kind of use cases you have in mind for the Specification version number, and who it might be used by.
The only thing I could speculate was that you were thinking that perhaps our client library SDKs might (in some manner) wish to claim to conform to a given Specification version? If so, do we need a version number for that? Given that the feature spec points are (now) immutable, we could define a client library’s feature spec compatibility in terms of which feature spec points it implements.
Release process
CONTRIBUTING.md
currently says that the release process will be documented as part of working on #6 (which this PR closes). I can't see anything about the release process in this PR, though.
I think that knowing how the release process works might help answer some questions that this raised for me about how the future process of developing the features spec would work.
For example, a feature spec writer who is removing a feature spec point is instructed to write It was valid up to and including specification version @X.Y@.
It's not very clear to me where I would get this X.Y
version from - it depends on whether I'm working on a branch on which the specification version hasn't been bumped yet (in which case I get the version from the meta.yaml
file on my branch), or on a branch on which the specification version has already been bumped (in which case I'm not sure where I'd get the version from), which ultimately depends on the branching and release strategy for the repo.
Similarly, if a writer makes a change to the feature spec that necessitates a major / minor / patch version change, do they make that version bump in their PR or does that happen at the end of some sort of release process?
Co-authored-by: Lawrence Forooghian <[email protected]>
Co-authored-by: Lawrence Forooghian <[email protected]>
Co-authored-by: Lawrence Forooghian <[email protected]>
Thanks for your review input, @lawrence-forooghian. In response to your overarching commentary:
Hopefully my responses to your individual, specific comments on this PR are enough to get those conversations resolved. I also hope that this response is enough to gain your overall approval for this work. 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally all sounds fine to me.
One thing I might question is the name "Service version". That sounds like it should mean 'the version of the Ably service', but as used here it doesn't (and as you mention, a given version of the ably service supports multiple protocol versions). IMO 'protocol version' is a more natural name, as in eg "service version release-20221205.46-012252fc3
supports protocol versions 0.8 through 2"
I'm also not sure I'm convinced that protocol version is metadata (in meta.yaml) rather than data. The spec version is metadata, sure, but the protocol version -- when that changes, that's a concrete change that needs to be made in every SDK (alongside its sibling changes), to be tracked and markable as done; doesn't that deserve the 'spec item replacement' treatment?
Thanks, @SimonWoolf.
|
Responding to this comment: #120 (review)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🙌
For service version
2
(a.k.a. '(wire) protocol v2') we are also moving the specification version from1.2
to2.0
, however the implications of that specification update for client libraries (what's in the targetintegration/protocol-2.0
branch already) mean that they can adopt this new service version as a non-breaking/compatible change.I'm keen to use this, our first clearly available opportunity, to better define the separation between specification version and service version. I hope reviewers will find this adequately covered and clearly defined in the change proposed in this pull request. 🤞
The following preview links for this pull request may be helpful to reviewers, in order to shortcut to the rendered output for the key changes being made here:
README.md
: VersionsCONTRIBUTING.md
: Features Spec PointsThis pull request is my second attempt at this, after I abandoned #105 (my first attempt) some time back. I have endeavoured to reflect and act upon the feedback received in that initial attempt (from @SimonWoolf, @lmars and @lawrence-forooghian) here.
Closes #6.