Jaanus Kase, pictured right at eBay Developer Conference 2006, was a member of the Talinn-based Skype engineering team at the time, back in 2004, when Skype decided that they needed to create a unique Skype chat user experience. He subsequently become Skype’s most public face through his Skype blogging activity but left Skype in the summer of 2007 to pursue a degree related to human interactions with digital technology at Cargnie-Mellon.
Today he posted on his personal blog, “On Google Wave, and how we made Skype Chat”, outlining the Skype chat design exercise and many of the decisions they had to make in coming up with the instant messaging service that is available on Skype today.
So, it was somewhere in 2004 and Skype realized they need to revamp their text chat/conversation system. Skype actually had one from the very beginning, but it was one-to-one and not very nice. It did support the basic concept of queuing messages that is extensively used today as well; that is, you could write a message to someone regardless of whether they were online or not, and it would be delivered the next time you would both be online. True to Skype’s serverless architecture, the message would simply be queued in your computer.
Jaanus was tasked with leading the project. In the post he recognizes others who made a contribution and discusses the evolution under four headings:
- The Goal: “We set out to ‘fix the email problem’, and provide a convenient group collaboration tool that would first and foremost support our own organization of many ad hoc groups coming and going.”
- What’s the content model vis-a-vis people coming and going? What happens when you close the window? “I chose to make chats persistent because that is how teams work in an organization. A team tends to be consistent over time, and it is in the interest of the team that everybody is constantly filled in and knows the same information.”
- Are chats public or invite-only? How do you get in a chat and what do you see then? Answering questions such as “If you are added to a chat, do you see the whole history or only from that point onwards?” (And here he explains a major difference from Google Wave.)
- How will multiple devices/computers work?
Skype’s architecture, though, was more complex than simple client-server. Everybody was a client and a server at the same time. What would “one client at a time” even mean? It would have created more problems than it would have solved. So, we realized that what were dealing with was not a messaging problem, but more of a distributed database problem. And through some brilliant engineering by Indrek, we created a system based on “synchronizing”. That is, each device signed in with a particular username has a local database of all chats, and when (re)connected to the Skype network, synchronizes the chats with the “Skype cloud”, posting messages created locally, and retrieves new ones from the cloud.
His overall conclusions:
I have not looked at Wave protocol guts, but it feels that our design and implementation was/is fairly similar to the gist of Wave federation, except that Wave is more complex, spanning multiple servers, networks and who knows what else. But all in all, you have a collection of waves, and in those, you post messages locally and retrieve remote ones, and it works quite nicely already today, e.g across multiple browsers.
One important thing that Skype and Wave do right, but that’s completely broken in Twitter, is the distribution of metadata, and in particular read/unread states. In Skype, we synchronize not only message content, but also the read/unread state, and Wave does the same. But in Twitter, it highly annoys me that there is no facility to synchronize read/unread state, and I have to read the same tweets ten times across different clients and devices.
Bottom line – especially if you are a heavy user of Skype chat – read the entire post to learn more about the thinking behind Skype chat, how it differentiates from other instant messaging products and how he feels it compares to Google Wave. And the post certainly explains the behavior I observe when logged into multiple devices.
Full disclosure: Skype Chat and the associated File Transfer probably constitutes over 80% of the author’s use of Skype. And is often logged into multiple devices (PC’s and iPhone being the most common).
Related articles by Zemanta
- Should Skype put Wave inside? Skype inside of Wave? (skypejournal.com)
- What’s Next for Google Wave (blogs.wsj.com)