September 7, 2011
This article was contributed by Nathan Willis
Jitsi is a cross-platform, open source Voice-over-IP (VoIP) client that used to go by the name SIP Communicator. Recent builds have added strong support for XMPP-based communication (including Jingle call set-up) and server-less calls with Zeroconf (i.e., multicast DNS and service discovery), which prompted the name change. The list of technical features is indeed impressive, as is the application's integration of them into a seamless user experience. On Linux, at least, it offers more than any other person-to-person communication tool, although it is still rough around the edges.
The project unveiled the first beta of its 1.0 release in early 2011, and has continued to push out updates for several months since then, bumping only the build (and not version) number. The latest build (3651) was made on September 4, boasting video call support for Google Talk accounts and call integration with Google Voice.
Despite the similarity in names, those two services are quite different.
Google Talk is the search behemoth's instant messaging (IM), voice- and video-chat application,
while Google Voice is a virtual phone number / voicemail / call-forwarding
product. Recently, however, Google has begun to merge all of its services,
and sharing contacts between them, allowing a user to initiate a Google Talk chat from within GMail, or to initiate Google Voice calls to landline phones from Google Talk. Consequently, applications like Jitsi can take advantage and advertise a wider range of services, all of which are ultimately piggy-backing on Google's XMPP / Jingle servers.
Jitsi also supports the more VoIP-centric Session Initiation Protocol
(SIP) services offered by Internet phone companies and built into a variety
of IP phone hardware products. At the moment, XMPP is gaining ground on
SIP, in large part thanks to the commercial services that build on top of
it. Yahoo, Facebook, and several other proprietary services use XMPP for
chat and presence information, and Jitsi supports about a dozen of them out
of the box. It also supports chatting and calling other LAN users on a
Zeroconf network, which is a boon to Mac OS X users as it has Zeroconf built in. In short, as lead developer Emil Ivov recently said, Jitsi supports "anything but Skype."
The list of supported audio and video codecs is similarly long. Build 3651 introduces support for the royalty-free SILK codec developed by Skype, in addition to more common options like iLBC, G.722, and Speex. Video codecs supported include H.263 and H.264. Jitsi is developed in Java, although the UI code, hardware support, and media-handling libraries are unique to each OS platform.
On Linux, any USB video camera supported by the kernel should suffice,
and audio is handled by PulseAudio. Trawling the discussion lists and web
forums of any distribution will turn up a wealth of anecdotal horror
stories about PulseAudio, particularly where VoIP is concerned, but I had
no trouble with it using Jitsi. Your mileage may vary. Debian, Ubuntu,
RPM, and Arch packages are provided on the download page, in
addition to source code. Two build channels are advertised, one for stable
releases and one for nightly builds, although every time I checked the
nightly builds were in fact older, so examining both directories is advisable.
Start talking
Far more important than the technical bullet points is the convenience of an application, and the Jitsi developers have done an impressive job of integrating the various services and account types into a single, coherent user interface. Contact lists are merged, although group names (if you have assigned them) are preserved. Even if you have configured multiple accounts, the UI offers you one simple "global" presence chooser with which you can indicate your availability — and submenus to set different availabilities for specific accounts.
This is standard multi-protocol instant messaging client fare so far, but Jitsi takes
it a step further by offering a unified connection launcher.
You start typing a phone number, username, or real name
into the connection field, and a live-updating list of matches from your
combined buddy lists and contacts pops up below. When you have typed the
entire name or number (or picked one of the auto-completions), Jitsi
displays buttons to initiate each supported call and chat option (text,
audio, and video). More impressively, when you have typed a phone
number, a call-initiation box appears listing all of the services with
which you can make the phone call.
This is where the Google Voice integration appears; if you have configured a Google Talk account, it appears as a calling option for phone numbers alongside any SIP accounts. The call will show your Google Voice number to the receiving party's caller ID.
For the most part, account setup is simple in Jitsi, with the account editor correctly choosing the correct default settings to work with the major services — although things may be different with any particular SIP provider, just as is true when configuring an IMAP or SMTP server. In fact the most difficult thing about setting up Jitsi is the fact that the UI is an odd amalgam of standard GTK+ widgets and custom backgrounds. On my system the main presence box renders text correctly, but all of the configuration dialogs are unreadable, because they pick up an off-white font color (presumably from the theme in use) that is invisible against the pale gradient background image used in the windows.
Typically you can force an application to use a different GTK+ theme by passing its gtkrc file as the value of the GTK2_RC_FILES environment variable when launching the program, but this had no effect on Jitsi. Neither did switching to a completely different theme. The Jitsi site and UI both say that it supports pluggable interface "skins," but there do not appear to be any built other than the default skin, nor is there any documentation on the site.
In fact, the lack of documentation is another persistent problem with Jitsi. The application is not alone in this regard among open source projects, but in my opinion it is a bigger stumbling block with VoIP than with many other application categories. VoIP is already an alphabet soup to begin with. Even if you get up to speed on the connection protocols and audio and video codecs, there is still a long list of RFCs to be sorted through if you need to troubleshoot a problem — take NAT traversal, a family which now includes Interactive Connectivity Establishment (ICE) and Traversal Using Relay NAT (TURN) in addition to the more familiar Session Traversal Utilities for NAT (STUN). Different services use different protocols and options, so a wide array of settings are exposed in the UI.
Jitsi can also initiate "conference calls" or multi-user chat sessions
and connect to XMPP-based chat rooms, although the interface for these
features is a bit clunkier. It can also do a form of desktop-sharing,
although it does so by sending a video stream of your desktop's contents
over RTP in place of a video camera feed. On the plus side, this enables
you to share the contents of your screen with any remote user who can
receive video. On the negative, it is not an interactive sharing session à la VNC.
Safe words
The seamless account integration features of Jitsi are attractive, but the application also shines when it comes to security. Jitsi encrypts all media streams (audio and video, including the shared-desktop stream mentioned above) with SRTP whenever possible. It supports the ZRTP scheme for establishing a shared secret and detecting eavesdropping, which makes it one of the only still-active open source applications to do so. There is paid work underway to implement DNSSEC and the SDES key negotiation protocol used by Asterisk and other applications.
On the IM side, you can enable encrypted text chats using the Off The Record (OTR) protocol. OTR is better supported among other client applications than is ZRTP, including support from Windows and Mac clients. Jitsi supports OTR 3.1, which allows users to verify each other's identities by comparing public key fingerprints. The fingerprint manager is located in Jitsi's Security options tab, and is straightforward to use.
For account credentials, Jitsi also allows you to protect all of the username/password combinations you save with a master password. This is a feature I sorely miss in several other applications, including Pidgin, which has been my default IM client for several years.
Advanced communications
Moving on from the basic chat and call functionality, Jitsi incorporates a grab-bag of interesting add-on features, none of which is likely to be its main selling point, but may strike a chord with particular users. Zeroconf chat support is among them. This feature enables you to initiate or receive an audio/video chat with another user without having to register with a third-party SIP or XMPP server.
In corporate environments, that might be a killer feature, since it eliminates the overhead of running such a server for any internal calls — assuming that running a Zeroconf network is trivial to do. Considering that I have worked remotely for seven years now, though, I do not consider myself qualified to speculate on intra-office telecommunications. Along those lines, however, Jitsi does support provisioning, by which site administrators can deliver configuration information to clients over DHCP or Zeroconf.
Jitsi is also capable of call recording, to AIFF, AU, WAV, GSM, and MP3
— although doing so and not adequately protecting your recordings is,
of course, something of a security risk. Jitsi can also be used to transfer calls, including "blind transfer" (meaning forwarding unanswered incoming calls to another account presumably signed in at a different location), and "attended transfer" (meaning a manual transfer performed by the user). Transfers can only be done between two accounts of the same signaling protocol (either SIP or XMPP).
The application does not offer much in the way of features outside of the direct calling/chat vein, though. If you are used to the bells and whistles of Kopete and Pidgin, you may find Jitsi's feature set spartan. The latest build adds spell-checking, but fancier utilities like pouncing, blocking users, auto-reply, or control over message formatting are not provided. Jitsi does have a plug-in API, and there is some developer documentation for it, but there do not appear to be any external plugins available (from the project or from third-parties).
Hanging up
On the whole, I am pleased enough with the call functionality of Jitsi's 1.0 beta series to use it as my regular softphone, which allows me to sign out of Google Talk in the web browser. It may even be good enough to replace Pidgin as my IM client, since I find myself using IM progressively less and less as the months roll by. But, then again, I have been using a SIP service as a replacement for my landline for more than four years — if you are new to the softphone world, it is possible that you would find Jitsi's interface confusing.
The first-run wizard certainly does a good job of letting you sign in to
an existing account with popular services, and the application usually guesses
correctly. The trick is that if the default settings do not work, you have
no documentation to turn to. I lurked in the (anachronistically-named)
#sip-communicator IRC channel for days, and saw four or five novices pop in
to ask questions, and none received a reply. To the hardened hacker, these
obstacles will probably encourage you to dig in and sort out the mess
yourself — but they may turn away potential new users.
Users that care about security have a simpler choice. The always-inerrant Wikipedia lists just two other ZRTP-supporting clients for Linux: SFLphone (which supports SIP and Asterisk's IAX only), and Twinkle, which is no longer developed. Thankfully, because ZRTP can be used with any signalling protocol, it works with XMPP-based services just as well as with SIP.
There is no established timeline for when Jitsi's beta builds will be
officially declared a 1.0 release. The alphas for 1.0 started in late
2010, so there is no rush to the development cycle. I have seen talk from
developers about the future directions of the project — including
some intriguing possibilities like an Android client and multi-protocol
conference calls. Until 1.0 hits, however, we are probably on hold for those.
(
Log in to post comments)