Tag Archives: xmpp

XTech

I am amiss in not mentioning XTech sooner. In a few days, I’ll be there to speak about XMPP, enabling real-time and user-to-user communication in the browser, and how that changes the rules.

Last year saw a fantastic line-up of speakers talk about Mozilla-related technologies. I stopped counting at around ten! This years there will be, uhm, me. Timing isn’t my strongest point.

If you are in Paris around May 15-21 and would like to meet up for a drink and chat about web technologies, functional programming, and the other things we do when we should be getting some sleep instead, please drop me a line. See you there!

XML Sync Islands – Let the web sharing begin!

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.

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.
 *
 */

initIsland(element);

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.

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!

SamePlace 0.6.0rc1 available

The first release candidate of the SamePlace Suite 0.6.0 is available.

Downloads

Update: see here for current packages.

What’s new for users

  • experimental Thunderbird 2.0b2 integration
  • accounts can be configured to auto-connect at startup
  • contact input field with auto-completion
  • hotkey (Alt+N) to switch to next conversation with unread messages
  • sending and displaying typing events
  • hotkeys for text styles (Control+B, Control+I, Control+U)
  • different colors for nicknames in groupchats

What’s new for developers

  • revised presence cache policy: keeping presences from contacts also when unavailable, and outgoing MUC presences; removing incoming MUC presences when leaving room
  • when connecting remote application to MUC, application receives occupants’ presences
  • replaced JavaScript XML parser with internal Mozilla DOM parser
  • made logging optional and disabled by default; set xmpp.logTargets to “console” to enable it

Special thanks to…

  • dfd, who replaced half the nitrogen in the air he breathes with JavaScript and gave me quite a hard time in keeping up with his patches.
  • intinig, whose heroic, relentless, altruistic… nagging helped shape many features. Giovanni, users shall love you. (Me, I am going to write a plugin that deletes sentences from you beginning with “I’d like” for a while!)
  • Giuseppe Adessi, who contributed code for Thunderbird integration.
  • Sten, who patiently gave copious feedback that eventually led to fixing the infamous bug #20.

SamePlace: a taste of things to come

SamePlace is (quite more than) an Instant Messaging client, developed with XUL on the Mozilla platform.

Since its first release one year ago, when it was a simple Firefox client with a not-so-slight twist (it provided virtual presence with other visitors of the page one was visiting), it has gained many features, some of which pretty unique, and also found a comfortable second home in Thunderbird.

Yet more goodies are coming from the development branch. Below, a short screencast of two recent additions: contact auto-completion and a stand-alone user interface.

Full size videos: OGG High Quality, AVI Medium Quality

For more information about SamePlace and xmpp4moz, see the wiki and join the mailing list.

SamePlace: what now?

Some have asked what the next steps for xmpp4moz and SamePlace are going to be. Here are some things that will receive energy and attention in the coming weeks:

  • An alpha of TabShare will be released shortly. TabShare will allow sharing a tab with a contact or a chat room for co-browsing.
  • A standalone version of SamePlace is in the works. For an idea of what it will look like… (skin, pardon, feathers adapted from Songbird):


Of course, if you’d like to suggest other directions, feel free to share your ideas on the forum!