Keep On Chatting in the Free World

Warning: this post is a bit technical. Yes, a lot of my posts are technical, but this one contains content that I think non-technical friends and family are likely to find useful. I’ve tried to keep it accessible, but also have endeavored to not spend all day writing it and want to keep it technically accurate. If you like to chat with me and currently use Google to do so, I would encourage you to read it. If there’s demand, Jennifer can attempt a translation or paraphrase.

One key word that will come up a lot here: XMPP. XMPP stands for ‘eXtensible Messaging and Presence Protocol’. It is a protocol for instant messaging (and some other things) that, like e-mail, allows users on different servers to talk with each other. Google’s chat service, Google Talk, uses XMPP under the hood. That is why you can chat with me using Google, even though my <redacted> IM account is not with Google.

What’s this about?

If you currently chat with my personal IM account using Google Talk or GMail, that may not be viable in the long term. A few months ago, Google announced Hangouts, a new real-time communications technology that would be replacing Google Talk (the chat integrated into GMail). The plan, at least as initially reported, is that Hangouts cannot talk with people using other chat providers (technically, it wouldn’t support a thing called XMPP federation). Unless Google changes their plans, Hangouts can only be used to talk to other Google users.

My personal IM account (same as my personal e-mail address) is not hosted by Google.

At present, the old version of Google Talk is still up and working, can be used via XMPP, and still supports federation. This means that, until Google phases it out completely, you can still chat with me so long as you do not switch to Hangouts. You can also chat if you use the Google Talk desktop client, or some other desktop IM client (such as Psi, Empathy, or Pidgin) to connect to Google.

But if and when Google drops support for classic Google Talk, my roster will be a very lonely place. And, if you are currently in the habit of chatting with me, you won’t be able to any more, unless I am logged in to my school GMail.

So, if you want to continue chatting with me on my personal IM account after Google Hangouts completely displaces Talk (I have no idea how long that will take, but will be surprised if it does not happen), you’ll need to use an open XMPP service. Fortunately, that is not very difficult; it does require you to install a bit of open source software.

There are two steps to getting hooked up with an open XMPP service:

  • Install an XMPP (formerly known as Jabber) client.
  • Create an account on an XMPP service.

Install an XMPP client

There are many excellent XMPP clients available for most common platforms. These programs are often similar to legacy chat programs such as AIM and MSN; they run on your computer, often living in your system tray, and allow you to chat with windows on your desktop.

In addition to allowing you to connect to non-Google XMPP services, many XMPP clients have features to support audio & video chat, encrypted communications (including Off the Record (OTR)), etc.

  • Psi is a very good client for Linux, Windows, and Mac. It supports encrypted communications, but not OTR. With psimedia, it also supports voice/video chat; I don’t know if psimedia works on platforms other than Linux, and also have not figured out how to make video chat actually work.
  • Empathy is built in to Gnome on Linux. It gets the job done; I use it right now because of its excellent Gnome integration, but am somewhat disappointed with its lack of features.
  • Pidgin is a multi-protocol client also available for Windows, Linux, and Mac. It supports encryption and off-the-record messaging (with the pidgin-otr plugin). Pidgin also supports audio and video chat on Linux.
  • Spark looks like a decent cross-platform (Windows, Linux, Mac) client. I’ve never used it myself, but I have used the server made by the same group.
  • Jitsi provides voice and video chat, OTR, and works on Windows, Linux, and Mac. It also advertises support for encrypted video chat. I haven’t used it myself yet, but it looks like the best option for video chat on Windows and one of the few options for encrypted video chat; I believe its video chat encryption (ZRTP) even provides perfect forward secrecy. I’ll likely be experimenting with it soon.
  • Yaxim is a decent XMPP client for Android.

If you’re on Windows, I’d recommend installing Jitsi if you want video chat, Pidgin if you just want OTR (or they get video chat working in the Windows installer), or Psi if you want rock-solid, no-frills XMPP.

Connecting to a Server

Many public servers let you register directly from your XMPP client. You start up Psi, or whatever, and tell it you want to register on, give it a username or jabber ID ( and a password, and you’re good to go.

You do need to pick a public server. There are quite a few; you can use any of them, but for convenience I’ll point out two:

If you’re feeling adventurous and want to run your own server, I’ve had good success with Prosody and OpenFire. Both are easy to configure; OpenFire has a great web-based admin UI if you’re into that kind of thing.

Other Comments

Using an XMPP client and open service may have other benefits, including privacy. We can chat without having Google in the middle; whether that is a worthwhile thing depends on how much you trust Google vs. another XMPP server (I run my own server, so from my end it is a matter of trusting me and, the host of my server). If we use end-to-end encryption (such as OTR), then the chat server or anyone surveiling cannot receive our communication content, but they can still see that we are talking and observe the timing of our conversation.

It will also let us chat via video or voice without involving Google or Skype.

A discussion of why you might or might not want Google or Skype to know who you’re talking with or what you’re saying is out-of-scope for this post. But if you do care, using an XMPP client and alternative server allows you to exert some control over who gets to observe your communications.