rn (short for Read News) is a news client (or 'newsreader') written by Larry Wall and originally released in 1984. It was one of the first newsreaders to take full advantage of character-addressable CRT terminals (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.
rn was also notable for three other features it introduced: KILL files, "do the right thing", and automatic configuration. The KILL file was a file (called, obviously enough, KILL) containing regular expressions matched against the subjects of news articles in each group; if an article matched, it would be marked as having already been read. This feature proved 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" was a fundamental change in the user-interface model of previous news software; rather than requiring users to navigate menus or learn a distinct command vocabulary for every operating mode of the program, certain single-keystroke commands were repeated throughout the user interface, performing the most obviously appropriate function for the task at hand. The most important of these commands was the space character, which means "go on to the next thing", where the next thing could be the next page, the next article, or the next newsgroup, depending on where the user was in the process of reading news.
Finally, automatic configuration was a feature for system administrators, not visible to users. Most Unix programs, and in particular all of the Usenet software, were distributed in source code form. Because different vendors of Unix systems (and in many cases, different versions of the Unix software) implemented slightly different behavior and names for important functions, a system administrator was required to have sufficient programming expertise to edit the source code before building the program executables to account for these differences. A particularly considerate programmer might have centralized these in a single source code file, but it still required manual editing. rn changed that by including a script called Configure, which had enough intelligence on its own to examine the computer system it was running on and determine, of those functions and interfaces known to behave differently, which behavior the system implemented. Today, most open source software is distributed with a similar script, such as autoconf.
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.
Full article ▸