As usual, when you think of something these days, someone else is probably hard at work implementing it. A few days ago, I mused about Wikialong and its (admittedly kludgy) approach to page annotation - it uses a XUL sidebar to display a Wiki where users add comments to the page being viewed.
Now, this is both neat and bad, because:
- It is simple, but perhaps too simple - I don't really think a Wiki is the right way to do page annotations - things get messy very quickly.
- Even in its Wiki incarnation, it badly needs a CSS makeover. Making the sidebar work like Tiddlywiki would also help with the clutter, methinks.
- It is Mozilla-only, which limits its usefulness. Badly.
My idea at the time was that doing a cross-browser JavaScript that used XMLHttpRequest would be a better way. Besides using a different GUI (say, a semi-hidden tab on the top left corner that expanded when clicked), you could then use Greasemonkey to run it on Mozilla, and it would be easier to adapt for other browsers (like Safari) that have similar extensions.
Well, fortunately it seems that Simon is doing something along those lines, using Ruby on Rails for a local annotation server that then exports the annotations as a feed.
(Don't go rushing in just yet, he's still coding it. Have patience.)
Upon reading this, my mind turned to Rael and Aaron's Peerkat, which is still stuck in the RSS 1.0 days. The "real" web page for it is missing, but it is essentially a P2P aggregator that let you pick feed items, annotate them and re-publish a "mix" feed.
The idea was great, but a bit too advanced for its time. Way back then, I had thought of tacking on a Gnutella-like protocol to it - enabling it to work across firewalls - but, as usual, I never got around to doing any of it (at the time I wasn't familiar with Python, which didn't help either).
I've always wondered why people never put Gnutella (or other P2P protocols) to good use in this sort of lightweight scenario, instead of wasting everybody's time and bandwidth with bulky media files.
So, here's my concept of the thing:
- A browser-independent server/proxy/user script/whatever that adds a widget on the top left-hand corner of pages.
- When clicked, that unobtrusive widget expands TiddlyWiki-style into the annotation interface, overlayed on top of the current page
- Annotations are then edited and positioned on the page (anchored to specific tags?) and their data is stored on the (preferrably local) server via XMLHttpRequest.
- The server can keep track of other servers (via Rendezvous or the aforesaid Gnutella-like protocol) and publish an annotation feed, or a specific subset - I can see a need for "public" and "private" data here, and since tagging is the thing du jour in web applications, the "let's tag everything" crowd will most assuredly want more types of classification.
- Fully cross-platform, of course. Ruby might be a nice way to implement this sort of thing, but all of the pieces required already exist as Python modules.
Of course, someone will want a central server to keep track of all this, XML-RPC superglue, Atom feeds, etc. But if it's done right, the only point of having a central server for this is turning it into a commercial service (which, of course, someone, somewhere must have thought of already).
But none of it is the actual point - my real point, in a nutshell, is that we need collaboration tools, and we might as well do them using Gmail-like interfaces and all that P2P know-how that is being wasted carting MP3s around.