XMPP in the browser

Following my post on XMPP yesterday, one comment by Steven Kryskalla raised the point of the Mozilla extension: xmpp4moz. This extension is indeed an excellent showcase of what I wish could see more in the browser. However, while I knew about that extension I chose not to discuss about it as I wanted to stress over the need of a standard XMPP API, built-into browsers. This would imply a discussion shared by all the browser vendors and I thought inducing that Mozilla was already there could have disrupted the message. That being said xmpp4moz is a great piece of work and would definitely be an appropriate ground for more discussion.

What I think xmpp4moz does right is to use E4X to represent XMPP stanzas rather than providing its own datamodel. That means that the API stays quite at a low level but also means it’s much quicker to grasp and more flexible.

I think ultimately what I’d like to see is a standard API that allows me from Javascript to do XMPP connection, authentication, session and binding. Then provide a nice interface to register handlers for given stanzas. By standard API I obviously meant that the same Javascript works the same way in any browser. Yeah I’m demanding like that.

Why Javascript? Two reasons that I can think of:

  • The Ajax crazy party has pushed dramatically the competition across Javascript supporters and proved it was a valid and solid solution all along.
  • Javascript is now the programing language with the best support inside browsers, no point going for something different.

Overall, considering how small XMPP-core is, I don’t believe this is an impossible goal. The guys behind xmpp4moz have demonstrated it. What is tough with XMPP is not to provide support for the core but to start supporting its myriad of extensions that make the protocol so rich. But if people don’t even have an access to the core they won’t be able to build applications at all.

2 thoughts on “XMPP in the browser”

  1. Is it possible to produce a proxy server that would use XMPP or Jabber protocols and provide the browser (say IE or FF) as a server fot HTTP , SOCKS etc ?

Comments are closed.