Network Working Group Jacob Palme Internet Draft Stockholm University/KTH draft-palme-newfields-info-02.doc IETF status: To become an informational RFC Expires: May 1998 November 1998 Advice on the implementation of In-Reply-To, References and Supersedes e-mail and netnews headers Status of this Document This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as ``work in progress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). Copyright (C) The Internet Society 1998. All Rights Reserved. Abstract Separate Internets standards documents define the e-mail headers In-Reply-To, References, Supersedes and Expires. This document, which is an informational RFC, gives some advice on the implementation of these features. Table of Contents 1. User interface 2. Hard and soft Supersedes 3. Data base 4. Copyright 5. References 6. Author's Address 1. User interface The fields "In-Reply-To", "References" and "Supersedes" are all used to convey information about references between different e-mail messages or netnews articles. A good way to implement these fields is to tell the recipient that two messages reference each other, and to make it easy for readers to traverse threads (series of linked messages) up and down. It is also possible to have special features to see a whole thread (set of related messages) graphically, or as an indented list, and to allow users to traverse, print, save or do other actions on a thread. Example of showing a thread as an indented list: This is entry no. 1, the start entry of the thread This is entry no. 2, a reply to entry no. 1 This is entry no. 3, a reply to entry no. 2 This is entry no. 4, a reply to entry no. 1 In the particular case of "Supersedes", a user who has not yet read either the old or the new version, may be shown only the new version as a new message, but with methods to easily find the old version. A way to show this information to users is to show the "In-Reply-To", "Supersedes" and "References" fields, possibly as buttons, and allow the user to click on them to get to the referred-to messages. Additionally, it is useful to add buttons to follow threads forward, with texts like "Next in thread" or "Replies" or "This document is referenced by" or "Superseding documents". This allows a user, when reading a message, to see if someone else has already replied, and it allows users to traverse threads downwards and not only upwards. Such reverse buttons should not be sent in e-mail, they are just for local handling in user mailbox databases. Note that their values may change after a message has been submitted, when more new messages arrive which reference it. Example of showing a message with thread information: To: IETF-Announce: ; From: The IESG Subject: Last Call: The Auto-Submitted, Supersedes and Expires Headers in E-mail and Netnews to Proposed Standard In-Reply-To: Replied-By: Date: Thu, 05 Mar 1998 07:02:47 -0500 Sender: scoya@cnri.reston.va.us 2. Hard and soft Supersedes By a hard supersedes is meant a Supersedes which causes deletion of the superseded message. By a soft supersedes is meant a Supersedes which still keeps both messages, and allows a user to see and use the reference between them, somewhat similar to In-Reply-To and References. Supersedes is best implemented as soft supersedes. Users of the supersedes field should however be aware that some implementations, especially in Usenet News, do implement it as hard supersedes. Hard supersedes has the same security problem as the Cancel command of Usenet News. They can be used to maliciously delete other people's messages. Use of strong authentication of the author can reduce this risk. 3. Data base In order to implement threads, a data base is needed which, given a Message-ID, can find the message which this Message-ID refers to. This data base has a very simple structure, just a single value mapped to one or more messages. Note, however, that the same message can be copied to more than one mailbox, so the data base should not be restricted to only one location for each Message-ID. Every time a message is added, moved, copied, deleted or purged, this data base need to be updated. When a new message arrives, the mailer can find the messages, to which this message has references. Note that there is a risk that replies arrive before the replied-to message, so a good implementation should work even in this case. A problem with these kinds of Message-ID data bases is that they tend to become very large with time, and they easily collect garbage (Message-ID-s of messages not any more available in the mailbox data base). The two most common methods to implement such data bases are: (a) Implement a large data base, but with some method of purging to avoid unlimited growth of the data base. (b) Implement a smaller data base, where all objects are deleted after a certain time. A couple of months is enough if the techniques described in the next paragraph are used. With implementation method (b), information about the references in the form of "In-Reply-To", "References", "Supersedes", "Replied-By", "Referenced-By" and "Superseded-By" should also be stored in the message headers themselves. The reason method (b) works is that it is very uncommon that a message has a reference to other than very recent messages. Thus, the lack of "Replied-By", "Referenced-By" and "Superseded-By" headers in these very uncommon cases is acceptable. The advantage with method (b) is that a complex garbage collection method, as for method (a), is not needed. A much simpler garbage collection method can be used instead, just removing records after a certain expiration time. 4. More implementation hints More implementation hints can be found at URL http://www.dsv.su.se/~jpalme/ietf/thread-support-proposal.html See also URL http://www.dsv.su.se/~jpalme/ietf/jp-ietf-home.html#newfields 5. Acknowledgements Peter Kaminski has given me valuable ideas for this document. 6. Copyright Copyright (C) The Internet Society (date). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 7. References Ref. Author, title --------- -------------------------------------------------------- [AUTOLOOP] J. Palme: "Loop control for the Auto-Submitted e-mail header", draft-palme-autosub-03.txt, July 1997. [MIME1] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, December 1996. . [MIME2] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, December 1996. [MIME3] K. Moore, "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text", RFC 2047, December 1996. [MIME4] N. Freed, J. Klensin, J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC 2048, January 1997. [MIME5] "Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples", RFC 2049, December 1996. [NEWFIELDS] J. Palme: "The Auto-Submitted, Supersedes and Expires E-mail Headers", draft-ietf-mailext-new-fields-12.txt, March 1998. [NEWS] M.R. Horton, R. Adams: "Standard for interchange of USENET messages", RFC 1036, December 1987. [RFC822] D. Crocker: "Standard for the format of ARPA Internet text messages." STD 11, RFC 822, August 1982. [SMTP] J. Postel: "Simple Mail Transfer Protocol", STD 10, RFC 821, August 1982. 8. Author's Address Jacob Palme Phone: +46-8-16 16 67 Stockholm University and KTH Fax: +46-8-783 08 29 Electrum 230 E-mail: jpalme@dsv.su.se S-164 40 Kista, Sweden