|Up: About Ftrain.com||[Related] «^» «T»|
Monday, June 11, 2001
By Paul Ford
A guide for the perplexed
Today is a fine day to explain the structure and navigation of Ftrain.com, which some people have described as “crack-addled.”
I admit Ftrain's navigation is not as easy, as, say, pie, but there is a method behind the confusion. So unfasten your seatbelts, get a lot of coffee, and prop open your sleepy eyes with toothpicks, because we're in for one high-powered technical sojourn.
Ftrain is arranged in a giant tree. Today it has close to 600 nodes (trees have leaves, but data trees have nodes). Some of those nodes contain other nodes. Here's what Ftrain.com might look like, if you were insane:
You see the root node, on the far left? That root node has 3 child nodes, a, b, and c. Like a book with three chapters. In the graphic above, the parent-child relationship is shown in blue lines. Now, this also makes a, b, and c "siblings" of one another - they have the same space in the hierarchy. So the sibling relationships is shown with red lines.
Because this is the Web, not paper, we're allowed infinite hierarchy. So a might have e, f, g as its children, and they might have their own children, and so on, forever.
This raises a lot of issues, like how to "inherit" qualities of the top-level tree, and how to provide alternative views of the hierarchy, and most importantly, how to let readers traverse the tree, moving from node to node like feral node-monkeys, and pulling out a sensible reading experience.
Here's my solution, for now: when you're reading Ftrain and you see a link in bold, that link is to a child section relative to the document you're reading right now. There are two kinds of sections, inline sections and independent sections. Inline Sections occur inside of paragraphs and are represented simply as blue links.
The thing is, whether a section is inline or independent, it is still a child of its parent node. So the last two links both point to children of this current node, the node you're reading. How they're displayed is a result of their context.
I know that last paragraph is inexcusably confusing, but it speaks the truth. There's no analogy to anything in the print world to make the concept much easier.
The goal of Ftrain is to have only inline links, so that the entire site is a coherent, layered narrative, but it takes a long time to write good contextual prose around sub-sections, so most of the links are currently independent.
I want to explore the narrative possibilities of such hierarchies. Cross-linked hierarchies have some interesting properties - they can represent knowledge in a variety of ways. The structure of Ftrain, in fact, is closer to the structure of a text-based computer game's "memory" or a MUD than it is to a novel or book of stories, although it's a lot like the structure of a novel as well. Hierarchical nodes, for instance, can easily become decision trees, if you chose to ignore the "Next" and "Previous" link info. I can use the same framework to ask a question like Do you like dirty stories?, and have you traverse a pseudo-decision tree to come up with an answer.
Links which appear in un-bolded blue are cross-references to a node in another part of a hierarchy, like this one: Photos from a Day in Jerusalem. That link will take you somewhere else on the site, out of the current context and into a new one. And links to external web sites, like www.hoopla.com, are underlined.
Most everything else, like the "Last 10" links on the left, is fairly obvious. The very top of the navigation on the left, right below the picture, tells you where you are in the hierarchy, drawing a line between your current node and the root node and telling you all the stops along the way.
One thing that may not make sense is how the "Next" and "Previous" links work.
When you see a link to a Next or Previous, that means you're linking to a sibling element at the same level in the hierarchy. Think of a book, which contains volumes. The volumes contain chapters. The siblings of a volume are the other volumes, so the "Next" node at the "volume" level is another volume. Reading a chapter, the next item would be another chapter, and when you reached the last chapter in a volume, you'd hit a kind of "wall"; you'd need to go up a level and over to the next volume.
So on Ftrain, the Next and Previous point you to items at the same level in the hierarchy, relative to their siblings. There's nothing like "volumes" or "chapters" because every section is independent, can live anywhere in the hierarchy, and can have infinite children. Plus, it can be moved at any time to another part of the hierarchy (and because links are permanent, nothing breaks; everything just shimmers and transforms a bit).
Why is it all so hard and complex? Because I don't want to bow to the hierarchy. And eventually I want to layer all manner of other functions in here. I want to have textual characters who wander through the narrative, speaking to you in little boxes. I want you to be able to "pick up" and carry items around the site with you, like in an adventure game, except here, instead of needing a "red emerald key" to get into the dragon's lair, you might need a "sense of ennui" to get into the club in Soho.
For Ftrain, there's one “default” hierarchy, but thousands of possible “maps” of content. Think of the XML document as a filesystem crossed with a database: I can either preserve the "hierarchy" or I can flatten it, sort by date, sort by character, change the sequence, etc. So there's one basic way that it's organized, which is analogous to a file-folders metaphor, but because of the database properties I can do anything with it according to its structure, as long as the information is tagged somewhere.
Basically, structure and content are married only if I want them to be; it's really easy to divorce them to create other views, or other structures. The content is the map.
The primary goal of Ftrain.com, the goal which all other goals serve, is to make the site fully conscious and self-aware by 2051. Conservative estimates place computer power as equaling brainpower by then, and after 10,000 nodes (200 a year for 50 years), there should be enough inside the site for it to come to its own conclusions. I will return to this topic at a future date.
You know, that's all I have to say, and it's bedtime, and I have this terrible suspicion that I haven't solved the problem of explaing what the hell's going on. However, I did rewrite the Ftrain code to be 234 lines, instead of 700, and it now spits out the whole site in 10 seconds instead of a full hour. Which means updating is far less painful. So perhaps I'll revisit the topic at some point, and lose even more readers along the way.
1Context and Web-memory
This is a summary of my technical background, and if you don't care about things like databases and XML, skip it.
Monday, June 11, 2001
Independent sections show up on their own lines, indented, with their blurbs printed right below.
Sunday, June 11, 2000