DreamHost Web Hosting -






Welcome to my Jabber Client Design "How To"

What is Jabber?

It is out of the scope of this document to go into the details on exactly what Jabber is, but I will say that it is very cool.  If you don't already know what Jabber is, then you are probably lost.  I would strongly encourage you to check out some of the very good Jabber websites like, JabberCentral, and

Purpose of this document

The reason I am writing this document, is that there seems to be many resources on how to code a Jabber client, but no one has ever actually bothered to document what a Jabber client should look like, or how it should behave.  Unfortunately, most of the Jabber clients I have seen, have a poor user interface and are clumsy to use, and leave the user feeling like they should go back to their old propriety Instant Messaging software that they are already familiar with.

This is not so bad, because Jabber is a relatively young product, and since it is completely open, anyone is free to write a client that behaves exactly how they wish.  Even better than that, there are many open sourced clients out there that you can modify so you don't have to start from scratch.

This document does not contain any detailed information on programming, coding, or the Jabber protocol.  If you are looking for this kind of information, a good place to start is Jens Client Developers Cheatsheet and of course the docs section at


As you go though this document, you will come to realize that I am hugely biased towards the Windows desktop interface, and towards the ICQ style client interface, since this is the platform that I am most familiar with (although I use Lotus Sametime during the working day, and I also have used JabberIM, GO Messenger, AIM, MSN Messenger enough to be familiar with their interfaces.  

Throughout the document I will try to justify why I feel certain features are good (or bad) and if you strongly disagree, you can - I have been known to change my opinion occasionally, and if I do I'll update the document.  


This entire document is my opinion about what a Jabber client should look like.  If you are already a client developer, please note that I am not suggesting that you rush out and change the way your client works - nor do I mean any offence to client authors who have clients that look or behave differently.  If you are about to start writing a Jabber client, please remember that these are only suggestions.  Your opinions and design goals will differ.  This document does not reflect any sort of collective opinion of the Jabber community at large.

I fully recognize that user interfaces, more than anything, are a matter of personal taste and familiarity.  If you strongly disagree with what I have put here, you are welcome to write a similar document with alternate views.

This site last modified