For my day job, I work at a startup, basically as an expert in Mozilla technologies. I love what I do, too. But whenever I do user-interface work, I frequently run into a simple problem: screen real estate.
Case in point, my latest work with XML entities and entity references on the Verbosio XML editor project. (I can’t really talk about details of my work-related code here, but I can talk about the pet project.) The demo panel for this, which doubles as a laboratory for my experiments, has four major sections. The upper left corner holds a CodeMirror instance for one DTD document. The upper right corner holds another CodeMirror instance, for a second DTD. The middle horizontal section holds a third CodeMirror instance, for the XML document that might load the DTD documents. Each of these has some ordinary XUL buttons on the right edge and a menulist, to help me control the individual sections. In the bottom third, I have a XUL deck which can toggle between an iframe and a XUL tree showing the document object model of the XML I’ve parsed. To the right of this XUL tree, I plan on adding a bit more, for showing the entities defined in the doctype or the entity references on a node.
All of this UI lives inside a tabbox. As you can see, it’s already a little crowded, though fortunately, it’s almost complete in terms of features I need.
I can’t do a fair comparison against the Mozilla Firefox user-interface; the main windows don’t have textboxes for source code or trees for DOM views. So their controls’ relative sizes don’t come close to mine: they’re much flatter.
The built-in developer tools, though, do have an elegance to them, and are a fair comparison. The right side panel, showing variables and events, can collapse away (and the animation’s pretty nice, too). The left side panel has a listbox (I think) of scripts to choose from, and when you select one (either in call stack or in sources), the equivalent source code appears in the center. Plus, they have some really tiny icon buttons in the UI, much smaller than the standard XUL buttons I use. The devtools UI gives you basically what you need and otherwise tries to get out of your way.
Or maybe it’s time for me to re-read Jenifer Tidwell’s excellent book from 2006, “Designing Interfaces”. (I have the first edition.)