SSBBSS NETWORK  •  NODE 01  •  SSBBSS.ORG GUEST  •  LOGIN

> LESSON 1 OF 3

SYNCHRONET AND JAVASCRIPT

A BBS Built on JavaScript

Synchronet BBS is one of the most actively developed BBS software packages in existence. Its technical foundation is distinctive: rather than offering a limited scripting language bolted onto a compiled core, Synchronet integrates Mozilla's SpiderMonkey JavaScript engine throughout the system.

Nearly every aspect of the BBS can be extended, replaced, or automated using JavaScript. This is not a narrow scripting API — it is a full integration.

What JavaScript Can Do in Synchronet

The scope of Synchronet's JavaScript capabilities is unusually broad:

  • Menus and prompts: Custom login sequences, ANSI menus, dynamic content generation based on user data
  • Services: Implement Telnet, SSH, and RLogin handlers; the built-in web server serves JS-generated pages alongside static content
  • Bots: Automated user accounts that respond to messages, perform scheduled tasks, or run interactive games
  • Door-style games: Full interactive terminal sessions written entirely in JavaScript, with no separate process or drop file required
  • FidoNet processing: JavaScript modules can toss, scan, and route FidoNet mail
  • NNTP services: Synchronet's built-in NNTP server integrates with Usenet; the server logic is scriptable
  • IRC services: Synchronet includes a built-in IRC server that is similarly extensible

This integration means that for Synchronet, the answer to "can JavaScript do X?" is almost always yes. The exam tests this specifically: Synchronet's JavaScript can handle nearly any aspect of the BBS.

The Module System

Synchronet organises JavaScript functionality into modules stored in the exec/ and mods/ directories. When Synchronet needs to run a function — handling a user login, generating a menu, processing incoming mail — it looks for the relevant script.

The mods/ directory takes precedence over exec/. A SysOp who wants to customise any built-in behaviour places a modified script in mods/, and Synchronet uses that version instead. This override pattern means you can customise any part of the system without patching the core.

The load() function in Synchronet's JS environment imports modules from the sbbs module library, providing high-level APIs for message base access, user management, file operations, and terminal I/O. Custom scripts interact with the BBS at the same level as the built-in code.

Why This Architecture Matters

Synchronet's JavaScript integration is a genuine differentiator. Other BBS platforms offer scripting for menu customisation or simple automation; Synchronet exposes the entire BBS to a capable, industry-standard language.

For a SysOp who knows JavaScript, Synchronet is extraordinarily flexible. For one who does not, the built-in modules and community scripts provide a complete system without writing a line of code. The architecture serves both audiences.