Using the Leo Outliner as a PIM


Because what little time I've had to work on "recreational programming" has been spent on Leonardo and the tree-based instant messenger, I haven't made any progress on some of my tree-based personal information manager ideas.

So I thought it would be interesting to just start using an outliner to keep track of my calendar, projects, weekly work targets, etc. So far it's working pretty well.

I'm using Leo (not to be confused with Leonardo) which is a Python/Tk-based outliner that also supports literate programming. I first heard about Leo a few years ago from Joe Orr whom I met via the now-defunct Alliance for Advanced Real Estate Transaction Technology (AARTT).

One feature Leo has which is extremely important (although by no means unique amongst outliners) is the ability to place a node under multiple parents. I'll write a separate entry soon about why I think hierachies based on only the containment relationship are an unnecessary limitation (and how hierarchies should be done).

I've got some top-level nodes for goals, interests, responsibilities and projects. I also have a top-level node for my calendar.

Using multiple parents, I can link a project under one or more goals, interests and responsibilities. An event such as a meeting can go under a specific day node in the calendar as well as under the relevant project, responsibility, etc.

I even have a node for each week's "status" - I can link tasks, meetings, etc under the status node for the week and generate a weekly status report by using Leo's export-flattened-outline-to-file feature.

Leo has a text editor pane that allows text to be associated with any node in the outline (this is where you'd write your literate programs when using Leo for that purpose). This pane is great for taking notes on tasks, meetings, etc.

There are a couple of features that would really take Leo to the next level for these sorts of things. I'm not sure if it would make sense to extend Leo or to write a Leo-like outliner sans the literate programming features.

What I'd really like is the ability to have custom views of a node, not just the text pane. The text pane could be replaced by a tabbed control and the text editor would be just one of the tabs. Other tabs could contain things like the result of applying an XSLT stylesheet to the node and its descendants. This would be great for things like my Calendar node, which doesn't really lend itself to a tree view. It would also be very useful for aggregated views where I want to see the text for a node and all its descendants in a single view.

An XSLT stylesheet generating read-only HTML would be a huge step forward. You could go even further by having custom controls on these tabs that allow manipulation of the data. Finally, you could introduce a way of expressing properties (via something like Notation-3 in the text view) and make the hierarchy derived.

The original post was in the category: information_management but I'm still in the process of migrating categories over.