State of Play

So it’s been a fair few months since my last post and I thought I’d try get back into it with an update of what’s going on in the world of IM and Pidgin plugins and stuff.

In case you didn’t know the Christchurch earthquakes have been affecting my life for the past few months. These are pics from a walk around the block around my house. Over 7000 aftershocks and still going!

So what does this mean for the Pidgin plugins?
For the most part, not a great deal. Things have slowed down since I’m spending more time of earthquake cleanup and wedding planning rather than coding, but they’re still plodding along. Unfortunately the power-cuts and brown-outs have caused damage to the server machine that I use to build all my plugins (and which runs this website/blog) and it needs to be rebuilt. Currently it’s running of a live CD of Gentoo since the main partition won’t mount at boot. If you’ve been unable to access the Skype plugin site recently, that’s why.

So what’s the state of the Skype plugin?
As mentioned in previous posts, I had started work on a SkypeKit plugin. Unfortunately, the terms and conditions completely rule out using the SkypeKit SDK in open-source software and so the SkypeKit protocol would need to be clean-room reverse engineered – this has been made harder by the added layers of encryption recently added to the SkypeKit protocol. Instead, I’ve been following closely the skype-open-source efforts, to create a native Skype protocol plugin for Pidgin, however a lot of people have been having difficulty with it as certificates and other protocol things are out of date with the newest Skype versions. For now, I recommend just using an old version of Skype (eg, v3 or v4 on Windows) along with the skype4pidgin plugin, to keep memory usage down.

So what’s the state of the Facebook plugin?
Well at the moment, there’s a lot of people having a lot of trouble with the plugin. Things have changed in the ‘FB HTTP’ protocol and I haven’t had a chance to do anything about it. Unfortunately, Pidgin (well, libpurple mainly) can’t just switch over to using the official FB API’s for login and status messages and stuff since it all relies on having a browser being embedded into the app. It also relies on the browser supporting JavaScript, something which especially can’t be assumed when using Finch from a terminal. There’s some code in source control at the moment that uses the login system from the HTTP chat method to allow the Pidgin app to do the XMPP login and all that jazz without any kind of user interaction, but that probably breaks a lot of FB terms and conditions. 🙂

What about the other plugins?
Yeah, I write one or two other plugins for Pidgin/libpurple 😉 A lot of them are being integrated into the Purple Plugin Pack but I’ll list them out here with a brief status update:

  • OkCupid protocol plugin: Still going strong. I’ve been asked to port the plugin to work in InstantBird which I’ve started investigating.
  • Windows 7 Extensions plugin: Looking good. If you’re using Windows 7 or later and don’t have the plugin, you’re missing out on some useful eye-candy 🙂
  • Automatic translation plugin: Not so hot. The calls to the Bing/Microsoft Translate service are all coming back as null, and the Google Translate API’s are closing up at the end of the year. I’m looking at other (free) online services to use.
  • Steam protocol plugin: There’s now a SteamKit library out which talks the native Steam protocol. Unfortunately it’s written in .NET and would either need a complete rewrite to work in Pidgin, or for a Pidgin plugin to be written using embedded mono. Writing OO code in C is crazy
  • Keyboard LED notification: Not working on this any more since it works well for most people
  • Protocol Icon Override: Has an annoying bug that the icons don’t show up when creating a new account, otherwise fine
  • IRC HTML Formatting: Oddly needs to be re-enabled after Pidgin starts, and it’s currently not matching up HTML colour codes to their closest-match IRC colours. Bold and italics and underline work alright though 🙂
  • Wordfeud protocol plugin: Most of the protocol is reverse-engineered and chatting works fine, it just needs some kind soul to make a GTK interface for the Wordfeud game board
  • Gammu protocol plugin (SMS via your phone): Works fine
  • Typing sounds: Why would you even want to use it? 🙂
  • Omegle protocol plugin: No idea. Let me know if you use this one
  • Ning protocol: Also no idea. Again, let me know if you use it
  • NetNexus protocol: Unfortunately noone hangs out in the NetNexus rooms any more
  • Pidgin Juice: Needs a massive overhaul to take advantage of some new HTML5 goodness.

