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 Jabber.org,
JabberCentral, and Jabber.com
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 Jabber.org.
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
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.