Emacs is one of the most long-lived text editors out there. It’s so comprehensive, 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 unless you install a terminal + actual Emacs
- 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 had to write a report that had prose around large tables of parsed and analyzed data, which was a perfect fit for org-mode, its code block support and a sprinkling of native Emacs Lisp for data manipulation. The result was excellent, and I generated the report 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 not appropriate to impose on them, what was to them, a brand new tool and workflow just to run one report. This meant running the report was tied to me, and I had just set the bus factor to 1.
If only I had developed the report within the existing ecosystem of my team, it would have been shareable. But if I did write it in something else, say Node.js, what’s the point of being so fluent in the “Emacs way of things” and being exposed to all that power when I can’t use 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.