Re: [Stox] Review of: draft-ietf-stox-presence-06

Peter Saint-Andre <stpeter@stpeter.im> Thu, 23 January 2014 02:50 UTC

Return-Path: <stpeter@stpeter.im>
X-Original-To: stox@ietfa.amsl.com
Delivered-To: stox@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3D6251A0132 for <stox@ietfa.amsl.com>; Wed, 22 Jan 2014 18:50:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.437
X-Spam-Level:
X-Spam-Status: No, score=-2.437 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.535, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V7R0JjD_kDQP for <stox@ietfa.amsl.com>; Wed, 22 Jan 2014 18:50:30 -0800 (PST)
Received: from stpeter.im (mailhost.stpeter.im [207.210.219.225]) by ietfa.amsl.com (Postfix) with ESMTP id 425C71A00E7 for <stox@ietf.org>; Wed, 22 Jan 2014 18:50:30 -0800 (PST)
Received: from [192.168.1.6] (unknown [24.8.184.175]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id 7995E400AD; Wed, 22 Jan 2014 19:50:29 -0700 (MST)
Message-ID: <52E08374.3030600@stpeter.im>
Date: Wed, 22 Jan 2014 19:50:28 -0700
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0
MIME-Version: 1.0
To: stox@ietf.org
References: <52A94AF6.8090702@dcrocker.net> <52AB8E69.7070906@stpeter.im> <52B07028.4020609@dcrocker.net> <52DE98DC.90900@ericsson.com>
In-Reply-To: <52DE98DC.90900@ericsson.com>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Subject: Re: [Stox] Review of: draft-ietf-stox-presence-06
X-BeenThere: stox@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: SIP-TO-XMPP Working Group discussion list <stox.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/stox>, <mailto:stox-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/stox/>
List-Post: <mailto:stox@ietf.org>
List-Help: <mailto:stox-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/stox>, <mailto:stox-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 Jan 2014 02:50:35 -0000

Done!

On 01/21/2014 08:57 AM, Gonzalo Camarillo wrote:
> Hi Peter,
> 
> when do you think you will get around to revising the draft per Dave's
> comments?
> 
> Thanks for the review, Dave.
> 
> Cheers,
> 
> Gonzalo
> 
> On 17/12/2013 4:39 PM, Dave Crocker wrote:
>> Only responded where it seems needed or useful...
>>
>>
>>
>> On 12/13/2013 2:47 PM, Peter Saint-Andre wrote:
>>
>>>>     1.  When citing the earlier efforts, there should be something to
>>>> explain why the current work is expected to be more successful.
>>>
>>> Not "expected", but "is". :-) AFAIK there are no implementations of the
>>
>> I'd missed that this is based on deployed work.  That is a point that
>> always makes writing text justifying/motivating the document quite easy:
>>  just say that.
>>
>>
>>> approach taken by RFC 3922 and draft-ietf-simple-cpim-mapping (i.e.,
>>> mapping to the abstract semantics of RFC 3860), whereas there are
>>> multiple implementations of the approach described here (i.e., direct
>>> mapping between SIP and XMPP).
>>>
>>>> That is,
>>>> what makes the current approach notably tractable for implementation and
>>>> deployment?
>>>
>>> Do you think that explaining why would improve the document? IMHO this
>>
>> I'm a fan of context and systems views, because I think it orients the
>> reader usefully, so the simple answer is yes.
>>
>> Whenever there is a lengthy history with alternative efforts, readers
>> can benefit from some context that distinguishes the current work.  Not
>> in qualitative terms like better or worse, but in technical and
>> operational terms.
>>
>> Hence I think language like what's already in the document, that
>> distinguishes the 'architectural' difference from earlier work, but also
>> one that says that the current work is based on deployed industry choice.
>>
>>
>>> verges into developer psychology (I've got this SIP thing here and this
>>
>>
>>>>     5.  When showing protocol examples, usually only one side of the
>>>> sequence is shown.  For gatewaying that does interesting transforms,
>>>> such as this one, an example should show both the before and after
>>>> versions.  That is, the 'native' protocol unit that was created and then
>>>> the one that results from the translation.
>>>
>>> I thought we'd already done that. For instance, Example 2 is the SIP
>>> transformation of the XMPP stanza shown in Example 1.
>>
>> Either the document didn't do it as diligently as I'm suggesting, or I
>> didn't understand this aspect of the document, which might be remedied
>> by better labeling.
>>
>> For any example that is done in a gateway and is a translation between
>> sip presence and xmpp presence, something simple and rigorous, such as
>> "before" and "after" labels to source and transformed versions, ought to
>> remedy this.
>>
>>
>>
>>
>>>> This probably raises a larger issue:  How much expertise is expected of
>>>> someone who is implementing this or otherwise reading for deep
>>>> comprehension?  In the extreme, they will need to have serious expertise
>>>> on both protocol sets.  The other extreme would be a cookbook inside
>>>> this document, with no outside knowledge required.  The document needs
>>>> to specify the nature and extent of the expertise required.  (In fact,
>>>> the document seems pretty clean, in terms of explaining things, so I
>>>> suspect that 'fair' knowledge of one suite will suffice.  But the author
>>>> and wg beliefs about the requirement should be made explicit.)
>>>
>>> See above. Perhaps not expert level, but significant familiarity with
>>> one "side" or the other.
>>
>> Just to emphasize, whatever the knowledge-level of reader that's
>> required, the document should make that explicit.
>>
>> I'm always a fan of making documents more accessible to wider
>> readership, but it's not practical to make all documents fully
>> accessible, especially within a suite of docs that build on each other.
>>
>>
>>>>>     |  SUBSCRIBE sip:romeo@example.net SIP/2.0
>>>>
>>>> Later text (section 4.1) equates the label pres: with sip: and sips:.
>>>> Why choose sip: here?
>>>
>>> In practice, we don't see 'pres' URIs in the wild.
>>
>> Hmmm.  While 'statistics' of use is a relatively fragile basis for
>> putting things into a spec -- since a doc can last for decades and
>> statistics can change -- it might be worth mentioning as the basis for
>> the choice in the doc.  I suppose that's in the realm of giving the
>> reader a bit of operational insight.  But definitely not an important
>> point.
>>
>>
>>
>>>>>     Example 3: SIP accepts subscription request:
>>>>>
>>>>>     |  SIP/2.0 200 OK
>>>>>     |  Via: SIP/2.0/TCP s2x.example.net;branch=z9hG4bKna998sk
>>>>>     |  From: <sip:romeo@example.net>;tag=ffd2
>>>>>     |  To: <sip:juliet@example.com>;tag=j89d
>>>>>     |  Call-ID: 5BCF940D-793D-43F8-8972-218F7F4EAA8C
>>>>>     |  CSeq: 234 SUBSCRIBE
>>>>>     |  Contact: <sip:simple.example.net;transport=tcp>
>>>>>     |  Expires: 3600
>>>>>     |  Content-Length: 0
>>>>
>>>> Hmmm.  This appears to be the original SIP acceptance, but with no
>>>> separate display of it's being translated into XMPP.
>>>
>>> That is Example 5.
>>
>> Oh. It's worth making that explicit.  (My tendency to get confused
>> reading specs is a useful canary in the tunnel, for what needs
>> clarifying for other readers, IMO...)
>>
>>
>>
>>>>>     Example 10: SIP user subscribes to XMPP contact:
>>>>>
>>>>>     |  SUBSCRIBE sip:juliet@example.com SIP/2.0
>>>>>     |  Via: SIP/2.0/TCP s2x.example.net;branch=z9hG4bKna998sk
>>>>>     |  From: <sip:romeo@example.net>;tag=xfg9
>>>>>     |  Call-ID: AA5A8BE5-CBB7-42B9-8181-6230012B1E11
>>>>>     |  Event: presence
>>>>>     |  Max-Forwards: 70
>>>>>     |  CSeq: 263 SUBSCRIBE
>>>>>     |  Contact: <sip:simple.example.net;transport=tcp>
>>>>>     |  Accept: application/pidf+xml
>>>>>     |  Content-Length: 0
>>>>>
>>>>>     Notice that the "Expires" header was not included in the SUBSCRIBE
>>>>>     request; this means that the default value of 3600 (i.e., 3600
>>>>>     seconds = 1 hour) applies.
>>>>>
>>>>>     Upon receiving the SUBSCRIBE, the SIP server needs to determine the
>>>>>     identity of the domain portion of the Request-URI or To header,
>>>>> which
>>>>>     it does by following the procedures discussed in
>>>>>     [I-D.ietf-stox-core].  Here we assume that the SIP server has
>>>>>     determined that the domain is serviced by an XMPP server, that it
>>>>
>>>>
>>>> This seems to mean that a regular SIP server needs to be familiar with
>>>> technical details in a gatewaying specification??
>>>
>>> Well, it is (IMHO) really the responsibility of a core "server" to
>>> implement this kind of routing functionality, but the "gateway" might
>>> make the determination that the remote domain uses SIP or XMPP and if
>>> SIP then pass it on to the SIP "server" and if not handle delivery to
>>
>> I think this matches the usual model:  an unchanged server does routing
>> as if all participants were part of its 'native' protocol service.  A
>> gateway translates and tries to hide any differences between two services.
>>
>> The current doc language seems confusing on this point, when it talks
>> about a (native) server choosing a server that is part of the other
>> service.
>>
>> This is a sufficiently basic point to probably warrant going into -core,
>> rather than here.  But the language here probably therefore ought to
>> just be in terms of originators and recipients (or whatever generic
>> terminology works for presence) with an initial, simple note that
>> knowledge of the need for translation only resides in the gateway(s).
>>
>> But I'm not sure I mentioned another point that confused me from -core:
>>  It shows the two types of gateways as talking to each other, but I
>> suspect that's not reality.  FOr example, when doing SIP-XMPP, I suspect
>> the actual flow is:
>>
>>    SIP User
>>    SIP Server
>>    SIP-XMPP Server
>>    XMPP Server
>>    XMPP User
>>
>> whereas the implication from the -core diagram and some of the language
>> in the spec(s) is:
>>
>>    SIP User
>>    SIP Server
>>    SIP-XMPP Server
>>    XMPP-SIP Server
>>    XMPP Server
>>    XMPP Use
>>
>> If it really is the later sequence, I don't understand why.
>>
>>
>>
>>> the remote XMPP domain. To some extent it's a matter of implementation
>>> where exactly the code lives to complete these functions, which is why
>>> draft-ietf-stox-core talks about a "SIP service" consisting of both a
>>> SIP "server" and a "gateway". In XMPP this translation function is often
>>> handled by what we call a "connection manager", but that depends a bit
>>> on the internal architecture of the overall "service".
>>
>> This point highlights the essential difference between a "networking
>> architecture" and an "implementation architecture".
>>
>> Mapping from the first to the second often permits very wide variations.
>>  The former concerns distinct functionality that /can/ be distributed,
>> where the latter makes specific choices for what /is/ distributed.
>>
>>
>>
>>
>>>>>     As described in [RFC3856], presence information about an entity is
>>>>>     communicated by means of a SIP NOTIFY event sent from a SIP user
>>>>>     agent to an intended recipient who is most generally referenced
>>>>> by an
>>>>>     Presence URI of the form <pres:user@domain> but who might be
>>>>>     referenced by a SIP or SIPS URI of the form <sip:user@domain> or
>>>>>     <sips:user@domain>.  Here again we introduce the simplifying
>>>>>     assumption that the user agent is controlled by a human user.
>>>>
>>>> I guess I'm not understanding how the nature of what is controlling the
>>>> agent affects anything in this document.  Might be worth explaining
>>>> that.
>>>
>>> A "presentity" doesn't have to be a human -- it could be a bot, a
>>> device, or some other automated entity. People related more to human
>>> users.
>>
>> Sure, but when reading the doc, it felt as if the reference to this
>> issue was relevant to functionality.  I'd expect the issue to be raised
>> once in an Intro and then avoided later by use of a neutral term like
>> user or presentity or whatever.
>>
>>
>>
>>>>>     Note the following regarding these mappings:
>>>>>
>>>>>     1.  Only a presence stanza that lacks a 'type' attribute or whose
>>>>
>>>>     presence -> XMPP presence
>>>
>>> Stanzas are an XMPP artifact. But yes.
>>
>> Choosing the level of semantic redundancy in the language is always a
>> balancing act.  In a gatewaying document that will be reader by folks
>> likely to be expert in only one half of the necessary technologies, I'd
>> be inclined towards more redundancy, to reduce likelihood of
>> misunderstanding...
>>
>>
>>
>>>>>         'type' attribute has a value of "unavailable" SHOULD be
>>>>> mapped by
>>>>>         an XMPP-SIMPLE gateway to a SIP NOTIFY request, since those are
>>>>>         the only presence stanzas that represent notifications.
>>>>>     2.  The PIDF schema defines the tuple 'id' attribute as having a
>>>>>         datatype of "xs:ID"; because this datatype is more restrictive
>>>>>         than the "xs:string" datatype for XMPP resourceparts (in
>>>>>         particular, a number is not allowed as the first character
>>>>> of an
>>>>>         ID), it is RECOMMENDED to prepend the resourcepart with
>>>>> "ID-" or
>>>>>         some other alphabetic string when mapping from XMPP to SIP.
>>>>>     3.  This mapping is OPTIONAL.
>>>>
>>>> What does that mean?  This sort of mapping is usually the essence of
>>>> gatewaying semantics.  How can interoperability tolerate it's being
>>>> optional?
>>>
>>> In XMPP, the 'id' attribute is not usually included in presence stanzas,
>>> and nothing is lost if it's ignored. But I'll give it a bit more thought.
>>>
>>>>> 4.3.  SIP to XMPP
>>>>>
>>>>>     When Romeo changes his presence, his SIP user agent generates a SIP
>>>>
>>>> Romeo is doing SIP?  And Juliet does XMPP?
>>>
>>> You noticed, eh? "Juliet does Jabber" makes it easy to remember, at
>>> least for me.
>>
>> So why isn't the other side Steve or Sid or...
>>
>> Nevermind...
>>
>>
>>
>>>> So, SIP is more macho than XMPP???
>>>
>>> Have you configured a SIP client lately? ;-)
>>>
>>> But seriously, the Romeo and Juliet scenarios enable me to use a male
>>
>> The word seriously is entirely out of scope for this segment.  Or at
>> least, it certainly was when I started it...
>>
>> d/
>>
> 
> _______________________________________________
> stox mailing list
> stox@ietf.org
> https://www.ietf.org/mailman/listinfo/stox
>