3 ms·
I think he's right for the wrong reasons. Emacs Lisp (and its data model) is quite different from what programmers are traditionally used to. We typically wri
by jrockway 4y ago
I think he's right for the wrong reasons.
Emacs Lisp (and its data model) is quite different from what programmers are traditionally used to. We typically write software that runs completely unattended for years at a time. We communicate with unknown servers and APIs that change randomly for no reason. Everything that can go wrong, will go wrong, multiple times an hour. Thus, a programming language designed for that environment has to have error handling front and center, it's really all you're doing! Taking that to the extreme, code that refuses to compile because you didn't handle every possible eventuality is actually wonderful for making software that stands a chance of not being the ops team's (you these days) worst nightmare.
Emacs is not like that, however. The user of the code is likely a programmer, and the main data structure is the buffer of text that they're looking at. It's the one time in the world that you can just throw an exception and let the user handle it. They can just adjust the "memory" by typing stuff and trying the command again. Having written a lot of Emacs Lisp (and a fair amount of Javascript), I don't even know how you could make a nice API in Javascript that let you quickly put together quick editor tools, the fundamental design of the language just makes it more difficult than necessary. (You'll see this in the long tail of Emacs packages that the newer editors simply don't have. It's so easy to get started, and to finish!)
I'm honestly surprised that anyone has managed to write a text editor in a programming language other than Emacs Lisp. It's just such an impedance mismatch, it must be pain upon pain constantly.
RMS is right in the sense that users can't really inspect the code they get from websites. That is more of a webpack and browser issue than anything else. Emacs has great tools for inspecting the code you're going to run or are running (it's a keystroke away at all times), but I think you could build that for any language. And to be fair, I'm sure many Emacs users package-install stuff that they never look at, or even care that Emacs is free.
- lxe 4y agoYeah but what does browsers running JavaScript have to do with Emacs? Imagine if browsers ran lisp instead?
- jrockway 4y agoTrue, the rant kind of goes in the direction "I hate the web, and the web uses Javascript", which is kind of an irrelevant factoid. It's a very short rant, though, so maybe we shouldn't be reading into it this deeply.
- pama 4y agoIf browsers ran lisp and the ecosystem was as advanced as that of elisp, then one could macro away some of the challenges of the modern web. If one liked to do so, they could opt to allow the execution of only GNU-compatible lisp code, and if people didn’t like losing one of their freedoms by a particular code segment, somebody else could modify the offending code and propagate it to a different part of the free web. Emacs is almost there. If there was a critical mass one could experiment a bit, but the vulnerabilities during the experimentation phase would likely kill such a project.
- coliveira 4y agoEmacs had (or still has) a web browser. The problem is that companies (starting with Netscape) took control of browser development, adding tons of both useful and useless features, with the goal of controlling the development of the web. Emacs and other projects cannot compete with that.
- pama 4y agoI agree. I see a minor glimpse of hope with people using mastodon for communication, and basic clients running within Emacs; perhaps eventually one could also have a personal server running (or at least controlled) within Emacs. Once the extensions are in Lisp, new types of opportunities open up. Maybe one day blog posts could be using org mode natively and allow for local/interactive elisp or other babel-language execution. Maybe an extension of crdt within Emacs is all that’s needed for interactive shared documents by multiple users. The web could be interesting in new ways, just like the multiplayer online games of the eighties.
- nequo 4y agoI think his point is that browsers don’t run Lisp. The culture of (Emacs) Lisp keeps inspectability front and center. You can look up the source code for every function with C-h f and every keybinding with C-h k. But if Emacs supported JavaScript, the culture of JS, including code obfuscation, would probably come with it too. Or that’s the way that I interpret it.