Understanding Skype’s limitations on Windows Phone

Do you want to know why Skype is the way it is? We go into detail as to how the network works & why it's not so great on Windows Phone--yet.

Soon after Skype for Windows Phone beta came out (and went gold months thereafter), users were dismayed to discover the app didn’t work, well, like Skype. That is, it couldn’t run in the background to receive phone calls or IMs from friends and family. Circulating reports suggested that perhaps “push notifications were too slow” or that the problem was a result of “[…] how Skype works and how the Windows Phone OS works.”

The real reason? Well, it’s complicated…

Skype is a peer-to-peer (P2P) Voice over IP (VoIP) client. P2P meaning that each Skype user – like you – is part of an intertwined graph of other users throughout the world. But not all users are equal. Some users on the network are “super nodes”, an ornate term assigned to a user that acts as a broker, moving data around on behalf of its locally connected peers and Skype. It is this decentralization of network responsibility that lets Skype maintain such high stability and simultaneous user counts – 35 million as of last count in March. (Startup competitor Tango isn't nearly as complex; it simply uses a client-to-server model based on the open XMPP protocol.)

Here’s how a piece of that network would look visualized with cute circles and lines:

In the figure above, Skype users -- you and I -- are represented by the smaller circles. We’re connected to a super node with lots of CPU power and bandwidth. The line connecting us to Skype’s login servers is present to demonstrate that some data aren’t sent through local super nodes. In this case, super nodes don’t handle login requests for obvious security reasons.

Let’s move on to how a Skype call is made.

First, for the sake of brevity, let’s assume that you already added John Doe to your Skype client’s contact list. Generally speaking, the software found John’s details via a complex traversal of the Skype P2P network. The important take away here is that your local super node helped you find John and passed on all the details needed (e.g. IP address) to make a successful call.

Let’s give him a ring.

In this figure, a Skype user – you – is initiating a direct connection with John Doe; he receives the call and you both chat for 12 hours about favorite cookie recipes. It’s important to note here that call routing isn’t performed through Skype servers at all. In most cases, direct communication is possible and utilized. In other rare cases, Skype may use an intermediate node, e.g. the super node, to relay traffic.

Cue Windows Phone.

You probably know by now that Windows Phone 7.5 “Mango” ushered in support for fast application switching (multitasking) and background agents, little bits of code that can be programmed to run in the background. However, none of these agents support running for an indefinite amount of time or have the ability to maintain persistent network connections. That means that the application couldn’t possibly run in the background let alone receive calls from other users. But that’s where notifications swoop in and save the day, right?

Well, no. Remember when we called John Doe in an earlier example? That call was direct; Skype client to Skype client. There wasn't a Skype server in the middle of that transaction, just two users waving each other down and having a chat. Where would you install a Windows Phone notification server? On a super node? Nope, most calls are direct, remember? What about a server at Skype headquarters? Won’t do any good there either. The only option is to notify the user at receipt of an actual call, something the Skype for Windows Phone client can only do if it’s running in the foreground.

You see the dilemma now.

With Skype for Windows Phone having been announced all the way back at the Microsoft MIX conference in 2011, the anticipation (and vitriol) levels for app availability were off the charts. Not to mention all the other platforms had Skype already. So Microsoft had no choice: They worked with Skype to push out a “1.0” application knowing damn well they’d piss off half of their user base. But they delivered the application with the promise that users could expect a better version in the future.

And from what we’ve heard of the next version of Windows Phone “Apollo”, Microsoft and Skype will make good on that promise too. Back in February, it was reported that Skype would become a first class citizen on Windows Phone. So with Apollo nearing, it’s not long before all this becomes a hazy memory of Windows Phone’s growing pains.

[It's important to note that Microsoft is working with Skype to change how their network operates, specifically the way super nodes are created and operate; the network is evolving as you read this. So while I tried to remain as accurate as possible, there may be errors.]

Understanding Skype’s limitations on Windows Phone

Did you read the article? Though, I guess to understand why it doesn't work on WP7 and why it works on Android does take the knowledge that Android would allow everything access to everything wether it is front and center or not. Great for getting 10 different apps to send you notifications instantly, TERRIBLE for battery life.

iOS does not allow Skype to run in the background and yet it still receives the calls just fine. How come?
I suspect that the real reason is that push notifications on WP7 are very unreliable, thus Skype cannot reply on them to initiate calls like on other platforms...

But MS had the OCS instant messaging client of their on Windows Mobile and it maintained and sent out presence status of all users on the buddy list and when an IM came in it would pause the foreground app and bring it to the user's attention via a pop up!
So is this just the case that WP7 in certain respects hasn't got the necessary maturity levels yet?

From the link posted earlier (for the iOS): "Most apps are moved to the suspended state shortly after entering the background. Only apps that provide important services to the user are allowed to continue running for any amount of time."
So that means if the app needs to continue to run, it can through specific coding. Or that is how I read it.

Yes, actually, since iOS offers a VoIP API that allows a application to slumber in the background. If you're not a VoIP app, you're not allowed to use this API.
You can find several examples of applications that used to cheat, and use the VoIP API on iOS, that later got suspended from the marketplace, and had to change behaviour.

Press the link icon at top-right of the comment (next to reply arrow) OR press-and-hold on the comment until you see 'reply to' and 'follow links' OR swipe left, press 'Show in Browser' and select link in comments. The first 2 need the latest version of the app.

I have a hard time believing you really are that uninformed. This is why you get called a troll when you post. You really gotta have more going on in your life, I barely have time to check this site out, yet you have time to troll. Also, when Daniel said to, it seemed like he was addressing you, but I may have misread it.

OK, well, this isn't a major problem, so long as when Apollo comes along every Windows Phone can run a version that lets Skype operate as it should. However, if the dreaded fragmentation rumours are true, then not only will you have a large amount of WP users who are stuck with an out of date OS, they will also have no fix for the Skype background running issue.
Well, I really hope that Apollo and a working Skype integration happens across all WP models and generations. Otherwise this will be a rather large own-goal for MS.
Having just bought a Lumia 900, I'm really hoping MS doesn't leave us folks behind.

Can someone tell me why video chat across platforms (wp7-android, for instance) are so crappy looking? Never had a great experience with Skype (or Tango, for that matter). Coming from iOS, facetime was awesome. Is Skype better when using between the same platform (wp7-wp7)? Just wondering.

Live video calls can't really be buffered to the extend that, say YouTube videos, can be. This means you have to adjust the bitrate of the stream constantly depending on the connection speed.
Which usually results in very poor video from mobile devices. However, you should also factor in the camera quality and the light settings around you.
General rule of thumb is that WiFi gets you a lot better quality than 3G. I have never personally tested on 4G, so I can't tell you if there's any improvement in the area on that.

First, great article. It lays out clearly the difficulty and reasons why Skype doesn't run in the same way it does on other mobile platforms. Most people either don't know or have forgotten that Microsoft had to rework Skype's internals to get it to be more stable when handling much larger traffic that it will see in the future. Skype works but if people are honest its not the most stable thing in the world.
I don't think anyone realizes how much stuff is changing, for the better, with Windows Phone going forward. A whole new world and i'm looking forward to June and see where each of Android, iOS 6, and WP Apollo stacks up.

But as I understand it, there is limitations like this in iOS to. Does iOS allow the skype background service to run for ever? If so then that would kill battery life on iOS as much as on Android. Does anybody know how this works on iOS?

I understand all the negativity about Skype not working the the background but honestly does everyone use Skype that much that is worth complaining this much about? When I want to Skype with someone (once or twice a month) I just send the other party a text first to see if they want to Skype? Its easy for someone to text or call and not be properly dressed or busy. Video calling requires both parties to provide more attention so it's only courteous that I ask them if they want to and what time. Basically schedule a Skype call. Maybe its just me

I would use Skype if it was on my phone but since it's not available in any meaningful way it's hard to say how much I would use it if given the chance. I'm excited that it might come to Kinect some day but they demoed that like 2 years ago and it still has yet to surface.

Skype is much more than video calling... I use it for IM 95% of the time, 4% for phone calls and gaming group conversations, and 1% for video calls. I want skype to sit in the background for IM mainly. It's a bit redundant for calls on a mobile, as I can just use my mobile plan for that... and I have more minutes to use than data. Over wifi is a different story, but I usually have a PC for Skype when on home or work wifi.

I think that the issue is that people with big data plans want to use Skype for calls instead of costly minutes. Long-distance calls, in particular can be outrageously expensive. I, for example, have relatives in another country. On my cell it costs me 40¢/minute to talk to them. On the other hand, I have a 5gb/month data plan, of which I only rarely use more than 2gb. Skype has plans that would allow me to call those relatives as much as I like for about $15/month. Just using my phone instead of Skype would only allow me 37½ minutes of talk time for the same cost. Now if Skype works on my phone just like making a regular call, like they're hinting at for Apollo, now I've gained the ability to calls those relatives and receive calls from them whenever and for however long without breaking the bank. Remember, Skype does regular old voice calls too.

A small error, supernodes are no longer made up of regular users with lots of CPU power and bandwidth. Supernodes now are computers hosted by Microsoft.
This isnt a change from P2P to a server architecture. Its just that the supernodes are hosted by Microsoft.
Ars Technica covered it a few weeks ago:http://arstechnica.com/business/2012/05/skype-replaces-p2p-supernodes-wi...

Daniel, about Skype in Windows Phone 8... The fix about receiving calls will be made in a native integration in the OS or in the official app too??
The first one the carriers can block it, and this will be a problem...

In order to use push notifications your app needs to work with a server (from which it will receive and relay the notifications). That's how Tango works. Skype call setup is serverless, direct to the IP address and the recipient cannot answer if it not running somehow in the background. I think the trade off is sufficient and makes sense. At this point I don't see anybody willing to sacrifice battery life for being able to receive a video call at any time. Let's face it, video calls are not that big yet. In a few months, we'll have Skype integrated just like Messenger and Facebook in Windows Phone 8, using the push notification system.

#1 XMPP
Although XMPP's presence funtionality is client-server, the VoIP aspects are P2P.

The XMPP server is used to broker a peer-to-peer connection between two clients. Once the connection's made over SIP or another protocol the XMPP server's no longer necessary. This is essentially what the supernodes' are doing in the current Skype network.

Since XMPP servers can be federated across multiple machines you can build out a Skype-equivalent network on XMPP. Which is how GTalk seems to have been built.

#2 VoIP on iOS
It's unlikely that Skype is permanently running in the background on iOS.

iOS has explicit background support for VoIP apps so that once the app has established a connection with its service it can be suspended until such time as the connection receives traffic from the service. iOS manages the connection until data has been received, at which point iOS brings the VoIP app up in the background to handle the traffic and only moves it to the foreground when user interaction's required. Once the traffic's been handled the app's suspended once again.

This!
This is a flaw in the Windows Phone OS that needs to be fixed. This comment is much more helpful than the article itself because it explains how the OS could provide the necessary functionality for Skype to work as intended (without going for Android's all in approach)

I was looking into XMPP as a mechanism for data sharing between users of one of my apps. It's a wee bit tricky to use in the mobile world since XMPP's core "presence" system assumes a long-running connection which is impractical for third-parties on mobile. It has to be bridged into the platform's push notification system.

Intriguingly it looks like Apple's Push Notification system may be built on top of XMPP.

Well it was a lose lose situation for Microsoft cause people kept complaining they wanted Skype now but now that they have it, they are still complaining. Its a rushed product and that's what you get when you want it NOW. Had people been patient and let MS take its time with it, they could have addressed those issues. So for now, stop complaining cause you got what you wanted

Yep exactly this.
When I read comments like "give it more time, WP7 is still the newest OS to the market" I feel like saying nobody cares. End users don't care about any fact other than this:
does it work?
does it work as well / better than android / iOS?
They don't care about battery they don't about excuses no matter how valid they may be. Us lot pussyfooting around the situation isn't helping anyone because rather than telling MS we reasoning it out.
And yes EVERYONE is justified in saying this situation about skype is atricious for the simple fact that Microsoft owns skype. If Microsoft can't get microsofts own stuff to work well on its own products, what kind of faith does that put in users?
I read so many comments bashing android and iOS here, yet all I think is, you know what, one crash here, minor missing feature there, at least they work, and in the way people expect them to work
Ultimately, this was a nice informative read, but still the fact remains; not good enough Microsoft.

My question is.. where is it for Kinect? Kinect has a damn microphone and camera, so where is it? What's the hold up there? They demoed facetime-like functionality when Kinect first surfaced but it's still nowhere to be found, and yet, someone on PS Vita can use Skype in the background. There's no excuse. I expect to hear something Skype related at E3 or I'll be furious.

That was very informative and a well written article. There has always been a problem with Skype architecture which has previously scared many potential investors and buyers away. In 2010 Google was at verge of acquiring Skype when Larry Page pulled the plug at the eleventh hour citing the same problems highlighted in this article. According to the article which appeared in MSNBC in 2010, there was a little dissention betweens Larry Page and Eric Schmidt over the last minute pull out but Larry preferred building a new platform from the ground than to buy a crippled Skype and rebuild it. As new owners I believe MS is rebuilding Skype and wouldn't want to waste too much resources working around the crippled software but optimize the rebuilt Skype for WP8. I was very pissed off with this limitation on window phone but after reading this article, it makes a lot of sense to me for MS to optimize Skype for WP8.

Very nice break down for people that want to know what's up. Though it seems that many readers lack the power of reasoning and induction or simply aren't reading the bloody article before commenting. Again, thanks for a great break down.

Great explanation but it overlooks the obvious fact that back when MS said this would be available by last August that Skype knew what their infrastructure was and so did MS. SO why promise something that isnt technically possible. And as time marched on neither was upfront enough to set the record straight in public because they dont want to be embarrased.

I will only go WP8 once they have Skype running and it is getting good reviews. No Skype in WP8 and I will go back to Android.

I don't mind that things are not technically possible, I do object to being mislead.

Getting it to market and how a product performs once it gets there are two separate things. This is excerbated with the infrastructure issues. I personally don't mind seeing the client out and watching the updates come down rather than just waiting for the finished product but I know that's just me. People are WAY too quick to call doom & gloom for anything related to MS so I know the blogosphere wouldn't accept either.

Its better for MS to fix Skype in the long run rather than forcing a bad build into WP. This will not only benefit WP but the service overall. Especially with IMessage and Facetime almost being the standard now.

This is only partially true article. However a very knowledgeable and logical comments to read. Great discussion, learned few new things. Skype's network structure is going through some major haul and the future looks better for windows phone. Apollo upgrade wouldn't bring much change on how Skype functions, it will change after Skype's network restructure is completed.

I can recall here about an OS that could do most of the things in a smartphone, which today's smartphone OSes can not do.... even if combined.....
It's the Symbian, that you guys rejected to adopt only for its UI..... And most of the reviewers who call it a crap OS, haven't even used it for a while....
A result of a fact like Racism with an OS (that is not from their homeland.)
Any ways.... I don't know about this article's source of information... but the logic is that a client is always re-written for a specific platform... if it was being written for Windows Phone, then it doesn't mean that it's architecture needs to be changed for the sake of a platform to make it able to run on it.... Multitasking on Windows Phone does provide a client application the ability to run for longer period of time in the background if it could maintain with foreground experience."A resource-intensive task runs for a longer period of time, but only when the device is in a state where resource-intensive processing will not disrupt the foreground experience"
Simple they will need to write Skype's code as according to the platform's requirements for background execution... http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202866(v=vs.92).aspx