Re: [imapext] qresync WG adoption call

Timo Sirainen <tss@iki.fi> Thu, 23 May 2013 20:12 UTC

Return-Path: <tss@iki.fi>
X-Original-To: imapext@ietfa.amsl.com
Delivered-To: imapext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 90DF321F9713 for <imapext@ietfa.amsl.com>; Thu, 23 May 2013 13:12:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.299
X-Spam-Level:
X-Spam-Status: No, score=-110.299 tagged_above=-999 required=5 tests=[AWL=0.300, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id g1t6jb4hhU1v for <imapext@ietfa.amsl.com>; Thu, 23 May 2013 13:11:45 -0700 (PDT)
Received: from dovecot.org (dovecot.org [193.210.130.67]) by ietfa.amsl.com (Postfix) with ESMTP id E449321F96CB for <imapext@ietf.org>; Thu, 23 May 2013 12:30:10 -0700 (PDT)
Received: from [192.168.10.100] (cs27091020.pp.htv.fi [89.27.91.20]) by dovecot.org (Postfix) with ESMTP id B16C21AE835B for <imapext@ietf.org>; Thu, 23 May 2013 22:30:08 +0300 (EEST)
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\))
From: Timo Sirainen <tss@iki.fi>
In-Reply-To: <CAKHUCzxM2C4tyVDQfUVVTm2ecXVHLE7pZBAa=7EpmCUv8OQ-jA@mail.gmail.com>
Date: Thu, 23 May 2013 22:30:08 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <8EC4F12B-4CD6-4285-8CBE-C3C38AD7AE8B@iki.fi>
References: <CAKHUCzxM2C4tyVDQfUVVTm2ecXVHLE7pZBAa=7EpmCUv8OQ-jA@mail.gmail.com>
To: "imapext@ietf.org" <imapext@ietf.org>
X-Mailer: Apple Mail (2.1503)
Subject: Re: [imapext] qresync WG adoption call
X-BeenThere: imapext@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion of IMAP extensions <imapext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/imapext>, <mailto:imapext-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/imapext>
List-Post: <mailto:imapext@ietf.org>
List-Help: <mailto:imapext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/imapext>, <mailto:imapext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 23 May 2013 20:12:00 -0000

On 20.5.2013, at 21.20, Dave Cridland <dave@cridland.net> wrote:

> Folks,
> 
> We now have two drafts by Alexey published:
> 
>  - draft-melnikov-rfc4551-bis-00 (CONDSTORE)
>  - draft-melnikov-5162bis-00 (QRESYNC)
> 
> I'd like to propose that the working group adopt these as our start point.

OK.

> Therefore this constitutes a call for adoption of both documents; reviews would be very useful at this stage and I'll prod people if there's no volunteers.

I don't think rfc4551-bis has any actual content changes compared to rfc4551? Some new things that come to my mind:

1. Dovecot doesn't enable modseq tracking until client has requested it in some way by enabling CONDSTORE or QRESYNC. Until then it says at SELECT:

* OK [NOMODSEQ] No permanent modsequences

I know at least one client thought this meant that modseqs couldn't be used even if CONDSTORE enabling command was used. I'm thinking about changing this so that highestmodseq is tracked always in any case, but that's not the easiest change. Anyway, should the -bis RFC mention something about this?

2. Per-metadata item modseqs. I didn't pay attention to this previously since I wasn't planning on implementing it anyway. But now looking at it..:

>    UNCHANGEDSINCE <mod-sequence>
> 
>       However, if the mod-sequence of any metadata item of the message
>       is greater than the specified UNCHANGEDSINCE value, then the
>       requested operation MUST NOT be performed.

…
>    Note: A client trying to make an atomic change to the state of a
>    particular metadata item (or a set of metadata items) should be
>    prepared to deal with the case when the server returns the MODIFIED
>    response code if the state of the metadata item being watched hasn't
>    changed (but the state of some other metadata item has).  This is
>    necessary, because some servers don't store separate mod-sequences
>    for different metadata items.

The last sentence seems to be somewhat wrong, because that would be necessary even if the server stores separate mod-sequences.

So as far as I see, the only benefit of having per-metadata modseqs would be for SEARCH MODSEQ? Seems like the document talks about per-metadata modseqs a bit too much when its usefulness is very limited, and somehow I doubt there will ever be many server implementations for it.

It talks also about private vs. shared modseqs. I recently had trouble with figuring out how to do these, since private and shared modseq counters are stored in completely different places. I ended up simply incrementing the shared modseq counter to a message every time its private flag was changed, which isn't ideal of course. Anyway, again SEARCH exposes this shared vs private difference, but there's no way to do that with FETCH.

So I'm wondering if there's really any benefit in keeping the per-metadata and shared vs private modseqs functionality in the -bis RFC? Is anyone ever going to really implement them? Maybe just allow client to give those parameters and have server ignore them.

If the CONDSTORE -bis RFC is trimmed down, it might be useful to merge it with QRESYNC -bis, but currently I think it's a bit too bloaty. And I guess it would make it more difficult to figure out which functionality is CONDSTORE and which is QRESYNC. But maybe it shouldn't even try, and would assume clients/servers would always implement both CONDSTORE+QRESYNC?