7/7/11 Video Interview with Jonathan Rosenberg and Chaim Haas
I interviewed Jonathan Rosenberg, Skype's Chief Technology Strategist, to get the inside scoop on how Skype works with Facebook from a technical perspective. It was an interesting interview that covered topics such as whether the Facebook Skype plugin acts as a supernode, how Skype's architecture communicates with Facebook's architecture, group video calling, PSTN calling via Facebook, and the future direction of Skype within Facebook.
Essentially, the Facebook Skype plugin that you download and install the first time you make a Skype call within Facebook is a plugin that is a "mini-version" of the full Skype client. The mini version of Skype removes the Skype UI and is compacted down allowing it to be plugged into a browser.
Tom: Could this plugin be used in other places/sites or was it designed specifically with Facebook in mind?
Jonathan: Right now it is 100% focused on Facebook and in fact it's locked to Facebook. You would not be able to use it on another website even if another website tried. It's one of many security features we've put in.
Tom: Does it have the full line of Skype video and audio codecs within that plugin or is it limited to keep the code "tight".
Jonathan: Right now it uses the same ones we use for the bulk of Skype's calling. It uses SILK for audio and VP7 for video. The Skype client does ship with some other codecs that are used in other use cases. For example, we ship Skype with G.729 codec used for SkypeOut, but there's no SkypeOut here, so we compiled that one away. So it is less and it's only the codecs necessary for the use cases supported right now.
Tom: How long have you been working on this? I heard 6 months.
Jonathan. Yup. It's been a long road. Lots of folks were speculating this was done in response to other industry events. I keep laughing. We've been working on it for a long time. We didn't just start this last week.
Tom: Were you the lead developer or manager for this project?
Jonathan: I was the principle architect for the project. Not the developer, but designed the overall solution was one of my jobs on this.
Tom: So what's the glue to the Facebook username. Is it the email address that you have to gain access to and map that email address to the Skype email address that's in your (Skype's) database? [This would obviously cause privacy issues if both organizations were sharing email addresses]
Jonathan: Nope. Not at all. So what happens is let's say I'm calling you Tom. And let's say neither of us has used this before. So brand new users. I'm going to click on that video call button on Facebook and at that moment not only will I be prompted to download the plugin, but Facebook will go and create a new account for you. And we've exposed - created some server APIs that allow Facebook servers to talk to Skype servers to request automatic creation of new Skype accounts. These are special Skype accounts or what we call "shadow accounts". They're not usable by regular users to login to the Skype client. They have really random looking Skype IDs. They don't have profile data, like an email address associated with them. So even though I have a Skype account [already] is irrelevant. A new one will be created for me. And similarly when you get the call and you click OK to answer the call the same thing will happen for you. Facebook will create a new Skype account for you regardless of whether you have one or not and then you will be logged into the plugin using that Skype account. And then as part of the process what will happen is your Facebook page will send a message to Facebook's server infrastructure back to my webpage saying OK, Tom's Skype ID is "this" and it's this big random number which we assign and then my plugin will process to call that Skype ID which corresponds to your plugin. So there's no connection at all with the existing Skype userbase and Skype accounts. They're pretty thoroughly separated through this.
Tom: What are the technical challenges for group video?
Jonathan: I wouldn't say there is anything big. Like anything else, there's obviously integration work. We obviously have group video calling working on the desktop.
Tom: My follow up would be since Skype group calling is a paid offering, would it be paid on Facebook?
Jonathan: At this time we're not talking at all how it would be handled from a financial perspective. From a technical perspective there would be some work to do the integration. The group video feature has actually been compiled out of the plugin because we got rid of everything wee didn't need right now. And so it would have to be added back in. That would increase the download size a little bit and then we'll have to integrate with the user interface on Facebook and make it all work. There's no fundamental [issue] like that we have to solve some unsolved problem. It's a matter of time and energy and priortizing it. Obviously something we've thought about and talked about, but we cannot be specific when that would be available.
Tom: The mini Skype client / plugin - can it act as a supernode or is strictly peer-to-peer?
Jonathan: No it does not act as a supernode. It is strictly peer-to-peer client.
Chaim: Do you want to talk about the supernode infrastructure that sits behind this?
Jonathan: We're doing things a little bit differently for the Facebook plugin than we do for the normal Skype client. [With] the normal Skype client, the supernode functionality resides in PC endpoints as a general rule augmented a little bit by supernode code that runs in servers, which we call dedicated supernodes. For this project we've gone and used 100% dedicated supernodes. So all the Facebook calling is supported by supernode code that runs in server architecture in our data centers as well as Amazon EC2. We've historically used quite a bit of Amazon EC2 to facilitate recovery from some of our outages.
Tom: Any plans to offer PSTN calling from Facebook? Does it really make sense? What are the use cases?
Jonathan: There is actually quite a lot of interesting use cases. This is something we're thinking about for the future. Couple interesting use cases to thing about. One is you visit a friend's profile page and that friend has their mobile phone number as part of their Facebook profile. They're not online right now but you'd like to call them. So right there you just click a mobile phone button and connect to call their mobile number. Another interesting use case is people post a lot of content that shows up in Walls and Newsfeeds and undoubtedly that content has phone numbers here and there. You can very well imagine wherever there is a phone number that shows up in a piece of content you can go call it. Another potentially interesting use case is advertising and being able to click on an ad that completes a call to the advertiser. Again, I'm not being specific about which of these we would actually eventually do. These are just a list of potentially interesting use cases that we've thought about.
Jonathan went on to explain how much effort that put in to make this solution scalable, considering Facebook's massive user-base. He also gave his thoughts on Google+ Hangouts, and more. You can listen to the entire phone interview, since I didn't transcribe everything: