mud/docs/why/telnet-first.txt
Jared Miller 25bb565091
Move notes to docs/how, docs/why, docs/lessons
how/  - how things work (terrain generation, command system)
why/  - design philosophy (telnet-first, text worlds)
lessons/ - things we learned the hard way (charset vs mtts)

Removes notes/ — DAYDREAMING.txt became DREAMBOOK.md, charset-vs-mtts
expanded into docs/lessons/ with the connect_maxwait fix documented.
2026-02-07 13:31:02 -05:00

32 lines
1.3 KiB
Text

why telnet first
================
from the dreambook: "we honor telnet. the protocol is the interface."
telnet is the native interface. a person with a terminal emulator gets the full
experience. no browser, no client download. `telnet mud.example.com 6789` and
you're in.
telnetlib3 gives us:
- NAWS (terminal dimensions — adapt viewport to window size)
- TTYPE/MTTS (client capability detection)
- GMCP/MSDP (structured data for rich clients like Mudlet)
- SGA (suppress go-ahead for modern line handling)
- async server with reader/writer streams
the MUD ecosystem has decades of protocol extensions built on telnet. we get
all of them for free by staying in the protocol.
a web client, when it comes, should just be a terminal emulator (xterm.js)
pointing at the telnet port. same protocol, different transport.
design consequences
-------------------
- all output is text + ANSI escape codes. no binary formats.
- line endings are \r\n (telnet NVT standard)
- input is line-based (readline). no raw keystroke handling (yet)
- server-side echo is complicated — MUD clients handle their own echo
(see docs/lessons/charset-vs-mtts.txt for the will_echo story)
- NAWS tells us the terminal size. viewport adapts. small terminal = smaller
map view. this is a feature, not a limitation.