Brad Templeton Internal Page

Topics -- Subclassifications within newsgroups

Topics -- Subclassifications within newsgroups

The Topics header provides a semicolon delimited list of subtopics in certain newsgroups the article belongs.

A Topic is level of organization finer than, and easier to create than a newsgroup, but more permanent and more difficult to create than a thread. They are expected to be used for common themes that show up regularly in threads, or subject areas with sudden surges of interest.

For example a science fiction newsgroup might have a Topic for each major author or each major theme in the genre. The author's topic might well get bursts of activity each time the author has a new book.

Topic-List	=	Topic-Entry *( ';' Topic-Entry) 
Topic-Entry	=	[Newsgroup-designator ':'] Topic-Name | 
			header-extension 
Topic-Name	=	1*(any printable CHAR except ";" or "=" ) 
Newsgroup-Designator =	Newsgroup / integer / null-string 

Each entry specifies a Newsgroup from the "Newsgroups:" header and a subtopic defined for that newsgroup. A newsgroup may either be designated by name, or any an integer selecting one Newsgroup from the Newsgroups line. A null identifier, or the lack of a newsgroup designator and colon selects the first (or only) Newsgroup from the Newsgroups line.

Whitespace around a topic name, the semicolon, the colon or the Newsgroup designator should be stripped. Whitespace within a Topic-Name should not be stripped.

Topic Names must be from the list of created Topics for the specific newsgroup. News systems supporting topics MUST maintain a list of properly created Topics for newsgroups. Post Authoring tools SHOULD offer the user the opportunity to pick a topic from the list when posting to the newsgroup. Followups SHOULD by default preserve the Topics of the parent posting.

For all Newsgroups, the predefined topic "Unknown" will exist by default. Any posting in an unrecognized topic should be treated as belonging to the "Unknown" topic, however the Topic header should not be modified.

Newsreaders SHOULD allow articles to be sorted by, viewed, and filtered by topics. Users SHOULD have the opportunity to view certain topics first, or not view certain topics at all.

Topics containing the character "/" SHOULD be treated as grouped together with other topics with the same string to the left of the slash. These groupings may be used to sort and organize topics in a hierarchy.

The existence of any topic with a slash in the name implies the existence of a topic with the part after the slash replaced with "Unknown". If an unknown topic appears with a slash in its name, and there are other topics with the same string prior to the slash, the message should be treated as though the part after the slash is replaced by the string "Unknown."

Topic List

Each system MUST maintain a topic list for each newsgroup that has topics. Master topic lists will be made available in archives kept on FTP and HTTP servers, see (TOPIC-URL) or installation instructions for your software for information on how to get an up to date topic list.

Topic lists may be updated by use of the "Name" control message with the name "topics". A language would not normally be specified, as the topic list would not differ language to language. The posting user must be authorized to maintain the topic list for the group in question. In addition, a secial control message, "addtopic" exists which may be issued by any user if the existing topic file authorizes this.

Topic list entries can be of the following forms:

Topic-Name ";" Topic-Description 
";" Fieldname ":" value 

Where the fieldname and value match the syntax of USENET headers.

Whitespace should be stripped from the start and end of lines, and around the semicolon.

Field Names and their values are as follows:

Create-URLs

A list of URLs, delmited by whitespace, that can be used to request the creation of a Topic. One URL must be a "mailto:" URL which all newsreaders MUST support. The use of other URLs MAY also be supported, simply by bringing up a WWW browser on the specified URL. If E-mail is to be sent, a message consisting of a single topic descriptor on one line, followed by optional extra text, should be sent.

User-Create

Indicates ordinary users may issue the "newtopic" control message in this newsgroup to create a topic, so long as the topic name begins with the string specified as the value for this field. If the field is "*" then any user may create any topic. There may be multiple instances of this field.

CrossPost

Indicates whether crossposting among topics by ordinary posters is allowed. If non-null it is allowed, otherwise not.

control newtopic

A single topic name and description are provided in the body. Unlike other messages, this message may be issued by any identified user without special permissions, so long as the topic list contains the "User-Create" entry with a value that matches the start of the created topic.

Fields may not be added to the topic list using this method, and the description of topics may not be changed using this method, only new topics may be created. The body should consist of one line with a topic name, semicolon, and topic description.

It is expected that a "control name set topics" article will be posted to most newsgroups on a regular basis, allowing a system to quickly get an up to date list. There is no "delete" command. Rather than require that, the authorized topic custodian for a group should simply re-issue the topic list.

Expected Use

In High-Volume groups, a Topic Custodian would be selected in a process similar to that for moderators, and given a certificate enabling them to issue the topics control messages. This person would maintain the list, deal with requests for new topics, enable user creation if desired, etc.

Chances are this might also be the person who maintains the group FAQ or web page. If the group is moderated it would almost surely be the moderator.

Posters posting to a group with topics would be asked to select a topic from the list. They may be able to browse a hierarchy of topics in their selection. While selection of multiple topics is possible, it is disabled unless the CrossPost field is set. (This does not affect crossposts with other newsgroups.)

Newsreaders SHOULD allow a simple interface to allow users to subscribe to or filter out topics, and get a menu of topics for this purpose. Readers should offer a "kill this topic" option when reading a topic. At a minimum, Newsreaders SHOULD sort messages by topic.

If topic creation by users is enabled, it MUST be by explicit command. Users are to be informed that topic creation should be done rarely, only when a perennial topic keeps cropping up. Otherwise an ordinary thread should be started.

In newsgroups where users may not create topics or all topics, instead users wishing to create a topic are to be directed to a channel to suggest the topic to the Topic Custodian. In this event they would have to wait for such creation.

There is no facility to rename topics, it is judged it would be too complex to implement. Old topics should just be removed and replaced. If a newsreader notices a user has a topic in their subscription list that is no longer valid, it should re-offer the topic list to see if the topic has been renamed.

It is expected most newsgroups with topics would have user creation enabled on the entire group or one hierarchy of topics, at least until such time as this becomes untenable due to abuse. Since user topic creation can only be done by a user with a verified digital signature identity, abuse should be minimal.

Issues

This is an entirely new feature for USENET. However, the ability to create substructure within major topic areas is a very common and valuable feature in online service and BBS based online conferencing systems.

Non-implementation of this header will not cause a newsreader to fail to function. Implementation issues for transports are minimal. However, once a newsgroup uses topics heavily, persons posting to the newsgroup will be motivated to add a valid topic to reach an audience.