Re: [imapext] a very simple little imap extension, really quite magnificently simple

Jan Kundrát <jkt@flaska.net> Fri, 25 April 2014 17:29 UTC

Return-Path: <jkt@flaska.net>
X-Original-To: imapext@ietfa.amsl.com
Delivered-To: imapext@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C310B1A06B8 for <imapext@ietfa.amsl.com>; Fri, 25 Apr 2014 10:29:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.871
X-Spam-Level:
X-Spam-Status: No, score=-1.871 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_8BIT_HEADER=0.3, MIME_QP_LONG_LINE=0.001, RP_MATCHES_RCVD=-0.272] 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 Dvfx_iqLAFhX for <imapext@ietfa.amsl.com>; Fri, 25 Apr 2014 10:29:10 -0700 (PDT)
Received: from latimerie.flaska.net (latimerie.flaska.net [IPv6:2a02:2b88:2:1::4a7:333]) by ietfa.amsl.com (Postfix) with ESMTP id 8D9E31A028B for <imapext@ietf.org>; Fri, 25 Apr 2014 10:29:09 -0700 (PDT)
Received: by latimerie.flaska.net (Postfix, from userid 1000) id EE5E1615CE; Fri, 25 Apr 2014 19:28:56 +0200 (CEST)
From: Jan Kundrát <jkt@flaska.net>
To: imapext@ietf.org
Date: Fri, 25 Apr 2014 19:28:59 +0200
User-Agent: Trojita/v0.4.1-182-g7970633; Qt/4.8.5; X11; Linux;
MIME-Version: 1.0
Message-ID: <deacaf3d-9039-48d9-82a0-2d90a9f6cadc@flaska.net>
In-Reply-To: <7cb76610-37e3-4903-bdc1-6d2403e27cff@gulbrandsen.priv.no>
References: <0627dd7a-2203-40b6-b1c0-5b58613cbad8@gulbrandsen.priv.no> <8e45ff5c-1173-4119-bd53-47194d0f056b@flaska.net> <7cb76610-37e3-4903-bdc1-6d2403e27cff@gulbrandsen.priv.no>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: quoted-printable
Archived-At: http://mailarchive.ietf.org/arch/msg/imapext/CziR1BxK3QkAEhyyD95dw-TWh5I
Subject: Re: [imapext] a very simple little imap extension, really quite magnificently simple
X-BeenThere: imapext@ietf.org
X-Mailman-Version: 2.1.15
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: Fri, 25 Apr 2014 17:29:15 -0000

On Friday, 25 April 2014 18:57:38 CEST, Arnt Gulbrandsen wrote:
> Storing MSNs persistently so you don't have to recompute at 
> session start (and at the same time supporting simultaneous 
> sessions) was simply too difficult for me.

Given that you already have to track UIDs, I find it hard that it is 
expensive to take a look at the size of their set.

> The client cannot send BAD.
>
> The server does send BAD when it receives a BAD from the client.

The draft also says that the server should return a strange number when it 
would otherwise return a MSN. I object to that. In my opinion the server 
should signal this in a drastic way, including terminating the session if 
everything else fails. Sending back a mock-up MSN is about as evil as one 
could go in my book.

>> Given that this extension disables EXISTS, you need soemthing 
>> like ARRIVED [1]. This change on its own will complicate this 
>> dratf a lot.
>
> Why? What's wrong with UIDNEXT?

The fact that you can have gaps in UID range. The draft assumes that UIDs 
are allocated by adding one the the previous UID. Your whole scheme falls 
apart when this requirement does not hold. That requirement is not 
documented anywhere in the draft.

If the UIDs are not allocated consequently, and the highest UID right now 
is 12345, what does the following mean:

	* OK [UIDNEXT 12500] guess it

>> Also, what about STATUS and querying the offset of first 
>> message having a certain property through that? Or even STATUS 
>> EXISTS?
>
> I don't think that matters.
>
> If a client issues STATUS EXISTS, it kills any performance 
> benefit it got by issuing ENABLE UIDONLY. That's a problem for 
> the client, but not an interop problem, so nothing that requires 
> rules here.

So this is an extension whose benefit is immediately neutralized by a 
client which wants to show the user the total number of messages. To me, 
that sounds like a very basic operation.

>>> The server MUST respond with BAD to any command that uses an MSN,
>> 
>> Add a requirement for [CLIENTBUG], please. We have these 
>> response codes for a reason.
>
> Do any other RFCs require CLIENTBUG? (Not suggest, or show in 
> examples. Require.)

I'm not sure how that is relevant. This proposal is about designing an 
extension which radically changes how IMAP operates. Why not at least 
*mandate* a machine readable way of saying "hey client, you've just shot 
yourself in the foot"?

>> And the client doesn't know how many messages are in the 
>> mailbox anymore. That's a rather radical change. I don't like 
>> it at all, it's a nice safeguard to detect broken sync and this 
>> extension takes it away.
>
> Not knowing how many messages there are is a necessary effect 
> of this. It's not an accidental problem, it's necessary.
>
> The point of this is to stop counting messages. If you stop 
> counting, you don't know (at least not precisely) how many you 
> have. It's as simple as that.

OK, at this point I cannot imagine how such a client is supposed to work 
*at all*. Let's start with a blank state. The client knows nothing about 
the mailbox. It opens it and presumably wants to show a list of messages to 
the user. What is the client supposed to do now?

What if it wants to show just a subset of the mailbox, perhaps last 1k 
items (actually it doesn't have to be 1k, anything between 500 and 3000 is 
probably fine -- it needs *something*, but not the full 4M mailbox). How to 
achieve that?

What happens when a mail arrives?

How is a resynchronization after being offline for a while going to look 
like?

My answers and comments to the rest of your mail are very much dependant on 
how you propose the client to behave. I can imagine that I have all sorts 
of assumptions because I know how my client works. You might be coming from 
a different background. So I'm interested in seeing how the proposed mode 
of operation is supposed to actually work. I just don't get it now.

Cheers,
Jan

-- 
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/