Why Emacs will NEVER be popular!

Hello crafters, just sharing my blog post Why Emacs will NEVER be popular. Input appreciated!

Well, I was expecting more than a few paragraphs. It doesn’t seem to answer the question in the title.

What even is popularity? More than 50% market share? That’s not going to happen, but it doesn’t need to. That would be like expecting 50% of the world to become rocket scientists, or classical pianists, or microbiologists, or bird watchers, or builders of ships in bottles, or any other discipline that appeals to people with certain interests. Most people aren’t interested in programming computers and customizing their computing environments to such an extent (that early Emacs users were legendarily non-programmers, notwithstanding). And that’s okay.

I think it’s really about certain kinds of personalities. As you know, Emacs appeals to people with a wide variety of occupations–not just software developers–but even among software developers, its appeal is not that wide. I think its appeal is mainly to people with a certain mix of creativity and, shall we say, control-freak (myself not excluded). Most people just aren’t like that (thankfully, or how would we all get along).

4 Likes

Vanilla Emacs isn’t newbie-friendly like modern apps, and popularizing it means debunking myths and promoting its unique power. It needs demystification and recognition of its philosophy. Just like newbie Linux distros, Emacs distributions can play a key role to show off its strengths.

Popularity doesn’t mean high market share, but recognition of what it is & the philosophy behind it. Nobody really understands or knows what Emacs is outside of the Emacs community.

1 Like

I have told the story of why I decided to switch to Emacs so many times I wrote it into a blog post. Popularity had nothing to do with it. The most relevant passage is this:

I had tried learning Emacs on multiple occasions as a graduate student, and was always frustrated with the user experience. It wasn’t intuitive how to navigate the user manual, and there were seemingly better options available: vim and tmux are a powerful combination, and have very good manual pages.

I eventually made a decision to learn Emacs because I knew that it follows the principles of functional programming better than ordinary shell scripting. In functional programming you have two key ingredients: functions, and a means to compose functions together to build larger functions that solve a particular problem. Without using Emacs, your functions are the Linux CLI tools, and you can compose these tools with shell pipes to solve problems. But Emacs provides better ways of composing CLI tools because it is programmed in Lisp, which is a functional programming language. Emacs also provides a better framework for constructing views over your data than something like Ncurses and the ANSI terminal protocol. Once I had made this realization, it was obvious to me why Emacs was the best toolkit to use in my day-to-day work, and I consciously put in the effort to overcome frustration and finally learn Emacs as a skill.

Emacs exists for anyone who comes to this realization that I did. Why create directories full of Bash or Zsh shell scripts? Why use things like Fish shell, Fuzzy Find, or file managers like Ranger, or web browsers like Lynx, or terminal multiplexers like Screen or Tmux, or any command line tools that draw pretty text widgets to the screen? Why do all of these tools need to be compiled into their own executables and each scriptable in its own programming language? It is crazy to have to learn Lua, Python, VimScript, or whatever else, and also configuration with TOML or JSON or what-have-you, for each individual tool, and then try to compose these tools together with Bash!

It just makes sense if each of these individuals tools can all be written in, and composed together, all using the same programming language like Lisp, and all of these tools used from within in a fully integrated interactive programming environment. This is such a simple, powerful, elegant concept, and this is why Emacs continues to find users after over 45 years since it was first released.

4 Likes

Ramin Honary via System Crafters notifications@systemcrafters.discoursemail.com writes:

  • ramin_hal9001
    March 11

[…]

Emacs exists for anyone who comes to this realization that I did. Why create directories full of Bash or Zsh shell scripts? Why use things like
Fish shell, Fuzzy Find, or file managers like Ranger, or web browsers like Lynx, or terminal multiplexers like Screen or Tmux, or any
command line tools that draw pretty text widgets to the screen? Why do all of these tools need to be compiled into their own executables and
each scriptable in its own programming language? It is crazy to have to learn Lua, Python, VimScript, or whatever else, and also configuration
with TOML or JSON or what-have-you, for each individual tool, and then try to compose these tools together with Bash!

Thanks for sharing your post! I completely agree with your points.

What I wanted to emphasize is that to increase the “popularity” of
Emacs, what’s needed is an ecosystem of Emacs distributions that can be
a starting point, not to change what Emacs is. You won’t find many
introductory books to lisp programming that recommend using Emacs
because it’s intimidating to start with, but an Emacs distribution could
solve this.

Opinions about Emacs distributions can vary within the community, I
believe they can be quite beneficial in making Emacs more accessible and
user-friendly.

2 Likes

That’s a good question, and difficult to answer. It reminded me of my “personalized” survey results from JetBrains’ “state of developer ecosystem '23”, where Emacs is ranked twice as popular an IDE as Qt Creator, on par with both Atom and NetBeans:

Screenshot 2024-03-11 at 19.25.41

