May 13 2010

Skype and Windows Phone 7

Category: MobileJoel Ivory Johnson @ 11:21

The interwebs were today chatting about the recent news that Skype's not said anything on whether or not they will plan to develop a client for Windows Phone 7. Some how the lack of a statement has been interpreted as meaning that Skype has decided to drop the Windows Phone platform because of the unavailability of native code and in a few cases has been labeled as a sign that the platform is doomed, the sky is falling, and some other bit of bad news. 

I'll give you my conclusion first. 

  • You don't need native code to make a VoIP application 
  • You do need access to sockets to do VoIP applications
  • Third party developers won't have access to ports in the initial release of Windows Phone
  • Windows Phone isn't ready for Skype just yet

Such news has invoked a lot of responses on the pages where I've seen the story. I think that developers that have used the Windows Phone 7 development tools or read on what is or is not allowed will take a different perspective on the matter and what I'm writing won't be news to them. But I have a few non-developers that read my blog so I'm sharing my thoughts with them. The first popular misconception of note is that native code is needed to make a VoIP client. I'm not quite sure where this misconception came from. If we look at what is needed to make such a client from a high level you need hardware to convert audio to digital form, a network connection over which the digital data can be streamed (for both incoming and outgoing audio), and hardware to convert received digital signals back to sound. Using the library of code available in the Windows Phone 7 SDK one can do all of these things using managed code. 

Looking deeper into what is required one can find a reason to hold off on developing a Skype client just yet. VoIP clients would typically communicate over a TCP socket. At initial release Windows Phone 7 will only allow third party developers to have access to communication over HTTP communication. HTTP is request-response oriented. If I were to use HTTP for voice communication then I would only be able to send audio in chunks. I would record an audio clip and the device would sent it when I am done recording as opposed to sending the response while I was speaking. The person on the other end would need to record their response and then send it. The experience would be a little more like audio instant messaging than like a telephone call. 

Windows Phone in its initial form isn't yet ready for VoIP applications. Once developers are given access to sockets then it should be no problem. You just really can't provide a good VoIP experience over HTTP. When I said this to a few people earlier I got back a response "Can't they use HTTP Tunneling to do VoIP over HTTP." To understand the answer to that one must first understand what HTTP Tunneling is and is not. The short description is that HTTP Tunneling is just sending network traffic that has some attribute of an HTTP request such as sending the request over port 80. For applications that require streamed connections this still boils down to being a socket connection. 

So when are sockets coming to Windows Phone 7? That's unknown. Microsoft hasn't spoken of sockets yet but I think that developer demand is high enough to make me  think that it is something that Microsoft understands that developers want. Until then I'd just label the unavailability of Skype on Windows Phone as natural since it's dependent on sockets. 

Tags: