-
Notifications
You must be signed in to change notification settings - Fork 30
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
Unified Version Proposal: NO VERSIONING #63
Unified Version Proposal: NO VERSIONING #63
Conversation
Ack |
So this proposal removes versioning from LSPS2 and keeps it at LSPS1? Every LSPS does it's own thing? I am happy to go the "every breaking change is its own LSPS" route which is very similar to "we run all versions". But having consistency in the approach on how to handle breaking changes is a requirement. At the end, you always have versions. Implicit or explicit. A section in the LSPS0 on the approach taken is definitely needed though. Let's merge #62 verbosity with "every breaking change is a new LSPS". |
CONCEPT_ACK To merge this PR we still need to remove versioning from LSPS1 and possibly other places. |
As noted in Telegram group: We now need to define the -32602 error |
e3ced5c
to
1a18e9f
Compare
updated: Describe |
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.
Should this PR also remove the Version
row in the headers of all LSPSs? Or do we want to keep it to signal spec changes and just keep versioning out of the actual protocol?
I think keep it to signal spec changes. |
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.
Apart from my one comment, this PR looks good to me.
1a18e9f
to
9c6de42
Compare
Updated: Expand LSPS0 "LSPS Extension and Versioning" section to include client and LSP MUSTs, remove remaining reference in LSPS0 re: versioning API calls in other LSPS. |
dc51b0a
to
32e851c
Compare
Updated: Explicitly state in LSPS0 that new LSPS must be back-compatible, remove restriction on |
32e851c
to
182e060
Compare
Updated: Add a few more details in what future LSPS is allowed to do, and what client must do. |
182e060
to
cb53c1f
Compare
Updated: rebase to latest, avoid "version" and use "revision" (for specifications) or "feature" (for params/retvals) instead, use "An LSP MUST" instead of "LSPs MUST", move client MUST log to SHOULD log. |
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
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.
Let's do it
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.
ACK
Should functionally be good to go, just found a few nits regarding consistency.
cb53c1f
to
c2f2881
Compare
Updated: updated as per nits from @tnull |
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.
ACK
As discussed in the last meeting, we should land this soon and then, as a follow-up, double-check if we want to do something about the "Invalid params" error to make implementor's life easier.
Merged. Decision made in the meeting of the 7th of December 2023. |
What is better than unifying versions? NOT HAVING TO IMPLEMENT VERSIONS AT ALL.
The advantages are:
In particular, we SHOULD in fact separate LSPS2 from LSPS4 (YES @SeverinAlexB I AM CHANGING MY MIND ABOUT THIS). The reason is that LSPS2 has fundamentally different flow from LSPS4:
Thus, we MUST in fact put them as separate specifications completely, because they the fundamental differences in flow.
Even with no-version, we can still upgrade individual specifications:
-32602
from JSON-RPC 2.0 so that client knows LSP does not support new version.Basically:
Putting LSPS2 and LSPS4 specifically in separate LSPS numbers also makes it much easier to reason about the LSPS states "For Implementation" "Stable" and "Deprecated". Until LSPS4 is stable, we should not deprecate LSPS2. If we move LSPS4 as LSPS2v2 then we need separate states for each version of an LSPS.
No-version FTW.