Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbosgd!osu-cis!tut!tut.cis.ohio-state.edu!orange@greely From: orange%greely@tut.cis.ohio-state.edu.UUCP Newsgroups: comp.society.futures Subject: Hyper-Usenet Message-ID: <2395@tut.cis.ohio-state.edu> Date: Mon, 30-Nov-87 04:39:06 EST Article-I.D.: tut.2395 Posted: Mon Nov 30 04:39:06 1987 Date-Received: Wed, 2-Dec-87 03:30:06 EST Sender: news@tut.cis.ohio-state.edu Organization: Swashbuckler Associates Lines: 189 The recent discussion of a hypertext Usenet has stimulated me to submit my own recommendations/ideas for how to accomplish this. Since I am neither the most experienced programmer on the net, nor the most knowledgeable about hypertext, I am welcome to suggestions/criticisms/flames/snickers. Here goes... ------------------------------------------------------------ Hyper-Usenet: A Proposal. Definitions: Article - a message posted to Usenet, consisting of the message and a header which uniquely identifies it. Reference - A text phrase inserted into an article that describes a section of a previous article which should be included at this point. Source - an article which is referenced by a later article, in whole or part. Followup - an article containing a reference to a previous article. A. Overview: This article describes a "hypertext" reference mechanism, designed to replace the current Usenet reference system, which consists of inserting a block copy of the source article, identified by a header line stating the ID of the source message. Example: In article (137@tut.ohio-state.edu), Dave (foo@tut) says: >But the mean free path of a positively charged banana is >insufficient to explain the ... (you get the idea) If the quotation is long, the followup message is quite possibly huge (especially in the all-too-common case of a point-by-point flame), causing heart failure among net-mailers everywhere. One solution is to replace long quotes by a reference to them, and the reader can optionally expand the reference into the actual text. A reference is not too terribly difficult; it need only consist of the ID of the source (in the example, "137@tut.ohio-state.edu"), the offset of the quote in the source article, and the size in characters of the quote. So, the example could (if it actually existed) be completely described by "@REF(137.tut.ohio-state.edu,xx,yy)", where xx = offset in bytes into the source article, and yy = the number of bytes in the quote. There are problems, of course: 1. Articles are not stored by their unique id, but rather by a number identifying when they arrived at the local site. This can be overcome by indexing. 2. Most sites delete articles a variable number of days after they arrive, making any references invalid. One way to solve this is by scanning each article as it arrives, checking for references. Each article referenced is then "touched" (creation date set to current date). Optionally, this can be carried out to a depth set by the administrator, so that recent threads will not be deleted as long as there are further contributions. 3. A source article might itself contain references to previous articles, and the followup may contain all or part of the previous reference, as well as text from the source. This is a trickier problem, and will probably not be completely solved by me (1/2 :-)) This is by no means a complete list of problems. Slow retrieval times, crossposted articles, arrival of a followup before the source, reference to an expired article, etc., will need to be handled. B. Establishing References: The object of this section is to describe a method of creating the links described above, while not interfering too much in the normal process of posting a followup article. To simplify the explanation, I will first give an example of the current method, using _rn_. Example 1: (reading article about the amazing property possessed by bananas, of always managing to appear underfoot when thrown by an uncaring person) "F" (submit followup article, including part of current one) (program enters your favorite editor, with a file consisting of a new header followed by the current (source) article. The quoted text is preceded by a line explaining which article is included; each line of the quote is preceded by a ">") (submitter edits out the parts of the message not wanted, enters a reply, saves the file, and exits the editor) (article is posted, and will be echoed across the net) Now, here's what *could* be done. This assumes a custom editor, but could be accomplished with emacs by writing a custom library. Example 2: (reading same article) "F" (submit followup, machine asks "Use Links? (N/y)". Choosing "N" will cause the program to use the above method (for compatibility with older news-readers), while "Y" will use this method) (enter the editor, with two open windows: the first contains the header for your reply, and the second contains the text of the source article. You are initially in the top window; when you want to include part of the source, you switch windows, place a marker at the beginning and end of the block you wish included, and execute the "Insert reference" command. A complete reference of the form "@REF(
,,)" is inserted at the current cursor position in your followup. Note that any references in the source are *not* expanded. They are listed in the above format, and are only expanded upon request. Another editor command would be "Expand Reference", which inserted a text copy of the referenced block in the canonical form. Still another would be "Recursively Expand References", which would expand all references in the current article into their text form (this would be handy for an article which contains a large number of small references or where the source contains a large number of other references). The source article is *never* changed, and it should be obvious that this system depends on static sources.) (The new article is saved and posted. When received by a machine, the article is added to the index, and scanned for references. Articles which are referenced have their creation dates updated.) C. Reading articles containing references: This is a little easier. When an article is read, it is first scanned for references, and the referenced text is inserted into the copy made for viewing. The user may optionally supress expansion (for faster display of articles), and may also limit the depth to which reference expansions are carried out (*greatly* increasing speed of display). References may be expanded at any time while reading the article, in the same manner that articles using "rot13" can be decrypted by "X" or "^X". The two above functions, posting followup articles and reading them, can be combined into one program (although putting the editor in might cause size problems on some machines (no kidding)). Speed of retrieval in both functions will depend heavily on the individual machine, making it necessary to include options to limit or ignore expansion. Deleting articles after a certain time (expiration) is a completely different problem, with several possible solutions. The above suggestion is just to open the discussion. Ideas for more efficient methods are welcome. A relevant topic (but not terribly important in this context) is internal referencing, which would have to be handled differently. The only reason I even mention it is that it could be useful in digests. ------------------------------------------------------------ Well, that's my two cents. Any comments? ANY ERRORS/OMISSIONS/FANTASIES/IRRELEVANCIES/ETC ARE DELIBERATE. I wouldn't want anyone to think I had *all* the answers :-) -=- -j "... 'cause they're Vampire Hookers, ...!cbosgd!osu-cis!tut!orange!greely and blood is not all they suck!" greely@orange.cis.ohio-state.edu -- from "Vampire Hookers" (one of these ought to work) (theme song to "Vampire Hookers") ------------------------------------------------------------ Disclaimer: None of the opinions expressed above are, in fact, opinions. The superficial resemblance to what is commonly termed an "opinion" is purely coincidental, and the above message actually consists entirely of line noise. ------------------------------------------------------------