Re: [xmpp] draft-cridland-xmpp-session-00

Ralph Meijer <> Tue, 10 June 2014 07:19 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 705BB1A0422 for <>; Tue, 10 Jun 2014 00:19:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.551
X-Spam-Status: No, score=-2.551 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.651] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 6S5eR58D8kIh for <>; Tue, 10 Jun 2014 00:19:54 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7811A1A023C for <>; Tue, 10 Jun 2014 00:19:54 -0700 (PDT)
Received: from (localhost []) by (Postfix) with ESMTP id BE39DA1065 for <>; Tue, 10 Jun 2014 09:19:51 +0200 (CEST)
X-Virus-Scanned: amavisd-new at
Received: from ([]) by ( []) (amavisd-new, port 10024) with SMTP id PYsTdvMoxPBI for <>; Tue, 10 Jun 2014 09:19:51 +0200 (CEST)
Received: from [] ( []) by (Postfix) with ESMTPSA id D3322A1047 for <>; Tue, 10 Jun 2014 09:19:50 +0200 (CEST)
Message-ID: <>
Date: Tue, 10 Jun 2014 09:19:50 +0200
From: Ralph Meijer <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
MIME-Version: 1.0
References: <> <> <> <> <> <>
In-Reply-To: <>
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
Subject: Re: [xmpp] draft-cridland-xmpp-session-00
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: XMPP Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 10 Jun 2014 07:19:57 -0000

On 2014-06-10 05:44, Curtis King wrote:
> On Jun 9, 2014, at 9:54 AM, Dave Cridland <> wrote:
>> On 9 June 2014 17:36, Curtis King <> wrote:
>> Instead of adding an redundant flag into the XMPP spec. Why doesn’t this draft state the <optional/> flag explicit and give the session as an example? Otherwise we will be adding <optional/> to more features than session.
>> We've discussed, and rejected, this before, for example:
>> I'm not averse to reopening the discussion, though I'll still argue against it. One or other of a generic <optional/> and <required/> will always be redundant, and multiple <required/> elements will often conflict.
>> In any case, you'll note that <optional/> in this instance doesn't really mean "optional" so much as "redundant" - in fact, I think the name is an artifact of the discussion we had back then, though I can't find the thread that proposes it in this case. (But both M-Link and Prosody do this, so I assume it was discussed sometime).
> It was in the 3921bis draft then removed. BTW, we are about to remove it from M-Link because it isn’t covered in any RFC or XEP.
> This draft will require servers and client changes, you could accomplish the same goal by a pure informational draft pointing such features are optional. Then only certain clients need to change. Note: Good clients like Swift already ignore the session feature.
> If you think it is clearer using a flag lets use a descriptive flag name like, rfc3921-compatibility.

The problem is that RFC 3921 said that you MUST negotiate Session
Establishment when advertised by the server [1]. RFC 6121 then had it
completely removed. While RFC 6120 says that by default stream features
are optional to negotiate, this one wasn't.

I think the idea is that if you do implement this flag (like Prosody and
M-Link), we know for certain that the server does indeed no longer
require Session Establishment.

If a client *requires* changes, this is because it has a bug:
negotiating session establishment while it has not been advertised. This
particular flag just makes it possible for a client to decide to not
negotiate Session Management as an optimization.

Eventually, when enough clients no longer show the above mentioned buggy
behaviour, we can remove this protocol from servers entirely.