Kevin Marks - Developer Advocate, Google OpenSocial
Introduction
On this episode of Read/WriteTalk I sit down with Kevin Marks. Kevin is one of the public faces of the OpenSocial project at Google in his role as a developer advocate. Before coming to Google, he was a principal engineer at Technorati and one of the driving forces behind micro-formats.
In this episode, we focus on the state of the OpenSocial project and also highlight some of the work around opening up activity streams which is one of the features I feel has been overlooked in the conversation around OpenSocial.
Links
Transcript
| Sean Ammirati: So I guess, if you’ve been living under a rock, for the three percent of our Read/Write Web audience who may not be familiar with OpenSocial, could you give just the 30-second or one-minute elevator pitch on it?
Kevin Marks: OpenSocial is way for application developers to use existing social networks to their advantage. It provides an abstraction that means you can write your application and use the friendship data that social network has already gathered on behalf of their users. So it’s basically a way of freeing you from having to create your own registration database and user-connection database for your application at the end which it uses the many different social networks that have popped up in the programming, including MySpace and Orkut and hi5 and Bebo. |
|
| 01:12 | Another way to think about it is that it’s a way for the social network to extend its features by adding applications through third parties as well, so it’s valuable for the social networks too.
There are three main components to the way the APIs are setup. There is the People and Friends API which lets you discover who the viewer is and who the owner of the application is and who their friends are, and use that within the application. There is a Data Persistence API which lets you store information within the social network site and retrieve that based around the users for your application. And then there is the Activity Streams API which lets you post events to an activity stream which is a feed of events that the user has created and it will setup your application, read from activity streams of events that the user and the user friends have created within your application, so you can see a flow of events that people have created. |
| 02:16 | Sean Ammirati: Cool. I want to get into the activity stream quite a bit in this interview, but first, I know at Defrag, you had said that OpenSocial was very much an alpha at that point. Would you still characterize this as an alpha level project at this point within Google?
Kevin Marks: It has something we’ve been iterating on quite a lot with the partners and there’s going to be a new release very soon. One thing that has shown up already is the Shindig open source project which is being done in the Apache Foundation. That is designed to provide an open source implementation of the entire OpenSocial stack so that you’ll be able to install this on your own website and create your own OpenSocial containers very easily. The first commit to that went in on Tuesday this week, the 11th. That week, we expect that to be a core part of the project. That took a little while to setup because it’s actually a proper Apache project outside Google. It’s not just Google committing to it. Other partners will be committing to that as well over time. So that is being setup to do this is as a fully opened project. |
| 03:25 | The goal of this is to provide infrastructure. The way developers work at the moment with this stuff is that they have to do a lot of the work themselves, whereas this is an infrastructure project in the same way that, say, HTML forms are. Once you use HTML forms, you can get data from any website that users put in and you take yourself. This enables you to do the same thing with social information, social structures so that your application can use the existing work that people are maintaining their social networks within these sites and use that within your application. |
| 04:02 | One thing that is interesting about the social networking sites is how many of them there are and how varied they are. What you find is that they tend to pick up groups of people who have interests in common or have language in common or have geography in common. So you find there are lots and lots social networks, and you may only be aware of a few because you only see the ones that are actually related to your geography or to your social circle. In fact, there are many of these out there, and they match a lot to their users. So this is a way for your application to run within lots of different social networks whether it is Orkut in Brazil or MySpace in America or whatever.
Sean Ammirati: I think that is helpful in terms of the goals and this Shindig project, but I may have misinterpreted this at Defrag, but I interpreted you coined it alpha to a large extent because you’re trying to get feedback form the community and there are relatively a few number of partners who had deployed this infrastructure within their social network although a lot had committed to doing it. My sense is that that’s still where we are, but I wanted to see if that was your sense as well. |
| 05:18 | Kevin Marks: Well, we have four containers that are open to the public to experiment with at the moment. That’s Orkut, hi5, Ning and Plaxo. All have those up and you’re able to build your applications and run within that, mostly with the whitelist process.
Also, we released a sample container which means that you can write an application and run within that. That’s hosted on your own machine to experiment with. That also provides a clearer guide to implementing a container then was there before, and we expect to continually push out more code to make it easier for you to implement this. So we expect to see that will result in more containers putting up public implementations as opposed to private experiments that they’ve been doing among with gadget developers. |
| 06:08 | Sean Ammirati: Got it. So I guess to make this real though or maybe to drill on this just for a moment more, and then I do want to get into the activity streams. When do you think MySpace, for example, will be hosting OpenSocial widgets?
Kevin Marks: I can’t make a commitment on their behalf but they’re very keen on working with us and pushing ahead. Sean Ammirati: Sure. I guess the point is that I still feel like, in general, MySpace, a number of these people who announced the support for it which is great, they’re still in the process of rolling it out, right? So this obviously is still fairly early in the game but important work nonetheless. |
| 06:49 | Kevin Marks: Yes. We are seeing a lot of interest from various different partners. We have also gathered a lot of feedback from both app developers and from container developers about which are the most important things to focus on and which are the least we can defer a bit. So that’s ongoing as well. So we’re seeing another release of OpenSocial in the next few weeks.
Sean Ammirati: Interesting. Anything you want to preview about the new release? Kevin Marks: No, I don’t want to preflight that without – Sean Ammirati: Yes. I figure as much but I had to ask. So there’s one more question like that that I have to ask, Kevin, and then I promise we’ll get to activity streams. With the Facebook and Bebo announcement, how do you see that playing into OpenSocial? Any hope to see Facebook, maybe, join the project? |
| 07:39 | Kevin Marks: Well, of course, they’d be very welcome. The goal of this is to provide infrastructure, but there’s a slight difference of approach between the two.
OpenSocial is built on using existing web standards, of using HTML and CSS and JavaScript to write the applications and proving a JavaScript library for the social components of that. Whereas, the Facebook model is about having their own layout and their own query language. So there’s a difference of approach there, which means that they can be complementary. It may be that we could combine some of those features. Maybe Bebo’s work could do that, but from our point of view, we want to make sure that we are going with a web as the platform rather than trying to build a separate platform. |
| 08:31 | Sean Ammirati: Cool. So let’s talk a little bit about activity streams because, as I share with you the brief time I was at IIW, I feel like activity streams have gotten the least publicity. So I wanted to drill in on them a little bit more. So talk about this third component of OpenSocial activity streams. What’s the vision for it? Where is it right now?
Kevin Marks: Well, the idea of activity streams is the flow of events that you create within the social application. One of way of thinking about it is like feeds that you already have with blogs or with other existing social services like in del.icio.us where they would generate a feed of the stuff that you create in that, and you can then combine that to other services through a feed reader. If you look at many of the existing sites, they will let you import feeds and bring them into your social networks and combine them to show events that you’ll be having elsewhere. Orkut does that. Plaxo does that. Jaiku does that. There’s a bunch of services that do that. |
| 09:35 | So the goal of the activity streams is to abstract this out and let you do this as part of your application within a social network to post events to the stream as people write reviews or share things or given the social network activities and then be able to read those events back from the stream both for the user who is hosting the application and their friends, so you can see what their friends have been doing with your application and present it back to the user.
The main thing that adds over the data store is a sense of time. You have a sense of when the events occur and the flow of time. I expect that different applications will filter these in different ways and present them differently, but the main idea is to use the existing infrastructure of feeds that have already been built out and combine it with the social networking world. |
| 10:35 | Sean Ammirati: Right. I think the filtering thing is interesting. So if had then open OpenSocial app that posted a message to the activity stream, it then would be up to each of the containers, each of the social networks to choose whether to put that in their activity stream or not, correct?
Kevin Marks: Yes. We expect the social networks - it’s within their control to decide which events to show and where, and present them as part of the main API. So some of them move all of them and some of them filter it out. Sean Ammirati: In terms of reading, in terms of pulling activities out of the stream, will OpenSocial apps be able to pull of the activities or will that also be filtered? Kevin Marks: That’s under the control of the container. The basic idea is that your app will be able to certainly get its own activities back, but it should be able to get other activities too. Sean Ammirati: OK. |
| 11:37 | Kevin Marks: Which ones show up will depend on the containers’ privacy policies because you don’t necessarily want to expose all the user actions in one app to another app.
There’s a difference in kind between some of the social networks which is that many social networks are what we call performative where you’re basically showing off stuff to the world you’re performing. If you think about MySpace or Orkut, they’re primarily of that kind. Most of your stuff is public by default and you’re creating a public view of yourself. Whereas, there are other applications that are more for controlling your own set of friends and not really doing it as a performance. You’re doing it, and that’s all for yourself. The original Plaxo is very much like that. That is for keeping track of your contacts and friends’ names and addresses and so on. |
| 12:31 | There are other social networks that are at different points from this continuum. Some of them will let you see anybody’s profile and information by default, such and such again is Orkut by default. You have to actually turn stuff off. Whereas others will only let you see it once you’ve actually made a relationship. LinkedIn will be an example of that.
So there’s a difference of kind in there between whether you’re naturally performing or you’re just naturally classifying information to yourself. So what your application will have access to would depend on the privacy policies of the social network it is running within. What that means is that your application doesn’t have to do the work of setting up that privacy policy. The user has an expectation of how the network they’re running in behaves, and that will be projected onto your application. So you will make the “get friend’s call” or whatever and the result you’ll get will depend on the policy of the container. The same is true for the activity streams. You will be running within the policy of the social network that’s containing your application. |
| 13:37 | Sean Ammirati: Yes. I do like that distinction. I believe you interact with a lot of the partners that are supporting OpenSocial or planning to support it. That’s correct, right?
Kevin Marks: Sorry. I do what? Sean Ammirati: I’m saying I know a lot of your role as a developer advocate and sort of an evangelist to the community, but you also are interacting with the containers, the people who are supporting OpenSocial. Do you have a sense as you talk to them? I guess, first of all, has there been anybody who has deployed the activity stream component to OpenSocial live right now? Second, do you have any sense on what the excitement level is around this relative to the other two components of OpenSocial? |
| 14:20 | Kevin Marks: It’s all very much deployed in the Plaxo Pulse implementation. That’s available now that you can go and experiment with it. That’s something they already have ways to combine even streams from different sources there and flow them in. So that fit in very naturally with what they were doing.
Again, it varies between containers. Other sites will make it a big or a smaller part of the interface depending on how their site feels. For myself, at the moment, feeds are a bit of a minority interest if you think about it. People, there are a bunch of us who use feed readers all the time and keep track of things that way. But there are some barriers to discovering them and copying the URLs and connecting stuff together there. One of the hopes is that this will make it more straightforward to do so because it will be a natural part of the social networks to connect these apps. Sean Ammirati: Yes, I would agree with that. |
| 15:24 | Kevin Marks: It’s one of those things were the people who do use it are very keen users of it. Once people discover this way of working of feed reading and so on, that they tend to use it a lot, but there’s a barrier to entry because of having to type in URLs that end up being very discoverable and not being able to join them up so easily. So there’s a lot of scope for the different social networks to make that easier and to combine these together, and, hopefully, OpenSocial can help support that. |
| 15:51 | Sean Ammirati: Yes, for sure. The feed that I think most is the Facebook news feed, right? It’s amazing, although there was user pushback originally, I think, how useful people have ended up finding that functionality as more of the social networks move to it. I think the activity stream is a big idea.
One of things, I guess, I was curious about though going back to your two types of social networks, the performance type and then the server controlling an app for yourself. This question, I’d like you to actually boil back up to talk about the three different components of OpenSocial. How different do you think the uses or the ways a developer would deploy an OpenSocial app? How different do you think they are if they’re trying to gear that app for a performance network versus for controlling an app for yourself? |
| 16:50 | Kevin Marks: There’s another distinction we make with these sets of friends you can ask for. You can ask for the viewer for the page or you can ask for the owner of the page with the assumption that the owner of the page has embedded the application within it explicitly and given permission. Whereas, the viewer, you may not get an answer for that if the user hasn’t given the application permission to know that. The information about the viewer and who their friends are may be masked from your application until the user gives permission to that.
With the networks that are strongly browsing folks, they will be able to move this info from other people’s feeds. The owner of graph becomes much more important, whereas for the ones that are personal, you tend to find that the viewer nearing with the same person in most cases. You’re looking at your own dashboard of information and you’re not browsing other people’s view of it. So what you’ll see is an interaction between which of those two are most important to your application, but that is not the way of characterizing it. |
| 18:00 | Another thing that we found with that distinction that we’re thinking about is that once we’ve setup this viewer versus owner thing, we found that abstraction actually worked in other cases as well, for example, within the business side of things where Oracle, CRM and SaleForce are looking at OpenSocial to enhance their products. There puts you in a controlled environment. You do know who the user is. They are logged in and they are using the system that way, so the viewer thing can be populated there because you’re in a corporate environment there, but the owner can be more use in abstraction than just being someone else from the network. It could be a company that you’re looking at. It could be a department within your company. It could be a customer of yours who you’re trying to keep track of the information you have about them. The application could be given their profile, and the people who are related to them to look at the system.
So there, the context would feel different to the user, but to the application, it would look the same. You’d have these two sets of people in relationships that you could manipulate and send information about. |
| 19:20 | There’s a difficulty in representing human relationships in a computer because human relationships are very subtle. Evolution psychologists says that pretty much all of the cerebellum is devoted to processing human relationships and understanding the nuisances of them and keeping track of them. So trying to represent that in a computer is hubristic, but if you can just keep track of the people that the person you’re interacting with was already mentioned and let them see those people and look at the things that they’ve said or the actions that they’ve taken, then the human watching is able to interpret it within their social content.
So rather than the app trying to subsume the function of your cortex and mapping people’s relationships, the app is just able to say, “OK. This container has some information about people. I will reflect that back to you and then you can make the decisions about which ones to click on and which ones to make sense of.” |
| 20:19 | Sean Ammirati: This viewer and owner is an interesting way to segment it, but maybe that it is how you’re doing it. I’m curious how are you, guys, segmenting the applications? So you’re whitelisting this. Obviously, you have this ability into all the apps which are, I guess, official OpenSocial applications. Do you have some type of taxonomy or a way you’re trying to categorize them beyond the three high level - people and friend, data persistence and activity stream level?
Kevin Marks: You mean a way of categorizing the applications that different people write? Sean Ammirati: Yes. I hadn’t really thought about it, but the viewer and owner thing is one interesting way. This app is targeted at viewers. This app is targeted at owners or targeted at both. As I see different OpenSocial apps, I sometimes struggle at putting them into categories of other similar applications. I’m curious. How are you guys doing that at Google? |
| 21:22 | Kevin Marks: So far, we haven’t done much directly with that. The closest thing that we’ve got at the moment will be the gadget directory for iGoogle which lets the gadget author, in this case, put an entry into the directory, add some explanatory text and image and keywords and hope it would be discovered. I don’t know if you use iGoogle much but it has the discovery mechanism there where you type in a word and it gives you the apps that match that word. We would expect to do something similar for the OpenSocial application. |
| 22:00 | One of the feedbacks we got from the container partners was that different ones would have different policies around featuring and whitelisting and blacklisting gadgets. We hope to do some kind of shared knowledge about that, but different ones make more sense to different networks. LinkedIn doesn’t want zombies throwing sandwiches around if they want business related applications there, so they would whitelist business ones. Whereas, the more recreational social networks are more likely to have an open door policy and allow much more in.
Sean Ammirati: That’s interesting. What other feedbacks have you gotten from the containers? |
| 22:40 | Kevin Marks: Well, I’ve already talked about it already. The feedback was that this viewer and owner distinction was interesting and useful because it enables us to abstract out the different kinds of networks that have different behaviors. So that meant that you can represent different kinds of networks but the application running can just query the environment and find more information there.
One of the things that we discovered was that we needed better security in the method to call out to remote applications because if you’re doing an HTTP fetch over the network, that would be potentially spoofable, so there’s now a protocol within OpenSocial being designed to sign those requests so that the application server can know that it has come from a particular container and that the user ID that container is parsing hasn’t been tampered with. So that’s something that has been added since the initial release. That’s using the OAuth signing method to do that. |
| 23:52 | Sean Ammirati: Which is great! What about on the developer’s side?
Kevin Marks: One of the things that they were interested to know was if there’s more than one place the applications can run, if there’s a profile surface or a full-screen surface, could they have information about that. So that’s something we’ll be adding too to let them have more introspection into which environment within the containers they’re running it because that will allow them to make different decisions on layout and information based on knowing what kind of context they’re running in. That’s a case, again, where we have to look at several of the containers and say, “What are these places that these run in?” What’s the difference between them and come up with commonality there. |
| 24:40 | Sean Ammirati: Alright. Well, one final question I guess would be - if you were talking to a Facebook developer today who builds apps on a Facebook platform, what would be the 30-second pitch you would give them to move to Google OpenSocial? It seems like a good question to end on.
Kevin Marks: [Laughing] The broad thing is much more potential users. There’s a much larger user base across many more social network platforms and in many different countries and social groups that aren’t just the demographic that Facebook already has. One of the reasons that Facebook got a lot of attention is that it has moved into the university educated people working for U.S. corporations’ demographic very strongly which makes sense given its roots. So those of us who work in the industry are suddenly aware of it, but there have been social networks out there for 10 years or more who have been gathering users and clustering in different places, and this is just the one that surfaced within our homophylic demographic so there’s a wider world out there with just Facebook, and that’s the key thing to think about when doing this. |
| 26:00 | Another thing that’s different from Facebook is that you don’t necessarily need to host everything on your own server because of the Data Persistence API so that you still have the good stuff within the container. So for doing applications that don’t require external information, you can do something that runs wholly self-contained which means that there’s a low barrier to entry and it all depends to scale. They can scale up with the social network itself because they’re running on the social network server.
So I would expect to see lots of smaller applications rather than the very large scale ones because they’ll be able to run them in a self-contained way without having to do a server setup as well. |
| 26:44 | Sean Ammirati: Excellent. OK. Kevin, I really appreciate you taking the time to join me today. Hopefully, we can get a little more information out there on the activity streams. I think this was a great overview on some of the things at least I was curious about OpenSocial. So I appreciate your time today.
Kevin Marks: Great. Thanks very much. Sean Ammirati: Thanks. |



December 22nd, 2007 at 12:54 am
[…] Sean Ammirati pressed Google Developer Advocate Kevin Marks on that point during an interview about OpenSocial last week, but Google is reluctant to put a date on MySpace’s adoption of their […]
December 22nd, 2007 at 12:57 am
[…] Sean Ammirati pressed Google Developer Advocate Kevin Marks on that point during an interview about OpenSocial last week, but Google is reluctant to put a date on MySpace’s adoption of their […]
December 22nd, 2007 at 4:51 pm
[…] Sean Ammirati pressed Google Developer Advocate Kevin Marks on that point during an interview about OpenSocial last week, but Google is reluctant to put a date on MySpace’s adoption of their […]
January 8th, 2008 at 11:49 am
[…] A while back I was at a Webguild event about OpenSocial. I was having a conversation with Kevin Marks, the Developer Advocate for OpenSocial - Google’s new API set that allows developers to tie […]
March 7th, 2008 at 1:26 pm
[…] Kevin Marks Read/WriteTalk Interview […]