Latest stuffs in the world of Skype

So with the launch of Skype 6, and with a few patches sent from a very helpful user by the name of gabriele0101, I’ve had the chance to do a little bit of work on the Skype plugin.

One of the most annoying things that’s happened with newer versions of Skype – and the single largest cause of emails about the plugin – is the bug in Skype where it doesn’t always send notifications of new messages. Foolishly, I’ve been waiting for Skype to fix the bug in their software, and in the mean time told people to roll back to an older version of Skype. I’ve been suggesting the use of Skype 3.6.0.208 on Windows, since a friend of mine found that it uses the least amount of memory, cpu and disk space; but with the release of Skype 6 only recently decided to install a newer version of Skype to see if I could workaround the missing messages bug.

So far I’ve come up with a hackish polling for any missed messages every 10 seconds. While not perfect, it does workaround the problem, but it does mean an up-to 10s delay in getting some messages, and potential for messages to arrive out of order. I’m working on trying out a couple of other potential workarounds but they’re not ready yet.

Gabriele and I have also been working on cleaning up the code a tiny bit, removing a lot of the threading code, attempting to get it to work with InstantBird and made the ‘Get Info’ popup actually show some useful information. Once I sort out the missing messages bug properly, I’ll be sure to roll out a new version of the plugin to people. If you’re interested in testing the latest Windows plugin for Pidgin, feel free to send me a message on Skype.

And so comes some interesting stuff about Skype 6. After upgrading to it, it has a new feature that lets you login to MSN/WLM messenger. On closer inspection it uses the MSN XMPP servers to connect through to MSN. You can also video call people on MSN and they’ll get a popup at their end to install a plugin. On closer inspection this is the same plugin or similar plugin to what’s used on the FB website for making video calls. It’s basically a NAPI-based browser plugin that provides a JavaScript frontend through a webpage. As of newer versions of Skype, it appears that Skype is moving away from its proprietary Kazaa data storage and into using SQLite data stores instead.

Also interesting is the effect of linking your MSN & FB accounts to Skype and the resulting messages that get passed through the Skype API. If you have your FB account linked you get a lot of “USER xmpp:-123456789@chat.facebook.com ONLINESTATUS” messages. And calls from people on Facebook can be answered by the Skype API, although they come through as being from a username of “fb:198374ldshflsk”. Online status and status messages for MSN contacts is a bit weird: the API will often leave out the username and say “USER MOOD_TEXT xyzabc”, and when placing a call it will be to/from a user with a username of “live:asdkfhaslkfdhj”, which appears to be the part of the MSN username before the @, and messages will appear to come from “1:user@example.com” (but you can’t send messages to a “1:” user).

So where does that leave us? Well, still looking for alternatives. I’d love to not be reliant on having a Skype/Skypekit client running to connect to Skype and I’ve been carefully paying attention to all the reverse engineering attempts out there. The skype-open-source team have been doing a lot of good work and the recent update from oklabs looks promising too. Unfortunately not quite ready yet to try and pull apart and turn into a library for Pidgin to use just yet, but watch this space!

Update: Thought I’d mention another side effect of linking your Live/MSN account with your Skype account: You’re going to start receiving offline messages on your MSN account from “skypeusername@fakeSkypeDomain.fakedomain”, every time you receive a Skype message. It appears that the messages are being sent from the newer Skype clients from the other party; that they’re also forwarding their messages through the ‘old’ MSN offline message servers. You can’t reply to these email addresses, nor can you add them to your buddy list. They’re just a completely fake address. Personally, I don’t understand the logic behind forwarding all messages through the MSN offline message servers; all I can see is that it introduces further privacy concerns of your messages being stored somewhere else – another privacy concern. This really furthers my belief that you shouldn’t be using newer versions of the Skype client – although this doesn’t help anything unless the person you’re talking to is also not using the latest Skype.

6 Comments

Back Up and Running

If you’ve been trying to access the site for the last few months, you’d probably been getting a lot of timeout issues and not being able to connect. Unfortunately several systems failed and I’ve been too unwell to repair/replace a lot of it. A lot of the parts that I did replace ended up being faulty and ended up soaking up more time than I had the energy/health for.

I’m happy to say that I’ve now spent a bit more time to copy files from old servers onto the new one and everything’s back up and running again 🙂 Hurrah! \o/

Apologies too to those people trying to download the Skype plugin from http://eion.robbmob.com/ and finding that they couldn’t access the files. I made a mirror of some of the files that I had from an accessible computer on the Google Code page, but not all of them (of particular note, the .exe installer for the Skype plugin). You should be able to download the plugin now, but flick me an email or leave a comment below if you don’t have any luck.