(Let’s not get caught up in how vim got 18% and VS Code 63%…)

On the other hand, I dare say most users of other editors are happy to jump onto the next big thing (at least 63%… :smiley: ), while I believe the Emacs users are mostly quite happy about using Emacs and don’t see a need for anything else. That’s quite a different kind of popularity, and to me more meaningful.

1 Like

In discussions about the popularity of Emacs there are two things I question:

  1. Why does popularity matter?
  2. If Emacs were to become popular, would the outcome be desirable?

Emacs has a vibrant and active community that engages its entire member base. Furthermore, new mediums for outreach (such as Systemcrafters) are attracting newer, younger members, so it’s a base that is replenishing. What is the appeal to moving beyond that?

Ease-of-use oriented distros could be double-edged. If we have a distro that’s intuitive and easy to use for the causal notepad/word processor user, that’s almost certain to widen the appeal of Emacs, and consequently increase its user-base. On the other hand, these people are going to be coming to Emacs for very different reasons than current Emacs users. Even if at first the new crowd is limited to a distro, if they influence the popularity of Emacs to the degree that it’s noticeable I don’t see how it won’t eventually influence the main editor itself. Outreach, concerted inclusion, and continued appeal to these folks will likely change the future trajectory that the editor takes. I’m not sure that’s a good thing. The things I like about Emacs are all distinctive from the alternatives out there, but I’m not sure those things would matter as much to the new crowd. After all, that’s not why they’re here.

I do think distros have their place. Doom and Spacemacs (and Rational? Haven’t tried it in a while) strike a happy medium – they make it appealing to folks who want to give it a go, but they don’t change it to such a degree that those folks who try it and stick around have an alien perspective on what Emacs should be.

1 Like

These are all very interesting takes on why people here use Emacs, thank you. I have used Emacs for a while and really like the fact that it is a Lisp machine in which you can do so much in an integrated way. One thing I have recently been struggling with however, is reconciling this against Neovim. For all the benefits of Emacs, it does seem to lag behind regarding performance and - to put it bluntly - modernity. Lisp (Emacs) vs Lua (Neovim) for example - it seems to me that while Lisp is an elegant language, Lua helps Neovim be cutting edge and really performant. What are people’s thoughts on this - i.e. why use Emacs when it is slower and less modern than it’s competitors? Please note - this is not a troll! I’m looking for reasons not to fall down the rabbit hole of learning Neovim, taking a hit on productivity - only to find it’s not the panacea it may claim to be when compared to Emacs!

Because, you didn’t conceptualize it as an completely different animal?
IHMO, most Neovim, I’ve seen, is Vim in a windowed shell + Lua while Emacs is a full GUI shell as evidenced by font size, pictures and other viewers.
This and it’s excellent remote capabilities make it a moot point, that I don’t have it installed on every server by default.
I know of no other IDE, that allows me to SSH into a system, switch user with sudo, edit a file, check in the changes with magit and restart the service, I just reconfigured - all trough the same remote pipeline.
Think of the old joke about Emacs being a OS lacking a good editor - well the first part is wrong as it isn’t a OS but a GUI and TUI shell and since evil mode the editor part should be solved for most :wink:

James Wydenbach via System Crafters notifications@systemcrafters.discoursemail.com writes:

These are all very interesting takes on why people here use Emacs, thank you. I have used Emacs for a while and really like the fact that it is
a Lisp machine in which you can do so much in an integrated way. One thing I have recently been struggling with however, is reconciling this
against Neovim.
[…]

I don’t think it’s possible to compare neovim/vim with emacs, I feel
most people do that as a joke, or just don’t know what Emacs is. I
can’t replace emacs with neovim cause neovim is just a developer tool to
edit code fast, I still use vim when I ssh into a machine regularly, via
emacs-vterm. Emacs is a productivity environment.

Emacs can be whatever you want it to be. Neovim needs a terminal
emulator, emacs is a terminal emulator, this way I don’t have to worry
if the terminal emulator supports my keybindings etc. and everything is
done via emacs lisp, which I find much more elegant & easier to use and
extend programs with than any other programming language I’ve tried.

My workflow with emacs is mostly having a book with pdf-tools/nov.el in
one frame & my org notes on another one, which I will use to create
spaced repetition notes for gnosis
https://thanosapollo.org/projects/gnosis/ and permanent notes on my
org-roam zettelkasten https://www.orgroam.com/.

Not to mention emails, I rely on mu4e heavily. I’m even using mu4e to
write this!

On my free time I sometimes code in common & emacs lisp, which is
probably less than 10% of what I do with emacs. I’m not a developer.

How could I replicate this workflow with neovim? Why would I spend time
learning lua just to extend one program when I can use lisp for
everything I need? Can I even have emacs keybindings when I use neovim?
I know that most terminal emulators don’t support keybindings like =C-.=
etc.

