solid / solid-spec

Solid specification draft 0.7.0
Creative Commons Zero v1.0 Universal
1.13k stars 103 forks source link

Explictly indicate WebSockets version #220

Closed RubenVerborgh closed 4 years ago

RubenVerborgh commented 4 years ago

The current WebSockets protocol is in draft, and will likely go through multiple versions in the future. This PR proposes to explicitly indicate the version, both from the client and the server side.

This change aims to be backwards compatible with existing client implementations.

RubenVerborgh commented 4 years ago

if you look at the current IANA registry of WebSocket subprotocols, none of them use a slash in their names

Interesting list, thanks. I see that the naming convention is (unfortunately) quite random. I had imitated the / from the User-Agent header (but then I should probably drop the v, upon closer inspection). No strong feeling; could also be other character like @ (npm style), or - or .. I meanly see . in the list.

melvincarvalho commented 4 years ago

-1 I would like to block this merge while I speak to @timbl and @johnbizguy

My basic objection is along the lines of substantive, and potentially breaking changes, being made should incur a change to the version number of the spec. Whether that is a minor version can be discussed

I would suggest a major version as it can then be a bridge to the future spec. There is a whole other repo for that future work

The MIT work up to 0.7 should be frozen as it has major work and implementations. It has not been, and that is already problematic, and causing production problems

New changes with a new team and new process should be based on a new version number

RubenVerborgh commented 4 years ago

There will be a version increase after changes like this one indeed. Does that solve your problem?

csarven commented 4 years ago

-1 I would like to block this merge while I speak to @timbl and @johnbizguy

Like over a telephone call?

I agree with you on this repo being frozen and ongoing work is happening elsewhere. Perhaps we can clarify the former. FWIW, the intention of this PR was to temporarily mitigate existing risks in implementing Solid's WebSocket. Think of it as a hot patch or a worthwhile errata to bring forward with good intentions. As mentioned, it is backwards compatible, so anyone that happens to run into this will be aware.

Note that if WebSocket is adopted in the ongoing solid specification, it can implement or at the very least consider this. See also https://github.com/solid/specification/issues/163 .

melvincarvalho commented 4 years ago

A version change in connection with this change would be acceptable, yes

RubenVerborgh commented 4 years ago

That will happen, of course. Can you unblock this issue then if nothing else?

johnbizguy commented 4 years ago

Let me know what I can do to help.

Thanks,

John

On Apr 8, 2020, at 5:52 AM, Sarven Capadisli notifications@github.com wrote:

 -1 I would like to block this merge while I speak to @timbl and @johnbizguy

Like over a telephone call?

I agree with you on this repo being frozen and ongoing work is happening elsewhere. Perhaps we can clarify the former. FWIW, the intention of this PR was to temporarily mitigate existing risks in implementing Solid's WebSocket. Think of it as a hot patch or a worthwhile errata to bring forward with good intentions. As mentioned, it is backwards compatible, so anyone that happens to run into this will be aware.

Note that if WebSocket is adopted in the ongoing solid specification, it can implement or at the very least consider this. See also solid/specification#163 .

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

RubenVerborgh commented 4 years ago

Given the approvals, I will merge. It's marked as needing a version bump.

melvincarvalho commented 4 years ago

@johnbizguy thanks for the response

The basic request is that the specification version in the README is incremented, corresponding to this change

Given the general agreement on this, I've removed the blocking objection

However, It has not been done yet

So the request is to bump the version, as a next step, and just ensure it doesn't get kicked into the long grass

RubenVerborgh commented 4 years ago

Yeah the problem is that there are some other changes pending. We shouldn't bump for one minor change. Should either merge all soon and bump, or ensure that another branch is the visible one.

johnbizguy commented 4 years ago

We discussed as an exec team this morning and keen to do what we can to help. It looked as though Melvin and Ruben aligned on what’s appropriate?

Thanks,

John

On Apr 8, 2020, at 2:06 PM, Ruben Verborgh notifications@github.com wrote:

 Yeah the problem is that there are some other changes pending. We shouldn't bump for one minor change. Should either merge all soon and bump, or ensure that another branch is the visible one.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

melvincarvalho commented 4 years ago

@johnbizguy thanks much for the offer of assistance!

Unfortunately, we are not quite in sync, yet

My objection was a simple one, and that is, that was that this merge, should be accompanied with a version bump

Unfortunately, that hasnt happened yet, and there seems to now be a shift of the goal posts. See the comment "We shouldn't bump for one minor change"

What I suggest is to either ahead and bump the version as agreed, or revert the change, and think again

johnbizguy commented 4 years ago

Seeing what we can do to help

RubenVerborgh commented 4 years ago

@melvincarvalho Just give us a minute, alright? I said there will be a bump, you know I'm a man of my word. End of story. You will receive a notification with the bump.

RubenVerborgh commented 4 years ago

Hi @melvincarvalho, thanks for your patience.

