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)


On May 30, 2004 04:39 PM Jonas M Luster said:

I see your point re: hashes vs. numbers. I guess I'll make it configurable by the user in the next version. As to the uniqueness of the numbers on appoe, they're unique across the board (not outside the site, though, which I might have to change - not sure, you're the expert :). The full number carries both the type (comment, posting, book, file), as well as the entry number (which won't change) and the location. That way, at least in this case, I think I have unique numbers across the site/ But maybe I am overlooking something - entirely possible, I am teh suck :)    (83Q)

On May 30, 2004 05:24 PM David Jones said:

With all this fuss, has anyone ever bothered looking at Joe Clark's serialization of his excellent book on accessibility? Take a look at the source. The man's well ahead of this recent fuss.    (83R)    (83S)

for the book    (83T)

On May 30, 2004 07:21 PM Chris said:

David: It's good that Joe's book puts id's on all the paragarphs, but what does it do for you? There's no immeidately available way to point to the paragraphs without first viewing the source or using some other method to make the id's viewable. Then you have to construct a URL.    (83X)

PurpleNumber systems take care of this for you: you can get the URL by clicking on an available and somewhat unobtrusive link and then use it. That's accessible.    (83Y)

On May 30, 2004 10:57 PM Danny said:

Go Purple Go!    (847)

Heh, how many more timebombs have you stashed away?    (848)

On May 31, 2004 06:30 AM Matthew A. Schneider said:

Joe Clark's serialization is PurpleSlurple [1] with the numbers hidden. Which as Chris points out requires a bit of work to discover/use. Also, FWIW it was implemented about nine months or so after PurpleSlurple. But who's counting.    (849)

Take a look at what Trevor F. Smith did for Cory Doctorow's "Eastern Standard Tribe"[2] and Lawrence Lessig's "Free Culture"[3] after stumbling across PurpleSlurple [4]    (84A)

I don't particularly like where Trevor has placed the numbers in his implementation of PurpleSlurple for "Free Culture", but I still find a lot of utility in the numbers. Particularly for long text. The "I find the PurpleNumbers distracting" argument has never made sense to me. Maybe those folks haven't encountered long technical documents. Also, the *sequential* numbers facilitate printing and discussing off line. This is also a good reason to have the number at the beginning of the paragraph, one can scan down the left margin instead of hunting around from end of paragraph to end of paragraph. PurpleNumbers implemented as NIDS don't easily facilitate the print/discuss process -- they're not sequential.    (84B)

Lots of the conversation that surrounds PurpleNumbers has to do with dynamic documents and how to ensure robust links after edits. Obviously important to the folks blogging this discussion. BUT there are million of STATIC documents on the Web that don't have PurpleNumbers. PurpleSlurple can create the granular links for these documents on the fly. Not very elegant, agreed. So maybe you'll like psAhoy [5] for QuotationInPart?. Also ugly. But, and this is important, it works.    (84C)

I personally like my PurpleSlurple positioning/color/numbers anchors. So much for taste. Ultimately this whole number vs hash vs start of paragraph vs end of paragraph vs shown vs hidden, etc., etc., is moot. It can all be tailored by the user using CSS. Which is as it should be. Also, I think very possibly that the use case dictates location/color/hash/etc. This has been discussed elsewhere, just wanted to add a bit to the history.    (84D)

[1] [2] [3] [4] [5]    (84E)

On May 31, 2004 06:51 AM Chris said:

Heh, how many more timebombs have you stashed away?  T    (84I)

Time bombs, huh? Which part would you say was a time bomb and how can I make it happen again?    (84J)

On May 31, 2004 12:53 PM Randy Brown said:

I implemented a simple Purple Numbers plugin for WordPress?. More to do... View it/get it here.    (84L)

On May 31, 2004 09:22 PM Joe Clark said:

Yes, the addition of id attributes was intended to be discoverable only upon viewing source. Hence, it's working as designed. It is, however, ridiculously simple to "construct a URL" from it.    (84T)

The whole project was something Antonio Cavedoni did for me. My idea, his implementation.    (84U)

HTML just is not equipped for the kind of thing we want to do-- link arbitrarily to anything. Everyone's approach is a hack, including mine. But life's too short, you know?    (84V)

On June 2, 2004 03:07 AM Laurian Gridinoc said:

"PurpleSlurple can create the granular links for these (STATIC) documents on the fly."    (85Q)

It would be interesting in finding a way to persist the binding of the PurpleNumber to the paragraph content when it is moved pparound, in dynamic documents this can be ensured by the publishing engine, how can this be made with PurpleSlurple?    (85R)

Have PurpleSlurple cache the document and compare it with the new retrieved version?    (85S)

On August 13, 2004 09:02 AM Phil F. Jackson said:

btw, ODP ( accepts atom links    (ND4)