
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.
Kolofon