-
Notifications
You must be signed in to change notification settings - Fork 6
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
Bindings: Confusing use of the term "protocol binding" #14
Comments
Before finding a term, I would like to identify the different "concepts" we have:
I think that 3 and 5 are doing the same thing, i.e. restricting the usage of a protocol. 1 is more of a document to reference to, more fitting for the word template. 2 is descriptive, 3 and 5 are prescriptive. 4 is instance specific. With these in mind, I propose the following:
@benfrancis I would like to nail this discussion asap since it appears in the charter. Can you join a charter discussion, TD/Binding meeting? Otherwise, we can arrange a separate call for this. |
@egekorkan Thank you for responding, and for your proposal. I have the following concerns with your proposal:
If you don't like the alternative terminology I proposed in w3c/wot#1065 (comment) then I would instead suggest we stick to the existing definitions of the terms "protocol binding" and "protocol binding template", used as follows:
Protocol Binding Templates and Profiles provide two alternative and complementary mechanisms for defining a protocol binding of a Thing. One is descriptive (best suited to brownfield applications where one system is being integrated with another) and the other is prescriptive (better suited to greenfield applications which can benefit from universal plug-and-play interoperability). Wildcard Option There's currently redundancy between the WoT Thing Description, WoT Profile and WoT Binding Templates specifications in that all three specifications define a set of overlapping "defaults" for communicating with Web Things using HTTP (e.g. An extreme option could be to combine all three of these into a single "HTTP Protocol Binding", which includes all of the details from the HTTP Basic Profile protocol binding as defaults. That is to say that if a Thing Description includes HTTP endpoints then a Consumer should assume that it conforms to those defaults, unless it overrides the defaults using the defined vocabulary. All Consumers would support those defaults. That way, the HTTP Protocol Binding document would provide a detailed mapping of interaction affordances onto concrete messages of a given protocol, but those mappings could be overridden using the provided vocabulary (e.g. to change a A Profile could then constrain Things by saying that they MUST conform to the defaults in the HTTP Protocol Binding and not override them, then it wouldn't need to define a protocol binding at all. There could similarly be an SSE Protocol Binding which provides default mappings for observing properties and subscribing to events using Server-Sent Events, and a Webhook Protocol Binding which provides the same defaults for Webhooks.
I'm sorry I couldn't spare another 6 hours to discuss the charter again this week. If you add this issue to the agenda of a specific meeting and can guarantee that it will be discussed, then I will try to join. |
Some comments for @benfrancis :
|
👍
Interesting.
What do you mean by "swap the order"? I agree that the prescription of particular JSON payloads in profiles complicates things. The Thing Description specification already specifies that the default However, Profiles currently go further than that, e.g. by defining the Similarly, the HTTP SSE Profile defines how to map data schemas onto event and property observation payloads and there's the ongoing debate about the payload format for WebHooks.
Conversely, the problem with calling the sub-specifications "protocol bindings" is that it makes the document sound as though it provides a protocol binding on its own, which it currently doesn't. This has been a source of confusion for many years now and was one of my main motivations for working on profiles, in order to provide that crucial missing piece. Merging the protocol binding work from profiles into binding documents would fulfil that need and resolve the ambiguity, but has significant ramifications.
This is another argument for merging the two.
Sounds good. The resolution in today's call doesn't explicitly say that the binding documents will be normative. My assumption is that the WoT Binding Templates document will be a W3C REC containing registries which link to W3C Notes. Whether or not those Notes are normative or non-normative is another matter. What's the next step? If we were to go with the wildcard option of merging the protocol binding from the HTTP Basic Profile into the HTTP Protocol Binding Template document as defaults and renaming it to "HTTP Protcocol Binding" (then doing the same for an SSE Protocol Binding and Webhook Protocol Binding), what does that mean for WoT Profile 1.0? We either have to take the current approach in WoT Profile 1.0 (continuing to use the term protocol binding inside profiles as an alternative to protocol binding templates), or otherwise delay WoT Profile by two years or more until TD 2.0 and Binding Templates 2.0 are published. |
See also...
...for discussion on how Bindings and Profiles could fit together. |
tl;dr: If the current detailed prescriptive protocol bindings from WoT Profile are merged into binding documents as defaults (which profiles can then reference) then I'm OK with calling those documents "protocol bindings", otherwise I think they need to keep a different name like "protocol binding template" or "protocol vocabulary". |
going to label this as both details and charter since I'm not sure the issue appears in the charter draft. |
To confirm, the current charter draft does also use this terminology:
|
Just to cross link, we will solve one part of the problem at #62 (comment) with a dedicated PR. However, the TD+Binding+Profile TFs need to work together on agreeing how a reader needs to be guided for an implementation. |
@benfrancis , we got assigned to this but it is mainly to indicate that the discussion is between you and me. I think our decision is that we do not have a conclusion but the charter (not the details) do not constrain us in a specific way. In the next charter, we should dedicate initial work to clarifying all the terminology. |
@egekorkan OK, but I hope we can involve more people in that discussion and not just discuss it amongst ourselves. I think the current wording of the charter still implies (though doesn't explicitly say) that "additional protocol and payload bindings" will be defined in "binding documents", which are a separate thing to "profiles". That doesn't reflect the current reality where protocol bindings are actually defined in instances of forms in Thing Descriptions using binding templates or are defined in profiles. I'm hopeful that we can find a better way for profiles and binding documents to work together so that (default) "protocol bindings" really are defined in binding documents and profiles just reference them, but if that proves not to be possible then I hope that we can adjust the terminology of the actual specifications to make it clearer that binding documents do not in fact define protocol bindings but vocabularies for defining custom protocol bindings in a TD. As you say, these details can be figured out during the planning phase of the next charter period. However, given the change that is implied by the different terminology used in the new charter compared with the old charter (which talked about "vocabularies" and "templates" and "how to use that vocabulary in a protocol binding") I would feel more comfortable if we had input from more people (e.g. @mlagally @mmccool @sebastiankb @mjkoster) on the proposal for how bindings and profiles could work together in 2.0. |
|
See PR #103 , which I hope resolves this issue for the charter. |
FWIW the issue is with using "binding" vs. "binding template", not "protocol binding" vs. "binding" so this kind of misses the point, but I appreciate the effort to use more general language in order to give us more wiggle room on the exact definition of those terms. |
I'm filing this issue to capture unresolved feedback about the use of the term "protocol binding" in the names of work items in the 2023 charter, which risks causing continued confusion.
Please see my comments in w3c/wot#1065 for a detailed discussion.
The term "protocol binding" is being conflated with the term "protocol binding template" and used in a way which is inconsistent with the definition of the term "protocol binding" in WoT Architecture.
Is a "protocol binding" a vocabulary (including defaults) for use in Forms, or an instance of a Form in a Thing Description which may use such a vocabulary? It can not be both.
The reason this subtle point is important is that there are two ways of providing a protocol binding in a Thing Description instance:
Calling the "HTTP Protocol Binding Template" work item the "HTTP Protocol Binding" risks causing confusion with the protocol bindings provided in the WoT Profile specification such as the HTTP Basic Profile Protocol Binding.
I have suggested potential alternative terms for binding templates in w3c/wot#1065 (comment) (e.g. "protocol vocabulary").
Alternatively if the term "protocol binding template" really is going to be renamed to "protocol binding", then we will need a new term to describe instances of protocol bindings serialised as forms (e.g. "protocol binding instance"), and the shared protocol bindings provided by profiles (e.g. "sub-protocol") - but that opens up a whole other can of worms.
The text was updated successfully, but these errors were encountered: