Citadel (software)

Citadel is the name of a bulletin board system (BBS) computer program, and of the genre of programs it inspired. Citadels were notable for their room-based structure (see below) and relatively heavy emphasis on messages and conversation as opposed to gaming and files. The first Citadel came online in 1980 with a single 300 baud modem; eventually many versions of the software, both clones and those descended from the original code base (but all usually called "Citadels"), became popular among BBS callers and sysops, particularly in areas such as the Pacific Northwest, Northern California and Upper Midwest of the United States, where development of the software was ongoing. Citadel BBSes were most popular in the late 1980s and early 1990s, but when the Internet became more accessible for online communication, Citadels began to decline. However, some versions of the software, from small community BBSes to large systems supporting thousands of simultaneous users, are still in use today. Citadel development has always been collaborative with a strong push to keep the source code in the public domain. This makes Citadel one of the oldest surviving FOSS projects.

The Citadel user interface
Citadel's primary improvement over previous BBS packages was the introduction of the metaphor of rooms as a way to organize topics. Messages are associated with rooms, to which the user moves in order to participate in discussions; similarly, a room could optionally give access to the underlying file system, permitting the organization of available files in an organic manner. Most installations permitted any user to create a room, resulting in a dynamic ebb and flow closer to true conversation than most other BBS packages achieved. Certain versions of Citadel extend the metaphor of rooms with "hallways" and/or "floors," organizing groups of rooms according to system requirement. By contrast, previous bulletin board software emphasized the availability of files, with a single uncoupled message area that could only be read linearly, forward or backward.

Citadel further improved the user experience in the area of command and control. Based on Alan Kay's philosophy of user-interface design, "Simple things should be simple; complex things should be possible," and influenced by the fact that Citadel was developed in an era of 300 baud modems, the basic and most heavily used commands are accessed via single keystrokes. The most common commands are Goto (the next room with new messages), New messages (display the New messages in the room to the user), and Enter a message into the room. Other single keystroke commands exist as well, such as Known rooms, which lists the rooms known to the user.

This elegantly small command set made the system so usable that many daily users during Citadel's golden era were never aware that Citadel also provided sophisticated capabilities. These are known as the "dot" commands and build logically from the set of single keystroke commands. A simple example would be the requirement to go directly to a specified room. The user would type, where the text between the brackets is user typed, while the rest is filled in by the system. A more complex example might be .Read All rooms Zmodem New messages (.RAZN), which results in all of the new messages in all of the rooms known to the user being sent to the user via the ZMODEM protocol. Filters for users, keyword searches, and other capabilities have been implemented, depending on the version of Citadel.

History
Citadel was originally written for the CP/M operating system in 1981 by Jeff Prothero, known to the nascent Citadel world as Cynbe ru Taren (CrT). Unlike most BASIC-based BBS programs of the time, it was written in a fairly standard dialect of C known as BDS C, a compiler written and distributed by Leor Zolman. The first installation came online in December, 1981, running on a Heathkit H-89, and in its 6 month lifetime achieved immediate success.

Version 2 debuted on David Mitchell's ICS BBS, and with the release of 2.11, Prothero's involvement with the project ended following a conflict centered around a user called "sugar bunny". He released the source to the public domain and it became available as a download from various systems as well as through the C Users Group.

At this point, the history of Citadel becomes complex as many individuals began modifying the source to their own ends, and lacking modern distributed source tracking, innovations were never incorporated into a central source repository, as such a thing did not exist. Initially, Bruce King, David Bonn (releasing under the name Stonehenge), Caren Park, and James Shields, amongst others, picked up the opportunity in the Seattle area.

The longest lived fork from the 2.10 code started in the American Midwest, when Hue White (aka Hue, Jr.) ported the code to MS-DOS and called it Citadel-86 ("C-86"). His board, Citadel-86 Test System, served not only as a discussion board and distribution center for the software, but also was the focal point for a lively Citadel-86 community in the 612 area code (the Twin Cities), which at their peak numbered roughly forty systems, and probably more than 100 over the years. Numerous suggestions from sysops and users, both local and national, guided the growth of Citadel-86, including the addition of a network capability as well as enhancements to the command set. Hue's contributions were substantial enough that several other porting projects used Citadel-86 as source material, such as Asgard-86 (MS-DOS), Macadel (Macintosh), STadel (Atari ST, fnordadel), Citadel-68K (Amiga), and Citadel:K2NE (MS-DOS), and many of these contributed back to Hue Jr's project. Most of these ports were compatible with the growing Citadel-86 network (C86Net). Local systems would network with each other on a demand basis (due to the work of David Parsons), while the long haul network was serviced late at night.

An early fork from Citadel-86 was DragCit, written by The Dragon. DragCit also introduced networking code, but the DragCit network was not generally compatible with the Citadel-86 network. DragCit forked to several more versions, eventually leading to efforts to merge several code bases under the guidance of Matt Pfleger, Richard Goldfinder, Brent Bottles, Don Kimberlin, and Elisabeth Perrin, the end result being Citadel+, a multiuser capable version of the software, which also included advanced scripting, user control of message displays, and other features.

Other Citadel implementations
Implementations that share the familiar Citadel user interface, but are not derived from the original Citadel code base, are also common. They have ranged from vanity projects such as a Citadel-like control program to control the serial port of an advanced graphing calculator, to full-blown efforts to modernize the Citadel interface with modern protocols.

Some of the more notable ones included Glenn Gorman's TRS-80 BASIC implementation called Minibin, a clone of Cit-86 intended to run on a Unix running on Motorola processors called Cit/68, and a Unix version, technically called Citadel/UX but referred to simply as "Citadel" in the mainstream open source community. This version of Citadel is still being developed, extending the Citadel metaphor to enable what its developers call "a messaging and collaboration platform (for) connecting communities of people together": a groupware platform.

Several efforts have also been made to present the Citadel paradigm as a web service, including Webadel, written by Jarrin Jambik, a former Citadel-86 sysop, and Anansi-web, anansi-web.com hosted by former Citadel-86 Sysop, Ultravox the Muse. The only current actively developed web-enabled Citadels are Citadel/UX and PenguinCit, a PHP-based Citadel.