# Synchronet

Synchronet is a multiplatform BBS software package, with current ports for Microsoft Windows, Linux, and BSD variants. Past versions also ran on MS-DOS and OS/2, but support for those platforms were dropped in version 3.0 (circa 2000).

## History

Synchronet was originally written by Rob Swindell (a.k.a. Digital Man) due to his desire for certain features which WWIV lacked, such as support for multiple simultaneous nodes, batch uploads and bidirectional file transfer. The bulk of the programming for the first version of Synchronet was done during a two-month period in 1991 when Swindell was house-ridden while he recovered from surgery. The software was named for its ability to run synchronously on a network.
In July 1991, the author began running his own BBS, Vertrauen, on Synchronet. Initially, he had no intention of releasing Synchronet publicly, but as word of his software spread and he received offers to buy copies of Synchronet, he eventually relented, formed a company called Digital Dynamics, and sold copies of Synchronet at a price of $100 without source code, and $200 with source code. In April 1992, Swindell's employer went out of business and he began to rely exclusively on commercial sales of Synchronet for his livelihood, placing advertisements in the BBS-related magazines Boardwatch and BBS Callers Digest. The first copy of Synchronet sold through the magazine ads was in June 1992.
Synchronet was the first BBS package to support QWK message networking natively without requiring any external utilities, in version 1a revision 10, released June 25, 1992. It was also the first BBS package with RIP support, in version 1b revision 1, released January 23, 1993.
Interest in Synchronet began to dwindle in late 1994, finally becoming nonexistent in 1995. Digital Dynamics effectively went bankrupt in the fall of 1995. Despite this, a beta version of version 2.30 of Synchronet for MS-DOS and an alpha version for OS/2 were released in early 1996. In August 1996, Swindell announced the uncertainty of Synchronet's future. In 1997, version 2.30 of Synchronet was released as freeware, and the source code was released into the public domain later that year.
In April 1999, Swindell revived Synchronet development, revamping it considerably and converting much of the code to C++. Another version, 2.30c, was released in December 1999, fixing Y2K bugs and introducing some minor new features from the upcoming 3.x series. Version 3.00b was released June 25, 2000 and was the first official release of the 3.x series, featuring a native 32-bit Windows version and many new Internet-related features, such as a built-in telnet server. For this release, dial-up support was dropped making it a TCP/IP-only system. In October 2000, Synchronet was released under the terms of the GNU General Public License (GPL).
In late 2001, Stephen Hurd (Deuce) joined the project initially as *nix developer. He ported the BBS to FreeBSD and did much of the Linux development work. His first "big" contribution was an implementation of Borlands conio library to allow the configuration utilities which were originally written for DOS to run on the Unix-like platforms.
Around the same time, Swindell started embedding the SpiderMonkey JavaScript engine into Synchronet with an eye towards replacing the aging BAJA language which was used for most BBS customizations. While the BBS still requires BAJA scripts, much can be done with JavaScript. A socket object was added to the JavaScript engine and a "Services" server created which allowed simple TCP/IP services to be written easily. TCP/IP services written in JavaScript bundled with Synchronet include finger, gopher, IRC, and NNTP.
More internet services have been added in the native (C) code: FTP, SMTP and POP3 by Rob Swindell and rlogin, SSH and HTTP by Stephen Hurd.
In an interesting full circle, direct dial-up support for Synchronet is available again as Rob Swindell wrote a modem to telnet gateway program (SEXPOTS) for this purpose. Using this program, SysOps can once again offer their BBSes via direct modem-to-modem connections.

## Sub projects
### Libraries

