ProcessOne Wave Server: ejabberd extension video
Posted by Mickaël Rémond on September 10, 2009Here is a video showing how our Google Wave implementation works along with our XMPP server ejabberd.
Google Wave protocol is a new real-time collaboration protocol that plays nicely with XMPP (eXtensible Messaging and Presence Protocol) for federation.
Google Wave client-to-server protocol usually runs as raw Google's protocol buffer. To make it useable from an XMPP client, we needed to use protocol buffer on top of XMPP, largely inspired by Google Wave federation protocol description.
This short video demonstrates an XMPP client and server interaction for an XMPP client (using Tkabber client).
Here we have a local ejabberd server, running the Wave service from ProcessOne. On the first client, we create the wavelet, and on the second client we join the wavelet and edit it.
This is just a small video showing the most basic feature of Wave: collaborative real-time editing of a text document.
We will publish more advancement of our work on Wave in the future.
Categories: Jabber / XMPP ejabberd
Share article:
Tweet this
Make delicious
Stumble upon
Comments
It looks greate. Good work guys. Show some distributed features, start 3 ejabbers serving independend domain. Why you are using Google’s protocol for client 2 server communication? How about using just some simple XML protocol? I think Google is using protobuffers only because of performance. I know that performance is important, but protobuffers doesn’t fit nicely into XMPP , and there are no such much support of parsing them in many languages.
Have you implemented protobuffers into erlang? I was going to write it, but it looks that you already done this?
Posted by Witold Baryluk on 10 Sep 2009 at 15:48We are using XMPP for client to server protocol (as you see we are using an XMPP client).
And yes, one of the things you need to support is protocol buffer from Google.
If you made edits to the Wave simultaneously (e.g., type on two computers running TKabber) is the result corrected for consistency? I’m wonder, where does the operational transformation algorithm live in Wave. Is that something you have implemented or need to implement?
Posted by John Doe on 10 Sep 2009 at 17:19We have implemented the transformation algorithm proposed by Google in the Wave protocol, which includes the needed rules to merge simultaneous changes.
Posted by Mickaël Rémond on 10 Sep 2009 at 17:24When we can (and can we) wait for ejabberd extension sourcecode?
Posted by x-demon on 10 Sep 2009 at 17:42We do not know yet what will be done with the Wave server.
Posted by Mickaël Rémond on 10 Sep 2009 at 18:08Hi Mickaël,
Most impressive demo. Nice to see a Wave client with the realtime communication.
/daniel
Posted by Daniel Graversen on 10 Sep 2009 at 20:04Interesting! The Wave landscape is hotting up!
Witold, there is an implementation of Protocol Buffers in Erlang: http://github.com/ngerakines/erlang_protobuffs/tree/master that I used for my Wave client: http://21ccw.blogspot.com/2009/08/my-google-wave-client.html. It does require a bit of modification of the .proto files.
Posted by Benjamin Nortier on 10 Sep 2009 at 21:04Mickaël -
Very impressive work!
I’m curious. There are two ways to implement the OT algorithms:
#1: both on the client and in the server.
#2: on the server only, with the client acting very ‘dumb’ and just sending characters. This is the way the FedOne server operates.
Which did you choose here? I assume that if it was #1 that you also had to implement OT algorithms in TCL in the client?
Cheers,
- Bill
P.S. Very, very interested in a public release of the ejabberd Wave server :-). If you’re interested, I did a presentation on Wave for the “St. Louis, Missouri Wave Hackfest”. That can be seen here: http://blip.tv/file/2519604
Posted by William J. Edney on 11 Sep 2009 at 02:12Hi Mickaël,
Well done, the Google Wave team is excited to see your progress on both an alternative implementation of a wave server and a client. It would be very cool to see some interop with FedOne at some point :)
As for using protobufs - they are needed mostly as a canonical format to be cryptographically signed and shared between servers (for further discussion on this choice please see http://groups.google.com/group/wave-protocol). If the demo’d clients speak a dialect of the FedOne client/server protocol, they does not necessarily have to use protobufs.
Happy waving,
Jochen
The conflicts resolution is fully handled by the server and by the client with slightly different rules. They must end up with the same state if rules are correct.
Posted by Mickaël Rémond on 14 Sep 2009 at 16:17Impressive demo for a google wave extension. Quite detailed enough to introduce such new application. Good job and thanks for sharing.
Posted by Eldon Schneider on 14 Jan 2010 at 17:27
Add comment

Stay Informed
Subscribe to our RSS feed or follow us on Twitter to receive alerts when we post new news stories and blogs.
Subscribe to ProcessOne RSS feed
Follow ProcessOne on Twitter
Follow Mickaël on Twitter
Search our blogs
To make it easier for you to find blogs on topics that you are interested in, we have grouped them into categories depending on the different themes addressed in each blog. Categories include:
ProcessOne
Jabber / XMPP
ejabberd
Erlang
CEAN
Information Technology
Misc
Tsung
French
Mozilla
Employment opportunities
IMtrends
All categories
Become a ProcessOne partner
Find out about the benefits of joining ProcessOne’s partnership programme.
Click here
Our products and services
We offer packaged solutions comprising all of the server-side and client-side technology necessary to create valuable new instant messaging applications. In addition, we offer a range of services for delivering customised solutions.
Click here for full details