Emacs is one of the most long-lived text editors out there. It’s so comprehensive that people often joke that it’s an operating system rather than a text editor.
I used to use Emacs as my primary text editor, code editor, calendar organizer, task management system and note keeping system.
Why I moved away from Emacs
After almost 4 years of using Emacs full time, I grew disillusioned with its “one tool that does it all” philosophy. Becoming reliant on it was both a blessing and a curse; being fluent in it made me very productive, but it handicapped me in environments where I did not have access to Emacs and my personal setup.
Some examples of this handicap:
- org-mode can organize all of life, but runs best in Emacs, so I can’t rely on all of its power on my phone, even with apps like Orgzly
- Org-roam is built on top of org-mode, and is an excellent knowledge management system, but there are no reasonable ways to access the resulting scattered org-mode files on an Android phone
- Emacs Lisp is a flexible scripting language which is tempting to learn and use, as Emacs makes it effortless to write and run, but it cannot be run without Emacs, so code written in Emacs Lisp doesn’t feel like it can stand on its own
- magit is an amazing git UI, but it only runs in Emacs, so getting used to only using magit for source control meant that I was reliant on having Emacs for that too
A real life scenario at work
I was tasked to write a report that had prose set around large tables of parsed and analyzed data, which was a perfect fit for org-mode with its code block support and ability to run Emacs Lisp snippets for some data manipulation. The resulting report generator was effective, and I used it several times over the next few years.
However, because of its dependency on Emacs, none of my team could run the report and it was inappropriate to impose on them a brand new tool and workflow. Only I could run the report, so in reality I had just set the bus factor to 1.
If only I had developed it within the existing tech ecosystem of my team, it would have been shareable. But if I did write it in something more accessible — say Node.js — what would be the point of me being fluent in the “Emacs way of things” and being exposed to all that power at my fingertips just to be restricted from using it to do good work?
On top of that, I discovered that keeping my config up to date (for any editor) was an inherently fragile process, and the speed at which bugs were discovered, acknowledged and fixed was relatively slow in the Emacs world compared to other editors that were more popular.
I ended up migrating to Neovim for code editing, Obsidian for knowledge management, lazygit for git source control, and (unfortunately) back to Google for task management and calendar organization.