Architecture

Kolofon · 7 August 2026

09 · Comments and anti-spam

the gate moved, not removed

09 · Comments and anti-spam

Text: Kolofon

Comments arrived early and from the start without sign-in — the reader supplies a name and a body. The anti-spam layer grew in stages, because designing it up front would have been guesswork.

First a trap for bots: a hidden form field a human never sees and an automated client fills in. Alongside it, length limits and a server-side rate limit — one comment per entry within a short window. Only when that stopped being enough did external bot verification arrive.

Moderation has been in the schema since day one, although it went unused for a long time. A comment carries an approval flag defaulting to yes. Switching the site to pre-moderation is a change to one default value, with no table rebuild and no data migration. This is a pattern that recurs repeatedly in this engine: prepare a place for a decision you are not yet making.

The email field went through a full cycle. First it was absent — less friction, less personal data. Then it became mandatory. In the end it is optional, serves to notify about a reply, and is never displayed publicly. A mandatory address deterred more readers than it stopped spam.

Recently reader accounts arrived, and with them a comment policy switch: everyone, accounts only, or nobody. What matters is what the switch means in practice — choosing “accounts only” does not remove the anti-spam gate, it moves it from the comment to the act of creating an account.