September 16, 2005

Review: Gajim Jabber client

Author: Joe 'Zonker' Brockmeier

There is no shortage of Jabber clients for Linux and other platforms, but that doesn't mean that there isn't room for one more Jabber client with a strong feature set. Gajim is a Jabber client written in PyGTK and released under the GNU General Public License. Despite a few rough edges, I found Gajim impressive.

The Gajim project has packages available for Debian, ArchLinux, and SUSE Linux, an Autopackage installer, and even a Windows installer. Gajim is also in the package repositories for several distributions, and of course the source code is available as well.

To test Gajim, I compiled the 0.8 release from source on a machine running Ubuntu 5.04 "Hoary Hedgehog." Gajim requires a few development packages that weren't installed, but it was easy to compile once those package dependencies were satisfied.

Using Gajim

I've used Jabber quite a bit over the past two years or so, mostly with Gaim. For the most part, I've been happy with Gaim, particularly since it allows me to corral all of my instant messaging IDs in one application.

Gajim, on the other hand, is focused on Jabber. You can communicate with other services, such as AIM, if your Jabber server supports those transports, but it's not as straightforward as just using an AIM client like Gaim.

I have several Jabber accounts on various servers, so I tested Gajim with a wide variety of Jabber servers -- including Google Talk -- using SSL and non-SSL connections. (It's disappointing that Google Talk doesn't support conversations with users on other Jabber servers, but that's another topic entirely.) Gajim didn't have any problems with any of the servers that I tested it against and was extremely stable.

The Gajim interface

The Gajim interface is pretty sparse. The main Gajim window has only two menus, Action and Edit (sadly, no Help menu). There's also a selector at the bottom of the Gajim interface for setting the user's status -- Available, Offline, Away, and so forth. This is a bit counter-intuitive, because it seems to apply only to the user's main account and not the account that's highlighted. This came as something of a shock the first time I highlighted a different Jabber account and selected Offline. Instead of signing off the account that I had highlighted, it signed off my main account.

The chat windows are also fairly minimalistic. By default, the user is presented with the full view of the chat window, which includes a border at the top with the other user's ID and status and at the bottom an icon to notify the user whether the session is secured, and a small set of buttons -- and, of course, the Jabber conversation and a text field for entering the next message. You can set the window to compact mode, which shows only the conversation and a smaller text field. I didn't really see much need for the compact mode, as it doesn't save a radical amount of screen space, but I guess it could be useful when working on a laptop or other small screen.

There are several default Gajim color schemes, and seven icon sets for user status. If you don't like any of the default color schemes, you can edit them or create your own. Users can even customize their "emoticons." Gajim is the first IM client that I've run across with a beer emoticon. I'm not quite sure what emotion beer is supposed to be, but it probably will come in handy for a large number of users.

Gajim allows the user to highlight a word, right-click, and choose between looking it up on Google, Wikitionary, or Wikipedia -- an innovative feature. It also supports highlighting of misspelled words, which can be nice if you still believe that spelling counts, even when chatting.

One thing that I'm not sure I like is the notification, by default, of whether a user is paying attention to the conversation or not. Gajim tracks whether the chat window has focus or not, and reports it to other Gajim clients. If the user has the Gajim chat window focused, then the remote user is notified that the user "is paying attention to the conversation." If not, the user is told that the other person in the conversation is "doing something else." I'd like to see this feature turned off by default.

Gajim and security

For users who need to work over a secure connection, Gajim is a good choice. It supports Jabber over SSL, and makes it possible to encrypt messages with GnuPG. This makes Gajim a safe option for system admins and others who might need to exchange sensitive information, such as passwords, over the network in real time.

One thing to be aware of, though, is that Gajim does store user account passwords in clear text on the system under $HOME/.gajim/config as a world-readable file. This is a bad thing, since it would be trivial for another user on a multi-user system to read the file and glean your passwords. Gajim doesn't store user passwords by default, so it's not a problem unless the user decides to have Gajim store the password -- which, I imagine, most users do.

Full control

Gajim offers a number of advanced features that "power users" will find compelling. The first is an XML Console that allows users to watch the XML that is exchanged between Jabber clients. In addition, users can send XML input directly, which can be useful for administering a Jabber server.

Gajim also has D-Bus support, which allows remote execution of commands through the D-Bus message bus system. Right now, this may not seem like an exciting feature -- very few applications are going to be "Gajim-aware" -- but it does provide the ability for other applications to work with Gajim. Given that an increasing number of projects are utilizing D-Bus, I expect this will be more important in the future.

Not quite sure what transports your Jabber server supports? Gajim has Service Discovery, which will tell you what services are supported by the server -- such as the AIM transport, or IRC transport -- and even which chatrooms exist on the server.

There is also an Advanced Configuration Editor that allows the user to set options by manipulating the variables directly, and presumably includes options that one can't get to using Gajim's preference tabs.

Final thoughts

Overall, Gajim is an impressive Jabber client. It provides all the features that I look for in a Jabber client, and it's very stable despite the fact that it's not quite to version 1.0 yet.
Gajim seems to have a fairly active developer community, and I suspect it's going to continue to improve at a rapid pace.

There are a few rough edges, and Gajim is sorely lacking documentation. I think the interface could be improved to make it more user-friendly, and documentation on all of Gajim's features would be helpful. That's not to say Gajim is hard to use, but that it could be a little easier. It's not obvious how to use some features, such as GnuPG support, so it would be nice if there were some docs to point users in the right direction.

I'm also not sure if Gajim is quite right for users like me who use several different instant messaging services. Yes, it's possible to communicate with users on other services over Jabber, but it's not quite as convenient. In a work environment, where Jabber is the only "approved" IM transport, Gajim is a clear winner. If you need to be able to use one app to manage AIM, Yahoo!, ICQ, IRC, and Jabber, I think Gaim is still the better choice -- though it doesn't have some of the features you'll find in Gajim for Jabber.

Click Here!