* xpdev is a cross platform development library which provides such features as threading, .ini file parsing, consistent *printf functions, and other small utility functions to the rest of the project. Effectively every Synchronet sub project relies on xpdev. The primary developer is Rob Swindell.
* ciolib ciolib is clean room implementation of Borland's conio library which supports the display of CP437 using the Win32 console, SDL, X11, curses and ANSI via stdio. It also has an ANSI terminal emulator which supports ANSI-BBS, ANSI Music, Character pacing for ANSI Art animation, VT500 ESC[*r sequence for dynamic speed changes, Commodore 64 PETSCII and Atari 8-bit ATASCII in different screen modes, including 80x25, 80x28, 80x43, 80x50 and 80x60, as well as over 35 fonts imported from the FreeBSD syscons source as well as the ability to customize fonts. The primary developer is Stephen Hurd.
* UIFC is a text user interface library which provides the menuing system to the text mode configuration utilities bundled with Synchronet. Initially written by Rob Swindell, it was updated by Stephen Hurd to have it make use of the ciolib. It is considered feature complete, so active development occurs only when new features are required.
* comio is a generic serial (COM) port API implementation for Windows and *nix. It was initially designed by Rob Swindell as part of the SEXPOTS project and was ported to *nix by Stephen Hurd.

### BBS Utilities
#### SEXYZ

SEXYZ (Synchronet External X-Modem, Y-Modem, Z-Modem) is an external file transfer program which supports X/Y/ZModem transfers. It was written to break the reliance on old DOS external protocols such as [F]DSZ and CEXYZ. It supports TCP socket and stdio transfers. It is functional and very little additional development on this is planned.

#### SEXPOTS

SEXPOTS (Synchronet EXternal Plain Old Telephone System) is a modem to telnet gateway. It accepts incoming modem calls and forwards them to the BBS via the Telnet or RLogin protocols.

#### SyncTERM

SyncTERM is terminal emulator which makes use of xpdev, ciolib, UIFC, and parts of SEXYZ and SEXPOTS. In addition to the platforms supported by Synchronet, it also runs on Solaris and Mac OS X.
Supported connectivity options are Telnet, rlogin, SSH, "Raw" sockets, standard modem connections and direct serial connections (using parts of SEXPOTS), and a pty interface on *nix. File transfer options include the ZMODEM, XMODEM and YMODEM transfer protocols (using parts of SEXYZ.)

#### SyncDraw

SyncDraw is an ANSI art editor which was initially a cleanup of an old version of MysticDraw. It uses xpdev and ciolib but is not yet complete. It supports the use of TheDraw fonts, and can save to the Synchronet Control-A code format, but is generally considered too incomplete for serious usage.

## Third-party software

The Synchronet project has shown a willingness to "adopt" third-party BBS related software into its CVS tree. Generally, the software is updated to use xpdev and run on the platforms that Synchronet does and then is left in the CVS tree without active development.

### Domain Entertainment Doors

Domain Entertainment was once one of the major companies which wrote addons specifically for Synchronet. Some of their software has since been released as open source and has been imported into the Synchronet CVS tree under the xtrn directory.

#### Domain Poker

Domain Poker is a single/multi-player, real-time, 5 card draw poker game. The game can have up to 6 players per table, and up to 25 tables. Each table has a configurable bet limit, ante, and table limit. Tables can be password protected for private games, and the "house" can take a configurable percentage of the pot from games.
Single player games are played against the computer. The computer can be turned off completely, or allowed to play only on certain tables (at your option). You also have the option to not allow the computer to be on password protected tables (to keep users from hogging the tables for themselves).

#### The Beast's Domain

The Beast's Domain is a multiplayer, interactive, real-time, Rogue-like ANSI adventure game. The Beast's Domain can handle up to 250 simultaneous players.

### OpenDoors

OpenDoors was one of the most popular C "door kits". Support for the DOOR32 drop file format as well as generic sockets was added by Rob Swindell and *nix compatibility was added by Stephen Hurd.

### Other Doors

Other door sources that have been adopted include by developers:
* The Clans
* New York 2008
* Smurf Combat
* Tasmanian Strategical
* Time Port
* Virtual BBS 3

## Sources for BBSes running Synchronet

* The Official Synchronet BBS List
* Synchronet developer's system Vertrauen