Hi everyone! I'm very excited
to be here at EmacsConf 2021 today
to give my talk called
"M-x Forever: How Emacs Will Outlast
Text Editor Trends."
So let's start with the conclusion first.
I know, it's a little bit unorthodox,
but let's just try and see what happens.
So no matter what happens
in the wider software world,
GNU Emacs will continue to be
a beloved program
with a dedicated community
and a healthy team
of maintainers and contributors.
You're probably wondering
who am I to be making such a claim,
so I'll tell you.
I am David Wilson, the creator of the
System Crafters YouTube channel
and community. If you want to see
a lot of really great videos
about GNU Emacs, GNU Guix, etc.,
come check out my YouTube channel.
I'm also on LBRY and Odysee
if you don't want to go use YouTubea
And also, if you're the type of person
who doesn't want to use
any of these websites
and you want to see my videos anyway,
please just send me an email
at the email address below
and I'll see if I can set you up
with that. You can also check out
my website and the places where we chat,
especially on libera.chat
at the #systemcrafters channel.
If you have any thoughts
after seeing this talk,
please feel free to send me an email
or find me on chat.
So there is a recurring concern
in the Emacs community
about its popularity.
This is something that keeps coming back
time and time again. You probably see it
every year or two where people on Reddit
or maybe on the emacs-devel
mailing list are talking about ways
to increase Emacs popularity.
More recently, there was a discussion
on Hacker News where somebody posted
a link to this
Making Emacs Popular Again blog post
which does chronicle some of the
more recent discussions on emacs-devel
about things that could be done
to make Emacs a more popular editor.
So the title of my talk claims
that Emacs is going to
outlast text editor trends.
So to elaborate on this claim,
we're going to try to answer
a few specific questions.
First of all, what is popularity
and how do you even measure it?
If people are saying
that Emacs needs to be more popular,
then what do we really mean
by popularity?
Also, what are the benefits
of popularity? If emacs did somehow
become more popular, what benefits
would it receive from that?
And also, how does an editor
lose popularity, and what are
the possible consequences to that?
And then what are the unique factors
about Emacs that will ensure
that it survives long term?
What is special about Emacs
that will help it to thrive
despite whatever happens in the
popular sphere of text editors and
programming languages, etc.?
So, first of all, what does popularity
really mean? When someone says
that Emacs needs to become more popular,
what are they really saying
is that there needs to be more users,
and that they stick around.
Like, they learn how to use Emacs
and they continue to be users.
If we did get those new users,
what would it actually do for Emacs?
Also, is it that there are
more community members that are
creating new packages?
You know, that sort of assumes
that the editor itself
doesn't have enough packages,
or that the only way
that the an editor stays alive
is for there to be constant churn,
with new packages coming around.
Is it that there is more content
being created by users,
like more blog posts being written,
more YouTube videos being made,
more other ways that people are
evangelizing the use of Emacs
and also teaching people how to use it?
Also, is it that
more long-term stability is had
in the editor, and more core
improvements that are being made
over time? I mean, I guess you could say
that it does make sense
that if the editor is more popular,
then people will be more invested
in improving it, and there will be
more new contributors coming in,
but is greater and greater popularity
really what's needed
to ensure that this happens?
Also, it could just be that
there's more validation
for someone's personal choices.
You know, people tend to use
these software choices they use
as part of their identity.
So is it that they want Emacs
to be more popular
so that they can finally say,
"I'm an Emacs user,"
and have people think
that they're cool or "hip" or whatever?
I hope that... Hopefully,
that's not the case.
Hopefully, it's one of these
other points. But it could be something
because, as we see, you know,
there's a lot of trends and fashion
when it comes to software development
and also free software
and open source tools.
So as we go through this talk,
keep these questions in mind
as we talk about
some of the finer points on all of this,
and see whether you think
that popularity really correlates
with these things.
So first of all, how do we measure
popularity? What information do we have
to actually determine
which editors are popular,
and whether they're gaining or losing
popularity? So I've got a few,
or a couple places here
that we can look at
to judge the popularity
of various editors.
First of all, Google Trends.
Google actually gives us the ability
to track and compare search volume
for particular terms and topics
over time. So if you wanted to know
how often someone was searching
about Emacs, maybe to try to find help
for something, or look for documentation,
or maybe look for blog posts, etc.,
you can look at Google Trends
to see how often people are searching
for Emacs over time.
One useful ability is that we can
compare how much people are searching
across various different topics
and see a graph, which is
what i'm going to show you right now.
This graph shows you the search volume
for Emacs compared to Vim, Atom,
Sublime Text, and Visual Studio Code
from 2004 to the present
worldwide, so all across the world
where searches are happening.
You can see that in 2004,
Emacs is the reigning king supreme
where you have the most search terms
or searches happening on emacs
at that time. Also, Vim is quite high
on this list as well.
Let's see. Sublime Text is a bit lower
in the list, but it's in third place.
Nope. Yep. That's right.
Then atom is quite low, but I think that
Atom didn't exist yet,
so maybe at that point, you know,
this is probably something else.
Google is just getting random data.
And then Visual Studio Code
also didn't exist,
so probably this is like
Visual Studio searches,
but then as you go across the years,
you see that gradually,
Emacs popularity appears to be declining.
As does Vim, but not quite so much.
And then over time, Sublime Text
becomes more popular,
and then VS Code in more recent years
becomes very popular
compared to everything else.
So it looks like Emacs
has declined significantly in popularity,
while the other editors have taken over.
But is the search volume really
the only important factor
that indicates popularity or health
of a given editor?
That still remains to be seen.
We can also take a look
at the yearly survey
that the website Stack Overflow puts out
asking developers about the tools
that they use to find out
which ones are being used
most frequently and that are
gaining popularity over time.
So there is a great blog post
by someone named Roben Kleene,
who synthesizes some
of this data together,
specifically about editors,
and provides us with a graph
that we can take a look at
that compares the popularity
of particular editors
in the last maybe four or five years,
at least 2015 to 2019,
based on the responses
to the Stack Overflow survey.
In this case we see that
Emacs is the light blue line,
and it sort of stays in maybe, let's see,
maybe third place in the beginning,
and then fifth place,
and basically just stays in fifth place
the whole time, compared to things like
Atom, Sublime Text, and VS Code.
As we saw before, the VS Code
just sort of ramps up at the end.
Now, this is another thing
that basically is showing us
similarly to the Google Trends
that Emacs's popularity is not quite
as much as other editors out there.
You can also look at the 2021 results
of the Stack Overflow survey,
which I'll show you now,
which shows Emacs in 16th place.
Let's see. If we look here,
we see Visual Studio Code
is the most popular, then we have
a whole bunch of other well-known editors.
Some are kind of surprising,
like Notepad++ is quite high up there,
but then we have Emacs here
coming right in behind
PhpStorm and NetBeans,
which is pretty funny to me.
But it just goes to show you
that the Emacs community is smaller
than what you might consider
for other editors, or at least
the Emacs user base, maybe.
Maybe it's just the people
who actually respond to the survey.
You can't really tell for sure
because all this data is coming from
a self-selected group of people
who have responded to the survey.
So I think what... Basically,
what I'm trying to say is that
if you look at all these things,
you would probably get the perception
that Emacs is dead
and that maybe nobody really
uses the editor anymore,
or that it's on its way out.
However, I think there's another way
to look at the health or popularity
of Emacs (or any other editor, really),
and that is to judge
the popularity and health
by taking a look
at the community activity
in places such as Reddit,
or maybe on Discord servers,
Slack servers, IRC channels,
mailing lists, particularly
on emacs-devel,
where all of the conversation
about the development of Emacs happens.
Blogs. There's quite a lot of people
in the Emacs community
writing blog posts.
There's quite a few YouTube channels now
making content about Emacs
pretty frequently, and then
conferences like this one, EmacsConf.
If you've spent any time
in any of these places recently,
did you actually get the sense
that Emacs community lacks activity?
I personally don't.
I see quite a lot of activity on Reddit,
I see a lot of activity
in various other places,
even my own chats that I've created.
Lots of people talking about Emacs
every day. But this is harder to measure,
because you would have to go count
all of the mailing list emails
compared to other editors,
or maybe like the Reddit posts
compared to other editors.
We could do that, but really,
the more important thing
is to just go experience the community
by going to one of these places
and take a look at what's going on.
You can get a really good sense of that
by checking out Sacha Chua's Emacs News
roll-up blog posts
that come out every week.
It's a very good distillation of things
that are happening
in the Emacs community.
If you look at those things
and look at all that,
you can tell that there is actually
something happening
in the Emacs community
that is more than what you see
in the numbers on Google Trends
and on Stack Overflow.
Another interesting point
that doesn't really fit into all this,
but if you want to look
at the actual data
from the Emacs community
about how the community uses Emacs,
check out the results
of the 2020 Emacs survey.
I'm sure there's going to be
another Emacs survey at some point soon,
as well, but that will give you
some insight into what's happening
within the community itself.
You can see that
there's quite a lot of activity
and a lot of different use cases for Emacs
and types of people who are using Emacs.
Let's talk about
how editors lose popularity.
So people are worried
that Emacs is going to lose popularity.
What do they worry is going to happen
if that happens?
Or how actually could it happen?
So maybe a new editor
with better features appears.
So one theory for why users
left TextMate for Sublime Text...
If you don't know about TextMate,
it was a very popular editor on macOS
back probably in the Ruby on Rails craze
time frame, maybe like the mid-2000s,
2005 or so. Then eventually Sublime Text
came along, and it had
a better extensibility API
and really good performance.
It also was able to use
some of the same stuff from TextMate,
like these syntax highlighting grammars
and the snippet definitions, etc.
So you had TextMate
which was a well-loved editor,
but then a new editor called Sublime Text
came along with better functionality,
and people started switching over to it
because it could do more things
and the user had more ability
to add functionality to it.
Also, VS Code came along
and used a similar model
to the Atom editor,
basically being a web-based editor
using Electron,
but it greatly improved upon performance
and IDE tooling ecosystem.
For people getting real work done
with large projects,
you need to have things like IntelliSense,
and being able to find definitions
of functions or classes that are defined.
So you have a new editor
that comes along
that has basically better functionality
than the one that was there before.
But the thing is,
if you have a new editor that comes along
with better functionality,
it still has to be at least as good as
or better than the previous editor
for people to stick with it.
So it's a very tall order
for someone to say
there's going to be some editor
that will come along
that would be better than Emacs
on every dimension,
because there are some unique dimensions
that are hard to beat
in an editor like Emacs.
Lack of sufficient maintenance.
That's one thing
that could possibly happen
if an editor loses popularity.
So maybe sometimes...
Sorry, that's something
that can cause a lack,
a loss of popularity.
Sometimes the development team
for an editor either moves on
or maybe switches focus
to a different project.
When this happens, the development
of the editor can stagnate,
giving the impression that it's dead.
You can see this happening
a lot of times on repositories
for open source projects,
where if someone doesn't make any commits
or adding new features for a while,
people just automatically assume
that the thing is dead,
even if it's in a very stable state
and doesn't really need any improvements
to be made. This is something
that can happen over time.
The developers of Sublime Text
sometimes give the impression
that the editor isn't being maintained
because of long breaks between updates,
and this gives people...
If you go search for
"Is Sublime Text dead?",
you'll see posts about this
every couple years,
where people are wondering
what's happening with Sublime Text,
when in reality, there's actually
development happening on this project,
and paid users are getting these updates
because they've paid,
but the product is not open source.
You have no visibility
into the development.
So if people have the perception
that the editor is not being maintained,
then there's going to be
rumors getting started,
and that could cause
the mentality of people to shift
and try to move on to other editors
because they perceive them to be
more well-maintained or more active.
Another problem can be that there are
major bugs that persist over a long time
that aren't being fixed
while the maintainers are focusing on
some other efforts in the project,
and this could hurt sentiment
in the community and cause a backlash
leading to an exodus.
So if you have really bad bugs
and people think
that you're not really concerned
about fixing them,
then that could be something
that would cause an editor
to lose popularity
as people move on to find something else
that appears to be more stable.
Lastly, sometimes all it takes is
for a new programming language
to become popular
or for an influential person to say
that they switched to a different editor,
because people are capable of being led
by someone else who is influential,
so sometimes it's just...
All it takes is someone to say, you know,
I'm not going to use this editor any more,
and other people will follow.
But oftentimes, it's not just about
the fashion changing,
it's also there's other problems
that are happening.
Some of these other things
that I mentioned before
that could be contributing
to this overall sentiment
that caused people to move on.
So then what happens
when an editor loses popularity?
If people are worried
that Emacs is going to lose popularity,
what happens if it doesn't gain more?
So what are the possible consequences?
Well, maybe core maintainers
will gradually leave the project
with nobody to replace them. I mean,
if you have a project like Emacs
where there's a core
that's written in a language
that's different than the language
everybody uses to extend it,
then maybe it's risky
to have people leave the project
because you don't have other people
to come along who can help maintain it
and to carry on the knowledge of the core.
Also, maybe no new features
are being added to stay competitive
with other editors.
So this is one of these things
where people kind of feel like
there's a feature mill, where you know
if new features are coming online
in other editors,
maybe your editor needs to catch up.
Well, I don't really think that
that's necessarily needed,
but if there are new paradigms
or usage patterns or workflows
that are becoming...
I guess you could say mainstream,
sometimes it does make sense
for an editor to be able to adopt these,
but if you have
a sufficiently extendable editor,
then oftentimes, you don't really need to
do anything other than
just write a new package.
Critical bugs that never get fixed...
I mean, if people start to drift off
from the project, it is much more likely
that bad bugs won't get fixed over time.
Less community interest in creating
and maintaining packages.
There's another possibility
if people don't feel like
it's worth their time anymore
because not many people
are using an editor,
maybe they'll have more users
or more interaction
if they go write a similar package
for a different editor.
Less blog posts, videos, content.
Basically, like, if people feel
that it's not worth their time
to make content about the editor either,
or if you're just not interested any more,
then those things will dry up.
And also one thing that is possible,
but probably not very likely,
is that the program may not be
packaged any more in Linux distributions
or for other operating systems.
So if it's not worth someone to package it,
or they just sort of lose interest
in the editor, then maybe those things
sort of drift away
and you can't even install it any more
in many places.
But I feel that these things
would only really happen
if there was already other major issues
in the dev team or in the community,
like maybe a high profile schism
in the maintainer team,
sort of like what we saw with GNU Emacs
versus XEmacs, because you have
two competing versions
of the same idea
with different implementations,
and then over time,
one of them may fade out
because people just lose interest
and maybe something like GNU Emacs
gradually catches up and surpasses it
in functionality. So these things
can happen, but it's not really
as likely as people would think, I think.
So how is Emacs going to survive
despite popularity? I feel that
there are a few important
and unique factors
that are going to contribute to this.
First of all, Emacs is
more deeply hackable
than almost all other editors.
I'm couching that a bit,
but really it is
basically more extensible
than any other editor.
I haven't seen one
that's more extensible than Emacs so far,
and that's because
Emacs was designed for this.
The whole point of Emacs
is that you should be able to go in
and customize your workflow,
and customize the editor to do
exactly what you want it to do.
It's this whole idea of user freedom.
You're not letting the editor designer
tell you what to do,
you're telling the editor what to do
at every step of the way.
Also, an Emacs user can grow their skills
from small configuration tweaks,
just basically setting variables
and whatnot, to writing
their own packages over time,
and then eventually
to contributing to Emacs itself--
the same skill set,
because the majority
of the functionality of the editor
is written with the same language
that you use to configure it.
So unlike other editors,
where you have...
the way that you write extensions
for the editor,
that has a specific API,
but if you go contribute to the core,
the code base is completely different.
It's different with Emacs
because you have basically the same APIs,
the same code and same everything
that you use to write a package
versus writing actual code
for functionality for the editor.
Now obviously, there's the C layer
that is different,
but I think a lot of the actual packages
and functionality in Emacs
are at the Emacs Lisp layer.
So what this means is that
Emacs configuration hackers
and package authors
are prime candidates
for eventually becoming contributors
to Emacs itself. You see this play out
a lot of times in Emacs community,
where someone writes
some really good packages,
and either parts of those
get merged into Emacs
or that person maybe makes contributions
to Emacs to add new functionality
that their own packages can use,
or just to improve Emacs as a whole.
So there's much more chance
that people who are involved
in the community of Emacs
can actually become contributors
to the project itself.
I think that's going to be
very important for its health.
Also, you don't need to add functionality
to Emacs core
to make the editor itself better.
Package authors are on
an equal playing field
as the built-in functionality,
for the same reason what I said before.
Everything's written with Emacs Lisp,
or I guess a lot of the functionality
is written with Emacs Lisp.
Since there's a lot of ways to hook into
or replace functionality in Emacs,
you can do a lot of deep customizations
to Emacs itself to make it better
in ways that aren't really...
The core developers don't need to
add new things for you to do that.
You can just do it if you want to.
So that gives Emacs more of
a platform feel
rather than just being an editor
that can't really be changed very much.
Also, Emacs has a strong community
of highly-skilled packaged authors
and the high-quality packages
that they create make it far better
and more uniquely valuable
than many other editors.
Specifically, things like Org mode,
Magit, Org-roam,
and a lot of other things
that we've talked about
on the System Crafters channel over time,
and the hundreds of other
workflow-improving packages
that have been created over the years.
So all these things really make Emacs
a unique offering
in the space of text editors,
or development tools,
or even just general
information management tools,
or desktop environments,
if you want to call it that.
So the people who are involved
in making these things
make Emacs far better than it could be
just by itself,
and this thriving ecosystem helps Emacs
to continually feel fresh,
regardless of what's happening
in core Emacs development,
because packages can do so much
and because people can come along
and propose sort of
a new way of doing things
and other people can start using it.
Emacs itself doesn't have to be
beholden to just what
the core developers do.
The community can also play
a major role in making Emacs feel fresh
and be modernized over time.
Just take a look at what Doom Emacs
is doing to give Emacs a better face,
and Spacemacs as well.
Those things are very good
for making Emacs more palatable
to the general public,
because you have a much better experience
out of the box, and a lot of things
have been polished
for the user experience.
Emacs also has a very strong
user community. Lots of activity
and discussion about emacs
is taking place all the time
in various places,
like we talked about before.
Mailing lists, IRC, Reddit, etc.
If you get into Emacs
and you go take part
in the Emacs community,
there's always going to be
somebody around who's going to want to
talk about Emacs with you
and answer your questions.
So it's a very good thing
for the health of the project
because there's a lot of people there
that are very invested in it every day
and want to see it succeed.
Also, there's many community members
writing articles
and making videos about Emacs,
many of which are actually moving forward
the state of the art
about how we use the editor,
and how we use it... I mean,
how many times have you seen
a really great blog post
that completely blew your mind
and showed you a new way
to use Emacs, or a new way to think about
how you use Emacs. I see stuff like that
all the time, like posts by Protesilaos,
or by Karthik, or by many other people
who show you a new way
to look at things, and then you're, like,
Wow. This... I could do things
completely different
than I was doing before.
This kind of stuff
is extremely important
for the health of the editor
going forward, because people are able to
inspire others to use the editor.
It's a great thing for evangelism as well.
Like, if someone happens to
stumble across a video or a blog post,
they may be really inspired to use Emacs.
And lastly, the Emacs maintainers
and contributors really care
about the users.
There are many core maintainers
who have been with the project
for 10+ years, some way longer than that.
So it shows you that
the people who work on this project
really care a lot,
and they're very invested
in making sure that it remains healthy
for the long term.
They also really care about ensuring
that Emacs continues to work well
for long-time users,
(and some people have been using it
for 30 to 40 years,
which is kind of insane,
if you think about it),
all while gradually and sensibly
enabling new scenarios
and core improvements
that benefit all of us,
even the new and the old users.
Keeping a piece of software
running and relevant
for this many years
is a huge effort,
so I'm very thankful
to the maintainers of Emacs,
and I hope all of you are as well,
because this is kind of an anomaly
in the software field
to have a piece of software
that has existed for so long,
who has managed to survive
despite various different types
of platform transitions,
operating transitions over the years
and still thrive and be a very useful
and very key piece of software
for a lot of people.
So aren't all these things
that we just talked about
supposed to come
when an editor is popular?
We've been talking about
what is popularity,
what benefits come with popularity.
So all the things I just mentioned,
shouldn't that be something
that would only be for editors
that are super popular? Well, I guess
the answer is maybe Emacs is actually
popular enough.
That doesn't necessarily mean
that we should not try to
help other people find Emacs,
but I think that we should not
worry so much about
the popularity of Emacs,
because what we have is great,
and we should just focus our time
on continuing to improve the health
of the community that we have
and the health of the editor itself,
and not worry too much about chasing
whatever is happening out in the world
at any given point.
To conclude, the next time someone says
we should do this thing
or this other thing
to make Emacs more popular,
ask them these questions.
1. What does popularity mean to you?
2. How do you measure it?
3. What do you think Emacs is going to
gain from increased popularity?
So I hope that you found this talk
inspiring and maybe
a little bit reassuring. Thanks so much
for your time, and happy hacking.
We'll see ya.
[captions by sachac]