Skype for Linux
My first task at Skype in 2004 was to get Skype for Linux out of the door. I hadn’t really used Linux before, but I had come to Skype acknowledging that a big part of the job would be to try out and learn new things and Linux happened to be one of them. So I got a laptop and installed MEPIS that Martin-Éric recommended. Thanks :) At the time, everyone thought it was a weird distro, but I’ve heard good words about it also these days.
So I got along with Linux mostly fine, I just had to walk to more knowledgeable people to help me recompile a new kernel every time a new version came out, since the wireless drivers needed to be built in in some sort of weird way. But I got along fine with other funny stuff like running five different distros and messing with GRUB configuration to have each of them boot up in a proper way.
I had a great team of a few testers and developers. Some of them have since moved on to other areas in Skype and others have stayed with the Linux client. We sat down weekly and sometimes daily, going through the bug list that we needed to get done to get the client out of the door and later to get new versions and updates out.
I guess you could say it was classic software project management in an agile environment. We had a very compact team and I wasn’t (and still am not) a big believer in too formal work. The most important thing for me was how the end product behaved so I put a lot of time into personally going through all the bugs and playing with the product.
The Linux client doesn’t receive as much attention as the other desktop clients, but I hear it’s again quite OK now and the 1.4 version is looking much nicer than the earlier ones. Perhaps time has come to fire up the virtual machines again and take a look at 1.4 :)
In 2004, we set off to deliver something that’s now known as Skype chat – both the 1:1 version and group chats. Public chats were part of the picture already then, but weren’t implemented until recently, so I can’t take too much credit for public chats. But I put quite some work into 1:1 and private group chats.
Skype actually had a 1:1 chat before. I’m not sure if it was there since the very first public beta in August 2003, but it came along quite soon. It kind of worked, but it was not so much fun and also looked ugly and of course you couldn’t do group talking.
So we had to make a new version of chatting to make it more appealing and also enable group chats. This meant designing the new UI, but we also had to tackle the very underlying concepts that were powering the chats. We effectively had two choices – whether to make a chat like “everyone else”, or whether to make something new and try some different design decisions. We went for the latter and in the process, made some key decisions that I’m really happy about because they really set Skype chat apart from other things and make it stand out.
Things were fairly simple with 1:1 chat, as it’s a pretty old and tried-and-true model, we just had to make a nice UI to it. With group chats, however, things were more challenging. We had to decide what happens when you close the chat window. Is the chat ended and closed then? What do other people see? What if you sign in from some other device? How about if you have blocked someone and they end up being in the same group chat as you?
In the end, we went with the current channel-like behaviour where everyone gets all the messages even if they’re offline for a while. This gives chats persistence. I guess one of the collaterals of this is also that chat works from multiple end points (computers/devices). With pretty much all the other chat clients, you can only be signed in from one location – as soon as you sign in from a new one, the previous one is kicked out. I didn’t like this from the user perspective and turns out that with the Skype p2p model, it would have been actually somewhat harder to engineer than going with the “ubiquitous” model. So we ended up with that, and I think that the jury is still out there, but at the end of the day, this was the right thing to do.
We ended up doing some nice stuff in the UI as well. The cornerstone to that was one single meeting where we sat down with just a few people like the interaction designer and developer and basically nailed down the whole chat window UI in a few hours, that largely remains to this day and has seen very little changes through the past couple of years. My personal favourite in that window was how we designed the interaction buttons (“call”, “profile” etc) on individual chat members to appear and disappear dynamically as you floated over them with the mouse cursor.
Now that we had it all figured out, we of course needed someone to actually implement it and of course the chat features some brilliant engineering enabling all of the above. Big kudos to the engineers who made it happen.
Making Skype chat happen was one of the highlights of my Skype work from HCI perspective and there are many things that I can take from here and build my further studies on.
The final bit comes from late 2006 and isn’t really software-related – it’s more about the softer side of running a company and trying to capture the stuff that floats in the air. But for a successful business, it’s as important as the bits and bytes.
I was part of the team who put down the current Skype values. It was an interesting copywriting and editing exercise, but also about being able to capture all the more and less formal conversations I’ve had with many people in and out of Skype over the past couple of years and trying to aggregate them into something meaningful. The values are the soul and heart of any company that rise above any current product or project and provide moral guidance about simple things like how to behave in any new situation. It’s always safe to fall back to these if you’re not sure what to do. And they might change yet again for Skype sometime as the business keeps evolving, but I’m thankful for the opportunity of being able to be part of the team that nailed down these current ones.
You’ll notice that missing from the list is my “community work” on blogs and forums and such. Maybe the values touch upon them briefly, but that’s it. I didn’t put them on the list because I still have a hard time figuring out whether the Skype user community worked because of me or in spite of me :) I found the whole community work to be incredibly hard to define and quantify and I don’t see it as a thing on its own – it’s merely a byproduct that lives with the rest of the business and lets you understand what the users are up to and what they think of your other work. I’m sure there are many people who could have done this tons better than I ever did, and I’m happy to pass on the torch for some new methods and ideas here.