Re: [xmpp] #12: namespace of <required/> element in stream features

Peter Saint-Andre <stpeter@stpeter.im> Sun, 27 June 2010 20:16 UTC

Return-Path: <stpeter@stpeter.im>
X-Original-To: xmpp@core3.amsl.com
Delivered-To: xmpp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DD07D3A68DB for <xmpp@core3.amsl.com>; Sun, 27 Jun 2010 13:16:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.638
X-Spam-Level:
X-Spam-Status: No, score=-1.638 tagged_above=-999 required=5 tests=[AWL=-0.528, BAYES_05=-1.11]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8hJUQs-Yw46n for <xmpp@core3.amsl.com>; Sun, 27 Jun 2010 13:16:51 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id 86D7B3A6800 for <xmpp@ietf.org>; Sun, 27 Jun 2010 13:16:51 -0700 (PDT)
Received: from squire.local (dsl-251-119.dynamic-dsl.frii.net [216.17.251.119]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id 32C7540E4D for <xmpp@ietf.org>; Sun, 27 Jun 2010 14:17:00 -0600 (MDT)
Message-ID: <4C27B1BA.3050302@stpeter.im>
Date: Sun, 27 Jun 2010 14:16:58 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: xmpp@ietf.org
References: <057.4385ab5327e30c66ba16656f77262b3b@tools.ietf.org> <4C22D4F0.8010509@stpeter.im> <AANLkTin6WQnuejozX0mi0JXIr-GlBUc5InWcMAtKn7kF@mail.gmail.com> <4C236277.3030905@babelmonkeys.de> <30462.1277389383.201676@puncture> <4C23722A.6030200@babelmonkeys.de> <30462.1277393188.896364@puncture> <4C23805F.9030803@babelmonkeys.de>
In-Reply-To: <4C23805F.9030803@babelmonkeys.de>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha1"; boundary="------------ms010901060102040108070605"
Subject: Re: [xmpp] #12: namespace of <required/> element in stream features
X-BeenThere: xmpp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: XMPP Working Group <xmpp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/xmpp>
List-Post: <mailto:xmpp@ietf.org>
List-Help: <mailto:xmpp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 27 Jun 2010 20:16:53 -0000

On 6/24/10 9:57 AM, Florian Zeitz wrote:
> On 24.06.2010 17:26, Dave Cridland wrote:
>> On Thu Jun 24 15:56:42 2010, Florian Zeitz wrote:
>>> My point is we don't have to be. Either I connect to a server and my
>>> client tells me right away "I can not connect to this server because a
>>> required feature is not supported: <feature xmlns='urn:foo'/>" or it
>>> tells me later on "There was an error trying to negotiate stream
>>> compression, not sure why though..."
>>>
>>>
>> No, because compression wouldn't be offered at that point. It's not valid.
>>
>> The error would be "No authentication mechanisms offered".
>>
> That's just not true. A MTN feature could be offered next to compression
> after SASL negotiation. As is actually the case now for resource binding
> right now.
> 
>>> I personally can't think of anything else either, but just because we
>>> can't imagine it doesn't mean it won't happen.
>>> Maybe someone will come up with a reason to require Stream Compression
>>> or with a different form of authentication or something yet different.
>>
>> It's too much effort to try and second-guess hypothetical situations.
>>
> From my point of view when defining Stream Negotiation we are defining a
> general framework. 

We started to go down that path last year and there was pretty strong
list consensus (IMHO) that we were over-engineering stream negotiation
and that we really didn't need a completely generic framework.
Theoretically I agree that it would be cleaner to have a completely
generic framework, but practically speaking I don't think we'll need one
(because we have a fairly coherent developer community and if we do end
up someday defining another mandatory-to-negotiate feature we'll discuss
it for quite a while before it becomes a reality).

> And as we have some features that are MTN IMHO we
> need a way to declare them as such. This is no hypothetical future use-case.
> We have a point during negotiation where the client has to ask himself
> "Are there more MTN features?" and I think it's quite unsatisfactory if
> the answer can be "Maybe".

It's theoretically unsatisfactory but the group seems to be saying that
it's something we can live with.

> If we go another route I think we would definitely need to be more
> honest. There is no point where all features are voluntary to negotiate,
> there is only a point at which the clients considers all features to be
> voluntary to negotiate. And there are no guarantees that you are
> actually cleared for sending stanzas at that point. Unless you assume
> that there never will be any additional MTN features of course and that
> seems naive to me.

Yes, it's good to be honest about the tradeoffs here. I've added the
Informational Note shown below, on the assumption that the text there is
indeed the consensus of this group (we can discuss whether that is
indeed the case).

###

   If a particular stream feature is or can be mandatory-to-negotiate,
   the definition of that feature needs to do one of the following:

   1.  Declare that the feature is always mandatory-to-negotiate (e.g.,
       this is true of resource binding for XMPP clients); or

   2.  Specify a way for the receiving entity to flag the feature as
       mandatory-to-negotiate for this interaction (e.g., this is done
       for TLS by including an empty <required/> element in the
       advertisement for that stream feature); it is RECOMMENDED that
       stream feature definitions for mandatory-to-negotiate features do
       so by including an empty <required/> element as is done for TLS.

      Informational Note: Because there is no generic format for
      indicating that a feature is mandatory-to-negotiate, it is
      possible that a feature which is unknown to the initiating entity
      might be considered mandatory-to-negotiate by the receiving
      entity, resulting in failure of the stream negotiation process.
      Although such an outcome would be undesirable, the working group
      deemed it rare enough that a generic format was not needed.

###

Peter

-- 
Peter Saint-Andre
https://stpeter.im/