# Rn (newsreader)

rn (short for Read News) is a Usenet newsreader written by Larry Wall and originally released in 1984. It was one of the first newsreaders to take full advantage of a character-addressable CRT terminal (vnews by Kenneth Almquist was first). Previous newsreaders, such as readnews, were mostly line-oriented and designed for use on the printing terminals which were common on the early Unix minicomputers where the Usenet software and network originated. Later variants of the original rn program included rrn, trn, and strn.

## Features

rn was also notable for three other features it introduced: Kill file, "do the right thing", and automatic configuration.
A Kill file is a file (called, obviously enough, KILL) containing regular expressions matched against the subjects of news articles in each group. If an article matches, it is marked as having already been read. This feature was essential as the growth of the Usenet made it impossible to read every article in even a limited selection of newsgroups.
"Do the right thing" introduced a fundamental change in user-interface from previous news software. Rather than require a user to navigate menus or learn a command vocabulary for each mode of the program, certain single-keystroke commands were used throughout the user interface to perform the most appropriate function based on context. For example, the space character will "go on to the next thing", and the next thing could be the next page, the next article, or the next newsgroup, depending on where the user is in the process of reading news.
Finally, automatic configuration is a feature for system administrators – not visible to users – that allows for building and installing the application with relative ease. Most Unix programs, and in particular Usenet software, were (and still often are) distributed in source code form which requires building and installing before users can use it. Because different versions of Unix were organized differently, a system administrator required sufficient programming skill to modify the source code to account for these differences. rn changed that paradigm by including a script, called Configure, with enough intelligence to customize the build and install process for the system it was running on. Since its introduction in the rn codebase, the pattern of including a similar configure script in any software distribution became and still is popular.

## History

Like all of the original newsreaders and the Usenet software itself, rn was designed for the environment of a large time-shared minicomputer, which users connected to using terminals wired directly to the machine, and where the only networks available were accessed by slow and expensive dial-up modem connections. All of the articles in all of the newsgroups were stored in files on the local disk (known as the "news spool"), and rn could simply read those files directly when presenting them to the user. When local area networks became widespread, it was natural that administrators and users would desire remote access to the news spool, and NNTP, the Network News Transfer Protocol, was developed to serve that need. While working at Baylor College of Medicine, Stan O. Barber developed remote rn (rrn), a set of patches to rn which allowed it to communicate with an NNTP server over a local-area (or even wide-area) network. Barber later took over maintenance responsibility for rn itself from Larry Wall.
As news volumes continued to increase, it became apparent that even KILL files could not possibly keep up with the sheer number of users and articles. A new concept, the threaded newsreader, was needed as users gradually switched from a "read most, kill few" model to "ignore most, read few". By organizing the articles in a newsgroup according to threads of discussion, using headers that had long been present in Usenet articles but practically unused, a threaded newsreader would allow users to keep up with topics and discussions they were interested without having to explicitly deselect uninteresting threads. Kim F. Storm's nn newsreader was the first to implement this new model, and it looked for a while as if nn would do to rn what rn did to readnews. This fate was averted when Wayne Davison developed trn, a set of patches to rn which gave it both threading at the article level and a new user interface that would allow users to select only the threads they desired, while remaining true to the original rn interface philosophy of do the right thing.
An even more recent addition to the rn family has been the addition of scoring, which allows a more complex method of evaluating articles to determine whether the user wishes to read them; originally this was implemented in a code fork of trn called strn, but later this was integrated into the official trn distribution.