Operating System Integration
One of the most important things to get users comfortable
with your Jabber client is to make sure that it works in the same
fashion as the desktop that they are already used to using.
Under Windows this means it should perform the same as Windows does.
This may seem obvious, but it is ignored all to often.
Right-clicking - right clicking on an object
should almost always bring up a menu. Right-clicking on a
contact in your contact list, (or selecting a contact and pressing
the menu key on a "Windows95" style keyboard) should bring
up a menu of actions that you can perform for that user.

Right clicking on a group heading should bring up
items that can apply to a whole group. For example right clicking
on the "co-workers" group should give you the option to
send a message to everyone in that group.
Drag&Drop - Dragging a file from explorer
to contact in the contact list should bring up the dialog to send
that file to the user. This is how Windows users expect it
to work. Dragging a contact to a chat window should convert
it to a multi-chat and invite that user to join. Dragging
contacts between groups should move that user. Control-dragging
should do a copy. Right-dragging should bring up a menu asking
the user if they want to copy or move, in the same way as explorer
does when you move files.
Shell Integration - Upon registering the
application during the install phase, the Jabber client should also
optionally add an entry on the right-click menu to make it easier
to send files. This means right-clicking on a file would give
you the option to send that file to any of the Jabber users who
are currently online. (ICQ already does this). It would
also be nice to see a Jabber icon replace the MS Messenger icon
on the Internet Explorer toolbar.
Multi-select - By holding down the control
key you should be able to select multiple contacts at once.
Right clicking should then treat the multi-selections as a group
to allow you to send group messages etc.
Hotkeys - One of the most bothersome things
with instant messaging is having to reach for the mouse every time
a message comes in. What is needed is a standard system wide
hotkey combination that brings up the next message waiting even
if you press it while you are using another application. I
suggest <Windows>-<Space> for systems with Win95 style
keyboards, and <Shift>-<Space> for those systems without
Windows keys. If there are no messages waiting, this key combination
should bring the contact list to the foreground and give it focus.
Snap-To & Docking Windows - It can often
be nice to have the main contact list window to snap to other windows
if it is within so many pixels of them. It can also be useful
to have the contact list dock to the side of the screen when it
is moved to the very edge of the desktop. This has the advantage
that the operating system will resize the usable area of the down,
so that when other programs are maximised, they will not obscure
your client. These features should be able to be disabled
by the user however, because they are not always to taste, and windows
that dock can cause problems on machines with multi-monitor setups.
Cut & Paste Hotkeys - It is always important
to implement the standard windows short-cut keys into any Windows
application. Some of the most used keys are the copy and paste
ones. It is worth remembering that Windows has two sets of
each defined. On the left side, there is <Cntl>-X, <Cntl>-C,
and <Cntl>-V for cut, copy and paste, but there is also <Shift>-<Del>,
<Cntl>-<Insert>, <Shift>-<Insert> on the
right hand side. Both should be implemented. (Normally
this would be done automatically by the Windows API, but they are
sometimes missed out of some of the ICQ windows and it can be very
frustrating when you think you have copied something, but when you
try to paste it you get the previous thing from the clipboard)
Always On Top - Most IM clients offer an
option to make the contact list always appear on top of all other
windows, even if it doesn't currently have the focus. This
has the obvious advantage that the user can always see his or her
contacts, but it can get very annoying if it is obscuring an area
that the user is trying to work with. This option should be
easily disabled, and possibly a widget included on the title-bar
of the app to toggle it off, and send the window to the back.
Startup & Registry - All Jabber clients
should include an option to autostart when the user boots up his
or her PC. There are several ways to do this in Windows, the
most friendliest from the users point of view is to create a shortcut
in the users "StartUp" folder, but most developers go
for a registry entry. If you are going to use a registry entry,
make sure you add it into the Software/Microsoft/Windows/CurrentVersion/Run
key under HKEY_CURRENT_USER, not HKEY_LOCAL_MACHINE. This
way the client will only start when the user actually logs on, and
will help with the problem where you appear online because someone
else is using your computer. Ideally other users should be
able to add the client into their startup sequence too, but it would
start with their user ID and settings.
Taskbar - Your Jabber client should not
show up at all on the Windows taskbar, even when the main contact
list is restored. When it is running, It has an icon in the
the system tray, and that is it. Space is at a premium on
the task bar, and applications that run all the time in the background
should not be taking up room unnecessarily. Message dialogues
are different - they are only open for a limited time and require
user action, so they need to be tracked and the user needs to know
if there are any open in the background. They should show
up on the taskbar (but not the system tray).
Server-side Client Settings - The Jabber
spec allows for small amounts of personal information to be stored
on the server. For some settings for your client, it may be
appropriate to store them on the actual server rather than in the
registry on the local machine. This way if the user uses the
same client software on multiple machines, his or her settings will
follow them around as they move machines.
AutoUpdate Feature - The Jabber spec also
allows for the client to check for updates, and if there is a version
of the code that is later than the one running, you can prompt your
user to see if he or she wishes to upgrade. |