Comparing emacs with neovim is like comparing emacs with gimp, they have
nothing in common, they just overlap in some aspects.

P.S I prefer using emacs for editing memes via meme.el
https://github.com/larsmagne/meme

1 Like

I don’t think this is true. Lua is just another programming language, and it is not a Lisp, so it lacks features that Emacs Lisp has, particularly macros.

Is Lua more performant than Emacs Lisp? No, not anymore.

It used to be that Lua’s Just-in-Time (JIT) compiler gave it an advantage. But Lua/JIT is only available for Lua 5.1 on most platforms, inlcuding Neovim, and Lua 5.1 was released back in 2006. The latest version of Lua is 5.4, which was released in 2020, and this does not have JIT support, and NeoVim does not use it.

On the other hand, since Emacs version 29.1 (released in 2023) there is now GCC-JIT support built-in, which does Ahead-of-Time (AOT) compilation, making it as fast or faster than Lua/JIT.

I think the only thing that prevents Emacs from modernizing is that they do not develop their GUI APIs further. It would be nice if Emacs provided APIs that allowed direct access to the shared memory for image buffers, and exposed the Lisp FFI wrappers into Cairo, Pango, and Harfbuzz. It would be even better if there were FFI wrappers into OpenGL which could be dynamically loaded when needed.

Thank you all for your replies - these have helped me broaden my understanding of Emacs accordingly. It’s very heartening to be able to better appreciate Emacs’ unique functionality and to realize how relevant this remains today. Appreciate it.

Popularity is an interesting topic.

Maybe we can measure it to some extent. Here are some ideas:

  1. popularity = integral number of users with time
  2. popularity = search ranking from various search engine
  3. popularity = number of search result for Emacs

For number 1, there is Emacs survey as a source.
For number 2 and 3, it should be straight forward.

Any other ideas?

I am not a fan of measuring popularity by search ranking or search results. Lately many search engines, especially Google and Bing have become quite unreliable at finding information. Also, the best way to search for information on Emacs is to search the Info-doc pages, and this would not register in any search engine. I am often performing searches for Emacs related information in Info-doc.

Probably the best way is to have a third party research institute run surveys across a diverse range of developer communities, e.g. online forums or attendees at conferences. If you check their sources, you can see whether or not they are reliably surveying a diverse population of developers. Sometimes they ask questions like “what editor do you use to write code.” These are probably the best way to decide popularity.

For example, the StackOverflow 2023 developer survey puts Emacs at around 4.7% , Vim at 22.3%, and VSCode at 73.7% (adds up to more than 100% because people can choose more than one editor). Now, this source is not exactly a diverse set of developers, rather a group of people who are most likely to ask questions on Stack Overflow, and it is not at all surprising that Emacs users don’t register very highly there, Emacs users probably ask their questions elsewhere. But if you combined the sources from this survey with sources from other surveys, like language-specific surveys (Python developers, JavaScript developers, C developers, Lisp developers), and took the weighted average based on the number of participants in each survey, you might start to see a more accurate number.

The 2022 Emacs Survey had a question about where people ask for help for Emacs, the top results were GitHub, Reddit, StackExchange, IRC, Framework, Mailing Lists. StackExchange was in 3rd place. So these communities would be the best place to collect sources for respondents to a survey in which Emacs users have a fair representative sample of respondents, with GitHub having the largest number, or the most weight given to the results.

I’ve mandated Emacs + Org-mode in all my computer and data science courses since 2022 (including introductory courses to complete newbies) with good results that are getting better year after year. I’ve talked about this at EmacsConf '23 and I’ve published my experiences. The conclusions of the paper are more negative than I feel today. Next week, I’m going to show Emacs to a group of local high school students (the workshop is titled “45 programming languages in 45 minutes” - only Emacs can do this) and I don’t think I’m going to get rejected. Emacs makes sense and it’s good craft. And to add to this: when getting overwhelmed by AI assistance, literate programming is the Saviour, and Emacs is its chariot.

4 Likes

Welcome to the forum!
That’s an interesting paper (from the abstract, added to my reading list), thanks for sharing!

1 Like

You are very welcome! Thank you for considering to read it! It’s a fairly silly paper as far as scientific publications go, but I’m in the habit of writing things up even if that’s silly.

I’ve only now got the time to engage with this community a little more but I’m already very enthusiastic about yr’alls work! Still using Linux Mint for work, but I would love to give Guix a spin soon.

Alas, summer’s short and I am supposed to write a book about literate programming besides having to prepare next term, so …

1 Like

Hey @birkenkrahe, nice to see you here! I love that you’re trying to further develop the idea and practice of literate programming in Emacs. I think encouraging more students to use it will create more smart and capable programmers who won’t resort to proprietary developer tools and AI as a crutch!

4 Likes