Re: [lemonade] WGLC NOTIFY

Timo Sirainen <tss@iki.fi> Wed, 04 June 2008 16:02 UTC

Return-Path: <lemonade-bounces@ietf.org>
X-Original-To: lemonade-archive@optimus.ietf.org
Delivered-To: ietfarch-lemonade-archive@core3.amsl.com
Received: from [127.0.0.1] (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AD9403A6CC2; Wed, 4 Jun 2008 09:02:06 -0700 (PDT)
X-Original-To: lemonade@core3.amsl.com
Delivered-To: lemonade@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0E12C3A6CB5 for <lemonade@core3.amsl.com>; Wed, 4 Jun 2008 09:02:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.901
X-Spam-Level:
X-Spam-Status: No, score=-5.901 tagged_above=-999 required=5 tests=[AWL=-0.698, BAYES_00=-2.599, MIME_QP_LONG_LINE=1.396, RCVD_IN_DNSWL_MED=-4]
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 FEQ7kujiNqgR for <lemonade@core3.amsl.com>; Wed, 4 Jun 2008 09:01:51 -0700 (PDT)
Received: from dovecot.org (dovecot.org [82.118.211.50]) by core3.amsl.com (Postfix) with ESMTP id C37803A6CA9 for <lemonade@ietf.org>; Wed, 4 Jun 2008 09:01:48 -0700 (PDT)
Received: from [192.168.10.2] (xdsl-177-118.nblnetworks.fi [217.30.177.118]) by dovecot.org (Postfix) with ESMTP id B8774FA8AF6; Wed, 4 Jun 2008 19:01:19 +0300 (EEST)
From: Timo Sirainen <tss@iki.fi>
To: Alexey Melnikov <alexey.melnikov@isode.com>
In-Reply-To: <484657A5.5070202@isode.com>
References: <C433D277.1AB18%eburger@bea.com> <8B9B8F32-8DEF-40B9-992E-9337FB7AE344@standardstrack.com> <1210951366.9518.654.camel@hurina> <48312F7D.8090103@isode.com> <1211191304.9518.755.camel@hurina> <4835D000.4080808@isode.com> <1211745339.3904.166.camel@hurina> <483BAB35.2080806@isode.com> <1B7D968F-7A77-40FC-AFD6-ADF3C2826822@iki.fi> <484657A5.5070202@isode.com>
Date: Wed, 04 Jun 2008 19:01:18 +0300
Message-Id: <1212595278.3904.735.camel@hurina>
Mime-Version: 1.0
X-Mailer: Evolution 2.22.1
Cc: lemonade <lemonade@ietf.org>
Subject: Re: [lemonade] WGLC NOTIFY
X-BeenThere: lemonade@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Enhancements to Internet email to support diverse service enivronments <lemonade.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=unsubscribe>
List-Archive: <https://www.ietf.org/mailman/private/lemonade>
List-Post: <mailto:lemonade@ietf.org>
List-Help: <mailto:lemonade-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lemonade>, <mailto:lemonade-request@ietf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1083108570=="
Sender: lemonade-bounces@ietf.org
Errors-To: lemonade-bounces@ietf.org

On Wed, 2008-06-04 at 09:51 +0100, Alexey Melnikov wrote:
> > Anyway I think this is too restrictive if using NOTIFY basically 
> > requires the client to drop using MSNs.
> 
> After rereading some portions of draft-ietf-lemonade-imap-notify, I 
> would like to correct this: a client using NOTIFY can't use MSNs in 
> commands it is issuing. However it will still be using MSNs to process 
> server responses.

I'd hate to see that happen. It took me a while to understand that MSNs
can be useful and I don't want to support an extension that forces
clients to stop sending them in commands.

Also many existing clients could benefit a lot from NOTIFY, since their
"STATUS each mailbox every n minutes" could be replaced by a single
NOTIFY command. But if this same command requires rewriting their
command sending to use only UIDs, that could be a much larger job.

> > Some use cases for clients which want to keep using MSNs and IDLE:
> >
> > 1. Client just wants to use NOTIFY to see changes in other mailboxes, 
> > so it specifies NOTIFY SET (personal (messagenew messageexpunge)).
> 
> I assume the client still wants to immediately see changes in the 
> current mailbox? In this case it should also include (selected 
> (MessageNew MessageExpunge)) and things should work as before.

Not if it can't send MSNs in commands.

> > 2. Client wants to use NOTIFY to ignore annotation changes, so it uses 
> > NOTIFY SET (selected (FlagChange)).
> 
> FlagChange is tied to MessageNew and MessageExpunge, so this should 
> really be "NOTIFY SET (selected (FlagChange MessageNew MessageExpunge))"

And again it couldn't send MSNs in commands.

> > 3. Client wants to get pushed information about new messages' contents 
> > (MessageNew (uid ..)), but it still wants to keep using MSNs.
> 
> Can you elaborate on this use case?
> Your MessageNew already contains "uid", so clearly the client is already 
> capable of using UIDs anyway.

That was just an example. The fields could have been anything.

But anyway just because it uses UIDs in some places doesn't mean it even
could use UIDs everywhere. The best example is a Pine/webmail-like
application that fetches information only about the visible part of the
mailbox (in message list view). Those are the only kinds of IMAP clients
that are able to access huge mailboxes efficiently. In them when a user
scrolls a pageful up in message list, the client calculates how many
messages it needs to fetch and uses a FETCH with a sequence range. This
is impossible to do with UIDs unless the client fetches all UIDs, which
in turn makes it inefficient (especially with huge mailboxes) and waste
bandwidth for no good reason.

> > Since MessageNew and MessageExpunge must specified together, this is 
> > impossible .
> >
> > Is there even any other reason for client to even run IDLE unless it 
> > wants to keep using MSNs + see EXPUNGEs immediately? I think IDLE 
> > could be specified as sending EXPUNGEs immediately regardless of 
> > whether MessagExpunge has been specified.
> 
> I would rather not special case IDLE, so that we can keep server logic 
> consistent.
> In light of my corrected statement above, can you double check that 
> there is any issue?

If special casing IDLE made client able to send MSNs, I think it would
be useful to change it. But that also requires decoupling MessageExpunge
from other events.

> > 3. is also problematic. Is it really necessary to give MessageExpunge 
> > if MessageNew is given? The (well-behaving) servers already have to 
> > handle the case when a message is expunged and a new message arrives 
> > during FETCH/STORE/SEARCH command. The client is notified about the 
> > new message but not about the expunge.
> 
> True.
> The reason why we have MessageExpunge and MessageNew tied together is 
> because representative of a certain company kept moaning that he can't 
> implement them separately. The WG couldn't find any use cases where this 
> would make a difference for a client.

Again it makes sending MSNs impossible, which is bad.

I'd like it if all existing clients (which may be sending MSNs) could
easily replace their STATUS-polling with a single notify command:

1 NOTIFY SET (selected (MessageNew FlagChange) personal (MessageNew MessageExpunge))

_______________________________________________
lemonade mailing list
lemonade@ietf.org
https://www.ietf.org/mailman/listinfo/lemonade
Supplemental Web Site:
http://www.standardstrack.com/ietf/lemonade