In other news, in the last few months the Steam plugin for Pidgin/Finch has been wrapped into an Adium plugin by Hermi Hg, and it’s even made the front page of AdiumXtras.com as the “xtra of the moment”, as well as getting a mention on Adium’s Twittermobile Big ups to him 🙂

1 Comment

Summer of Code 2012

I’m proud to announce that I’m a mentor in this year’s Google Summer of Code. I’m mentoring Sanket, who’s going to be writing a plugin for Pidgin/libpurple that will record statistics and send them to a server for display. Kinda like Adium’s Sparkle stats.

I’m really excited about his project and I’m really keen to see some of the stats that come out of it. It’ll be great to know how many people are using my plugins for one 😉 but will also be good to see what operating systems Pidgin runs on primarily. There’s already been a request from the Instantbird guys about getting stats of popular protocols based on system locales, which is going to be a pretty cool metric to see 🙂

There’s already been a lot of great discussion between Sanket and I about what stats will be useful in terms of CPU and operating system. Do you have any thoughts on what stats you’d like to see out of Pidgin?

2 Comments

Fixing localStorage and WebSQL Databases on iOS5.1

If you’re an iOS developer using an embedded webkit UIWebView in your app, then you’ve probably stuck the problem where your localStorage and WebSQL databases will just disappear when upgrading your app on iOS5.1. Other symptoms for this bug are not being able to call window.openDatabase() (it throws a “SECURITY_ERR: DOM Exception 18” error) or not being able to save to localStorage, after upgrading your app on iOS5.1. This was particularly painful for me when using a framework such as PhoneGap. The reason for this happening is that as of iOS5.1 the database files are stored in the Caches folder, which can potentially be wiped when an app is reinstalled or upgraded, or even if the device runs out of memory. Apparently it’s some kind of new thing to stop databases being automatically installed to iCloud. The other problem is that when upgrading/reinstalling your app, it gets given a new path on the storage, but the WebView preferences aren’t updated automatically to point to the new location.
Read the rest of this entry »

, , , , , ,

1 Comment

New Steam Mobile App

There’s now a new Steam app for mobile devices that’s currently in limited beta. The best part about the new app is that it allows you to chat on Steam Friends, without using a Steam client, which means a Pidgin/Adium plugin is more likely to be on its way. The second best part is that you can be logged into the mobile client at the same time as being logged into the desktop, so signing into this mythical Pidgin plugin wouldn’t sign you out on your desktop machine.

Let me know if you’re in the beta at the moment (ie, have you managed to sign into Steam from your mobile) as I’d be keen to hear your experiences with it. 🙂

Edit: The Steam plugin for Pidgin has been connecting to the mobile API for a while now; Steam no longer needs to be running to be able to chat with your friends 🙂

2 Comments

Prevent a Pidgin crash on Windows

I’ve created a new plugin that prevents a crash in Pidgin on Windows, due to an annoying GTK+/Pango bug. This bug currently affects all GTK+ apps on Windows, not just Pidgin.

If you’re using winpidgin, I’d suggest you download and enable the pidgin-win32-non-bmp plugin to prevent remote crashes.

No Comments

I got hitched…

… so now I’m a free man! Yes, that doesn’t really make sense, but I’ve been working hard with my wife for the last couple of years to make everything for our wedding. So that means that now that it’s over I have a lot of spare time up my hands 🙂

I just have a couple of things to catch up on, a massively overgrown garden to tame and a month-long honeymoon coming up, but other than that I’m really to roll up my sleeves and get coding.

So, what do you want to see fixed/updated/changed next?

3 Comments

Completely dead…

… well, not me, but my server. Unfortunately all the earthquakes have meant occasional power cuts, which completely killed the battery and HDD on my server machine. I’m now running this site off another machine I have as a temporary measure until I move the site somewhere more permanent – probably Google Sites or something.

The backup I had also didn’t have my last blog post in it, so I had to recreate it from a Google cache backup.

No Comments

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. 🙂

13 Comments

SkypeKit in Pidgin

There’s been a couple of comments on my blog about this but I’ve been waiting until I saw what Skype had made public before I mentioned anything.

Yes, SkypeKit has been announced. A new way to connect to the Skype network. Yes, it still needs a Skype client running, however now that Skype client doesn’t have a user-interface. This new interface allows developers to use more parts of Skype that were previously untouchable, such as native-typing notifications and file transfers, which is a good thing. Sure, its not perfect in a pure open-source world but definitely a step in the right direction.

The bad news is that it’s GPL incompatible and needs a lot more work before a GPL compatible plugin for Pidgin can be made available. Yes, work is in progress.

12 Comments