Re: [lemonade] Implementing drafts

Alexey Melnikov <Alexey.Melnikov@isode.com> Tue, 20 July 2004 10:20 UTC

Received: from above.proper.com (localhost.vpnc.org [127.0.0.1]) by above.proper.com (8.12.11/8.12.9) with ESMTP id i6KAKtG1083592; Tue, 20 Jul 2004 03:20:55 -0700 (PDT) (envelope-from owner-ietf-imapext@mail.imc.org)
Received: (from majordom@localhost) by above.proper.com (8.12.11/8.12.9/Submit) id i6KAKslM083586; Tue, 20 Jul 2004 03:20:54 -0700 (PDT)
X-Authentication-Warning: above.proper.com: majordom set sender to owner-ietf-imapext@mail.imc.org using -f
Received: from rufus.isode.com (rufus.isode.com [62.3.217.251]) by above.proper.com (8.12.11/8.12.9) with ESMTP id i6KAKk2P083479 for <ietf-imapext@imc.org>; Tue, 20 Jul 2004 03:20:48 -0700 (PDT) (envelope-from Alexey.Melnikov@isode.com)
Received: from isode.com (shiny.isode.com [62.3.217.250]) by rufus.isode.com via TCP (internal) with ESMTPA; Tue, 20 Jul 2004 11:23:19 +0100
Message-ID: <40FC3F6A.6060908@isode.com>
Date: Mon, 19 Jul 2004 22:38:50 +0100
From: Alexey Melnikov <Alexey.Melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
To: Simon Josefsson <jas@extundo.com>
CC: ietf-imapext@imc.org, imap@u.washington.edu
Subject: Re: [lemonade] Implementing drafts
References: <54DC93DD84CC5028D7C617EE@PLATO.cyrusoft.com> <ilueknbonpv.fsf@latte.josefsson.org>
In-Reply-To: <ilueknbonpv.fsf@latte.josefsson.org>
MIME-version: 1.0
Content-type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-transfer-encoding: 7bit
Sender: owner-ietf-imapext@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-imapext/mail-archive/>
List-ID: <ietf-imapext.imc.org>
List-Unsubscribe: <mailto:ietf-imapext-request@imc.org?body=unsubscribe>

Simon Josefsson wrote:

>Cyrus Daboo <daboo@cyrusoft.com> writes:
>  
>
>>>The draft suggests a new convention for transient IMAP capabilities,
>>>which should be used until the document describing an IMAP extension
>>>becomes RFC. For example, the transient capability for SASL-IR extension
>>>as defined in draft-siemborski-imap-sasl-initial-response-03.txt would be
>>>X-DRAFT-I03-SASL-IR, where 03 is the draft revision, "I" stands for
>>>individual submission.
>>>      
>>>
>>While I think this is a good idea, I think we could get by with a less
>>formal approach.
>>
I would like to remind people that my draft is not intended as a 
standard track document, it only tries to establish a convention.

>> Specifically it should be left up to individual
>>drafts to define the capability string for implementations of that
>>specific draft, whilst also indicating what the final (RFC) capability
>>string is expected to be.
>>
>>So for example, the following text (which would be used in the final
>>RFC version):
>>
>>'The ANNOTATEMORE extension is present in any IMAP4 [RFC3501]
>>implementation which returns "ANNOTATEMORE" as one of the supported
>>capabilities in the CAPABILITY command response.'
>>
>>Would become in the preceeding drafts:
>>
>>'The ANNOTATEMORE extension is present in any IMAP4 [RFC3501]
>>implementation which returns "ANNOTATEMORE" as one of the supported
>>capabilities in the CAPABILITY command response. This capability
>>string will be used when this draft is published as an
>>RFC. Experimental implementations of this draft MUST use the
>>capability response "X-ANNOTATEMORE-05", and MUST NOT use the
>>capability response "ANNOTATEMORE".'
>>
In this particular case, no matter how many MUSTs you put, I don't think 
people would listen. This also made me think that it might be better not 
to declare the final capability name until a particular extension is 
published as an RFC...

>For what it's worth, I tend to agree with Cyrus.  One practical
>problem with draft-melnikov-imap-transitional-capa-00 is that many
>drafts undergo mostly editorial changes, sometimes all the way from
>version 00 up to, say, 15, without affecting the actual protocol.
>
This is valid point. But see also my comment below.

>Experimental implementations of that same protocol thus might not
>interoperate well, hurting preliminary testing of the protocol, which
>works against the motivation for the X-DRAFT-* idea.
>
An advantage of using the formal procedure established in 
draft-melnikov-imap-transitional-capa-00 is that it is sufficient for an 
implementor to know 2 things to construct a required capability name:
1). Base capability name.
2). Name of the draft.

The second part is also important for another reason. Let's say I see a 
capability name  "X-ANNOTATEMORE-05". How do I know which draft revision 
has defined it? Without searching for the string in all revisions of the 
draft (and one might not have them at hand), this might be a bit 
problematic. So to some extent the draft is trying to address lack of a 
registry for transient capabilities.

Another advantage is that an implementation (server or client) aware of 
the convention is now able to support a range of revisions of the same 
extension:
capability strings for all revisions of the same extension start with 
"X-DRAFT-" prefix and end with "base capability name". To some extent 
this addresses the issue that Simon has raised.
(And you know what, I was actually thinking about adding code to my IMAP 
server that can list additional capabilities by specifying them in a 
configuration file. Maybe it is a hack ;-), but it is really not that 
difficult to do.)

>However, I agree with the motivation for the draft.  Preliminary
>testing is important, and often lead to improvements of the drafts.
>But I feel recommending IMAP capability document authors to use the
>text Cyrus suggested, would be more flexible, and would even simplify
>interoperability testing over Alexey's proposal.
>
>Writing down the above recommendations in at least a draft is probably
>required, if any IMAP capability authors are ever going to be aware of
>them, though.
>
At least we have an agreement on this part.

>Regards,
>Simon
>
>(With apologies if I misunderstood
>draft-melnikov-imap-transitional-capa-00, I haven't read it in
>detail.)
>  
>
Alexey