I got some feedback from yesterday’s piece, Investigating OPML, to the effect that “you just don’t get outlining”. On the contrary, I love outlines, and I love outlining. Virtually everything I write is an outline. I just don’t like outliners.
- Python code is an outline delineated by whitespace.
- Wikis have outlines delineated by equals signs. Here is a Wiki-generated outline, and here is the Wiki outline source. You can also create lists and nested lists by indenting and using asterisks or numbers.
- Dive Into Python is written in DocBook XML, which is an outline delineated by XML tags. book, chapter, section, and nested sections within sections. The table of contents is auto-generated from this structure.
- Well-structured semantic HTML is an outline delineated by header tags. Here is my weblog as an outline (revert to default layout). That’s all CSS (here’s the stylesheet); I didn’t have to change my HTML at all, because my HTML is already an outline.
However, I don’t edit any of these in an outliner. I like to edit Python code in an IDE (or in Emacs in python-mode), which autoindents for me and allows me to “fold” code blocks (collapse an outline node) that I’m not currently using. I prefer to write my book in Emacs, in Docbook mode with many custom macros. I generally just edit wikis and my weblog in a browser.
Why? Because everything in life should be plain text. Sure, Python code is an outline, and my IDE takes advantage of that. But I don’t always have my IDE (it’s Windows-specific), and not all installations of Emacs have python-mode. Sometimes all I have is Notepad. But Python code is plain text, so I can edit it in anything. All I have to do is keep track of spaces myself; the rest is just text. Simple.
This is why I dislike outliners in general, and the OPML format in particular: they presume that my work is primarily an outline, secondarily text. OPML clearly expresses the hierarchical structure of the outline, but obfuscates (entity-encodes) all my actual content. This is exactly backwards. The fact that some documents can be thought of as outlines is useful knowledge when building an editor (ActivePython and Vim 6 take advantage of this), but it’s not important enough to make the document substantially more difficult to edit outside that editor. No amount of convenience is worth giving up the simplicity of plain text editing.

