Glacial Erratics

Big Day for Purple Numbers

May 30, 2004

In the last 24 hours Tim Bray and Jonas M Luster have purpled their blogs. Tim at ongoing and Jonas at a preponderance of evidence. In the process they've both decided to not display the purple numbers themselves (the NIDs) but rather a '#' symbol. As I've been down this road to hashes and back again to numbers a little history may be in order.    (827)

(Update: I found a few more relevant postings. It really is a big day:    (82Z)

PurpleNumbers started as a way to provide granular addressability to content on the web. What this means is being able to point into a document directly to paragraphs or lists, or whatever else, with a high level of precision. This makes reference and citation much less fuzzy. One never needs to know which part of a document is the relevant piece, the URL takes you right to it.    (828)

Early but contemporary (purple is based on ideas in Doug Engelbart's Augment system) implementations of Purple Numbers for web content created numbers that are unique only in the current document (this is how Tim and Jonas have done things). Those implementations usually displayed the numbers. In part this was because it sort of made sense: we have a sequence of numbers, they indicate a certain structure, etc. In part this was because the documents thusly purpled had a strong chance of being printed, and seeing the number on the page was the best way to make reference to the content.    (829)

When EugeneEricKim and I created PurpleWiki we continued this trend. PurpleWiki gained a small but purposeful user base who used the numbers a lot. That was version 0.1. We got in the habit of calling the identifiers on each paragraph NIDs (for Node Identifier, at least that's what I think it means).    (82A)

For the next version I wanted to implement document independent NIDs. I felt this would provide us with more flexibility for the future when I hoped we would be saving PurpleWiki pages as series of Nodes, rather than as documents. Having document independent NIDs would allow content chunks to move from page to page without too much difficulty, and allow something I had always wanted: TransClusion.    (82B)

So we set about coming up with an identifier scheme. For reason lost to the mists of time (but probably in the PurpleWiki:MailingLists somewhere) we decided to use a 6 digit wide string of numerals and upper cases letters, with leading zeroes as necessary. Eugene and I felt then, as Tim and Jonas do now, that the numbers were distracting so we hid them under a '#'.    (82C)

At that time the NIDs were only being used for making reference to content, so using a right-click or ctrl-click combo to cut and past the URL and NID was all that was necessary: knowing the value of the NID was not.    (82D)

Soon after I implemented transclusion in the PurpleWiki libraries and was able, if I had a NID, to transclude content between my wiki pages and my blog.    (82E)

Somewhere in there, some of the users of PurpleWiki complained about the '#' because they were in the habit of printing WikiPages? and discussing them in person. The '#' was trouble when printing.    (82F)

And still around about the same time, a PurpleNumbers implementation for Zwiki made it clear that the six character wide NID was pretty much stupid: just increment as necessary instead.    (82G)

TransClusion in PurpleWiki is accomplished by using the NID in a special tag. To transclude the following I put '[t 7NY]' into my document for later display processing:    (82H)

The long term goal of TransClusion in PurpleWiki is to enable to direct granular quotation of content anywhere on the web, making citation sort of automatic. I have a working prototype of TransClusion amongst geographically disperse servers, but the current solution doesn't scale so there's more work to be done.  T    (82I)

(If you click on the purple T you will be taken to the source document.)    (82P)

The combination of smaller NIDs, needing to be able to talk about NIDs and print them, and needing the value for TransClusion pushed us back to displaying the NIDs. I was initially reluctant, but now am glad as it makes TransClusion somewhat more straightforward (it's still harder than it should be).    (82J)

With the setup Jonas and Tim are using in their blogs they cannot do Transclusion or have document independent NIDs. I wouldn't be surprised is they starting thinking about such things as they get used to having the numbers around. I'm extremely happy to see them using the granular addressing aspect of PurpleNumbers.    (82K)

One thing I've found very interesting in PurpleWiki development is what people imagine possible once they've had a glance at what's already been done. Eugene had created purple based on what he knew of Augment and some other similar tools. When he and I got together to do PurpleWiki, we were primarily shooting for granular addressability. Once we got that working, I started getting all jazzed about somehow, maybe, someday, being able to do TransClusion. Eugene was into the idea but I felt somehow that he didn't quite get it. Since then we've implemented TransClusion and new people have come along with ideas of things to do that I'm sure I don't quite get, but are probably a next step that will be great. A good example are the guys who have developed Perplog, a logging (creates purple numbered logs) IRC bot that allows TransClusion of content into the IRC channel. In my work group this has proven to be extremely powerful (our email archives, wiki pages, document repository and irc logs are all purple numbered so any time you need to remind someone of something, it is just a lookup and transclude away).    (82L)

For more info see:    (82M)

Sending...