What should happen when a message comes in?
The obvious thing to do, is to display the message
on your users screen, and this is what most Jabber clients do.
Trust me, this is a bad idea.
The first thing is that your user may be busy when
the message comes in - it may not be convenient to read or reply
to the message at the present time. Worse than this, the user
may not be actually at his or her computer at the time that the
message is delivered, or he or she may not be the only person in
front of the computer.
Imagine you are sitting at your workstation
working though a problem with your boss. One of your friends
see that you are online and sends you a joke. It pops up on
the screen in front of your boss.
Not only is this distracting, but it makes you
look unprofessional. There are many potentially embarrassing
possibilities that spring to mind here, and believe me, they do
happen. If you have walked away from your workstation for
a minute, and someone sends you a confidential message, it sits
there for anyone nearby or walking past to read. Often this
is made worse by the fact that the the title bar is set to flash
to attract attention. The worst case I have seen is one IM
client that sends incoming messages to the foreground, and actually
puts them in front of the Windows screensaver. You can put
on your password protected screensaver, and walk away - and come
back later to find that your monitor is blank, except for a large
flashing confidential message sitting boldly in the center for the
whole office to see! What is worse, is that the person who
sent the message is probably unaware that you are not there to read
(and close) it, and even if they knew, there is probably nothing
they could do about it.
How should it work? The correct course of
action is to a) play a sound to notify the user of a new event,
b) indicate to the user that there is a new message waiting - the
blinking icon in the system tray (like ICQ) is the best option that
I have seen. The user has the option to answer the message
when they choose, and until they do that, the message contents are
not displayed. The user can check who the message is from
by looking on their contact list or hovering the mouse pointer over
the system tray icon before reading it.
I would also advocate a pop-up message displaying
the type of event and the sender like MSN, to provide the user with
more information without having to do any more than glance at the
corner of the screen.
See the System Tray
section for more details.