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

Producer is missing in terminology section #656

Closed
sebastiankb opened this issue Dec 20, 2021 · 4 comments · Fixed by #669
Closed

Producer is missing in terminology section #656

sebastiankb opened this issue Dec 20, 2021 · 4 comments · Fixed by #669

Comments

@sebastiankb
Copy link
Contributor

as @benfrancis noted in w3c/wot-thing-description#1324 there is a "Consumer" definition, however, no one for "Producer".

Maybe this issue can be simple solved to add simple "Producer" in the title of

image

So it comes "Thing or Web Thing or Producer"

@mlagally
Copy link
Contributor

Arch call on Dec 23rd:
TD Producer, could be a separate terminology entry, could also be manually written by a human.
it would be good to distinguish between producer and Thing for the cases where a TD of a Thing is produced by some other entity
"Exposing a TD" could also be worth defining
we should clearly define, "expose", "consume", "produce"
Skimming the architecture specification about the use of produce, consume should
A thing exposes a TD, an application, consumer, intermediary consumes.
there is a possibility that we should identify which term would be better for which part

Where do we use the "expose" term? So far we used "consumer"/"producer", not sure about what discovery does

@mmccool
Copy link
Contributor

mmccool commented Feb 1, 2022

We talked about this a bit in the Editor's call as I wanted to clarify how the term "Expose" is used in the Scripting API. There was also some related discussion in Discovery a few months ago that I think is relevant.

Currently, "Expose" means "to make available the network API described by a Thing Description". It does NOT mean "make the TD available", and I don't think we want to confuse the two. In particular, in the Scripting API to "Expose a TD" just means to generate the network API described by the TD; it does NOT mean make it available for discovery. I also mentioned that I think "Producer" has the problem that implies both "generation" and "providing" of the TD.

So I would like to propose the following terms:
Exposer - The entity (Thing) that makes the affordances described by a Thing Description available on the network.
Provider - The entity that makes the Thing Description of a Thing available for Discovery.
Generator - The entity that creates the Thing Description for a Thing (for example, by instantiating a Thing Model with concrete parameters)

These may not all be the same entity. For a self-describing Thing, it may be both "Provider" and "Exposer". A Thing might also self-Generate its own TD if all it has to do is plug a base IP address into a TM. In other cases these might all be separate. For instance, a small device may have its TD Generated by an installer and registered in a Directory. Then the installer is the Generator, the Directory is the Provider, but the device is the Exposer.

@mmccool
Copy link
Contributor

mmccool commented Feb 1, 2022

Ben's original definition seemed to make "Exposer" and "Producer" equivalent. However, Sebastian's PR defines "Producer" to be equivalent to what I have called "Generator" above, and Sebastian's definition does not imply that the "Producer" is also the "Exposer", which is good. HOWEVER, I think to address Ben's original point, we should also define "Exposer" to be consistent with "Consumer". And to have names for ALL the entities, I think adding a definition for "Provider" would also be useful.

Anyway, I'm ok with Sebastian's definition (== Generator in my comment, but I'm ok with Producer), but I think it's just 1 out of the 3 definitions we need.

@benfrancis
Copy link
Member

Thanks for breaking this down, @mmccool.

You are right that what I had in mind for "Producer" was simply the counterpart to "Consumer", which I assumed would carry out all three roles.

The definition of a Consumer:

An entity that can process WoT Thing Descriptions (including its JSON-based representation format) and interact with Things (i.e., consume Things).

This implies that a "Consumer" both parses a Thing Description (the counterpart to generating it) and interacts with the affordances of the Thing it describes (the counterpart to exposing affordances). Perhaps a Consumer might discover a Thing too, by acting as a consumer of a discovery service (the distinction from "Discoverer" is still not clear to me, since that term sounds like the opposite of its definition).

It would be much easier to understand in the majority of cases if there was simply a Producer (which generates and provides a Thing Description and exposes its affordances) and a Consumer (which discovers and parses a Thing Description and interacts with its affordances), but I agree that in theory the three roles could be carried out by three separate entities and sometimes it's necessary to distinguish between them.

Note that the line from the Thing Description specification which sparked this discussion...

Implementations of a TD Processor may be a TD producer only (able to serialize to TD Documents) or a TD consumer only (able to deserialize from TD Documents).

...implies that a "producer" can at least perform the generation part, so if the definition of producer does not include that function (or is not defined at all) then the Thing Description specification will need updating.


FWIW, in the Web Thing Protocol CG we so far just define the terms "WoT Client", "WoT Device" (aka "web thing"), "WoT Gateway" and "WoT Directory" which makes things more concrete, but I'm not going to open the "Servient" can of worms again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants