JNRowe

gout

gout is a GTK+ outliner looking for a name and a useful implementation

Note

This is a scratchpad for a current project, and doesn't reflect current working status in any way.

Introduction

Outliners are good for many purposes, but for some reason as a project they are quite unsuccessful. In the Linux world this means we're left with a bunch of half-finished outliners, this is my attempt at adding to the pile.

I've been toying with the idea for a long time now, and I've had a working prototype for approaching 15 months. Unfortunately, from the outset I've chosen to use tools which while useful I'm unable to redistribute outside of work colleagues due to licensing issues. This recently started rewrite, which I'm calling gout until I think of a better name, will only use library code which is compatible with the GPL-2.

Features

Branch inheritance

The most important feature to me is branch inheritance, I have no choice but to store many items I'd like to visualise in an outliner on remote systems. That could be in the form of bugs in Bugzilla, event listings trapped for eternity in exported ICS files and or even the outlines authored by other project members for shared projects.

Support for non-textual nodes

Not only should this be styled text or HTML, but also SVGs and perhaps even audio. I often record audio notes on my mobile phone, I tend to upload them all to a directory once a week and transcribe them when I'm waiting for something to build. It would be nice if I could directly link audio items in to the tree.

Some other editing formats would also be useful, many people refused to use my previous tool until a wiki text editing mode was added. Looking at the data files hosted on our servers it looks as if the bluecloth-using Markdown plugin was popular too.

Retargetable user interface

If I can't edit the outline on my phone and desktop the project is a complete failure, there is no single truth which is more important than this. Already having GTK+ available on my phone should mean just another glade file.

An ncurses interface would be really nice too, and maybe even an web interface if time permits. Both of these points suggest relying on a name with the G of GTK+ in it is a bad idea.

File formats

By default XHTML and XOXO are the formats that will be supported, I also plan on supporting export to OpenDocument for possible typesetting and TVO for legacy system support. Maybe devtodo as well because a lot of people I know use it, but it will necessarily be very lossy.

Maybe an import filter can be written to pull in some common OPML formatted files, but due to the complete lack of a coherent spec it just isn't worth attempting to support in a large way.

Abuse libraries for everything possible

If at all possible use standard available libraries for everything, even though the cool display options of the current implementation may look pretty the display code is now just over 60% of the code size and actually adds little that couldn't be achieved with a decent HTML engine and graphviz.

Current systems

There are some systems already available for outlining on Linux, but they don't fit my needs for one reason or another. Some of the systems I've looked at include the following, but if you know of any good tools I've missed please drop me a mail. I'd really prefer to improve an existing Open Source project than start my own.

hnb

hnb is a curses based outlining tool, which is incredibly useful. Unfortunately, the project seems to have died in as much as there is no response to posted patches and the last releases are really quite buggy.

Again with the GUI issue, it would need a new frontend to be considered as a solution. It probably wouldn't be all that difficult to retrofit some of the ideas to it.

leo

leo is an outlining editor and apparently a usable text editor too. Being written in Python and using tk for the UI means I've not bothered to look any further, it's that simple.

newton

The newton project is the successor to notemeister, with a slightly larger feature set. Development has seemingly stopped. The GNOME applet concept is a nice idea, definitely needs to be completely optional though.

notecase

notecase is an interesting looking project, which seems to have a reasonable feature set and uses GTK+. It is mostly targeted at Windows unfortunately though, which becomes immediately evident when you look for a download link and find a zip file. The feeling continues when you're trying to fix the build so it compiles and have to stare through the ugliness of the DOS encoded files and desperately broken Makefiles.

Still it shows some promise, and I'd like to take another longer look at it to see if it could be a suitable base project. I guess it depends on a lot on how much work it would take to make it a usable and portable base.

Note

Given some further consideration it doesn't look like notecase would be a valuable base, it isn't remotely portable and much of it would require a complete rewrite to become so.

notemeister

The notemeister project seems to be dead, and has been replaced by newton. It looks like it has a relatively nice interface, one which I'd probably consider implementing as secondary "simple" view.

Unfortunately, it is written in Python which makes it inappropriate as either a base or possible solution.

TVO

TVO is a plugin for vim which provides some basic outlining capabilities, I've used it a lot in the past and generally I've been very happy with it.

Unfortunately, many of the features I really want to see aren't really possible to implement on top of TVO. There is also the GUI issue and I have given some thought to writing a GUI which just sits above everything else running vim commands, but it doesn't really seem like a good way to work.

vimoutliner

vimoutliner is another outlining plugin for vim, it works in pretty much the same way as TVO but definitely isn't as polished even if it is possibly more featureful.

Return to Top