Understanding Skype’s limitations on Windows Phone

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 (opens in new tab), 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.]

Rafael Rivera
  • But doesn't it work great on other platforms? iOS and Android?
  • Yep.
  • 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...
  • Wrong. Read Apple's background execution process here - https://developer.apple.com/library/ios/documentation/iphone/conceptual/...
  • That's exactly it. Even Rene Ritchie at our sister site iMore told us that Skype kills the battery on the iPhone. It's certainly a trade off and it was like that on Windows Mobile too--have it on, all the time for universal presence but have to worry about the battery. MS is obviously looking to change the whole structure of the network which will not only benefit Windows Phone but iOS and Android later too as their clients can be re-written.
  • *Phoning* with skype kills the the battery fast. Running it in the background does not. Even Skype for S60 works fine and battery is no issue at all.
  • S60?
  • A platform thar runs on Symbian. Take a look at: http://en.wikipedia.org/wiki/S60_platform
  • 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?
  • Do you suggest that Skype on iOS has some kind of special treatment that allows it to run in the backgroun while other third party apps cannot?
  • 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.
  • I got the impression that the article implies Skype got some special treatment on iOS not available to third party apps. Basically the reason Skype on WP sux is because the OS lacks similar API.
  • Well, I know now about why Skype for windows phone isn't as good as Skype for android or IOS. But this is so stupid. -_-
  • TL;DR
  • To stupid, didn't read
  • You mean "too stupid", right? As only a stupid person would not know the difference between too and to.
  • How did u get the link to work?
  • 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 meant how do u insert the link to have that? I know how to click it.
  • Article isn't correct.
  • 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.
  • Are you serious with this? 
  • Roll on Apollo...
  • 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.
  • And if the Apollo won't support our phones ? Doomed .
  • Nice article BTW, at least now we know the reason for lack of background running .
  • 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.
  • Facetime only works on WIFI. It doesn't work if you are running on 3g. It's pretty easy to have a good quality videochat if you are on wifi with and your average home or business broadband connection.
  • 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.
  • Apparently Skype doesn't work on the 610 now, although it would be strange if it was working during beta.
  • 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?
  • That's how it works...just runs in the background, looking for incoming pings. And yes, it zaps battery life too.
  • 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 have friends that never leaves Skype, and they use it for gaming, chatting, texting. So yes, there is a lot of active users on there.
  • 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.
  • Well, iOS is years ahead in multitasking and no-idiocy departments, no shit it can handle Skype properly. Hopefully next year molasses-slow MS will catch up.
  • Someone doesn't know what they're talkin about
  • I mean he said it like a condescending idiot but he's still right. Should have never been an issue to begin with
  • 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:
  • Read the bottom of the article.
  • 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.
  • It doesn't bother me much. I just text my friends prior to getting on and we work out what time we're both available. And it works great!
  • Microsoft is just going to have to recreate the Skype network.
  • A couple things ... #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.
    Relevant sections of the iOS App Programming Guide:
    Implementing Long-Running Background Tasks
    Tips for Developing a VoIP App
  • 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)
  • Hey Chris, Thanks for the notes, I'll go back and follow this up. I'm not certain Tango uses any P2P capabilies offered by the XMPP protocol/standard. GTalk may do this, but Tango may not.  
  • No problem.
    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.
  • So we should expect same thing with viber too right???
  • Pretty sure it's gonna be integrated into the OS in windows phone 8 so don't worry about it
  • 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
  • The fact is  Skype works on other platforms and not on WP7!
    The systems is this, the network is that...These explanations you give? No one cares! Especially the users who don't have any knowledge in operating systems.
    Just admit that WP7 has weak points, that MS has to correct!
    I hope they fixe and integrate skype in the OS.
  • 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.
  • (Good article btw)
  • We're recruiting for the Xbox team in London, http://www.microsoft-careers.com/search?q=xbox+AND+skype&filter=true&locale=en_US&location=london I think that might answer your questions :-)
  • I look forward to your announcements at E3 on when I can Skype from my TV, thanks. ^___^
  • Thumbs up
  • I'm not a Skype user so correct me if I'm wrong, but doesn't MS own Skype?
  • Yes, Microsoft owns Skype. We're a Microsoft Division today. However, the Windows Phone client was developed at Skype in Stockholm, not in Redmond.
  • 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.
  • I always make videos calls over Tmobile 4G on my Radar and the video quality is awesome. Sometimes I tether the Radar on my Lumia 900 and still get a very good quality Skype video on it.
  • 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.
  • Don't know if all of that is fair. 
    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...