Here's what I've done for you to address this issue:

  1. Added a tag to the frozen 0.7.0, which will never change: https://github.com/solid/solid-spec/tree/v0.7.0
  2. Linked to that frozen 0.7.0, as it is the currently active version: https://github.com/solid/solid-spec/commit/bf299ebe53bbc6e823bdf90f4e7639bec645683f
  3. Bumped the version to indicate that the WebSockets adjustment is part of the next version (and thus not of 0.7.0): https://github.com/solid/solid-spec/commit/cb1373a369398d561b909009bd0e5a8c3fec953b

We do not consider 0.7.1 finished yet, so are reluctant to publish it as such. Hence the choice for v.0.7.0-next and the explicit mention of it being evolving.

However, should this not satisfy your concerns, please let me know at your earliest convenience and we will release the current v.0.7.0-next as v0.7.1 immediately.

Thank you for your help and input.

melvincarvalho commented 4 years ago

Not looked in detail, but I think I can live with this. Thanks for the quick response.

melvincarvalho commented 4 years ago

Looked at this closer. I can live with this in principle. One slight detail:

The v0.7.0 tag should match the commit https://github.com/solid/solid-spec/commit/c9a821444124d5441561f2ff49b622b716229238 (or earlier). I believe the commit after that was the first that came about with a new work flow

This is actually nearer to the actual release date of 0.7.0 and matches the CHANGELOG

That segments the MIT created spec from a newer process, newer team, newer spec. Although actually there is a whole other repository for the newer spec items

This is also quite close to the very good suggestion made my @michielbdejong in https://github.com/solid/solid-spec/pull/199

My basic request is to have a clean separation. There is mainly upside, and very little downside, in that it's largely just a label, and good house keeping

If we can agree on that, I think we're good

RubenVerborgh commented 4 years ago

Changed v0.7.0 to point to c9a821444124d5441561f2ff49b622b716229238 per direct.

melvincarvalho commented 4 years ago

Thanks. That works for me

melvincarvalho commented 4 years ago

@johnbizguy @timbl thanks again for you attention, I think this is a useful issue for your exec team to look at, even if casually

In particular, consider the following statements:

Sarven: Think of it as a hot patch or a worthwhile errata

and

Ruben: We shouldn't bump for one minor change

And looking at the actual change:

The client _SHOULD_ include the protocol version `solid/0.1.0-alpha`
in the `Sec-WebSocket-Protocol` header.

Implication 1: solid client apps and solid client libraries (e.g. rdflib.js) are compliant with the previous spec, but not this one. Client tests will fail.

if the set of values obtained
from parsing the `Sec-WebSocket-Protocol` header
does not contain `solid/0.1.0-alpha`,
then the server SHOULD emit a warning
and SHOULD close the connection:

Implication 2: of all solid servers compliant with the previous version of the spec, none will be compliant with this version. Server tests will fail.

Implication 3: none of the solid realtime apps will work against a server that complies with this spec. Apps will run against old servers, but not against new. Backward compatible, it is not, IMHO

If you are minded to, I would invite your exec team, to consider the implications to solid of this change. And come to a conclusion as whether they think the change constitutes a minor version bump, a major version bump, or none at all. Perhaps just as a useful thought experiment, if nothing else.

Just writing this out for completeness. As I say, I can live with the current resolution

RubenVerborgh commented 4 years ago

@melvincarvalho Respectfully, but the above is technically incorrect. Please do not cause unnecessary worries about compatibility breakage, because there is none.

Given that existing clients do not send the header, the part you copied above does not apply. This invalidates implications 1 and 3.

The warning is a SHOULD. This invalidates implication 2.

Can we now please focus our energy on things that have impact? We’ve spent too much time on this already.

csarven commented 4 years ago

I find Ruben's response to the implications that Melvin raises is satisfactory within this PR.

@melvincarvalho As we are operating under the W3C Solid Community Group and the Solid process, I think we agree that the issue you've raised about versioning have been acknowledged and followed up with updates which you've approved. If you'd like to continue the implications in a manner beyond this PR or a new issue, the best place to take it up would be in a solid/specification meeting (in chat or weekly call), possibly in solid/process or solid/chat if you prefer. To the best of my knowledge, there is no other "official" grouping that can adequately and transparently take this up.

RubenVerborgh commented 4 years ago

So given that @melvincarvalho's reaction is limited to a :-1:, I will lock this issue now to prevent any further unnecessary draining of resources, which has already bitten us multiple times in the past. The issue has been dealt with. I will also hide the comment with technically inaccurate information. Anything else needs a new issue, and likely not in this repository.

If you want to pursue this, I will explicitly request valid evidence of either a) a real technical problem; or b) any other member of the community considering this a problem.

Following @csarven, I also want to emphasize that the connection made to a company is irrelevant here. In particular, my statements are my own. This issue and repository belong to the Solid community; all else is a misunderstanding on which we should not spend any more time.

melvincarvalho commented 4 years ago

I do not wish my response to be censored. Therefore, I have unhidden. Would appreciate if it was left that way.

RubenVerborgh commented 4 years ago

Sorry, the not spreading of incorrect information is more important. You deliberately altered parts of spec text in order to make false claims about incompatibility.

Please stop interaction with this issue now; it has been locked for that reason.