draft-ietf-imapext-thread-04.txt   draft-ietf-imapext-thread-05.txt 
IMAP Extensions Working Group M. Crispin IMAP Extensions Working Group M. Crispin
Internet Draft: IMAP THREAD K. Murchison Internet Draft: IMAP THREAD K. Murchison
Document: internet-drafts/draft-ietf-imapext-thread-04.txt October 2000 Document: internet-drafts/draft-ietf-imapext-thread-05.txt November 2000
INTERNET MESSAGE ACCESS PROTOCOL - THREAD EXTENSION INTERNET MESSAGE ACCESS PROTOCOL - THREAD EXTENSION
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC 2026. all provisions of Section 10 of RFC 2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 34 skipping to change at page 1, line 34
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
To view the list Internet-Draft Shadow Directories, see To view the list Internet-Draft Shadow Directories, see
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
A revised version of this draft document will be submitted to the RFC A revised version of this draft document will be submitted to the RFC
editor as a Proposed Standard for the Internet Community. editor as a Proposed Standard for the Internet Community.
Discussion and suggestions for improvement are requested, and should Discussion and suggestions for improvement are requested, and should
be sent to ietf-imapext@IMC.ORG. This document will expire before 10 be sent to ietf-imapext@IMC.ORG. This document will expire before 14
April 2001. Distribution of this memo is unlimited. May 2001. Distribution of this memo is unlimited.
Abstract Abstract
This document describes the server-based threading extension to the This document describes the server-based threading extension to the
IMAP4rev1 protocol. This extension provides substantial performance IMAP4rev1 protocol. This extension provides substantial performance
improvements for IMAP clients which offer threaded views. improvements for IMAP clients which offer threaded views.
A server which supports this extension indicates this with one or A server which supports this extension indicates this with one or
more capability names consisting of "THREAD=" followed by a supported more capability names consisting of "THREAD=" followed by a supported
threading algorithm name as described in this document. This threading algorithm name as described in this document. This
skipping to change at page 4, line 46 skipping to change at page 4, line 46
In-Reply-To headers have been observed with email In-Reply-To headers have been observed with email
addresses after the Message ID, and there are no good addresses after the Message ID, and there are no good
heuristics for software to determine the difference. heuristics for software to determine the difference.
This is not a problem with the References header however. This is not a problem with the References header however.
If a message does not contain an In-Reply-To header line, or If a message does not contain an In-Reply-To header line, or
the In-Reply-To header line does not contain a valid Message the In-Reply-To header line does not contain a valid Message
ID, then the message does not have any references (NIL). ID, then the message does not have any references (NIL).
The REFERENCES algorithm is significantly more complex than The REFERENCES algorithm is significantly more complex than
ORDEREDSUBJECT and consists of five main steps. These steps ORDEREDSUBJECT and consists of six main steps. These steps are
are outlined in detail below. outlined in detail below.
(1) For each searched message: (1) For each searched message:
(A) Using the Message IDs in the message's references, link (A) Using the Message IDs in the message's references, link
the corresponding messages (those whose Message-ID header the corresponding messages (those whose Message-ID header
line contains the given reference Message ID) together as line contains the given reference Message ID) together as
parent/child. Make the first reference the parent of the parent/child. Make the first reference the parent of the
second (and the second a child of the first), the second the second (and the second a child of the first), the second the
parent of the third (and the third a child of the second), parent of the third (and the third a child of the second),
etc. The following rules govern the creation of these etc. The following rules govern the creation of these
skipping to change at page 6, line 22 skipping to change at page 6, line 22
If it is a dummy message with NO children, delete it. If it is a dummy message with NO children, delete it.
If it is a dummy message with children, delete it, but If it is a dummy message with children, delete it, but
promote its children to the current level. In other words, promote its children to the current level. In other words,
splice them in with the dummy's siblings. splice them in with the dummy's siblings.
Do not promote the children if doing so would make them Do not promote the children if doing so would make them
children of the root, unless there is only one child. children of the root, unless there is only one child.
(4) Gather together messages under the root that have the same (4) Sort the messages under the root (top-level siblings only)
by sent date. In the case of an exact match on sent date, use
the order in which the messages appear in the mailbox (that is,
by sequence number) to determine the order. In the case of a
dummy message use its first child for sorting.
(5) Gather together messages under the root that have the same
extracted subject text. extracted subject text.
(A) Create a table for associating extracted subjects with (A) Create a table for associating extracted subjects with
messages. messages.
(B) Populate the subject table with one message per (B) Populate the subject table with one message per
extracted subject. For each child of the root: extracted subject. For each child of the root:
(i) Find the subject of this thread by extracting the (i) Find the subject of this thread by extracting the
base subject from the current message, or its first child base subject from the current message, or its first child
skipping to change at page 7, line 46 skipping to change at page 8, line 4
children). children).
Otherwise, create a new dummy message and make both Otherwise, create a new dummy message and make both
the current message and the message in the table the current message and the message in the table
children of the dummy. Then replace the message in children of the dummy. Then replace the message in
the table with the dummy message. the table with the dummy message.
Note: Subject comparisons are case-insensitive, as Note: Subject comparisons are case-insensitive, as
described under "Internationalization described under "Internationalization
Considerations." Considerations."
(6) Traverse the messages under the root and sort each set of
(5) Traverse the messages under the root and sort each set of
siblings by sent date. Traverse the messages in such a way siblings by sent date. Traverse the messages in such a way
that the "youngest" set of siblings are sorted first, and the that the "youngest" set of siblings are sorted first, and the
"oldest" set of siblings are sorted last (grandchildren are "oldest" set of siblings are sorted last (grandchildren are
sorted before children, etc). In the case of an exact match on sorted before children, etc). In the case of an exact match on
sent date, use the order in which the messages appear in the sent date, use the order in which the messages appear in the
mailbox (that is, by sequence number) to determine the order. mailbox (that is, by sequence number) to determine the order.
In the case of a dummy message (which can only occur with top- In the case of a dummy message (which can only occur with top-
level siblings), use its first child for sorting. level siblings), use its first child for sorting.
Example: C: A283 THREAD ORDEREDSUBJECT UTF-8 SINCE 5-MAR-2000 Example: C: A283 THREAD ORDEREDSUBJECT UTF-8 SINCE 5-MAR-2000
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/