惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
美团技术团队
腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
博客园_首页
V
V2EX
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss

Lobsters

CIFSwitch: a non-universal Linux local root vulnerability RIPE NCC session fixation: poaching logins with an Atlas probe GNOME 2.20 but its Web Components Agentic Search for Context Engineering – Leonie Monigatti Garnix is shutting down [not OC] akashina.tngl.sh/jjc Concerning Emacs (and Jazz) Nitpicking the shell history scene in ‘Tron: Legacy’ What's cooking on SourceHut? Q2 2026 The tenth OpenPGP email summit Package managers that package package managers Clojure on Fennel part three: parsing WordPress at 23 Finding Miscompiles for Fun, Not Profit GitHub - creusot-rs/creusot: Creusot helps you prove your Rust code is correct. Announcing Rust 1.96.0 | Rust Blog A Love Letter to Neovim sqlite AGENTS.md Am I a Bad Friend? CSS vs. JavaScript • Josh W. Comeau Erlang Ecosystem Foundation - Supporting the BEAM community A brief note about slot access cost in Common Lisp Keyboard latency probe Rethinking the GNOME clipboard issues Back to the Building Blocks’ Building Blocks Tech Notes: Theseus: translating win32 to wasm Fast is better than slow Content-addressed Rust builds (or, what kache actually caches) Intent to Prototype: Embedding API Canada’s Bill C-22 and the security cost of collecting more data
GitHub - ryukinix/cl-bbs: Common Lisp BBS textboard
github.com v · 2026-06-21 · via Lobsters

An anonymous textboard (BBS) engine written in Common Lisp. It is a high-performance, modern clone of the original MIT Scheme SchemeBBS (which ran behind dis.4chan.org and world4ch /prog/).

Features

  • Seamless SchemeBBS Layout: Displays threads, index lists, and posts inside definition lists (<dl>, <dt>, <dd>) exactly conforming to the original SchemeBBS style.
  • Single Trailing Forms: Conforms to the original textboard paradigm where a single posting form is rendered at the very end of the thread (no per-post forms).
  • Comprehensive Formatting Support:
    • Bold: **text** -> <b>text</b>
    • Italic: __text__ -> <i>text</i>
    • Monospace: `text` -> <code>text</code> (Uses the standard backtick notation)
    • Spoilers: ~~text~~ -> <del>text</del>
    • Blockquotes: Lines starting with > are rendered as <blockquote> blocks.
    • Post References: >>7 are dynamically hyperlinked to jump anchors inside the thread page.
    • Direct Image Link Previews: Direct links to images (.png, .jpg, .jpeg, .gif, .webp, .bmp) are automatically converted into elegant clickable image previews.
    • Standard URLs: Standard URLs are automatically formatted as standard hyperlinks.
  • Dynamic Board Headers: Centered and left-aligned board listing headers (e.g. [ foo | prog ]) are scanned and displayed dynamically at the top of every page.
  • Theme Preferences (Cookies): Choose between multiple themes (default, classic, dark, mona, no) on the /board/preferences page. Selections are stored inside browser cookies (theme) and persistent.
  • Zero JavaScript Required: The application is completely server-rendered.
  • Local Qlot Sandbox: Locked sandbox dependencies pinned via qlfile to ensure backwards compatibility across environments.
  • 29-Assertion Test Suite: Comprehensive test coverage verifying cookies, routing pipelines, and formatting rules.

Getting Started

Prerequisites

You must have Roswell and Qlot installed:

# Install Roswell
# (Follow Roswell platform instructions)

# Install Qlot
ros install qlot

Installation

Clone the repository and install dependencies locally:

# Fetch and lock dependencies locally
qlot install

Running the Server

Start the Hunchentoot/Clack server:

The server will boot and listen locally on port 8222.

Running Tests

Execute the automated Parachute test suite:

Configuration

You can configure the server using environment variables:

  • SBBS_DATADIR: The directory where board S-expression database files are stored (default: data/).
  • SBBS_LOCKED_BOARDS: A comma-separated list of boards that should be locked in read-only mode. New threads cannot be created and comments/replies cannot be posted to these boards (e.g., SBBS_LOCKED_BOARDS=foo,bar). The posting forms will also be hidden on the frontend of these boards.
  • SBBS_ADMIN_USER: The username for the admin panel (default: admin).
  • SBBS_ADMIN_PASSWORD: The password for the admin panel (default: superchanner).

Software Stack

  • Lisp: Common Lisp (SBCL) loaded via Roswell.
  • Web Server: Hunchentoot, Clack, Lack.
  • HTML Templating: cl-who (HTML generation).
  • Data Store: S-expression files saved inside plain-text files under data/sexp/.