Emacs - Great Operating System, Decent Editor
There have been plenty of jokes made about how Emacs is more of an OS than a text editor. Over the years, the highly extensible nature of Emacs (through elisp) has led to a crazy amount of software being developed for this “text editor.” But why is that? Why in the world would somebody want a text editor slash irc chatter slash file manager slash email application?
It is my belief that the value of Emacs lies not in its ability to edit text (for which it does a pretty good job), but in how it has become the defacto framework for keyboard-based applications. You see, there’s a certain category of person that strives to optimize the mundane or common operations of their life. Programmers are especially prone to this. Languages like Ruby and Python allow one to easily write scripts that blaze through otherwise tedious problems, like renaming files. And then there’s the command line: For many tasks, such as file manipulation and ftp, far more intuitive graphical interfaces exist. However, one cannot help but love the extra time gained by using the command line equivalent.
Sadly, graphical applications tend to lack the speed (measured in user-productivity) of their text-based equivalents. Making an application keyboard-driven, if even possible, requires a large amount of effort with modern application frameworks. That’s where the beauty of Emacs comes in. Emacs is one of the few frameworks centered around keyboard navigation, primarily due to its legacy as a terminal-based text editor.
So, what are the strengths of Emacs for text-based applications?
- Common metaphors (buffers, frames, windows, navigation, marking text)
- Powerful scripting language
- Ability to easily move data between buffers and “programs”
- Ability to link to other buffers/files that are handled by other scripts/plugins
And the weaknesses?
- Non-intuitive key-bindings
- Carpal tunnel-inducing keystrokes
- Limited graphics/drawing capability
- High learning curve
Looking at Emacs from this perspective has sparked an idea. Why not make a framework specifically for keyboard-driven applications? It need not be a full-fledged text editor, but it could easily have several uses:
- Thor/rake/capistrano interface
- Twitter client
- Blog editor
- Feed Reader
- Git interface
- IM/IRC Client
- File manager
- GTD/Task manager
Now, such a project should have some high-level goals:
-
Easy on the wrists and fingers
-
Perhaps vim-like modes
-
Easy to learn and learns from you
- Focus on quicksilver-style auto-completions for most operations
-
Easy to develop for
- Use a common scripting language (ruby, python, javascript?)
- Easy rendering (perhaps webkit minus the form components?)
And the bonus features:
-
High Stability
-
Isolated processes
-
No single plugin/script takes down the application
-
Local or remote apps
- Websites could expose a markup/api that’s compatible with the framework
-
Accessibility
- In theory, this would be easier with an app that doesn’t rely on the mouse
So, let’s create a framework for keyboard-driven applications. Make it easy to learn, easy to develop for, and with an eye towards end-user efficiency. What do you say?
blog comments powered by Disqus