It does not happen often that I find my jaw dropping in amazement on the floor and staying there. I also do not expect, should it really have to happen, that it be related to something I myself started, and which I can delude myself into believing that I know what it can do and where it is headed.
Well, reality strikes. This time, it’s been thanks to dfd.
Some weeks ago, dfd got his feet wet in the field of real-time collaborative applications by writing Tratto, a simple shared whiteboard based on XUL and SVG.
Then one day as he and Ripley were chatting, their incurable geeky nature took over. They wondered: “wouldn’t it be neat if synchronization and sharing were taken care of once for all and stuffed into a nice little module, with an easy interface?” The idea of XML Sync Islands was born.
Talking ensued. A few mornings ago, dfd sat down and started to code a proof of concept. That day I logged on to Jabber a few times, and he repeatedly greeted me with satanic laughs. At the end of the day, I understood why.
XML Sync Islands allow to share a portion of the DOM (XHTML, XUL, SVG) among users over an IM session carried by SamePlace and xmpp4moz, transparently, in real-time. Its complete API reference is:
* Make an element and its subtree synchronized across an IM session.
* Argument can be an ID or a DOMElement.
Talk about doing more with less…
It can be used in two ways: as a library, to build a shared application from the ground up, or as a bookmarklet, to share parts of existing, innocent, unknowing web pages.
Although it is still a proof of concept (e.g. there is no handling of collisions), it can already be put to good use, as shown by the screencasts.
Preliminary documentation about XML Sync Islands is available on the wiki.
Head over to the forum and let us know what you think about this!