From: davison@borland.com (Wayne Davison)
Subject: DESIGN DISCUSSION: The reference line is deficient
Organization: Borland International
Date: Tue, 29 Dec 1992 20:07:37 GMT

I have a design decision to make that is pertinent to all threaded
newsreaders.  If you're writing one or you have information about
how an existing newsreader would be affected by the following, please
make an extra effort to read this and respond.

I'm trying to solve the problem of being able to refer to a unique
thread identifier in a KILL file while still being able to deduce
this identifier long after the original article(s) have expired. Trn
can no longer rely on this thread information being provided to it
in all cases (e.g. the unique root number in a .thread file) because
the thread information may have been generated at runtime.

One possibility is to pick an arbitrary Message-ID (perhaps the oldest
article) and keep changing it each time the KILL file is run.  This is
a fairly easy solution, but one which can fail if the group is not read
often enough.  Worse, with a related group of differing subjects (which
IS the reason you chose a thread-kill rather than a subject-kill, right?)
you may only get a partial match of the articles you wanted to kill
because they're not related into a single thread anymore.

Another solution is to add a new header line to posted articles:  X-Root,
for example.  This header would be set to the Message-ID of the article
itself when starting a new topic, and preserved in followups.

The X-Root line could also be deduced by following the links to other
articles to look for it, and also by assuming that if the first article
in the thread has no References and no "Re:" in the subject it is the
root.  In this manner, just a few judicious X-Root postings sprinkled
throughout a thread would preserve the root information in an aging
thread. Also, the X-Root header could be used to continue grouping
the related-but-diverse subjects you wanted to kill.

[Example tree rendered in Hunt-the-Wump-a-rama(tm) eliminated for brevity.]

A similar solution uses the same basic hueristic but stores the
information as a special ID in the References line.  For example,
the first reply to a root article would get the line:

    References: R<original@id>

where the R prepended to the standard Message-ID denotes the root status.
The general case is:

    References: R<root@id> <old@references> <last@id>

where the old@references could possibly be trimmed.  This method has
the advantage of being propigated by newsreaders that don't understand
it PLUS you don't have to tweak things like the .overview file format
to include it.

The problem with these heuristic methods is that until enough Root-ID
postings are out there, the newsreader will lose track of the Root-IDs
and the threads will become "anonymous."

Finally, the paranoid ("...but netnews IS out to getme!") would combine
the recent-Message-ID method with one of the heuristic-Root-ID methods
to cover all the bases (or try to).

Ok, those that were wondering where the questions are, will be glad to
know we're almost done:

Q1:  What solution do you think would be best?  Better ideas gladly
     accepted.

Q2:  Do you know of any newsreader/news-software that would be adversely
     affected by having a R<id> as the first Message-ID in the References
     line?  I know that old versions of trn would NOT be affected in the
     least, since they all scan the References line backward looking for
     '<'s.  While this method has better propigation and saves a little
     bandwidth in the first few articles compared to X-Root, putting an
     R<id> in the References may be risky.
-- 
Wayne Davison
davison@borland.com