Re: draft-ietf-imapext-thread

Arnt Gulbrandsen <arnt@gulbrandsen.priv.no> Wed, 30 May 2001 09:19 UTC

Received: by above.proper.com (8.9.3/8.9.3) id CAA13147 for ietf-imapext-bks; Wed, 30 May 2001 02:19:47 -0700 (PDT)
Received: from melkebalanse.troll.no (ns.ntm-gmbh.de [213.69.168.98]) by above.proper.com (8.9.3/8.9.3) with ESMTP id CAA13136 for <ietf-imapext@imc.org>; Wed, 30 May 2001 02:19:40 -0700 (PDT)
Received: (from arnt@localhost) by melkebalanse.troll.no (8.9.3/8.8.5) id LAA26733; Wed, 30 May 2001 11:18:59 +0200
Date: Wed, 30 May 2001 11:18:59 +0200
From: Arnt Gulbrandsen <arnt@gulbrandsen.priv.no>
To: Mark Crispin <MRC@cac.washington.edu>
Cc: ietf-imapext@imc.org
Subject: Re: draft-ietf-imapext-thread
Message-ID: <20010530111859.A26726@melkebalanse.troll.no>
References: <20010529223543.E26574@melkebalanse.troll.no> <MailManager.991169858.2809.mrc@Tomobiki-Cho.CAC.Washington.EDU>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <MailManager.991169858.2809.mrc@Tomobiki-Cho.CAC.Washington.EDU>
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>

Mark Crispin <MRC@CAC.Washington.EDU>
> Did you notice that the last argument specifies what messages are to be
> threaded?  So if you only want to thread new messages, you can do:
> 	THREAD REFERENCES UTF-8 NEW

The sound you hear is me kicking myself.

> > The thread=references model specifies an algorithm to be used, in detail,
> > and that algorithm is one that makes several passes over the entire set of
> > messages.  The algorithm is complex, and it's not clear to me whether it
> > can be adapted to be incremental without possibly changing its output, and
> > whether such changes are permitted by the draft.
> 
> That's the problem -- a newly-arrived message can completely change the thread
> tree.  It's therefore quite possible that an "incremental" change (one that
> simply says what is different from the previous tree) is larger in size that
> the previous tree.
> 
> To complicate matters, there is no obvious algorithm for determining how a
> newly arrived message would change the tree; without such an algorithm, you
> have to rethread on the server, and then do a comparison between the old and
> new tree.

I don't think we're talking about the same thing here. You seem to assume
that clients want thread information about the entire mailbox, and that
the question is whether servers can save bandwidth by transmitting changes
to the tree, rather than resending the entire three.  Right?

Well, I am concerned about whether the server can do thread processing at
message delivery time, so that processing a thread request becomes as
cheap as e.g. "fetch flags". I'm concerned about this because I want to do
lots of small thread requests (examples below), and I can't do that if
they're expensive.

> This has been the flaw in the arguments for "subsetting"; you can only
> "subset" in the simplest cases.  It turns out that the only meaningful
> subsetting is on a static tree, which makes subsetting much less valuable than
> its proponents claim.

Actually, subsetting would help with the cases I'm most interested in,
particularly if the server is permitted to also return answers outside the
requested set:  "Show me all the threads where there's new mail", "show me
all the messages from mumble@gargle.com, and the threads to which those
messages belong", "show me all discussion in our department-wide archive
where the subject included 'fumble'" and so on.

> > So, if a server does incremental References:-based threading on delivery,
> > can it advertise thread=references?
> 
> I don't know what that means.

Let me try again.

If an IMAP server keeps thread information in the persistent messages
store, and updates that information when a message is written into the
message store, is it possible for that server to comply with the draft's
requirements and advertise thread=references?

I read the draft more carefully last night, and it looks very difficult.
Steps 3-6 have to be done when the client requests thread information, if
I understand it correctly.

--Arnt