Making Emacs Popular Again
Folks, I want to disabuse you of the notion that in order for Emacs to be any good in 2020, it needs to be &quot;modern&quot;. It needs a modern UI. Emacs Lisp should be replaced with a modern language like JavaScript. Its display backend should be replaced with something modern like embedding a browser engine and rendering to HTML5. (I have literally seen this suggested on &#x2F;r&#x2F;emacs). At any rate it should be accessible via a browser in the cloud, because in the future everybody will develop in the cloud. If somehow the maintainers do all of these, then it would only serve to effectively transform Emacs into Visual Studio Code, and it would make a shitty clone of Visual Studio Code at that. So ｍｏｄｅｒｎ. There are parallels with the efforts, started in the late 90s, to make Linux into an inferior clone of Microsoft Windows to increase its popularity.<p>The problem is, much of what today&#x27;s twentysomething webdevs consider modern is mere fad. It is not objectively better (and is sometimes objectively worse) in terms of user affordance than what we had in the 90s. The current trends in UI design obscure distinctions which were bloody obvious in the days of bevelled gray buttons. Browser engines run like pigs, especially when compared with simple bit-mapped windows, and developing in the cloud hits a brick wall when your network connection goes down.<p>I want you to try something. Try to imagine Emacs not as an ancient editor in need of modernization, but as a programmers&#x27; tool <i>from the future</i>. It may be a grim future indeed, one in which programmers learned some harsh lessons -- that not all programming is webdev, and the dominance of webdev in the field today is likely to be short-lived; that CPU and RAM are cheap, but not free; that networks go down; that software the user can&#x27;t examine and completely control is software that is potentially hostile to the user; that the job of a program&#x27;s UI is to enable work and not to dazzle the user; and that programmers have a higher duty to expand their users&#x27; minds, making them capable of more than when they started, and not to simperingly cater to 1984&#x27;s notions of what an absolute beginner should experience. (The implications of the fact that Stallman learned many of these in the 70s and 80s is left as an exercise.)<p>But a program from far enough in the future is just as incomprehensible to today&#x27;s users (especially today&#x27;s generation-Z webdevs) as a program from the distant past, the difference being that the future program is likely to be much, much more advanced -- and today&#x27;s users can learn a lot by understanding it on its own terms as they try to unlock its secret power. So it is with Emacs -- an omni-tool designed to be shaped and sculpted by the user into just the thing for the task at hand <i>as the user works with it</i>. No kidding --hacking something together in Emacs Lisp is so easy, for many data munging tasks it compares favorably to <i>regular</i> Lisp. Such hacks may not be beautiful or elegant or even production-ready, but if they let you get a job done quickly, they&#x27;re valid. When you combine Lisp&#x27;s eldritch power with the ubiquitous buffer abstraction and all that enables, you have a juggernaut for information workflow optimization -- and by comparison, Visual Studio Code is explicitly designed <i>not</i> to be extensible in such an ad hoc fashion.<p>Try this in your editor: Emacs has a command M-. If you are working on some Emacs Lisp and you type M-. on a symbol with a function binding, Emacs will jump to the function definition, opening the file it&#x27;s compiled in if necessary. If you keep drilling down like this, eventually you will hit bedrock: the primitive functions of Emacs implemented in C. If you compiled your Emacs from source, and you say M-. on one of these, Emacs will <i>remember where its own source lives</i> and take you straight to the C file and line where the primitive is defined. This, my friends, is the quintessence of open source.<p>Plus, Emacs can talk to text terminals and bitmapped displays, and  almost everything works the same either way. When I finally get my VT330 working, I&#x27;m going to hook it up to my sweet-ass Ryzen box, fire up Emacs, and take advantage of all its modern -- nay, <i>futuristic</i> -- power from my 1980s terminal. Why? <i>Because I can.</i> More practically, this means Emacs can communicate with its user over very low bandwidth channels -- making it ideal for working with remotely, cloud or otherwise.<p>And all this in an editor, several instances of which can be supported by a cheapass SBC like the Raspberry Pi. It&#x27;s a bloody miracle of design, even as its hackishness is made manifest.<p>Emacs doesn&#x27;t <i>need</i> to be changed to suit the whim and caprice of today&#x27;s developers. Emacs is eternal, an emanation of the Tao; if it were to somehow disappear, somehow some way we would re-make it from scratch. It&#x27;s not without faults, it can be improved, but the ideas behind it are transcendent and unmoving, and should not be compromised in favor of webdev fads. Let it shine forth like a beacon unto the void, and let its luminousness enlighten all those who are drawn to it.