# Why Emacs matters by Seth Kenlon GNU Emacs isn't the oldest interactive text editor for UNIX (it's predated, at least, by a little-known editor called [Vi](LINK TO MY WHAT-IS-VIM article)), nor is it [the only emacs](https://opensource.com/article/17/1/jove-lightweight-alternative-vim) in existance. However, it's surely the most popular Emacs, and one of the best editors available on POSIX.. Or at least, it was until fresh new editors, like [Atom](http://atom.io), [VSCode](https://code.visualstudio.com/), or [Brackets](http://brackets.io), came to the fresh new open source landscape of today. There are so many options for robust text editors now, many of which have iterated upon ideas and traditions from Emacs itself, that you may well wonder whether GNU Emacs is still relevant. ## Emacs since 1983 Open source is different today than it was when GNU Emacs shook the programming world. Emacs was exciting back in 1983 because it was truly the best in its class, and it was free to share across a costly and proprietary UNIX install base. Now, Emacs is just one of many editors designed primarily with programmers in mind, and the best of them are also open source. It's significant that Emacs has been around since 1983, though. While age by no means implies quality or growth, Emacs has been under constant collaborative development from the start. If you're looking for long-term stability, Emacs is a shining example. While it has undergone significant changes since it began, it's reasonably to anticipate that GNU Emacs from at least 10 years ago is functionally the same as the latest release. There are Emacs users with custom hacks in their ``.emacs`` configuration file dating back to the mid-90s. Some of my config options are borrowed from mentors, so my config pre-dates my use of Emacs, and they still work. With Emacs, you're not limited to adjusting thematic elements or just drumming up a cool plugin. When you hack on your Emacs configuration, you're changing the way Emacs runs and how you interface with it. You create your own Emacs experience, and you get to keep that experience for as long as you want. ## Run it remotely as text Feature-for-feature, anything that Emacs has got is probably also present in a modern editor. Software tends to behave that way: those that come after another borrow and integrate features because those features are simply the new baseline expectation. However, there's one thing about Emacs that's tough to beat: its ability to run as a text-only interface in a terminal, without loss of features. At its core, Emacs is a LISP interpreter. You can think of it as Python IDLE, but for a dialogue of LISP instead of Python. It can be run as a text interface in a terminal, as a GUI interface with a [GTK](https://www.gnu.org/software/emacs/) or [Aqua](http://aquamacs.org/) (and others, such as [Lucid](https://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Lucid-Resources.html#Lucid-Resources)), or as a client in another Emacs session. While you may not be able to use some specialized feature that relies upon a graphics server (for instance, [opening a PDF](https://opensource.com/article/20/1/emacs-rpgs) as a graphic file isn't supported in just a terminal), but all core features, and most extensions, operate the same as they do with a GUI. ## No telemetry Not all text editors track you, but there are those that do. Some editors don't just log your initial download of the product, but actively track your usage of the product, whether you're aware of it or not. It's for this reason that projects like [https://github.com/VSCodium/vscodium](VSCodium) exist: to help you compile your editor with harldy any of the tracking software included. Unfortunately, the act of compiling an "unofficial" version of an editor (to the extent that a truly open source editor can be christened official) negates your ability to run some extensions, so sometimes your choice is to either run the binary you're provided from the sponsoring company, or run an editor with reduced functionality. The assurance of the free software license that GNU Emacs helped popularize is that this won't happen. The GNU Emacs you compile yourself can be the exact same product delivered to you as a binary from GNU or distribution repositories. Truth be told, it can sometimes be even better because you're able to adjust how you build it to suit your specific needs, but you never have to unwillingly give up functionality. ## Hacking code not APIs Open source means you can hack code, no matter what. However, there's a big difference between hacking on an editor and making API calls. With many modern text editors, when they advertise themselves as "hackable" or even "extensible", what they're really referring to is an API provided to you by the core developers. That's by no means a problem, but it's different than modifying the code of the engine itself. With Emacs, when you write LISP modifications for your editing environment, whether it's just a one-liner in your ``.emacs`` config file or a fancy plugin offered to thousands of other users, you're reprogramming what you're running. Sometimes, admittedly, abstraction is a good thing. By implementing an API, developers can offer many points of entry into extending their product, providing a Javascript and Python and Ruby interface for the same editor. On the other hand, an API is an API, and it necessarily means that you can only use what's provided. If the API developer hasn't anticipated that you want access to some data object, then you don't get access to that data object unless you hack on the API itself (which, with open source, is entirely possible). Emacs being a LISP interpreter, however, ensures that you have access to everything. In a way, it's the realization of the promise of UNIX itself: it endows normal users with the ultimate control over their environment. In Emacs, you can develop whole applications that run in Emacs. If you want to develop an application but don't have time to design a GUI and build complex code needed to make it all make sense, you can use Emacs as both your scripting language and your platform. Many have already done just that, sometimes with success that rivals the popularity of Emacs itself. ## Maximized productivity When you use an editor that was invented before common conventions like **Ctrl+C** to copy and **Ctrl+V** to paste existed, you're in for a learning curve. Emacs keyboard notation can be confusing at first, with instructions like **C-x C-f** to open a file, or **M-d** to forward-cut a word. There are ways to mitigate this. You can activate **CUA** mode, which uses **Ctrl+C** to copy, and so on, or you can spend time creating an alternate keyboard scheme so you can use shortcuts you're comfortable with (**Ctrl+O** to open, **Ctrl+Q** to quit, and so on). However, you might, like most people who stick with it, find that once you learn Emacs and have committed its sometimes obscure commands to memory, it's difficult to use anything else. One Emacs user was so addicted to Emacs keybindings that he created [a LibreOffice plugin](https://wideaperture.net/blog/?p=4324) so he could use LibreOffice like Emacs! When you use Emacs well, there's hardly any separation between the act of typing words and typing the command sequences used to edit those words. Your brain doesn't have to switch back and forth between composing sentences and going back a few words to make a quick change, or saving the file, or copying and pasting, and so on. It's all the same to Emacs, and your fingers are never idle. There's no better way to maximize productivity. To get comfortable with Emacs takes practice, but no more than learning the controller for a game console, and a lot less than learning a musical instrument. But once you internalize it, Emacs unlocks the same amount of fun as a game console (try **M-x tetris**) and nearly as much inspiration as a musical instrument. ## Modern tooling for a modern age As always in open source, with Emacs you can build upon the hard labour of others. With the right mix of Emacs packages, you can transform Emacs into an intelligent IDE, an overly-helpful typewriter, an RPG control panel, an agenda, a calendaring application, a multimedia player, and a lot more. Open source isn't, by nature, a very competitive beast. You can use Emacs if you want, when you want, and you can also use another editor. You're not bound by loyalty or contract to any single tool. GNU Emacs is an important open source editor for the modern age, championing software and user freedom and convenience in some important and significant ways. If you haven't tried Emacs yet, take it for a test drive to see what you can do with it.