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.
RichDraw, a VML/SVG Editor by Mark Finkle, turned into a shared whiteboard using the bookmarklet version of XSI. (Scaled-down YouTube video, full-size OGG [high quality, 3.2MB], full-size AVI [medium quality, 1.7MB])
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.
/** * Make an element and its subtree synchronized across an IM session. * Argument can be an ID or a DOMElement. * */ initIsland(element);
Talk about doing more with less…
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.
Chessboard is written from scratch using XSI as a library. The only actual code is the drag and drop handler and little else. (Scaled-down YouTube video, full-size OGG [high quality, 4.3MB], full-size AVI [medium quality, 2.6MB])
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!