So yup, that’s an update. While I’m not in the super active development mode I was a year or two ago, I’m still fairly contactable. So if you have any questions, queries, bug reports or feature requests feel free to either contact me, or leave a post in the comments. 🙂

New Face Opt-In security feature breaks plugin

Facebook have recently announced a new security feature to Facebook to “help you keep your account and information secure.” Unfortunately it can cause the Facebook plugin to stop working. So what’s happening about it?

At the moment, I’m rewriting the plugin to use the new XMPP protocol that Facebook have provided. (You can already start using it yourself if you like but you’ll miss out on features such as larger buddy icons, status messages, notifications, group/friend list management). I’ve been trying to work on it for a while, but due to my fiancée being in hospital for many weeks there’s been a bit of a personal delay 🙂

The other thing you, the user can do, is to tweak the hidden settings of the plugin to work around the new security feature. If you close down Pidgin, edit your .purple/accounts.xml file, find your browser’s user-agent, and paste it into your accounts.xml in the line
<setting name=’user-agent’ type=’string’>YourUserAgentHere</setting>
then Facebook will think that your browser is the one you normally use and should let you pass.
The other alternative of course is to disable (or not opt-in to) this new opt-in feature, but that one’s up to you.

XMPP Facebook Chat

I get a lot of complaints from people who say that the Facebook Chat plugin for Pidgin is “flakey” and disconnects a lot. I’d just like to say, “Its not my fault!” 🙂
I was talking on the phone to someone at Facebook and asked them if they used my plugin. They said “no, I don’t use the public one its really buggy but I am beta testing our new interface internally which is a lot better.” Once he found out that I actually wrote the plugin, he did a bit of a turnaround and went on to explain that the server software isn’t really the greatest, that it puts a heavy load on their servers and that it was actually all their fault that my plugin was so bad 🙂

So, after a bit of snooping around, I discovered the details of the XMPP servers. You can even (almost) connect to them. For now, it looks like you have to be authorized in their beta programme (or probably just be working at Facebook) to be able to use it.

The XMPP server is running at and it uses DIGEST-MD5 for authentication as well as something called “X-FACEBOOK-PLATFORM” for SASL. In Pidgin you can set up the account by using your username, with the domain, disabling the “Require SSL/TLS” option in the advanced tab. Doesn’t look like its working with s2s yet, but hard to tell without being able to log in.

So give it a go, maybe your account slips through the cracks and you can log in. Will been keen to hear from anyone about their successes/failures with this.

Facebook Usernames

Facebook have recently posted on their blog that it is now possible to log into Facebook using your Facebook username.

I’ve just had a check and it’s possible to do the same with the Pidgin/Adium Facebook plugin. Not much of an issue if you’ve already got your account set up in Pidgin/Adium already, but hey, might save you a few keypresses next time you do set up an account 🙂

pidgin-facebookchat v1.51 important changes

By the time you read this, I’ll have come out with a new version of the pidgin-facebookchat plugin. There are some significant changes that downstream packagers will want to pay attention to.

The main one you’ll bump into, is that the plugin now uses the json-glib library. It’s included in svn if you don’t want to compile it yourself, but it’ll be good to make a package for your distro to include it, since not all distro’s have it. From now, we’ll be moving over the string-parsing code to use the new json-glib stuff. The buddy list has been the first thing ported over, and by the next version we’ll have moved all the code over to using it.

The other important change is that the plugin can use zlib for requesting compressed data from the Facebook servers. gzip content encoding is nothing new, but it was a P.I.T.A. to code up in C. To enable it, you’ll need to use the -DHAVE_ZLIB compiler flag. I’ve found that the data savings are around 75%, so you’ll make your fellow distro-users happy by enabling it.