November 14, 2005

Setting Prototypes

How do you make sure a Tinderbox note uses the right prototype? Tinderbox gives you lots of ways.

  1. Just set the prototype: You can always set the prototype from the popup prototype menu when you create a note.
  2. The same prototype: Often, you'll create a series of notes of the same type -- a series of references, perhaps, or a set of tasks, or a bunch of weblog posts. When you create a new note, Tinderbox guesses that you want the same prototype you used last time. So, often, you'll just get the right prototype.
  3. Let the container set the prototype. Often, a note's context determines what kind of note it is. A project contains tasks: if you add a note to a project, the project can go ahead and say, "This note is a task!" A weblog page contains posts; if you add a new item to a weblog page like this one, the page can say, "This note is a post!"
  4. Let an agent set the prototype. We might be able to write an agent that scans for patterns and adjusts the prototype appropriately. One agent, for example, might look for any Tasks that are due in less than a week, and make them into UrgentTasks.
  5. Let a stamp set the prototype. The stamp menu is very easy to customize, so it's easy to add frequently-needed declarations that say, "this note is an ImportantChore". Quickstamp can be handy, too -- especially if you need to reassign lots of notes to use a prototype you've just invented.
  6. Adornment actions are like stamps. You can add an adornment to a map that automatically sets prototypes (or applies time stamps -- or does any other action for that matter).

In many of my Tinderbox documents, I seldom set a prototype. Instead, the note figures out its prototype from its context, or its content.

This is important, because it's really important not to clutter note creation with difficult and time-consuming distractions. Early hypertext tools sometimes asked too many questions before you could add a note, and the result was that users evaded and avoided the questions by always replying, 'It's just a generic note.' If we can usually get the prototype right without intervention, and it's easy to change the prototype later, then the system doesn't get in the way. Prototypes save typing, and they also improve representation.