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.