[wot-architecture] minutes - 6 May 2021

available at:
  https://www.w3.org/2021/05/06-wot-arch-minutes.html


also as text below.

Thanks,

Kazuyuki

---
   [1]W3C

      [1] https://www.w3.org/


                             ¡V DRAFT ¡V
                            WoT Architecture

06 May 2021

   [2]IRC log.

      [2] https://www.w3.org/2021/05/06-wot-arch-irc


Attendees

   Present
          Ben_Francis, Daniel_Peintner, Ege_Korkan, Kaz_Ashimura,
          Michael_Koster, Michael_Lagally, Michael_McCool,
          Sebastian_Kaebisch, Tomoaki_Mizushima

   Regrets
          -

   Chair
          Lagally

   Scribe
          kaz

Contents

    1. [3]Minutes
    2. [4]Agenda
    3. [5]MR 77
    4. [6]Summary of action items
    5. [7]Summary of resolutions

Meeting minutes

  Minutes

   Lagally: there are not many people today, so minutes review
   next time

  Agenda

   Lagally: would review the MRs
   ¡K any other topics?

   (none)

  MR 77

   <mlagally> [8]MR 77 - New Protocol Binding section

      [8] https://github.com/w3c/wot-profile/pull/77


   Lagally: would like to talk with Ben

   McCool: note there are several MRs

   Lagally: would like to start with MR 77

   [9]diff version

      [9] https://pr-preview.s3.amazonaws.com/w3c/wot-profile/77/594c374...benfrancis:f70ec75.html


   McCool: last week, I created a branch

   Lagally: ok

   Ben: hope this is the least controversial

   [10]5.2 Protocol Binding

     [10] https://pr-preview.s3.amazonaws.com/w3c/wot-profile/77/594c374...benfrancis:f70ec75.html#protocol-binding


   Ben: first one is Properties
   ¡K less controversial operation
   ¡K some comments from McCool
   ¡K (goes through the diff)
   ¡K 2 open issues there
   ¡K e.g., the body of GET request
   ¡K couple of suggestions there

   McCool: a few comments here
   ¡K reasonable approach to me
   ¡K focus on HTTP
   ¡K regarding the body of GET request issue
   ¡K server must ignore and the client may do it but not
   recommended

   Lagally: should we see the proposal at a higher level first?
   ¡K a couple of questions

   

   A Consumer or Web Thing conforming to the WoT Core Profile MUST
   implement this protocol binding.

   ]]

   Lagally: so the protocol binding defined at section "5.2
   Protocol Binding" must be implemented

   McCool: a Consumer or Web Thing which conforms to the WoT Core
   Profile must implement it

   [11]around Example 1

     [11] https://pr-preview.s3.amazonaws.com/benfrancis/wot-profile/pull/77.html#example-1


   McCool: we should also somewhere probably have a finite set of
   recommended protocols, etc.

   Ben: also add a section on security
   ¡K may possibly mention it in that security section

   Lagally: security section to be discussed separately
   ¡K (goes through the description around Example 1)
   ¡K any constraint on upper case vs lower case?

   Ben: we have key-value pair
   ¡K based on the valid JSON specification

   Sebastian: +1
   ¡K each JSON processor can handle that

   Ben: there is a reference for JSON

   [12]referring to JSON Data Interchange Formant - RFC8259

     [12] https://datatracker.ietf.org/doc/html/rfc8259


   Sebastian: 2 situations here
   ¡K specific sub protocol specified
   ¡K or not

   McCool: you could have JSON Object
   ¡K including time information like time stamp

   Ben: once we get how Actions work

   McCool: if we have GET on property
   ¡K server can ignore things

   Lagally: but currently we don't any specification about the
   data format

   McCool: you don't have constraint in this section
   ¡K if done, elsewhere

   Lagally: whether we allow all the possible subsets or not
   ¡K is my question
   ¡K let's look into the description
   ¡K (below Example 2)
   ¡K "E.g." right before the error codes
   ¡K are these the only possible errors?

   Ben: they're just examples

   McCool: probably we should describe all the possible errors
   here

   Ben: "401 Unauthorized" actually means "Unauthenticated" here

   McCool: we might want to cite the HTTP spec

   Kaz: if we can simply refer to the HTTP spec for the errors, we
   should simply do so

   <sebastian> +1

   Kaz: but if our meanings are a bit different from the original
   meanings, we should define the diff here

   Ben: in practice, most HTML implementations just have simpler
   error responses
   ¡K if we want to define some specific meanings, we should define
   them here

   Lagally: we don't need a complete list here
   ¡K but could just add a table and reference to the HTTP spec

   McCool: working on a PR
   ¡K noticed some string to be included in the response
   ¡K think ignore is a possible option

   Ben: problem details for HTTP APIs describing the errors

   <mlagally> [13]https://tools.ietf.org/html/rfc7807


     [13] https://tools.ietf.org/html/rfc7807


   McCool: would +1
   ¡K this is a reasonable set

   Lagally: need to have a title?

   

   For example, an HTTP response carrying JSON problem details:

   HTTP/1.1 403 Forbidden

   Content-Type: application/problem+json

   Content-Language: en

   {

   "type": "[14]https://example.com/probs/out-of-credit",

     [14] https://example.com/probs/out-of-credit


   "title": "You do not have enough credit.",

   "detail": "Your current balance is 30, but that costs 50.",

   "instance": "/account/12345/msgs/abc",

   "balance": 30,

   "accounts": ["/account/12345",

   "/account/67890"]

   }

   ]]

   McCool: could make detail optional

   Lagally: don't want to have many optional features

   McCool: could keep it empty

   Lagally: so must have problems details based on this "Problem
   Details for HTTP APIs"

   <McCool> in summary, my suggestion is that IF there is a
   response, it MUST follow this RFC

   <mlagally> Proposal: Error responses MUST have details
   conforming to [15]https://tools.ietf.org/html/rfc7807


     [15] https://tools.ietf.org/html/rfc7807


   <McCool> ... and also, there should be a data schema for this
   error response in the TD (a pending feature...)

   Kaz: btw, even we add a reference to "Problem Details for HTTP
   APIs", we should clarify why chose these 5 errors (=400, 401
   403 404, 500)

   Lagally: we should add some semantics for each error for WoT
   purposes

   McCool: for example, "401 Unauthorized" is recoverable (e.g.,
   ask the password again)
   ¡K but the others are kind of fatal

   Proposal: Error responses MUST have details conforming to
   [16]https://tools.ietf.org/html/rfc7807


     [16] https://tools.ietf.org/html/rfc7807


   Ben: suspect the spec (RFC7807) doesn't allow empty value

   <mlagally> Proposal: Error response bodies, if they are
   provided, MUST have details conforming to [17]https://
   tools.ietf.org/html/rfc7807

     [17] https://tools.ietf.org/html/rfc7807


   Lagally: agree?

   Resolution: Error response bodies, if they are provided, MUST
   have details conforming to [18]https://tools.ietf.org/html/

   rfc7807

     [18] https://tools.ietf.org/html/rfc7807


   McCool: the other resolution is listing those 5 errors as
   examples

   <mlagally> Proposal: the list of error codes is a finite list,
   the current examples in 5.2.1.1. are a reasonable starting
   point.

   McCool: maybe we should create an issue to see the error codes
   for directory services

   Lagally: can you see that?

   McCool: ok
   ¡K will create an issue on the wot-discovery repo

   Action: Mccool: check the pagination response codes in the
   discovery spec

   Action: Ben: double check the list of error codes in WebThings

   <McCool> issue to check error codes for discovery [19]https://
   github.com/w3c/wot-discovery/issues/167

     [19] https://github.com/w3c/wot-discovery/issues/167


   Kaz: what about Oracle's Digital Twin service's error codes?

   Lagally: can also look into that

   Action: Lagally: check error codes of Oracle's digital twin
   implementation

   Lagally: wondering about node-wot's error codes

   Sebastian: good question :)
   ¡K depends on the protocol you use
   ¡K there is no classification of errors at the moment

   McCool: the question is error code included in the body or not

   Sebastian: will double check with the node-wot team about error
   handling

   Sebastian: Daniel is coming now

   Lagally: next "5.2.1.2 writeproperty"

   <McCool> [20]https://w3c.github.io/

   wot-scripting-api/#error-handling

     [20] https://w3c.github.io/wot-scripting-api/#error-handling


   <McCool> [21]https://github.com/w3c/wot-scripting-api/issues/

   200

     [21] https://github.com/w3c/wot-scripting-api/issues/200


   (Daniel joins)

   Lagally: (explains the discussions so far)

   Daniel: need to look into the detail

   McCool: put some resources from the Scripting APIs above
   ¡K Scripting API is protocol-dependent
   ¡K error code in the body?

   Daniel: in the text, each implementation to provide as much
   information as possible

   Lagally: we're talking about HTTP here
   ¡K (explains RFC7807)

   <dape> [22]https://heycam.github.io/

   webidl/#idl-DOMException-error-names

     [22] https://heycam.github.io/webidl/#idl-DOMException-error-names


   Lagally: the primary point is if there is any additional error
   used by node-wot in addition to the current list (=400 401,
   403, 404, 500)

   Daniel: some resource above
   ¡K this is more generic

   McCool: if we have an abstract class of errors, that's fine
   ¡K maybe could be documented here
   ¡K the intention is hiding the details from applications

   Daniel: useful to have the information of "404" but should not
   put any private information

   McCool: right
   ¡K even just checking device's availability could be a footprint

   Lagally: let's see what we're doing based on HTTP

   Daniel: the interface for node-wot itself should be abstract
   (=independent from protocols)
   ¡K if we get an error with HTTP, we can possibly suggest CoAP to
   be used

   McCool: we could set it up so the Scripting API to handle the
   context

   Lagally: good questions but we don't have to answer to them
   now...

   McCool: can create an issue

   Lagally: would like to create an action for Daniel to see the
   node-wot's error codes
   ¡K wot-scripting issue 200 already talks about that

   Daniel: think we can reuse the errors within WebIDL as I put
   above

   Lagally: any additional ones from your viewpoint?

   Daniel: the list within WebIDL is rather complete, I think
   ¡K but I can take an action to look into node-wot's error codes

   Action: Daniel: double check node-wot's error codes, are there
   error response payloads?

   Ben: WebThing description API has fetch API
   ¡K which information to be considered?

   Daniel: if you need to support the interface, we need to
   consider fetch error as well, though it could be different
   among protocols
   ¡K if you write a property and if the response is success, we'll
   get 200

   McCool: (add comments to wot-scripting issue 200)

   <McCool> my comments on error and a suggested implementation
   [23]https://github.com/w3c/wot-scripting-api/issues/

   200#issuecomment-833607756

     [23] https://github.com/w3c/wot-scripting-api/issues/200#issuecomment-833607756


   Ben: there is a use case

   Daniel: there was an open issue on the Scripting side

   <dape> [24]wot-scripting Issue 193 - Should writeProperty()
   return a value

     [24] https://github.com/w3c/wot-scripting-api/issues/193


   Lagally: if we assume we always return the payload...

   Daniel: Ege mentioned there was something reports back with the
   payload
   ¡K not sure they used HTTP and need to look into the detail

   Ben: could be a problem
   ¡K because it assumes some specific protocol

   McCool: we should be careful how to write it up

   Ben: as long as it's reference to data schema

   Lagally: let's make a proposed language here

   (Ege joins)

   Daniel: can see the point
   ¡K but it doubles messages on the network

   [25]RFC7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics
   and Content

     [25] https://tools.ietf.org/html/rfc7231


   <mlagally> Proposal:For writeproperty there's no response
   payload, the return code on successful completion is 204 (No
   Content)

   Lagally: (shows the RFC7231 to refer to the error code 204 (no
   content))

   Resolution: For writeproperty there's no response payload, the
   return code on successful completion is 204 (No Content)

   Lagally: there are just 10mins
   ¡K so would ask you all to review the remaining sections
   (=readallproperties, writeallproperties,
   readmultipleproperties, writemultipleproperties)
   ¡K to be honest, have difficulty with readmultipleproperties and
   writemultipleproperties

   Daniel: supported by the Scripting APIs

   McCool: implemented by node-wot?

   Daniel: right

   Ben: some proxy might cache the body

   McCool: so might break interoperability

   Ben: right

   Lagally: if we remove readmultiplproperties and
   writemultipleproperties would we loose anything?

   Sebastian: depending on use cases...

   McCool: readproperties and writeproperties are atomic

   Koster: writeallproperties seems to be odd

   <McCool> +1 with using readall and writemultiple only

   <mlagally> Proposal: Keep readallproperties,
   writemultipleproperties only, eliminate the other two
   operations

   Kaz: "the other two" means readmultiple and writeall. right?

   Lagally: yes

   Ben: don't mind if remove them

   Resolution: Keep readallproperties, writemultipleproperties
   only, eliminate the other two operations (remove 5.2.1.5 and
   5.2.1.4) from the profile.

   all: good

   [adjourned]

Summary of action items

    1. [26]Mccool: check the pagination response codes in the
       discovery spec
    2. [27]Ben: double check the list of error codes in WebThings
    3. [28]Lagally: check error codes of Oracle's digital twin
       implementation
    4. [29]Daniel: double check node-wot's error codes, are there
       error response payloads?

Summary of resolutions

    1. [30]Error response bodies, if they are provided, MUST have
       details conforming to https://tools.ietf.org/html/rfc7807

    2. [31]For writeproperty there's no response payload, the
       return code on successful completion is 204 (No Content)
    3. [32]Keep readallproperties, writemultipleproperties only,
       eliminate the other two operations (remove 5.2.1.5 and
       5.2.1.4) from the profile.


    Minutes manually created (not a transcript), formatted by
    [33]scribe.perl version 131 (Sat Apr 24 15:23:43 2021 UTC).

     [33] https://w3c.github.io/scribe2/scribedoc.html

Received on Monday, 12 July 2021 08:22:44 UTC