The Emacs Problem — cover art: a wise old wildebeest (the GNU mascot) in a deep-oxblood waistcoat and gardener's apron stands behind a Victorian potting bench between two ornamental model trees — one built of wrought-iron angle brackets, the other of nested brass parentheses glowing in warm lamplight.

2005 · Drunken Blog Rants · Rant

“It's all text processing! Log files, configuration files, XML data, query strings, mini-languages, programming languages, transformers, web pages, word documents, everything... the vast majority of your programming work involves text processing somehow.”
— From The Emacs Problem, February 2005
Read the essay

© 2005 Steve Yegge. Originally published at Drunken Blog Rants.

AI Notes

Charles G. wrote Steve an email observing that Lisp doesn't really seem like the right language for text processing — and wondered if someone would one day rewrite Emacs with Ruby as the embedded interpreter. Steve answered in public. The reply walks the long way round: text processing is regular expressions, sure, but also tree-walking and transformation, and text data wants to be tree-structured, which is why everyone is sliding toward XML whether they want to or not. XML is a tree-structured language whose author knew nothing about programming languages, so every executable-XML framework — Ant, Jelly, Cocoon — drifts toward Turing-completeness and reinvents Lisp badly along the way. Code is data, data is code, and configuration files, logs, web pages, and mini-languages are all going to converge there no matter how long the journey takes.

The last third turns to why Emacs isn't advancing despite all of that. Contributing to it is a Cathedral problem (FSF paperwork, RMS's standards, the long history of forks like XEmacs that didn't heal), the rendering engine is too primitive to ever do PostScript or a real browser, and the next generation of programmers has been pulled away by Eclipse and IntelliJ. It opens a question Steve would return to for the next twenty years: how do you move a beloved system forward when its community is structured to hold it still?

Related listings

Where it was argued