Hi, Eric and Hisham,

I have been selected as the General Area Review Team (Gen-ART) reviewer for
this draft (for background on Gen-ART, please see
http://www.alvestrand.no/ietf/gen/art/gen-art-FAQ.html).

Please resolve these comments along with any other Last Call comments you may receive.

Document: draft-ietf-simple-imdn-06
Reviewer: Spencer Dawkins
Review Date: 2008-01-22
IETF LC End Date:
2008-01-29
IESG Telechat date: (if known)

Summary: Almost ready for publication as a Proposed Standard, with questions.

Comments: This draft is very well-written. I have a number of questions, most of which are probably editorial in nature (I'm just making sure).

Abstract

  Instant Messaging (IM) refers to the transfer of messages between
  users in real-time.  This document provides a mechanism whereby
  endpoints can request Instant Message Disposition Notifications
  (IMDN), including delivery, processing, and read notifications, for

Spencer: please feel free to tell me "no", but this specification is very careful to distinguish between "rendered" and "read" (to the point of using Latin in explaining how "read" doesn't really mean that a user read something), so I'm not sure why the notification type is called "read". Could this type of notification be more clearly called "rendered"?

  page-mode instant messages.

1.  Introduction

  Message/CPIM [2] is a message format used to generate instant

Spencer (nit): please expand CPIM on first use (yes, this is a message type, but CPIM isn't expanded two paragraphs down, either).

  messages.  SIP [8] can carry instant messages generated using
  message/CPIM in SIP MESSAGE requests [9].

  IMDNs include positive delivery, negative delivery (i.e. a message
  did not get delivered successfully), read notifications as well as

Spencer (nit): since "read" is actually past tense here, the sentence might be clearer as "read notifications (which notify the sender that an IM Receiver has rendered the IM to a user)"...

  processed notifications.  By using CPIM header fields, the IMDN
  request and delivery are abstracted outside the transport protocol
  allowing interoperability between different IM systems.

3.  Terminology

  o  Intermediary: An entity in the network that is on the path of an

Spencer: Is this "An entity in the network that forwards IMs"? as distinct from anything that doesn't operate at the SIP/SIMPLE level?

     IM to its final destination.  Intermediaries also can generate and
     send processing IMDNs to IMs, if requested by the IM Sender and
     allowed by policy.

  o  Disposition type: the type of IMDN that can be requested.  This
     specification defines three, namely "delivery", "processing" and
     "read" disposition types.

Spencer (nit): I understand that "three" is correct here, but the Introduction breaks out successful and unsuccessful delivery, so it lists four notifications, while this definition lists three IMDN types. And then Section 5 breaks out all KINDS of notifications. Could these be presented consistently?

4.  Overview

  +--------------+                        +--------------+
  |  IM Sender   |                        | IM Recipient |
  |IMDN Recipient|                        | IMDN Sender  |
  +--------------+                        +--------------+
          |                                       |
          |                                       |
          |         1. IM requesting IMDN         |
          |-------------------------------------->|
          |                                       |
          |                                       |
          |         2. IMDN (disposition)         |
          |<--------------------------------------|
          |                                       |
          |                                       |


Spencer (nit): it would be lovely if this diagram was numbered and labeled.

Spencer: It would be double-lovely if there was a corresponding diagram that showed an intermediary, either here or (more likely) in Section 8 ("Intermediary Behavior").

  Note that the recipient of an IMDN, in some instances, may not be the
  IM Sender.  This is specifically true for page-mode IMs where the
  Address of Record (AOR) of the IM Sender, that is present in the IM,
  resolves to a different location or user agent than the IM
  originated.  For simplicity, the rest of this document assumes that

Spencer: could this say something like "IMDN delivery to an AOR uses normal AOR resolution, which may involve serial or parallel forking to multiple UAs, but for simplicity ..."? I think most people would guess the right answer, given a moment to think, but ...

  the IM Sender and the IMDN Recipient are the same and therefore will
  refer to both as the IM Sender.


5.  Disposition Types

  There are three broad categories of disposition states.  They are
  delivery, processing, and read.  Future extensions may introduce
  others.

Spencer: note to reviewer - how are extensions identified? :-)

5.3.  Read

  Since there is no positive acknowledgement from the user, one cannot
  determine a priori the user actually read the IM.  Thus, one cannot

Spencer (nit): "Latin as a Second Language (LSL)"...

  use the protocol described here as a non-repudiation service.

6.1.  CPIM Header Field Namespace

  Of course, clients are free to use any prefix and servers must accept

Spencer: is this "intermediaries must accept"? If "servers" and "intermediaries" are interchangeable, you might pick one...

  any legal namespace prefix specification.

6.2.  Disposition-Notification

  The IM Sender MUST include the Disposition-Notification header field
  to indicate the desire to receive IMDNs from the IM Recipient, for

Spencer: "MUST include ... if it wishes to receive"? "MUST ... or maybe not" in two different sentences seems a little unclear.

  that specific IM.  This header field is not needed if the IM Sender
  does not request an IMDN.  Section 10 defines the syntax.

7.1.4.  Aggregation of IMDNs

  An IM Sender may send an IM to multiple recipients in one Transport
  Protocol Message (typically using a URI-List server) and request

Spencer (nit): suggest reference to [13] for URI-List here.

  IMDNs.  An IM Sender that requested IMDNs MUST be prepared to receive
  multiple aggregated or non-aggregated IMDNs.  See Section 8.2 for
  details.

7.2.1.  Constructing IMDNs

  IM recipients examine the contents of the Disposition-Notification
  header field of the CPIM message to determine if an IMDN must be
  generated for that IM.  Disposition-Notification header fields of

Spencer: I didn't see a description of receiver behavior when a Disposition-Notification value isn't known to the receiver - is this just "error"? ("is this just obvious to everyone except Spencer"?)

  CPIM messages can include one or more values.  This implies that IM
  recipients may need to generate zero, one, or more IMDNs for that IM,
  for example a delivery notification as well as a read notification.
  In this case, the IM Recipient MUST be able to construct multiple
  IMDNs per IM.  An IM Recipient MUST NOT construct more than one IMDN
  per disposition type.  That is, it must not generate a delivery
  notification indicating "delivered" then followed by a delivery
  notification indicating "failed" for the same IM.  If the IM Sender
  requested only failure notifications and the IM was successfully
  delivered, then no IMDNs will be generated.

  As stated in CPIM [2], CPIM messages may need to support MIME headers
  other than Content-type.

Spencer (nit): I'm not sure what it means for a message to "support" a MIME header, but I'm kinda confused about what an implementor does to conform with "MIME headers other than Content-type". If it's obvious from [2], fine.

  IM Recipients MUST insert a Content-
  Disposition header field, set to the value "notification".  This
  indicates to the IM Sender that the message is an IMDN to an IM it
  has earlier sent.

7.2.1.2.  Constructing Read Notifications

  There are situations where the IM Recipient cannot determine if or
  when the IM has been read.  The IM Recipient in this case generates a
  read notification with a <status> value of "error" to indicate an
  internal error by the server.  Note that the IM Recipient may choose

Spencer: is "cannot determine if or when the IM has been read" the same as "internal error by the server"? The document seems to prefer "cannot determine" but uses both more-or-less interchangeably.

  to ignore any IMDN requests and not to send any IMDNs.  An IM
  recipient may not wish to let a sender know she read, or did not
  read, a particular message.  Likewise, she may not want anyone to
  know if she reads messages.  This could be on a per-message, per-
  sender, or programmed policy choice.

8.  Intermediary Behaviour

  In this context, intermediaries are application servers (including
  URI-List servers and Store-and-Forward server) and gateways.  A
  gateway is a server that translates between different IM systems that
  use different protocols.

Spencer: this doesn't seem entirely consistent with previous uses of "intermediary" and/or "proxy" (see previous comment asking whether "intermediary" and "proxy" were interchangeable). If this is the right definition, it would be good to include it in the terminology section.

  A URI-List server may change the IM Recipient address from its own to
  the address of the final recipient of that IM for every copy it makes
  that it sends to the list members (see [13] for details).  In this
  case, if the IM Sender is requesting an IMDN, the intermediary SHOULD

Spencer: is this SHOULD "unless the intermediary has been administratively configured not to reveal", etc at the end of the paragraph? It would be nice if this conditional was part of the same sentence, if so.

  add an Original-To header field to the IM populating it with the
  address that was in the CPIM To header field before it was changed.
  I.e., the Original-To header field is populated with the intermediary
  address.  An intermediary MUST NOT add an Original-To header field if
  one already exists.  An intermediary MAY have an administrative
  configuration to not reveal the original Request-URI, and as such,
  MAY chose not to add an Original-To header.

  An intermediary receiving an IMDN checks the top IMDN-Route header
  field.  If that header field carries the intermediary address, the
  intermediary removes that value and forwards the IMDN to the address
  indicated in the now top IMDN-Route header field.  If no IMDN-Route

Spencer (nit): s/If no/If no additional/ ?

  header fields are present, the IMDN is forwarded to the address in
  the CPIM To header field.

8.2.  Aggregation of IMDNs

  In this context, URI-List servers are defined as intermediaries.

Spencer: I'm confused here (not sure what "this context" is), but don't understand why this choice was made (it's a reasonable choice, but it might be worth a sentence to explain).

Spencer: this choice lets you call URI-List servers "intermediaries" in this section, but you only do it once (in the next sentence). Could you replace "intermediary" with "URI-List server" in the next sentence, just for consistency?

  A URI-List server MAY aggregate IMDNs for the case where the list
  membership information is not disclosed.  There may be scenarios
  where the URI-List server starts sending aggregated IMDNs and switch
  to individual ones or visa versa.  A timer firing so often may in
  fact have that effect.

Spencer: does this turn into a requirement that an IMDN receiver should be prepared to accept aggregated IMDNs and to accept mixed aggregated/non-aggregated IMDNs?

9.  Identifying Messages

  Messages are typically carried in a transport protocol like SIP [8].
  If the payload carried by the transport protocol does not contain any
  parts of type Message/CPIM then the message is an IM.  If the payload
  contains any parts of type Message/CPIM, and none of those parts
  contains a payload that is of type "message/imdn+xml", the message is
  an IM.  It is not valid to attempt to carry both an IM and an IMDN in
  a multipart payload in a single transport protocol message.

Spencer: I'm only asking because BLISS seems to be identifying an unlimited number of possible return codes in any situation - do IMDN-capable intermediaries and receivers need to check for this condition? If so, do you have a suggested return code in mind?

11.1.  Structure of XML-Encoded IMDN Payload

  <disposition> and <status> can be extended in the future to include
  new sub-elements not defined in this document.  Those new elements
  MUST be defined in an RFC.

Spencer: "MUST be defined in an RFC" doesn't match what's in the IANA considerations section for imdn ("standards track"), but is probably unnecessary here, anyway. I'd delete the last sentence, and instead point to the IANA considerations section of this document.

12.1.2.  Sending Responses

  An endpoint receiving a SIP MESSAGE request constructs a SIP response
  according to RFC 3428 [9].  Of course, an endpoint will send a
  response to the MESSAGE request regardless of the type of message (IM

Spencer: s/response/SIP response/?

  or IMDN) is has received, or the disposition type it has been asked
  for.

12.2.  Intermediary Behaviour

  If the Disposition-Notification header field contains a value of
  "positive-delivery", the intermediary MUST NOT generate a delivery
  notification if it receives a SIP 2xx class response for the sent IM.
  This is in anticipation of a failure downstream after a 2xx response
  has been generated.

Spencer: I'm confused. Is this saying "This is to allow an IM recipient to report a failure after it has generated a 2XX response"?

13.  Transporting Messages using MSRP

  While MSRP does not provide a built-in Read or Processing
  notification dispositions, those are generally not considered as
  useful information for session IM.  This is because the assumption
  behind MSRP is that SEND requests do not reach a mailbox where
  incoming IMs have to be open, but to an application that renders

Spencer: sorry - don't understand "have to be open" here.

  sequentially those incoming IMs, providing the session experience.
  This kind of applications has no means of identifying when a user has
  read the IM and therefore cannot be useful information for the
  sender.

14.  Security Considerations

  o  A malicious endpoint that attempts to fish for a Request-URI of an

Spencer: "to fish for" is clear to me, but it is slang and may not be clear to others. Perhaps "to discover"?

     endpoint beyond an intermediary, where the endpoint would normally
wish to keep its identity private from the malicious endpoint.



_______________________________________________
Gen-art mailing list
[email protected]
https://www1.ietf.org/mailman/listinfo/gen-art

Reply via email to