Made of Bugs

It's software. It's made of bugs.


I’ve recently switched to Conkeror as my primary browser. It started life as a Firefox extension, but nowadays it’s a standalone app built on top of Mozilla’s xulrunner, so it uses the Gecko rendering engine.

What it is, is an emacs implemented in Javascript, for the web. This means on the one hand that it acts like emacs. Most of the basic emacs keybindings are supported – you open URLs with C-x C-f, and have buffers you can switch between with C-x b and so on.

However, what is also means is that internally, it is fully an emacs, with all the extensibility and all the other things that applies. The UI you see is just code written on top of a generic core, that implements the core emacs primitives, including

  • The basic buffer datatype. But instead of being a plain text store, it’s instead a full Gecko XUL/XHTML DOM.
  • A self-documenting command infrastructure and variable infrastructure, that lets you look up the documentation and definition of any command or configuration variable.
  • keymaps accessible from javascript that map keys and key sequences to commands, letting you rebind any key from your configuration code, and define new modes with completely new keybinding sets

In other words, it really is not just an emacs-like frontend to Gecko/Firefox, but is a full platform on top of xulrunner for writing interactive applications in javascript/html/css like emacs.

I predict it’s only a matter of time before someone

  • Adds the ability to edit local files and becomes a full text editor that can actually start to compete with emacs. At that point people will start to port things like emacs-vc and all the Nice Things we’ve come to expect from emacs, and
  • Writes a mailreader for it ;)