Live data from Hacker News

Making Emacs Popular Again (2020)

lwn.net

341–350 of 420 posts

Re: Making Emacs Popular Again (2020)

#341
post #339

Earlier quoted context omitted.

Well, JSON is "just" a serialization format. I'd expect that to be much easier to teach someone than a programming language. That's a rather bizarre comparison. If all you're doing is serializing the configuration, then lisp's s-expressions are just as intuitive as JSON (in the sense that both can be explained in a few minutes).

Yes, it is a bizarre comparison because of that fact. A programming language will never be more intuitive than "just a serialization format". Also, the argument that lisp's s-expressions are just as intuitive as JSON is verifiably false because you can use a simple natural experiment: what is used more for serialization, JSON or s-expressions? It's extremely ironic to try and argue these points on a post that's entir…

Be careful not to mistake ubiquity with intuitive. It’s arguable that BASIC is more intuitive than Javascript, but Javascript is more ubiquitous. That only tells us that it’s more popular, but not why.

Re: Making Emacs Popular Again (2020)

#342
post #339

Earlier quoted context omitted.

Yes, it is a bizarre comparison because of that fact. A programming language will never be more intuitive than "just a serialization format". Also, the argument that lisp's s-expressions are just as intuitive as JSON is verifiably false because you can use a simple natural experiment: what is used more for serialization, JSON or s-expressions? It's extremely ironic to try and argue these points on a post that's entir…

Be careful not to mistake ubiquity with intuitive. It’s arguable that BASIC is more intuitive than Javascript, but Javascript is more ubiquitous. That only tells us that it’s more popular, but not why.

Would you say that BASIC is more intuitive for web development than JavaScript?

The syntax of something is only one part of its intuitiveness. A large part is the context of which it is used.

Re: Making Emacs Popular Again (2020)

#343

I see many people on here (likely non-emacs users) claiming that Emacs is obsolete/outdated/dying by completely misunderstanding its position in the ecosystem. Maybe it's easier to understand via analogy. Let's consider cars. Of the global population of car users, relatively few of them are F1 racecar drivers. Furthermore, you can easily make the case that the particular features (aerodynamics, speed etc.) that make…

There is no world, in which "flexible" and "F1 Car" belong in the same sentence. By design, a track car gets rid of anything "flexible" for highly optimized choices.

If we want to assign a car to emacs, it's more like a Toyota Tacoma, with no body. Rugged, flexible, some basic building blocks that function out of the box.

Re: Making Emacs Popular Again (2020)

#344
post #318

Earlier quoted context omitted.

I know right, are there actually 20 people who want to use Emacs!?

Yeah, that sounds about right. And not to mention that with the 5K+ packages currently on MELPA we each had to write 250 of them. It's rough.

At least you had Emacs!

Re: Making Emacs Popular Again (2020)

#345
post #316

Earlier quoted context omitted.

Countless hours. How long do you think a carpenter spent learning and developing t his tool kit?

I don't know about you, but my toolkit, which I'm perfecting, is programming language paradigms, design patterns, algorithms, programming language SDKs, popular libraries and frameworks, etc. And there isn't enough time in the world to become as proficient as I'd like for those, let alone if I'd waste time to optimize tools to get 99.999% efficiency with them. At some point your hammer is good enough and your saw is…

> I don't know about you, but my toolkit, which I'm perfecting, is programming language paradigms, design patterns, algorithms, programming language SDKs, popular libraries and frameworks, etc.

Well that's great but none of that gets anything done. You need to be able to write programs effectively.

> At some point your hammer is good enough and your saw is sharp enough.

Yeah. I don't regularly invest many hours into emacs. You asked how many hours went into it. Over the past 15 years it's countless hours. Over the past year, not many at all.

Re: Making Emacs Popular Again (2020)

#346
post #256

Earlier quoted context omitted.

I'm going to go out on a limb and suggest that Lisp is, in fact, an albatross hanging around Emacs neck. Using Lisp (and especially elisp) is not okay. Lisp has some very sharp corners that simply are not acceptable in modern languages. I use Lisp when I'm very resource constrained but still need an interpreted language--otherwise I use anything else. Dynamic scoping is just stupid (fault of elisp). Not being to oper…

