Gnome Outliner Working Spec

A proposed specification for Gnome Outliner, an outline editor for Gnome - by Steven Garrity - May 26, 2004
This document is no longer up-to-date. It has been replaced with: http://wiki.silverorange.com/GnomeOutliner/Spec

Summary

This document is a proposal for a Gnome Outliner, an outline editor application for Gnome. Gnome Outliner does not exist beyond the ideas in this document. The goal of this document is to gage interest and attract those who might be interested in helping to great Gnome Outliner. Questions or comments about this document can be directed to: steven@actsofvolition.com

NOTE: There is now a Gnome Outliner website, a Gnome Outliner project on SourceForge, and a Gnome Outliner development mailing list.

Introduction

What is Gnome Outliner?

Gnome Outliner is a simple GTK-based outline editor, similar to OmniOutliner. No code has been written yet - so far it is just an idea.

Dave Winer defines outliners:

"They started out as simple hierarchy editors, used by lawyers, educators, students, engineers, executives; people who think -- to plan, organize and present their ideas."

Gnome Outliner is intended to be used primarily for taking and managing notes and ideas. However, it can also be used for organizing larger documents (this document would have started out as an outline, for example).

Prior Art

Gnome Outliner need not deal with much uncharted territory. Rather, it should simply be a simple and clean implementation of conventions and standards established in previous outlining applications. Dave Winer's Outliners.com provides some background on early outliners including the popular More 3.0 (screenshots for the Macintosh.

A popular current outliner is the Omni Groups's OmniOutliner (screenshots). Userland's Radio product has outlining capabilities (screenshot). VimOutliner is a character-based outliner (screenshots). Theere is also an old GTK application called gnome-think (screenshot) that seems to have since been abandoned.

Update: There is an Gnome outliner geared toward handhelds called Figment (screenshot). It has some good stuff in place (export to OPML, text, and DOCBOOK), etc., but does not work well (yet?) as a basic desktop note-taking application. However, with some keyboard shortcuts (Enter for a new node, etc.), it could work quite well.

Most word processors offer some degree of outlining ability. Microsoft Word and OpenOffice.org Writer, for example, both have extensive outlining abilities. However, both of these applications are overkill for taking notes and managing simple lists and outlines.

Terminology

Node
An element of an outline that may be a child of higher nodes, may have lower child nodes of its own, and contains text.
Child
A node that belongs to a node higher in the outline.
Parent
A node that has child nodes below it in the outline.
Disclosure Triangle
An interface widget displayed with each node that indicates whether the node is expanded or collapsed and can be toggled by clicking.

Interface

Gnome Outliner Mockup
View Full Size Mockup

The interface of Gnome Outliner should be as simple and elegant as possible. The content of the outline is far more important to the person using the application than the application and its functionality. The interface should reflect this, giving as much screen real-estate and visual prominence to the outline content as possible.

For the purposes of illustrating what a working Gnome Outliner might look like, I have created the following mockup. Please note, though, that this is just a mockup - no code has been written. This "screenshot" was created entirely in the Gimp.

Toolbar

The Gnome Outliner toolbar provides quick access and visibility to common outliner functions. The prescence of the outline-specific toolbar buttons (Indent, Outdent?, Move Up, Move Down) will also help quickly identify the nature of the application.

A possible set of toolbar items: New, Open, Save | Outdent, Indent, Move Up, Move Down

Gnome Outliner Toolbar Mockup

Menus

Where possible, the menus will match GEdit, since it is a good example of a simple Gnome-friendly text editor.

The Canvas (the outline area)

In a new document, the cursor starts in the top left in a new "node". Typing enters text in the node. Pressing the "Enter" key creates a new node on the next line. Tab indents the current node(s) to be a child node of the next node above it. Shift+Tab "outdents" the current node(s) to be a parent of the next node below it. Pressing Shift+Enter would insert a line break in the current node, without creating a new node.

Each node has a disclosure triangle widget at its top left. When clicked, this will toggle the branch (any children of that node) to collapse/expand, hiding or showing the children nodes. Similar behavior can be found in the "Tree" view of Nautilus's "browse" mode (screenshot). The disclosure triangle of nodes without any child notes should be visual disabled (greyed-out) to show that the node can not be collapsed/expanded (as there are no child nodes to hide/show).

In addition to the Edit menu and toolbar controls, nodes or groups of nodes can be moved up/down/left/right in the outline using ALT+arrow keys.

Document Management

Since the primary use of Gnome Outliner is for note-taking, the traditional "Save" feature may be able to be replaced with constant saving.

Garrett Murray has implemented a "post-Save" application in xPad (screenshots, a note-taking application for Mac OS X. In xPad, a list of all xPad documents is always kept in a tray. Changes are automatically saved and the tray of documents is opened automatically with the application.

As people are familiar with saving their work, xPad wisely retains a "Save All" menu item and keyboard shortcut. The Save All function manually initiates what is already an automatic background process (saving). Rather than "opened" and "saved", documents are "imported" or "exported" from xPad, though most work doesn't require these actions.

The happy medium may work between the traditional open/save metaphor and xPad's state-less internal document metaphor. Gnome Outliner can be opened and saved, but automatic saving can be optionally enabled (on by default?). Also, a document can be specified to open on startup of Gnome Outliner (a preference, or just open the last document if it still exists?).

Outline Format

Gnome Outliner will store outlines in an XML format (OPML?). Import and export functionality may be added for other formats (TXT, OPML, HTML, XML, RTF, etc.)

Potential Features

I've kept the spec intentionally simple, but if there basics were to be well implemented, I can imagine further improvements down the road.

Also See...

Creative Commons License

This document is covered by the Attribution-ShareAlike License from the Creative Commons.