Storyspace, the long-standing hypertext application from Eastgate Systems, was the first program I ever reviewed for TidBITS, and I described a new version of it last year. Now Eastgate is back with a new offering, Tinderbox.
Tinderbox incorporates most of Storyspace's fundamental metaphor and interface; outwardly, the two programs are almost indistinguishable. But they are oriented quite differently. Storyspace is about hypertext narrative; it presupposes an author and an audience, and uses mechanisms such as guard fields and the freeware Storyspace Reader program to guide the audience through a non-linear narrative. Tinderbox lacks those mechanisms and introduces new ones; it is aimed at the single user, and is meant as a kind of lightweight database, a text snippet keeper, a note-taking utility, a way of organizing pieces of information and perhaps exporting them as HTML.
For me, this evolution is delightful, because it fills a need I had already felt. I got lots of mileage out of Storyspace for hypertext renderings of Greek grammar, but the program also seemed as if it could be a snippet keeper; when I tried treating it as one, I found the experience unsatisfactory. The reason is that I was misusing Storyspace; Tinderbox turns out to be what I was after all along. It deserves a place alongside the utilities for storing, organizing, and retrieving information in interesting, powerful ways that I've described in the past.
Getting Started -- (Warning: This paragraph is highly condensed; for a more complete understanding, reread my Storyspace review.) In Tinderbox, the basic entity is the text snippet, which is called a note. A note has two parts: its name, and its actual content, if any, which can be styled and can include pictures, and is edited in the note's text window. A note can be placed "inside" another note, creating a hierarchical relationship among notes; sub-notes of the same note also have an order amongst themselves, which you can rearrange. There is thus an outline-like hierarchy of notes; you can view this hierarchy in various ways, called outline view, chart view, treemap view, and map view. But notes can also relate to one another through hyperlinks; a link can emanate from a note as a whole or from a particular stretch of text within a note, and leads to another note. Following a link from where it emanates opens the text window of the note it leads to. A link can also be assigned a name.
Getting started with Tinderbox is extremely easy. If you're willing to learn just a few shortcuts, you can start brainstorming immediately, creating and entering successive notes without the mouse: Return creates a new note, Spacebar opens its text window, Command-W closes it, Enter renames it. Once you have a few notes, you can rearrange them; the easiest way is in outline view, where you can just drag or use keyboard shortcuts. Making hyperlinks is just as easy: select a note or some text in a note, type Option-Command-L, click on the link's destination. There are other ways to accomplish these actions; my point is just that you can start to work effectively right away.
To this basic bag of tricks, Tinderbox adds two major innovations: attributes and agents.
Attributes -- Attributes constitute an additional mode of snippet organization, ranking with the outline hierarchy and hyperlinks. An attribute is simply a name-value pair, where the value can be a basic type such as text, a number, or a date - for example, "age:47". Many built-in attributes exist by default, such as what font a note's title appears in; but you are also free to create new attributes. Thus Tinderbox becomes a lightweight database; for example, if every note representing a person has the person's age as an attribute, you can quickly find all persons older than a certain age.
Although notes don't actually come in different types, you can treat them as if they do: you might have "person" notes with an "age" attribute, "book" notes with an "ISBN number" attribute, and so on. In reality, every note has a value for every attribute, so a "person" will in fact have an "ISBN number"; but that doesn't matter because you won't normally encounter it. You can set a note to display particular attributes in a pane at the top of its text window; so while editing a "person" note's text, you could see his age at the top of the window, but not his ISBN number. And his ISBN number will have a default value such as zero or the empty string, so your "book" searches won't find any "person" notes.
There are many ways to view and manipulate attributes. I've already mentioned that you can display attributes at the top of a note's text window; you can edit them there too. A note's Info window displays and lets you edit all attributes of that note. A stamp is sort of the opposite: it is a particular value for a particular attribute, which you can apply to all selected notes by choosing from the Value menu or using the Quick Stamp window. A prototype is a note that acts as a template; other notes, if they're assigned this note as their prototype, inherit its attribute values. Finally, an action is an attribute assignment that's performed automatically by a note on its sub-notes at the time they become its sub-notes (whether by being created within the note or by being moved into it) - a powerful feature, obviously, to be handled with care.
Agents -- To understand agents, you need to know about aliases. A Tinderbox alias is like an alias in the Finder; you make an alias of a note and put the alias anywhere, allowing the same note to be represented in multiple locations in the hierarchy (just as in the venerable outliner MORE).
An agent is a kind of query about all the notes in your document. Now, Tinderbox already has a Find feature; so how is an agent different? Well, an agent is itself just a note, one of whose attributes is its query. The way an agent note tells you what notes satisfy its query is that it is populated with sub-notes that are aliases of those notes. This notion of searching and gathering aliases is not completely original - MORE does it, for instance - but Tinderbox's queries are more powerful than MORE's, plus the whole thing is automatic and dynamic: Tinderbox is constantly perusing your document and updating what's gathered by every agent. For example, if an agent searches for all notes whose text contains the word "Aeschylus", then if you type the word "Aeschylus" in a note, an alias to that note will suddenly appear among the sub-notes of that agent. Agents thus provide automatic simultaneous alternate groupings of your notes to help you keep track of your material.
Miscellaneous Goodies -- This section lists various neat Tinderbox features I couldn't fit in elsewhere.
Storyspace, as I've long lamented, limits note names to 32 characters. Tinderbox lifts this limit, so notes can have meaningful names, and you can use outline view as a genuine outline.
Tinderbox remembers link names globally, so to assign a link a name you've used already, you just choose it from a pop-up menu (rather than having to remember and type the name manually each time, as in Storyspace). Agents can search on link names - for example, you can search for notes linked to by a "disagrees" link - which makes such names genuinely useful.
If a word in a note's text window has internal capitalization (likeThis), then if you Command-Option-click on that word, which is normally the signal to follow a hyperlink, but there is no hyperlink, Tinderbox will attempt to treat the word as a hyperlink anyway: if the word is the name of a note, Tinderbox jumps to that note; if not, Tinderbox offers to create a note by that name. (This implicit link behavior is borrowed from the world of WikiWikiWebs.)
A note can have a file associated with it; just drag the file to a text window's file icon. A menu item lets you open the file. Tinderbox can thus be used as an organizing interface to files on disk.
Sub-notes can be kept sorted, in accordance with criteria specified in the attributes of the note to which they belong.
A convenient new view, Explorer view, works like REALbasic's code browser: on the left, notes are listed in outline, chart, or map form; on the right is displayed the text of whatever note is selected on the left.
The Tinderbox file format is XML text, so it can be studied and changed programmatically or with a text editor. I found a use for this almost immediately: halfway through writing this review (using Tinderbox, of course) I changed my mind about what font I wanted to use in all my existing notes; I couldn't find a way to make the change easily within Tinderbox, so I did it in BBEdit with a single find-and-replace command.
Web Features -- Tinderbox also has a number of Internet-oriented features. For example, a link from text can now be a link to a Web page. And Tinderbox is itself a Web client: a note can have a URL attribute, and its text will then be the text of whatever is at that URL, downloaded on demand. However, Tinderbox isn't a browser, so if the text is HTML, Tinderbox can only either display the raw HTML or have your browser show the page.
Tinderbox can also download RSS news feeds. These are XML files in a standard format, typically listing news headlines with links to further information. They're popular chiefly because they're machine-parsable, so your computer can comb the Web each day for the headlines that interest you. When Tinderbox downloads such a file, it eliminates the XML markup and other extra information, leaving just the headlines and links. The links are live, meaning you can click one to view that page in your browser. For example, if a note has TidBITS's RSS feed as its URL attribute value, and if its auto-fetch attribute is turned on, then every time you open this Tinderbox document, Tinderbox will download the RSS and you can open the note's text window to see the headlines of, and links to, our latest articles.
You can also use Tinderbox to export notes as HTML using a template, an HTML text file with placeholders for elements that are to come from each note. Links from text in a note to another note are preserved as HTML hyperlinks; the hierarchical structure of the document is preserved; and you can specify navigational links to help the user move around that structure. The template mechanism is simple but surprisingly powerful; for example, you can construct conditional template elements. Furthermore, certain details about how any individual note will be exported are set through its attributes; so, for example, all notes could use a certain template by default, but particular notes could use a different template. The export for a note can include the export of its sub-notes. And of course a template can access any attribute of a note, thus combining the lightweight database and HTML export features.
How might you use the HTML export mechanism? To make Web sites, of course! The manual invites you, for example, to envision the possibilities of exporting an agent along with its sub-notes; if the agent's query is for notes created within the last two weeks, sorted by the date of their creation, you've got a weblog. (Several Tinderbox-generated sites in weblog form have already appeared, including Eastgate's own.) Plus, the mechanism can also do XML, so you could use it, for instance, to generate RSS files and contribute to the flow of syndicated news feeds.
Good Progress -- When I first looked at Tinderbox, it was at version 1.0 and ran only in Classic. It didn't take me long to encounter a laundry list of bugs or surprising behaviors; so I shelved the product for a while, and I'm glad I did. Tinderbox is now at version 1.2, it's carbonized to run natively under Mac OS X, and it has been greatly improved in many small but significant ways.
Some of the laundry list remains, though usability is not hampered in any major way. For example, when you change an agent's query using Quick Stamp or the Info window, the agent's search results don't update, which can be confusing. The content of certain windows leaps around; for example, if you try to scroll the Locate window, it suddenly scrolls back to the current selection. There are no commands to expand or collapse fully all of a note's sub-notes in outline view.
The manual isn't bad, but it appears to have been given minimal attention in the heat of development. Some features such as sorting, RSS, the Roadmap, and wiki-style hyperlinks are not documented at all; other features, such as links to specific text, are documented as if they existed when in fact they don't. This is unfortunate, since incorrect documentation impairs one's understanding and usage of the product.
An alias accesses the text and attributes of its original, but doesn't display its sub-notes; I see no reason for this limitation (contrast MORE, or the Finder). Also, I wish text export could be performed as styled text, not just plain text as happens now; that way, Tinderbox could become a real writing tool.
Concluding Remarks -- Tinderbox is, as I hope I've implied, an inspired piece of work. With its Web capabilities, outliner hierarchy, hyperlinks, lightweight database abilities, and snippet keeping, Tinderbox will surely have something to intrigue you. It's small, it's easy, it's fascinating, and it's cool. I strongly recommend that you download the demo and see for yourself. You may not understand the program fully at first, but keep experimenting; this is a powerful program with many uses, and the possibilities will start to dawn on you as you work with it.
Tinderbox costs $145. For the Mac OS X version, Eastgate recommends Jaguar. The Classic version needs 16 MB of RAM; Mac OS 9.0 and a recent version of CarbonLib are required, with Mac OS 9.2 recommended. The demo is a 2.7 MB download.
PayBITS: Did this review introduce you to software you might use?
Consider sending Matt a few bucks to show your appreciation!
Read more about PayBITS: <http://www.tidbits.com/paybits/>