Citadel (software)
Encyclopedia : C : CI : CIT : Citadel (software)
Citadel is the name of a bulletin board system software 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
Initially, Citadel's main advancement over other BBS software was that it split conversations into a natural metaphor, independent topic rooms. Within each room, messages are displayed in simple chronological order. (Some modern web-based discussion boards, such as UBB, are similar to Citadel in this sense) Users can travel from room to room throughout the BBS, skipping rooms or reading them as preferred. Previous bulletin board software emphasized the files area(s), with a single uncoupled message area that could only be read linearly, forward or backward. Further advancements on Citadel continued the "dungeon" or "castle" metaphor and allowed rooms to be organized (topically or otherwise) into "hallways," and hallways could be grouped into "floors".
Most systems allowed users to create their own rooms, creating a paradigm truer to the dynamic ebb and flow of conversations than the rigid linear message board structure.
The trademark of the Citadel interface is that instead of presenting users with a menu containing a limited number of options to guide users through the system, Citadels present users with a room prompt not dissimilar to a command line interface. Users face a small learning curve but quickly grasp the strength of the interface. The elegance of the interface is that the most common actions are done with only three keystrokes. G goes to a room containing new messages, N reads new messages in that room, and E initiates entering a new message.
Though one can easily use the BBS with just these three commands (and other immediate commands), there is also an extended interface accessible at the room prompt through "dot commands". Dot commands take a single command, like R for read, and allow it to be customized with modifiers. An overly complex example of a dot command is .rarvbk. This would Read, across All rooms, in Reverse chronological order, Verbosely (showing more header information on messages, e.g. network info), By-user, Keyword search; that is, it would allow one to find all messages created by a specified user that contain a particular word or phrase.
As another example, using the dot commands in Citadel-86 one could download a compressed archive of all new messages: .rzcan (.read Zmodem compressed All-rooms New messages).
[The Citadel UI was designed back when Smalltalk was the Cool Happenin' Thing, to which Byte magazine devoted an entire famous issue. It was heavily influenced by Alan Kay's advocacy of simple, familiar UI metaphors such as desktops -- a revolutionary idea at the time. In the context of two-seconds-per-line-of-text modems, I took that to mean absolutely minimizing the amount of uninteresting text sent to the user, and minimizing the number of keystrokes needed for common tasks -- Alan's famous dictum, "Simple things should be simple; Complex things should be possible." In an era when most BBSes required one to type a full command word and then RETURN to do anything, Citadel performed most tasks with a single keystroke -- "Simple things should be simple" -- yet provided the dot-commands when needed -- "Complex things should be possible". BBS users of the time regarded this as a quantum leap in BBS UI "user friendliness" -- a weird new phrase just starting to make the rounds. Having been an ARPANET and usenet user for several years at the time, I was undoubtedly also influenced by them to some extent. At the time of introduction, Citadel's greatest strengths were seen as its speed, room structure, and UI. Sysops liked that it used scarce disk space extremely efficiently, and that it would run virtually forever without crashing or needing manual intervention -- BBSes of the time tended to waste space prodigiously, run out of disk space, and crash, for example. Citadel quietly recycled old messages to make room for new ones, making good use of literally every byte of disk space. The fact that it was written in C, which fortuitously went on to become the dominant microcomputer language, undoubtedly contributed to its longevity. RCP/M sysops did complain that at a gigantic 32KB of binary image, it was a ram hog that took seemingly FOREVER to load up off floppy -- hard disks were for mainframes and cost as much as a house -- and required a big-memory machine with 48KB or even 64KB of ram to execute -- but seemed to consider that a price worth paying. -- Cynbe ]
Ancient history
A recurring legend of Citadel history is that a user (Jeff Prothero, aka Cynbe ru Taren or CrT) of a multi-user game (DandD.pas) at the University of Washington in Seattle created a function that allowed users to vandalize the walls of the rooms in the games dungeon. Soon the writing on the walls became as important as the gameplay itself. The legend is richer than the reality, however. Prothero claims the legend is untrue.[This legend appears to confuse two unrelated programs I wrote about then: (1) strek.pas, the first Pascal (vs BASIC) star trek program on the UW campus. Timesharing access being $15/hr cash money back then, I wrote it on the Health Sciences DEC-10 account of my dorm roommate aka "The Cosmic Gorilla", who had an unlimited-funds account to add non-local GOTO support to Hedrick's Pascal for his master's project -- and who consequently got credit for strek.pas after it became a campus game staple. ;-) (2) Dand.pas, what would today be called a dungeons-and-dragons game level editor, an unknown concept at the time. Written in Hedrick's Pascal on the UW Physics Hall Visual Techniques Lab PDP-10 and so far as I know never released -- when I got to implementing spells, I realized magic follows no simple rules and requires a full application language to implement, so I went off to implement a Smalltalk compiler and virtual machine, and never got back to the project. I wrote a variety of stuff in this era ranging from CrT_talk (wardialing modem program based on Leor Zolman's telnet.t) to CrT_Edit (programming editor) to unixy filters for CP/M to an illegal port of AT&T's yacc to CP/M which I used to write a parser for Loglan -- arguably the world's first parser for a human-speakable language -- to various more ambitious things that never saw the light of day, such as Tetra, a nifty little bytecoded Forthish OOP software platform running on top of CP/M, which among other things had resizable overlapping windows and software virtual memory swapping onto a 90K floppy disk. -- Cynbe]
The first Citadel, written by Cynbe ru Taren, came online in Seattle in December 1981 with the appropriate telephone number of ODD-DATA. It ran on a single 90KB floppy Heathkit H89 CP/M system. It was immediately successful. Cynbe turned the version 1.0 code out to the world through another system, John Rivoire's MAILBOARD. After six months, a hardware failure forced ODD-DATA offline. Undeterred, Cynbe teamed up with Glenn Gorman and began quickly revising the code. It was released to the public domain with the version number 2.0.
[The last two lines are incorrect. Glenn Gorman's MINIBIN long predated Citadel, but was originally a simple BASIC BBS typical of the era. (Citadel was remarkable for the time for being written in C -- using Leor Zolman's brilliant, cheap and blazingly fast BDS C compiler -- in an era when almost all BBSes were flaky little amateurish jobs written in BASIC, given to frequent crashes which would leave the caller at the BASIC prompt, free to rewrite and restart the program -- perhaps the most enjoyable aspect of them. Being written in C, Citadel seemed unbelievably fast and reliable by comparison.) After I explained to him the datastructures needed to support rooms -- Glenn was a VW mechanic just learning BASIC at the time -- he went on to add them to MINIBIN, but it was always 100% his code: we never collaborated on anything, and I never collaborated with anyone on Citadel. My involvement ended with the release of Cit 2.11, beta'd on David Mitchell's ICS BBS on Bainbridge Island -- popular because it was a local call from Seattle but long distance from Seattle's east side, home to various obnoxious script-kiddy types like Bill Gates, collectively called "the Lakeside kids" -- and then released via the BDS C User's Group, later renamed the C User's Group. -- Cynbe]
Citadel code has been forked, merged, ported, and cloned ever since.
Forks
The history of Citadel is a history of forked code. There were several prime reasons for forking, the first being simple geography. The majority of Citadel development occurred before the Internet allowed instantaneous and cheap communication between distant developers.Abandonment was another great reason to fork or merge code. Almost all code was developed without pay. When a developer quit but left code behind, the best most sysops could hope for was for another Citadel project to pick up the pieces and hope that what emerged was compatible.
It wouldn't be appropriate to mention forking without also mentioning another major reason for splits: personal relationships. Any large collaborative project has its share of personalities and conflicts that simply cannot be reconciled. When the work being put in is free there is little barrier to dropping out. For those that developed Citadel for love for the software or of the personal interactions it enabled, it was just as simple to rename it, stop contributing to other projects, and continue on with one's own version as it was to continue working on an existing version.
Technical improvements and platform ports often occurred despite of, not because of, the collaborative development process.
History of the original Citadel code base
Some Citadel implementations can trace their source code back to the original CP/M implementation. (These are sometimes called "True Citadels.") Citadel development stayed collaborative with Bruce King (under the pseudonym T'an T'u) releasing Citadel 2.10.
A dead-end fork resulted when Caren Park created Citadel 2.25, for MS-DOS. This fork became the basis of other notable versions, including Stonehenge (released by David Bonn) and IronHenge (released by Major Chaos).
The longest lived fork from the 2.10 code started in the American Midwest, when Hue Jr ported the code to MS-DOS and called it Citadel-86 (often abbreviated as "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). Numerous modifications were made to the C-86 code by local sysops, which were often incorporated in the official distribution. Hue's other contributions were substantial enough that several other porting projects used Citadel-86 as source material. Many ports were developed, including some for the Macintosh, Atari ST, and Amiga platforms, and many of these contributed back to Hue Jr's project. Many of these ports were compatible with the growing Citadel-86 network (called CitaNet). From Citadel-86 eventually came another major revision, Dragon's Citadel or DragCit, written by The Dragon. DragCit also introduced networking code, but the DragCit network was not generally compatible with the Citadel-86 network.
Networking allowed the sprawling numbers of Citadels to exchange messages and email. The distributed networking method meant that messages could take days to traverse the entire network, and the same for replies. Even this slow method, however, served to join what were previously entirely separate systems into a larger collection. Eventually the Cit-86 and DragCit networks both became quite large, but despite some attempts to cross-network, remained separate.
Networking gave the various Citadels a critical mass necessary to sustain more development, and frequently, more forking. In the case of DragCit, it also widened the gap between sysops who wanted a more formal network arrangement and moderation of the conversation, with those who favored a non-structured "anything goes" approach. Improvements to the networking protocols allowed a minimal amount of meta-information to follow, but the most radical (generally called "twits") of those favoring a non-structured network were not interested in honoring that. DragCit thus forked into several networks, and the developers eventually stopped creating compatible features.
Notable DragCit forks were TurboCit, TwitCit, and MavenCit. MavenCit featured integration as a UseNet reader. These side projects, however, didn't halt DragCit development — even without the Dragon, who left the project in the early 1990s. The Gremlin (Matt Pfleger) made a new version, DragCit 3.11/MSC, and Richard Goldfinder split from that to create ACit. Then Matt and Richard, along with Brent Bottles, Don Kimberlin, and Elisabeth Perrin merged several code bases, and released a renamed GremCit as Citadel+ under the moniker "Anticlimactic Teleservices".
Citadel+ made several major overhauls to the software. Changes to the network method first improved efficiency of the old DragCit models, while adding the ability to pass files. Later revisions separated the method of creating the network "packets" from the passing; this allowed long distance sysops to pass their packets through cheaper transport methods such as the Internet.
Citadel+ also introduced a scripting language allowing major functionality changes to be made by sysops who didn't wish to develop their own features into the Cit+ source code itself. It also expanded the Message Command Interpreter (MCI) from controlling simple things such as colored text, to holding and displaying variables and cursor movement. This gave users advanced control over the display of messages.
The most recent major Citadel+ developer, Brent Bottles, converted the MS-DOS-based software to the Win32 API. Along with that he finalized the multi-user code and made Citadel available by telnet. The multi-user code was successful enough to warrant a chat interface and a new Internet-native networking protocol that passed chat as well as messages.
Other Citadel implementations
Clone Citadels that were not descended 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.Notable clones included Glenn Gorman's clone in TRS-80 BASIC called Minibin, a clone of Cit-86 intended to run on a Unix running on Motorola processors called Cit/68, and a Unix version called Citadel/UX. Citadel/UX is still being developed under the name Citadel (its developers asserting that it is the only active Citadel project, and thus entitled to the name, but this is a controversial claim), 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 attempts have also been made to adapt the Citadel paradigm to the World Wide Web, including Webadel, written by Jarrin Jambik, a former Citadel-86 sysop.
External links
- [The Citadel Archive], the largest repository of historical information about "True Citadels" and their descendants. Contains archived software of many different Citadel versions, as well as [the Citadel Family Tree], which shows the relationship of the various code branches descending from the original Citadel.
- [Homepage for Citadel/UX, currently called simply "Citadel"]
- [Early text file (1982) about CrT's Citadel and its earliest descendants]
- [The release notes from Citadel 2.1 in 1982], containing interesting comments from CrT about the basic philosophy behind the Citadel user interface.
Active Citadels
- KaraNet BBS, http://www.karanet.at/, the largest Austrian BBS (DOC) - telnet www.karanet.at, or secure ssh -2 -l bbs www.karanet.at
- depths of hell BBS, running BBS100. Telnet to bbs.hell.org ([link]).
- [The Dog Pound II BBS], Formerly known as The Dog Pound BBS, running Citadel:K2NE, one of the major hubs of the larger Citadel BBS network. Also available via [SSL], or you can telnet to dogpound2.citadel.org ([link]) or ssh to bbs@ dogpound2.citadel.org.
- eschwa BBS - for a particular subgroup of DOC users, often considered the endpoint of several migrations, (possibly) from ISCABBS to Heinous BBS, from Heinous BBS to Atrium BBS, and from Atrium BBS to eschwa BBS. Telnet to bbs.eschwa.com:6969 ([link]) or ssh to bbs@bbs.eschwa.com.
- [Haven BBS], One of Indiana's oldest surviving BBSes (started 1992), running Citadel/UX. Alternatively, ssh to bbs@havenbbs.org.
- [ISCABBS.com] - Started in 1989 and still the largest active DOC (Dave's Own Citadel) BBS. Telnet to bbs.isca.uiowa.edu ([link]).
- [Slumberland] via web (Java) interface, one of the last remaining True Citadels (started in 1991), running a multi-user version of Citadel+. Alternatively, telnet to bbs.slumberland.org ([link]).
- [UNCENSORED! BBS], the home BBS of Citadel/UX.
- [BARBARIA] the last of the many citadel BBS'es in Santa Barbara CA
- [Utopia Dammit! BBS] - a cousin of eschwa, where sporadic development of the DOC codebase still goes on nearly 15 years after its creation. Telnet to bbs.utopiadammit.com ([link]) or ssh bbs@utopiadammit.com with no password.
| Noteworthy BBS software [ ] |
| Citadel|Excalibur BBS|Major BBS|Maximus|PCBoard|Renegade|Spitfire|Synchronet|Telegard|VBBS|Wildcat!|WWIV |
[[Category:DOS software]
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
