Interview with Steve Ivy of the DiSo Project

The announcement of the DiSo Project in December of 2007 was a great encouragement for people on the Web who are worried about identity silos, “walled gardens”, and user lock-in on social networking platforms. Since so many of these subjects are closely related to user autonomy, I did an interview with Steve Ivy about the origins and goals of DiSo, current progress, and where he things things are going in the future.

When you talk about “social software”, what do you mean?

Man, “social” is such a loaded word these days, with phrases like “social graph”, “social networking”, and “social media” floating around. In the abstract, social software lets some group of users with something in common interact with each other. Abstract, and fairly useless since it basically describes The Internet. Coming down a few thousand feet, I’d say that social software provides a platform for people to share about their own lives, and participate in the lives of others. Bringing it down to the ground, take Facebook: Facebook has become kind of the “canonical” social platform in that explaining social software usually comes down to “kinda like Facebook”. Or MySpace. People (I’m trying to avoid the soul-denying term “Users”) on Facebook can share a variety of interactions from their on- and off-line lives with each other. Those interactions can be simple, like a status update “going to the dentist. yuck!”, or complex, like documenting an upcoming event and inviting one’s friends (real or imagined!), and seeing who has accepted the invitation.

Perhaps the crux of it is – social software alows people to interact with each other online in ways similar to their Real World interactions – with just a bit more wiring involved.

What’s the problem with social software that you’re trying to solve?

Most of the well-known or well-understood social sites (Facebook, MySpace, Hi5, Orkut, etc) are sort of like country clubs – they confer all kinds of benefits on members, but non-members can’t play. I don’t mean that they are exclusive (though a few are, check outasmallworld.com) but in order to enjoy all those great social interactions, you have to get your friends (in real life or online) to join the club. We call it a Silo or Walled Garden. All the interactions have to happen inside that system.

DiSo is a cleverly shortened form of “distributed social” – the idea that surely we can build ways for any site to participate in this “new” social web. The other way to look at this is one I really like: we’re pushing control of the social data out to the edges, as Danny O’Brien likes to phrase it. While total user control over this data may or may not be ultimately attainable, I think that working towards that goal is a good counterbalanace to the centralization that is prevalent in the silos.

What is the DiSo Project?

The DiSo Project is an umbrella project for building and incubating social software components that will enable any site – focusing on small, independent sites – to be linked up into a larger social construct. We’re building on open standards and protocols, some of which exist today, like OpenID, OAuth, and microformats. Others, like XRDS-Simple and the portable contacts api, are in an early implementation stage or are still being nailed down.

How is it trying to solve the problem(s) with social software?

Over time, we’ve distilled the problem area (from a technical perspective) down to 4 or 5 domains:Contacts/Friends, Profiles, Messaging, and Activities (we’ve backburnered Groups for now as “hard”). These aren’t clearcut delineations – there’s overlap, just like in real life! But for a programmer, they’re useful. Anyway, these are the areas we’re focused on, and in each there are in-use standards that we can build on.

DiSo got started from some hacks I did to the WP Microformatted Blogroll plugin for WordPress that Chris Messina (DiSo co-founder and Agent Provocateur) had written nearly a year before. I was reading about some work that the DIG (Distributed Information Group) had done with FOAF (Friend Of A Friend) and OpenId to create what we’d today call a social whitelist – I looked at that and thought I could do something similar with XFN (XHTML Friends Network) and OpenID. So I downloaded Chris’s plugin (GPL’d yay) and got to hacking. That work got rewritten a couple times, and now lives (I think!) in the wp-contacts-list plugin in the DiSo repository.

