Posted by: tinkusam | January 4, 2008

Jabber is fantastic!

The term ‘Jabber’ has been there in mind from college days. At many occasions I thought to try it. But that was not happening so far. But 2 days ago, I had a chance to explore it as a part of my job. Here I am sharing my experience with Jabber in brief. Its not a setup guide or tutorial dedicated to Jabber. But if you own a catching mind, you can consider it in that way also. Here we go.

Jabber LogoJabber is an Instant Messaging (IM) system based on open XML protocols known as XMPP (Extensible Messaging and Presence Protocol), which exists from the end of 90s and now extremely popular through Google’s adoption of this protocol for their IM network using which GoogleTalk works. In an organization, the importance of Jabber is obvious since it can be used to implement an IM network locally which can work efficiently with outside world.

Jabber has a lot of server implementations where some are proprietary. The Jabber Foundation’s website has given a list of servers available, both open source and proprietary. For the initial exploration and deployment, I picked one of the earliest, well featured, GPLed Jabber server named jabberd14 (formerly known as jabberd). Now a days almost all IM clients supports XMPP protocol. But there is one surprising shortcoming for one of the popular IM client Pidgin (formerly known as Gaim) with Jabber. I will talk about the issue later since a few things have to be presented before looking in to it.

Setting up the Jabber server at my office workstation went hassle free. Mandriva package repositories serves the RPM package for the version 1.4.4 of jabberd server which I used for installation since installing the latest version of jabberd -1.6.1.1 – failed when I tried to build it from source. Since the latest version released on July 2007 which is obviously a few months after Mandriva 2007 Spring release, a few dependent libraries at my machine seems to be not satisfying minimum requirements put forward by jabberd’s latest release though the real problems were not clear. But one shortcoming for the RPM packages used for installation was that at the time of building, they were not compiled with database support. I went to know about this issue when I tried to use database for storage. Database support for Jabber means we can store contact list and relative information in a compatible database such as MySQL or PostgreSQL rather than storing them in XML files as jabberd does in default. So the easiest method I figured out to add support for database was to place a shared object (.so file), which provides API for database support to jabberd, under the jabberd library path /usr/lib/jabber. So I downloaded the source package version 1.4.3, compiled, installed and copied the missing libjabberdxdbsql.so file which I found from the jabber library resulted after source installation to /usr/lib/jabber which is the standard directory used by the server. Here you may be wondering why I was not using the server installed from source package version 1.4.3. The reason is, I tried it, but it was causing frequent segmentation fault. I surfed web and found that similar issues were happening with certain versions of almost all GNU/Linux distributions.

The main configuration file for jabberd server is jabber.xml which can be found under /etc/jabber. I went though the file patiently ( for which I am famous ;) ) since that was the most important place where we can fine tune the server according to our requirements. The configuration file seemed to be well explained at each and every portion with proper comments. For a basic server implementation, I found only a few changes to be made in the default configuration. There are a lot of guides available on the Internet which can guide anyone in adjusting the settings in the configuration file. READMEs which I found under /usr/share/doc/jabber-1.4.4 were quite helpful. Then I started server using the command

jabberd -H ipaddress -D

where ipaddress is the IP address of the server machine.

Creating a Jabber account in KopeteNext step was to test the server using an IM client which has a good support for XMMP protocol. I always use Kopete instant messenger whenever I have to use an IM service. It has excellent support for Jabber. I created a new account by filling necessary details. Instantly, I logged in to my own IM server. Wow… No errors or any kind of issues. I created a few accounts from other machines near by and the messaging system is working fine (of course limited by the resources available with my office workstation). I checked the file sending option. Its extremely fast since its happening inside the Intranet. This is one of the finest advantage we are going to get along with messaging once we set up it permanently for our organization.

Mandriva package repositories also have RPMs for three major transports for Jabber, which are AIM, Yahoo! and MSN. Transport means, we can use a third party IM protocol through our Jabber server. Interesting.. Isn’t it? For example, once we created an account in our Jabber server, if our server supports AIM transport, we can log in to our AIM network using our regular AIM id. Similar is the case with Yahoo! and MSN. I installed thoseFilling up details for Jabber account packages so that I can try that feature with my server implementation. After installing, each of those transport created there own XML configuration files under /etc/jabber. Each transports has to be configured separately. Instructions are given in README files found in relevant directories under /usr/share/doc. Each transport has to be run as a separate process (one for each protocol) where they will talk with the server process. I configured the AIM transport by following the instructions given in README files. Then I opened a new console and ran the following command

jabberd -H ipaddress -c /etc/jabber/jabber-aim.xml -D

where ipaddress is the IP address of the server machine.

Jabber service discovery optionI checked the whether I can access AIM network, which we use at office, through jabber server. The AIM transport process was already running. So I used the ’services…’ option from my Jabber account menu in Kopete. It provided a list of services supported by the server (AIM, MSN, Yahoo!, Conference, Jabber User Directory etc). Since I configured only the AIM transport and the AIM transport process was running on server, I was able to register to the AIM service listed by Jabber server using my regular AIM id and password. IServices offered by Jabber server logged in to the AIM network. The only slight disappointment I felt was that I need to add each and every existing contacts to my AIM network once again. I expected that the jabber server will be retrieving the list of my AIM buddies automatically from the AIM gateway. So far, I couldn’t find such a feature in jabberd server. But I hope that some other Jabber server may have already implemented this feature.

Registering to AIM network through JabberAt beginning, I started talking about a limitation of the popular Pidgin IM client. The issue is that Pidgin does not provide an option using which we can discover as well as register to the services offered by a Jabber server. Very poor indeed. This is not expected from such a famous and widely used cross platform IM client. I have seen a lot of requests for the particular feature on Pidgin Trac. I think Pidgin follows GNOME Human Interface Guidelines, even though its not the direct part of GNOME project, which I am considering as the main issue behind the over simplicity of GNOME desktop and related applications which makes me stand away from using GNOME. Cutting down useful features ( part of history now :) ) and reluctant to implement vital features by representing the usability issues in a wrong way is real stupidity. One of the well known benefit of Jabber implementation is that it can act as an IM server which can be implemented anywhere and at the same time it can talk to servers handling various protocols. If we are not getting this benefit, what is the matter of using Jabber at all? I am not at all worried personally by seeing the particular shortcoming of Pidgin messenger since I never use it. But others in my office use it. So I have to recommend either Kopete ( long live Kopete :) ) or other cross platform Jabber clients such as Psi to my colleagues.

The phrase mentioned in the official jabber user guide, “Jabber can be addictive! :) “, seems to be working in my case. From past few days I almost got addicted to Jabber. Working with similar interesting and flexible Free Software technologies is really great. Now I am very much sure about its implementation in my organization. I am waiting for the green flag. But my thoughts goes to the next level of Jabber usage. What it can be? Where it can be? At present I don’t know. But I can announce one thing proudly. Jabber is really cool.


Leave a response

Your response:

Categories