A shocking time has come - I've given up Emacs, after using it for 20 years. When
interviewing developers, one of the questions I ask is about their favourite
editor. I don't care what the answer is, but I do very much care about why it
is. An editor is a fundamental part of developer productivity, so I want to
hear about the candidate caring about their own productivity and trying to
improve it on an ongoing basis.
The irony is that I was using the same editor for decades. I did keep trying to
find improvements, but never could. There are two sides to Emacs - one is as a
competent & coherent editor, and the other is "living" in it. It has builtin
web browsing, image viewing, email and news support, terminal emulators etc. I
was never one of those.
Before Emacs I used vi. Its modal
interface, small size, and availability on all systems make it a good tool.
However it was text console only, and didn't do colour, menus, multiple files or
other useful functionality. (It does now.) vi does have a learning
curve - I estimate it takes about 4 years to be good with it, and 8 years to be
I had known about Emacs for a while, but it was text console only, and didn't do
colour, or menus. Each attempt to use it left me frustrated with what amounts
to another arbitrary set of keystrokes. (I've always been a cross platform
person so I was also juggling keystrokes for other operating systems and
applications.) A colleague (hi Jules) introduced several of us to XEmacs around 1995. It had a gui, and colour,
and most importantly a menu system. It was no longer necessary to memorize a
large set of new keystrokes, as the menus showed them. You could do everything
without knowing any, and then pick up those you use often enough.
By the mid 2000s XEmacs was languishing, and Emacs was slowly catching up with
the gui. More and more packages only worked with regular Emacs (there were
small but growing incompatibilities). I eventually made the switch from XEmacs
to regular Emacs.
There was an explosion in different file types I was editing: Python, C,
CSS, build scripts, SQL, and many more I have forgotten. Emacs had support for
most. Support means syntax highlighting, indenting, jumping around notable
symbols etc. More packages were produced that did linting (looking for common
errors), and various other useful productivity enhancements.
At the same time a new editor Sublime Text was introduced. It had
fantastic new interaction (goto anything, projects, command palettes, multiple
selections, distraction free) and a rich package system (written in Python -
yay!) I kept trying it, but kept finding issues that affected me. Development
also seemed to drastically slow, and since it was closed source there was no way
for others to improve and update the core.
CSS) is not a first class citizen. Not many packages were distributed with the
core, and you had to copy crytic elisp code from various places, or use strange
tools to try and get them installed and kept up to date. Then you had to do
that on each machine. Heck the package repositories (eg MELPA) didn't even use
SSL by default! My emacs configuration file kept getting longer and longer.
Ultimately tools these days are defined by their vibrant community, useful
defaults, and easy to use extension mechanisms. Emacs has all those, especially
in the past. But they are of a different era and different cadence.
I have switched to Atom. It had a rough initial exposure
with performance problems, and the extremely dubious choice of being closed
both have been addressed. Just days before Atom 1.2 was released, I removed
Emacs in favour of Atom 1.1. My configuration file is 10 lines long, and I get
the same experience on every machine.