> Not being to operate on a sequence is stupid. cons pairs to build everything is stupid. There are other sequence types than lists in elisp and pretty much every other lisp out there. And what do you mean with "Not being [able?] to operate on a sequence"? [0] contains a bunch of functions for operating on sequences, and it's notable they don't say list but sequence in their signature. They work on multiple types of…

Lisp "lists" (cons pairs with terminating nil) act kinda sorta like sequences (although the elisp names don't agree with Common Lisp names)--until you need length() and your algorithm blows up to O(n^2) or you replace a value and your list walker blows itself into a mess. This is part of why Clojure shot the idea of building lists up from cons pairs and gave explicit syntax for certain sequence types and made them fundamental.

Which would be fine if all the pedagogy didn't teach stupid cons-pair lists and recursion as THE fundamental pieces of Lisp when they should instead have a gigantic red klaxon saying "Don't use these outside of toy programs as they're a maintenance and abstraction nightmare."

Other grief: #() syntax makes read-only vectors. The syntax for what is basically [] is every other language: (make-array 5 :fill-pointer 0 :adjustable t) I can go on and on and on about the usability disaster that are sequences and collections in Common Lisp. And then let's add the joy of a Lisp-2 on top of everything else.

The problem is that the Real Lisp Programmers know to ditch those and go grab better abstractions when doing Real Programming. However, the extra abstractions are just annoying enough that stuffing things into an unlabeled list is too convenient. So, you see a small number of good abstractions and a bunch of little unlabeled "containers" passing data around with cadr and caddr. There is a reason why a "labeled struct" is a fundamental part of most languages and gets its own syntax.

And even "Practical Common Lisp," which like I like very much, introduces macros before collections. And look at how much time it spends on vectors and hashes (which are FAR more important to building most programs) vs cons-type lists (this ratio holds even as far back as Touretzky in 1986--it's gotten a little better over the years). And then people wonder why nobody uses Lisp for real programming?

So, sure, you can use the Common Lisp standard--and get saddled with a bunch of good design decisions from 40 years ago that now look absurdly stupid.

Or, you can use Scheme which has nothing built in and construct it all yourself. Oh joy.

Alternatively, you can just use a modern language that made design decisions in merely the last decade.

Re: Making Emacs Popular Again (2020)

#347
I think the only way to make Emacs popular is to get more users. And in any of the over six thousand human languages in use today: "Emacs user" typically means "a programmer". Emacs desperately needs more programmers.

Unfortunately, many of the core Emacs developers are also FSF advocates. Some of them have very radical and uncompromising views. It sometimes feels like they have little understanding of the real world and the software industry in general, and they live in the 16th century equivalent of the computing world.

I mean, many of us (software developers) are very sympathetic to the cause and the idea of liberating all software, but sometimes it just gets too crazy. As if someone tried saving the world by harassing palm oil plantation workers in Indonesia: "Why don't you try planting cedar trees instead?". Vilifying and fighting the evil in the industry is right; punishing everyone indiscriminately - is not.

One of the latest examples: a question about LSP server implementation for Emacs Lisp - the verdict of the people in charge? Nope, we shouldn't do it because: "it would allow editing Emacs Lisp in non-free programs like VSCode". Seriously? IMO, it's not just a simple non-sense, it actually sounds like borderline narcissistic schitzo thinking.

Emacs codebase needs to adopt the ubiquitous and familiar model of issues and pull requests instead of clinging to the outdated way of email threads and patches. That's what made Neovim popular. That's how VSCode achieved in just five years, what was like twenty for Emacs. That's why the most innovation in Emacs happens today outside of its core. Today GitHub, GitLab, and other Git forges have so much Emacs Lisp - it's probably the most widely used Lisp in the industry (maybe even comparable to Clojure and Common Lisp). And guess what? Authors and maintainers of those awesome libs and packages not sending patches over email.

I don't think Emacs is going to fade away anytime soon. But the strategic mistakes made by the core decision-makers have done irredeemable damage, and Emacs now doomed to play catch-up.

Re: Making Emacs Popular Again (2020)

#348
I read through the comments here a couple hours ago and heard all the same arguments that come up whenever folks talk about emacs vs. other editors|IDEs|platforms|OS's. As such, I didn't feel the need to add my own comment to the fray.

But as I was scrolling through the front page, the title of the article struck a chord.

I'd say that emacs was never popular. It is (and always was) a fairly niche product used by those who found something about it compelling.

Even "back in the day" emacs usage was dwarfed by vi (vim didn't exist), notepad, Wordstar, WordPerfect and even ED/EDT[1].

Full disclosure: I am a long-time emacs user (25+ years, preceded by using the Epsilon Programmer's Editor[0] -- a commercial emacs work-alike -- for 5+ years).

[0] https://en.wikipedia.org/wiki/Epsilon_(text_editor)

[1] https://en.wikipedia.org/wiki/EDT_(Digital)

Re: Making Emacs Popular Again (2020)

#349

2021 and Emacs still my preferred editor (and I'm young enough, in my 30's). Yes it requires a bit more setup (not much more however, VSC also misses functionality out of the box). However that setup is saved forever, across machines in the form of your .emacs file, so whatever changes you make to make it personal stay with you. And it's really not much more difficult to setup, Emacs lisp is more intuitive than JSON…

> However that setup is saved forever, across machines in the form of your .emacs file

Until you use a plugin which is dead after the next update. Which happens a lot...

> Emacs lisp is more intuitive than JSON files

Not really. In the first place JSON is just data-format which usually is used through a proper GUI. There is not much you can do break there.

> But there's literally nothing I don't have with Emacs that other editors provide.

Which only means your horizon is too small to know the missing parts. Or your work is not specific enough to demand something not available in emacs.

If you are satisfied with emacs, ok. Good for you. But how will it benefit the popularity of emacs?

Re: Making Emacs Popular Again (2020)

#350
I've used full Emacs and Emacs style editors (mg, jove, epsilon) for over 40 years and programmed in LISP for longer than that. In the 1990's it was evident that Emacs was in decline.

For a couple of years, I used Vi because IBM's lawyers were afraid of the GPL; during that time I found Vi to be a superior text editor than Emacs. Sometime in the late 80's, Emacs and the GPL were accepted by IBM's planners, and I switched back to Emacs. Quite a few of the AIX kernel developers did end up using Emacs, even though Vi had its advantages as a text editor. It was the customizability of Emacs and the ecosystem of high quality packages that drew me back to Emacs. (For example, a developer on my team wrote the tower of Hanoi command. Try it out: M-x hanoi). Emacs became a general purpose tool for interfacing with your system. With Emacs, I didn't need a graphical terminal to work with multiple windows, I didn't need Norton Commander to have a powerful, portable interface to directory management. It has incredible outliner, mode for LaTeX, interface to git, etc., etc.

My point is that it wasn't the text editing (Vi handled that better), it was everything else, and that everything else was enabled by Stallman's brilliant insight that the editor should be built around a powerful interpreted language, LISP.

LISP was key to the success of Emacs. In the 1980's, people were excited about LISP; by the 1990's the excitement was wearing off. The LISP Machine companies weren't commercial successes. While some LISP compiler/interpreters performed well, Emacs Lisp was simply adequate. In CS programs, Scheme was being taught instead of the more fully featured LISP--Scheme has a simpler tighter core of fundamental features and consequently was a better choice for the ubiquitous undergrad Programming Language smorgasbord courses.

I needed an embedded interpreter to be a key part of a distributed network of servers I was designing. LISP was my choice, but my companies own, very experienced, developers rebelled. Smalltalk, Prolog, and even building our own C-based language interpreter were all viewed as more acceptable than LISP.

The way to make Emacs more popular isn't to persuade people that they want a customizable editor that requires a great deal of LISP expertise. That just won't happen. Pick a language from the one of the top 15 languages and allow Emacs customizations to be developed in one of these languages. Here's one measure of the 15 most popular languages[1]: Python, Java, Javascript, C#, C/C++, PHP, R, Objective-C, Swift, Typescript, Kotlin, Matlab, Go, VBA, Rust.

Out of the 15 languages listed above, many can be disqualified for obvious reasons: R and Matlab are not general purpose enough, Rust is far from interpreted and has a slow compiler, and so on. In my opinion, Emacs would be more popular if its core supported Python or Javascript or even Go (say running in a separately compiled process that interacted with the Emacs server via IPC). I'm not a Javascript person, but Javascript is likely the best solution; I would gladly take the time to learn how to use it for Emacs configuration and customization. If Emacs was customizable in Javascript, there would be an army of developers working with it.

[1] https://pypl.github.io/PYPL.html

Post reply on HN