Tuesday, September 01, 2009

Google WAVE & XMPP.

by Peter Neubauer
Google Wave - concurrent document editing on steroids
Google Wave is introducing a concept where a central XML document (the Wave), reflecting the total of a conversation, is simultaneously edited by several participants (via XMPP clients) of the conversation at the same time. While the incremental changes are sent to the XMPP Google Wave server for merging into the central Wave, they are at the same time even sent to the other online clients in the Roster of the current conversation just as chat messages, creating the real-time response impression of the Google Wave experience. However, these packages do not contain simple chat but actual machine-data interpreted by special Google Wave clients in e.g. JavaScript (see the Wave Protocol).Google Wave even supports extensions to its functionality, see this blog post which means that a lot of the infrastructure can be used to e.g. support new functionality and data packets.gwaveGoogle Wave setup
Social Computing or Let the bots talk! | Jayway Team Blog - Sharing Experience


What is XMPP?

XMPP is an XML instant messaging protocol that was developed by the Jabber foundation, as a reaction to the closed protocols of ICQ, Microsoft Messenger etc etc. It is based on the concepts of


  • server side contact lists (Roster in XMPP terminology)
  • open XML streams between the XMPP server and any connected client once the connection is established
  • every connected XMPP client gets a unique ID (e.g.
    "neubauer.peter@gmail.com/phone1/xyz") under the common XMPP "bare" ID
    (neubauer.peter@gmail.com) and is uniquely addressable by XMPP packets.
    This can be used in situations where there is no direct IP number
    available or it is changing (e.g. mobile devices), making any
    Internet-connected device addressable as a potential server, with a
    constant address over time and space - an URI.
  • extensible payloads of XML packets as defined by the XMPP Specification, the most important reflecting the 3 paradigms of asynchronous communication, and supported by all major XMPP servers
    • broadcast ("<presence>")
    • one-to-one or one-to-many ("<message>")
    • request/response with acknowledgement ("<iq>"), similar to the HTTP protocol

  • handling of status, presence of resources and routing of messages to the right receivers by the XMPP servers
  • from the beginning built to scale for the Internet with distributed infrastructure, as explained in this blog post
  • large existing XMPP networks to tap into (GoogleTalk, iChat,
    Facebook Connect, holding part of your existing social graph in the
    contact lists) and open XMPP servers to set up your own XMPP network
  • SSL support built into the base specification, distributed
    server-to-server communication even between XMPP networks like
    GoogleTalk and iChat.
Blogged with the Flock Browser

No comments: