Tell Me a Storyspace
Ten years ago, just two applications embodied for me the prospect of all that was brave and new about the blossoming Macintosh age: Apple’s HyperCard and Eastgate Systems’ Storyspace. HyperCard let me program little interactive worlds, where I or some other user could push buttons, and read or enter text; it was a superb teaching tool. But, despite its name, one thing that HyperCard wasn’t very good at was hypertext. Hypertext! How the idea resonated in my brain, with echoes of Engelbart and Nelson, of Xerox PARC and Xanadu! Text within text within pictures within text, the sum of all knowledge linked mysteriously together ten thousand ways, an ever-unfolding path of discovery opening to the click of a mouse! And Storyspace was all about hypertext.
Storyspace was the subject of the first review I ever wrote for TidBITS back in 1991. Subsequently I used it to create various online hypertext documents, including a presentation of the Ancient Greek verb, a commentary on some Plato text with an embedded Greek grammar, and a manual for SuperPaint.
Nevertheless, Storyspace quickly languished on my Mac. Other ways of storing and retrieving information, mostly outliners and databases and mixtures of the two, took precedence. The rise of HTML and the World Wide Web made hypertext commonplace instead of a curiosity, for which no special software was needed except a browser. Now Storyspace is back with version 2, fully rewritten, with a better interface, a better manual, and with use of current technologies such as drag & drop and contextual menus. It’s time for another look.
Once Upon a Time — A Storyspace document is a container for text snippets. Text can be styled, and there is enough arrow-key navigation to make Storyspace a competent, though primitive, editing environment. You can also import existing styled-text documents, and they can be "busted" into smaller snippets afterwards – at every carriage return, for example. A snippet can include pictures. It can also include references to QuickTime movies, and can have a sound attached to it (but see the bug list later on).
Every snippet has a name, as distinct from the actual text constituting the snippet. The name cannot be styled, it must be shorter than 32 characters, and it helps if it’s unique, though this isn’t required.
Storyspace arranges your text snippets in a hierarchy – that is, some snippets can be at the top level, and some snippets can be subordinate to other snippets. When viewing the hierarchy, you see the names of snippets; you can drag a name to rearrange the hierarchy, or double-click it to reveal the snippet’s text.
You get not one, not two, but four different ways of viewing the snippet hierarchy:
As an outline. The names of the snippets are the lines of the outline; snippets with subordinate snippets have a discovery triangle to their left, to show or hide them, and there is basic arrow-key navigation.
As a chart. This looks like a genealogical diagram turned sideways. The top-level snippet names form a column at the left. If a snippet has sub-snippets, they are listed to its right, and linked to it with lines. (I would have called this a tree, but that term is otherwise engaged; see below.)
As a map. Snippets are portrayed as small rectangles of fixed size with their names at the top. Map view works rather like the Mac OS X Finder’s icon view. The rectangles represent the snippets at a single level. If you select a rectangle and press the down-arrow key, the rectangle zooms to occupy the whole window, and now you’re looking at the snippets subordinate to it; pressing the up-arrow key lets you zoom back up.
As a treemap. This is like a map in the sense that snippets are shown as rectangles with their names at the top, and in that you can zoom a snippet to dive into it, so that it occupies the whole window. The difference is that you’re shown all snippets at all levels below wherever you are. There are no scrollbars; the snippets resize themselves so that they all fit evenly in the window.
You don’t change hierarchy views in a single window; rather, you open a new view window of the desired type (e.g. "New Outline View"). You can have as many view windows open as you like. Each view window offers a contextual menu listing all its snippets and letting you select one. A separate window, the Locate window, lists all snippets alphabetically and lets you open a new view on a snippet. So you will almost certainly be able to peer into, and rearrange, all parts of your document in whatever way you find helpful. I should add that when you rearrange the hierarchy in one view window, the contents of all other view windows change to reflect the new arrangement; perhaps I shouldn’t be impressed by this, but I found it so cool that I played around with it for hours.
The great weakness of Storyspace’s hierarchical organization is the snippet naming scheme. Sticking to 32 characters is a severe restriction – nowhere near enough to give a snippet an informative name. In a document of any size at all, it becomes impossible to identify your snippets by name alone. Yet there are many contexts where that’s exactly what you have to do.
The Journey — Your document has a second level of organization, which comes from hypertext links. A link may emanate from a snippet as a whole, from a particular stretch of text in a snippet, or from a rectangular region of an image. The link may lead to another snippet as a whole or to a particular stretch of its text. Links are very easy to create: if both snippets are visible, and the link is to a snippet as a whole, you select the source, choose Create Link, and click the destination. Otherwise, you link from the source to a floating palette called the Tunnel, and then complete the link from the Tunnel to the destination.
Navigating links is equally simple: basically, you Command-Option-click the source of a link, and the text of its destination snippet opens. Having visited a snippet by way of a link, you can always return to the source snippet. Plus, Storyspace maintains a browser-like history of visited snippets that you can traverse or view.
So far, this sounds like a Web browser; but the interesting part, transcending the Web’s capabilities, is what happens when there’s more than one link. If several links emanate from a clicked stretch of text, a dialog appears listing the target snippets, letting you choose a link to follow. If several links emanate from the snippet as a whole, then these links are prioritized, and the highest-priority link is followed that doesn’t have a "guard field" to prevent its being followed. A guard field is a brief filter letting you impose some simple requirements, such as that particular text be selected, or that a particular snippet has been visited or not visited before this link will be traversed. Obviously, this is valuable in constructing documents that have a measure of interactivity and even unpredictability.
Aside from following links in this automatic way, there are three other means for working with links:
Optionally, a link can have a name. The Paths window lists all link names, and then lists all snippets at either end of any link with a particular name; and from here, of course, you can open a snippet’s text. I’ve always found it disappointing that this feature plays no role in the automatic traversal of links. For example, there’s no rule that you’ll leave a snippet by a link with the same name as the one you came in on, so there is no way to follow a Path automatically as a means of browsing a document.
Another approach is to choose Browse Links, which brings up a window listing all the links emanating from the current snippet. This window is also where you change a link’s name and guard field, and its priority (by changing its position in the list).
The Roadmap window lists the snippets that are sources of links leading into the current snippet, and the snippets that are destinations of links leading out of the current snippet. The Roadmap also shows you the current snippet’s text. Plus, you can double-click a snippet in either list to make it the current snippet – and what’s more, you’re allowed to open multiple Roadmap windows! Obviously this is a powerful link-based way to inspect the document.
The chief weakness of Storyspace’s link organization is its treatment of links whose destination is a particular stretch of text. There are two problems. First, when you follow a link to a stretch of text, that stretch is not selected, so you get no indication of what’s relevant about the destination text. Second, looking at a stretch of text, there is no way to learn that a link leads into it; this makes your document very difficult to maintain and renders the feature both unpredictable and largely meaningless.
The Key — A snippet can have any number of keywords associated with it. This is useful primarily in the Find window, where you can find snippets by whether they contain certain text, by whether they have a certain keyword, or both. Unfortunately, you cannot do searches more complex than that – for example, you can’t find snippets that have two given keywords.
The other use of keywords is in connection with following links automatically. There are two "magic" keywords, such that when navigating into a snippet that has one of them, an unvisited sub-snippet of that snippet will appear instead; there is another magic keyword that clears the history list, thus causing all snippets to count as unvisited. I must say that I consider this secondary use of keywords confusing and unnecessary; I appreciate that there is a useful distinction to be drawn between a guard field attached to a link and a guard field attached to a snippet, but I can’t believe that the keyword feature must be misappropriated in order to implement this distinction.
The Great Escape — You can work with a Storyspace document on your own, as a way of storing and retrieving information; but what if you want to share this information with others? Eastgate provides three ways to do this.
The first way is to give your recipient a copy of the Storyspace Reader application; this freely distributable application can open your document, and resembles Storyspace itself, bereft of any capacity to edit or save. You get quite a bit of control over how simplified a version of the interface the user will see. For example, you can eliminate view windows, encouraging the reader to navigate the document through links, and you can dictate whether navigating a link closes the source snippet. You also get to choose which of two toolbars the user will see. One toolbar permits free navigation of the hierarchy (go to the next sibling of this snippet, the first sub-snippet of this snippet, and so forth). The other requires that all navigation be done either by clicking within snippets or by typing words; the typed words function like selected text for purposes of guard fields. (That’s how you navigate my Greek Verb Paradigm document; if you’re looking at the Present Active Indicative, you can type "passive" and presto, you’re looking at the Present Passive Indicative.)
The Reader interface has improved greatly from earlier versions, in that the user has access to most of the menu items from Storyspace itself. So, for example, you can do a Find to search on text or a keyword, you can work with the Roadmap, and you can open the Paths window, which makes these features useful in a way they weren’t before. On the other hand, perhaps the user has a bit too much power: for example, you can rename links using the Paths window (though this change can’t be saved), and you can clear the History list (which can be saved).
Finally, you can export as text. Styles and pictures are lost, but if you are using Storyspace merely as a writing tool, this may be acceptable. You can export all snippets, the current snippet and its sub-snippets, or all snippets belonging to a Path. Template files enable you to customize the export slightly; for example, you can insert a separator between snippets. That’s how I wrote this review; I created it in Storyspace, and exported it to Nisus Writer later.
The Final Chapter — There’s no doubt that this is a vastly improved Storyspace: the interface is both simpler and more powerful, and so it’s far easier to use. I particularly like the fact that windows – the list of all snippets, the Find dialog, the link browser, and so forth – are now all ordinary windows, without anything being modal. Also, any place a snippet is listed, that listing is the snippet, and you can do with it whatever you would do with the snippet in a view window. For example, when you do a text search, you can drag a snippet from the resulting list into a view window as a way of rearranging snippets. (Oddly, the Paths list is an exception.)
The manual has also been completely rewritten, and is presented as very nice PDF – and for me to call a PDF "nice" means it must be very nice indeed. It’s not perfect, but it’s darned good.
On the other hand, there are a lot of small interface glitches. Storyspace makes file dialogs, and my menubar clock, appear in unexpected fonts. The cursor doesn’t change in customary useful ways: for example, when you’re editing text, the cursor is an arrow, not an insertion point. Sometimes a text window goes off into never-never-land: asking to open the window pushes all other windows to the background, but nothing appears. Every once in a while a text window updates incorrectly, becoming illegible. The buttons and scrollbar at the bottom of a text window gradually sink behind the window border every time you save, eventually becoming inaccessible. Some dialogs have slightly misplaced elements, such as checkboxes that overlap. The QuickTime movie feature is more or less unusable, because the movie is difficult to select and play, and tends to vanish unpredictably. The sound recording feature is of poor quality; I presume that this is because a low sampling rate is used to keep the sound small, but it would be more polite to give the user a choice. The dialog where you create a new snippet is misleadingly called Rename. Some preference settings don’t always work; for example, I set all new snippets to be created with the New York font, but they used Charcoal instead. In map view, snippet names are slightly larger at 100 percent magnification than at 200 percent, and your magnification setting is not saved with the document. In the Choose a Link dialog, line highlighting is broken. When you delete a link that emanates from text, the text coloring that indicates the presence of the link doesn’t go away, and may even grow mysteriously to overwhelm lots of irrelevant text. I realize that some bugs are inevitable, but I would hope to see many of these issues addressed in bug fix updates soon.
Serious hypertext is intriguing, cutting-edge stuff; Eastgate Systems has created a home for authors of such hypertexts, and they even sell original fiction and non-fiction works in Storyspace format. For those searching for truly interesting ways to work with text, whether for personal use or for eventual distribution, Storyspace is definitely worth a look. At the very least, I recommend playing with the demo version and reading through the user stories Eastgate has collected from people in far-ranging fields. You might decide that Storyspace is just what you need.
Storyspace costs $300, or $100 to upgrade from an earlier version. It requires a PowerPC-based Mac running System 7.5 or later. A 3 MB demo version is available for download. There is also a Windows version.