Refactoring Social Networking

I’ve been thinking for a while that the way social networking is currently is flawed. The current model is a centralized one. Whether it’s Friendster, MySpace, Pownce, Twitter, Magnolia, or Facebook, the data is controlled by a single company’s server. They’re entirely responsible for the user experience, securing our data, and providing a scalable infrastructure. Another thing is that because they have all our data, they can manipulate however they want – or event sell it to businesses if they choose. “Whoa!” you say “Dude, you just name dropped several services – some of which don’t exist anymore!”. Yes I did. That’s my point!. What happens to your data when they closed up shop? Gone! With the flick of a switch, the data you’ve spent hundreds of hours every year contributing, is no longer available. Another problem to consider – what happens when a site changes their Terms of Service? or their privacy settings? Both of which Facebook has done a few times. Twitter recently got into the game by deciding to change the rules on developers, much to their customer’s disappointment.

Alternatively, think about blogging? A self-hosted blog runs on a webhost that you choose. It’s decentralized and familiar. Sure, there are lots of people who use services like WordPress.com, but even then you have control over your data. Your data is yours. It always should be. Blogs are the lone source of social data. Photos, Video, status updates/tweets, are currently shared across a variety of services. What if you didn’t have to? What if you could regain control of your data? Well, I have an idea.

visualization of a social graph

We need to create a decentralized system, one that extends the blog and uses a protocol to share data. The system would have a social dashboard, whose purpose is to display a stream from the sites you follow. You’d have the ability to follow specific types of content from each. You could choose follow my status updates, not my other content. For another site you might only want their blog posts. I think we have everything we need technology wise. We just need to put it together the right way. WordPress I think would be the best starting point. It’s default operation is to display blog posts in reverse chronological order (newest to oldest), and static pages. Now imagine there could be multiple new datatypes also stored and presented in a similar fashion as blog posts. One data type is a micro post, which is basically a tweet or facebook status update. A second data type is media post, which is an image or possibly a video, with a caption, like you’d see on Tumblr. Another data type is a checkin. These new datatypes would be part of core. Other data types could be added to extend your site via plugins.

RSS could also be used, but it would need to be modified a bit to support data types. Although, it would need to be implemented differently. Instead of consuming it in a RSS reader, your site would consume it. Your site would publish your own data, and use RSS to consume the data from those you follow. A site would send out pings to followers to notify them of updates. The data you consume from others would appear on a social dashboard that is avaiable when you login. It’d appear as a stream but one that you could filter by data type, source, or keyword.

Modifying WordPress is a great start. It’s the most popular blogging platform, so it could have a big impact out of the gate. I’d want to see Drupal implement it next, and then the rest. For this to succeed, interoperability will be critical. So software makers will need to collaborate and not compete to make it work. If things go as I hope, every CMS will be updated to collaborate this way. People should have control their data, to choose which user experience they want.

2 Responses to “Refactoring Social Networking”

  1. Tantek says:

    “We need to create a decentralized system, one that extends the blog and uses a protocol to share data.”

    Andrew, this may be the community you’re looking for, and there’s a lot that people have built and are actively using on their own sites today. Join us:

    http://indiewebcamp.com/
    http://indiewebcamp.com/IRC

  2. I’m working on something similar: http://activityweb.org/