So, for contacts the foundation was XFN. Core to these interactions is Identity – for that we build on OpenId. In looking at Profiles, we have the hCard microformat, a convenient format that’s both human- and machine-readable. Messaging is trickier – regardless of implementation, there’s a real-time expectation from users there that we need to address. There’s a lot of interest in eXtensible Message Passing Protocol (XMPP) (the protocol used in Jabber chat and Google’s gTalk, AtomPub, and a few others, including Laconica (cue subtle suck-up to interviewer).

Tell us about yourself. Who are you? What’s your background? What’s your principal role at DiSo?

I’ve been designing, building, or designing and building websites since about 1996. I got my start in print design but was already dabbling in multimedia in school, between 1992 and 1996, so the transition to the web was natural for me. I pursued graphic design because of my affinity for the ruler during high-school art classes, and I suppose programming is just a whole new level of control! but there’s creativity in software too, and once I discovered it I was hooked.

My earliest experience with the internet and the web up close was a the linux web/mail server I watched our ISP guy build for the agency I was working with at the time, around 1997. This idea that anyone could download this entire operating system, with programs, for free and install it on  commodity hardware was completely new for me, and Free Software was indelibly linked to the Web in my mind from that day. Now, this is coming from a die-hard Macintosh user, but my first web programming was in perl and msql, and I’ve always advocated for Free technologies where it seemed to make any sense.

Roll forward a few years, and I got interested in standards-based development in general, and involved in the microformats community in particular; it was my first experience with community-driven standards. The DiSo community is sort of modeled on the microformats community – it’s very adhoc. Chris and I are the co-founders, list moms, wiki gardeners, and askers-of-questions, and there are a few prolific coders who are investing time and energy in producing some complex bits of code. I’ve done my share of coding, but the day job means I don’t get as much time as I’d like. My most recent contributions are an XRDS-Simple plugin for Movable Type, and a fairly complex and (if I may deign to say, cool) Friends plugin for Movable Type. The Friends plugin lets you manage a Friends/Contacts list on your own site, will display a blogroll for your site, and uses the Google social graph api to provide some powerful discovery, import, and merging of contacts from other social networking sites.

How many people are working on the project right now? What are they doing?

Chris and I perform community service (that sounds like a bad thing) on a regular basis, I’m finishing up the friends plugin, but the meat of the work right now is coming from Will Norris and Stephen Paul Weber. Will, of course, took over the original WordPress OpenId plugin and is working on version 3.0. He and Chris now work for Vidoop full time on DiSo.

The unsung hero of DiSo though has to be Stephen Weber. Stephen’s a coding machine, and participates in a lot of the discossions on the list, championing simple approaches when some of us start wandering off into the weeds. Stephen has done the majority of work on activity streams, profiles and permissions (something Stephen and I hacked on, and he fleshed out, that came out of the OpenId whitelist work early on). Recently Stephen built a very very cool social search engine that crawls hCards, FOAF, and XFN data via the social graph api. He’s now got over 100k profiles indexed, including contacts for each profile. It’s simple but very powerful.

There are others that have worked on code for various platforms, and there’s been a ton of really good discussion on the list. I’d call out James Walker of Lullabot who wrote an XRDS-Simple plugin for Drupal; Mark Paschal wrote the original Action Streams plugin for Movable Type, of which Stephen’s action streams plugins was a straight port. Technically, either projects are part of DiSo (i.e. in the repo) but both Mark and James participate on the list and have encouraged our work.

Your first release is based on WordPress. Why did you choose it for the initial rollout?

Several reasons:
  1. Chris’s initial plugin was built for WordPress, and we both used WordPress for our personal sites.
  2. WordPress is really popular among hobbyists and web-savvy families, it can be hosted damn near anywhere, and it represents kind of a lowest common denominator platform.
  3. It’s got a well-ish documented plugin api that provides access to near everything in the app.
I really wanted to target the kinds of folks using WordPress: hobbyist, families, and more practically, early adopters. These would be the folks that would actually give feedback, install untested wacky plugins, and give us grief when something was stupid. Thankfully, all of that has happened!

Where does DiSo stand in relation to open standards around identity — for example, OpenID? MicroID?

We’re huge fans of OpenId, a lot of our code either depends on it or is focused on extending the ideas. MicroID I’ve heard of but only used a couple of times, so I can’t comment with any authority, but it seems like an extremely minimal approach, so I don’t see it as something that’s going to be the foundation of a series of technologies. OpenId has the depth and breadth of implementation behind it.

I hope any MicroId proponents out there will correct me if I’ve misjudged.

Compare and contrast DiSo with some other open social efforts — XFN? FOAF? OpenSocial?

XFN and FOAF are enabling formats that we’ve embraced – at least, XFN in a big way, in the contacts, profiles, and permissions plugins; we do use some FOAF data, but it’s generally abstracted away by using the Google Social Graph APIs. I’m not unaware of the irony of using a centralized social graph service to enable a distributed social network, but it’s hard to avoid when crawling and parsing these large FOAF/XFN networks is so resource intensive.

Open Social is always on the radar, sort of over there to the left. Personally, I kind of like what Google is doing there, but it’s not what I would call distributed. It’s more like tether-ball. You can play all around the silo but you still can’t really take your ball and go home if you get your nose bloodied (to violent a metaphor?). Friend Connect (Facebook) is the same. Now, Kevin Marks is probably going to set me straight on something I’ve got wrong about Open Social, and that’s ok. I’d like to see DiSo code talking to Open Social, but it’d be easy to get sucked into that ecosystem before we’ve got a solid one of our own.

Are you familiar with NoseRub? AroundMe? What’s your impression? How could they use DiSo, or interoperate?

I met Dirk (Olbertz, one of the NoseRub guys) at the Social Graph Foo Camp early this year, and had some good conversations. He’s on the DiSo list and speaks up occasionally, but we’re not tracking development between the two projects. NoseRub is a protocol for sharing social data (contacts, for example) across social networks, so it’s certainly something to watch. I could see a DiSo  mplementation in the future if it makes sense.

Are there other interesting projects you’ve got your eye on right now?

I really want to spend some time on Portable Contacts. It’s an API that Joseph Smarr from Plaxo has been shepherding (with others I’m sure), and he’s been talking to Google, Yahoo and others; it’s being put out there as an open api spec, so I’m like to play with adding support to the MT and WP contacts plugins.

What can users or developers do to help with DiSo?

Developers are easy – hit up the list, let us know your interest, and start participating. Tell us about your platform of choice, your experiences/ideas re: social software, etc. Check out the wiki and find something interesting to work on, or propose something. It’s something of an adhocracy, so pick something and tell us how you plan on approaching it. At the same time, check out the list archives – your pet project might have been discussed in the past and there might be some gems in there to help get you started.

To be honest, we’re not as close to having something for users to play with as I’d like. Developers or technical users, yes – there are quite a few components you can get from the repository and install on a site to test things out. But not much I’d point my wife at yet. The upcoming MT Friends plugin for is going to be the most complete piece I’ve worked on so far, and I’d probably set that up for a friend or fmaily member, but it’s hard to say “this is DiSo!”. It’s a small piece of the whole.

Where do you see DiSo in a year? 5 years?

In a year, I’d like us to be where I wanted to be a year from one year ago. :P That is, I’d like for my wife to be able to use her WordPress blog app to follow her church and school friends’ online social lives. When I first started explaining to Jodi what we wanted to do, she got it enough to realize that it meant not having to maintain, or visit, a half-dozen profiles on as many sites just to track her friends. A year from now, I’d like to come close to meeting her expectations – at least recognizably (if not fully).

Some people have confused what autonomo.us is doing with what DiSo is doing. How would you compare the two?

I definitely think there are shared goals and philosophies. As Luis posted on the blog:

With this focus on principles, rather than code, we think we complement- rather than compete with- projects like DiSo, DataPortability, and Open Web Foundation. We’re not ivory tower types; every one of us has an extensive development background, so we all have the deepest respect for the people writing code (and specs), and no desire to get in their way.

I think the shared principles have to do with pushing Control of data, interactions, etc out to the Edges. For autonomo.us, the Edge means the desktop, and Control means Free and Open software that cannot be taken away at a corporation’s whim. For DiSo, the Edge is a web presence under the user’s control, and Control means Free and Open Services that can be replicated/federated at need. But that’s just a stab at a comparison – it’d be fun to get together sometime and talk about the parallels.

How do you think autonomo.us can help DiSo?

Join the conversation – let’s talk about where our philosophies align, and where they diverge. More and more services online are extending themselves to the desktop – look at iTunes, or Identi.ca’s xmpp integration. That means we have to think about how desktop software is going to interact with our network services, software that isn’t a browser and may be commercial in nature. These discussions are going to help both communities grow.

What comes next with distributed sociality on the Web, in your opinion? Where are we going?

Whew, prognostication has never been a strong suit of mine, but I’ll give it a shot. I think that something like XMPP (or actually XMPP) is finally going to crack the federation problems between nodes, and after that, we’ll see a leap in creativity as these different components now have a backbone to ride on. That I’m looking forward to.

What comes next for you personally?

That’s a good question! Continue building on what we’ve done so far in my spare time, continue evangelizing the technologies. Another thing is to keep pushing the community to reach out to other communities – we’ve had some awesome conversations with Peter St. Andre and the XMPP community and I want to see more of that.

Tags: , , , , , , , , ,

  1. So, I think Steve’s got a slight misunderstanding of the point of autonomo.us. We’re not concerned with desktop software at all. We’re entirely about the cloud. Our driving goal is to ensure that users of software-as-a-service have the same freedom of choice — autonomy — that users of Free Software on their own desktop or laptop have. We may take freedom on the desktop as a metaphor, but other people are working very hard, and doing a very good job, of ensuring that users can have a free and open source desktop stack.