I have been pitching this idea of a distributed social network to everyone that can stand to listen to me. I realize that the conversation around Wordpress and the future of social networking is heating up, but as it does I think it is important to begin thinking about implementation. It is fun to philosophize, but at the end of the day users want some toys to play with.
Chris Messina lays out his vision and the particular functionality associated with it on his wiki. Automattic picked up Buddy Press, and the code is still available on Google Code. For historical reasons here's a thread on the WPMU forums about the activity around Buddy Press>. There is another social plugin for Wordpress called Xiando that hasn't gotten a lot of attention.
We are going to do our part and contribute as well.
As part of an effort to build a social network for Teachers Without Borders we came to a realization that it would be hypocritical to create a network filled with borders. Thus, we began thinking about how escape the social silos that constitute most social networks and bring the focus back to the individual. That focus led us to blogs which now leads me to the actual details of how to build a network around individuals.
I think it goes like this:
- Rich Profile in your blog
- Ability to add all the fields associated with your typical social networking platform. This could be done in a folksonomic way. Let users add whatever fields they want and allow communities to converge on an ontology. Perhaps there could be a microformat standard for this.
- We'll get to what a community is in a bit, but different communities have different needs and would require variable metadata. For example, Teachers Without Borders would likely need to gather information about teaching skills, volunteer efforts, translation abilities etc. Let each community request this specific information from members, but store the data in each member's blog. The primary goal is to center each individual's activity around the space they own rather than lock it up in a data silo.
- Everyone is building identity aggregators these days. That is stupid. Why should I gather up my data into a silo where some big company can benefit from my efforts. Instead gather the bits into the user's own little part of the internet. If you want to gather up your data gather it up into a space you control.
- Once the data is gathered up you can then control pass it back out to your friends. This won't be hard as your friends will be stored locally.
- Friends
- A blog roll looks an awful lot like a list of friends and XFN and FOAF let you express relationships, something Facebook doesn't let you do. This part of your social network is obvious.
- Create a friend request widget so that someone that finds you can initiate a relationship. Clicking the button would request a url to their blog. Behind the scenes your blog would contact their blog, discover what it can based on their profile and aggregated identity and report back to you. You would be notified of the request, provided with the other user's information and then have an opportunity to describe your relationship with that person.
- A first pass at this would leave everything public, but features could be added to control your interactions with your friends so that your boss doesn't see pictures of you and your buddies from college. Chris Messina has a handle on that idea using OAuth
-
OpenID
- Your blog becomes your OpenID provider. Whether this is through delegation or by your blog actually being able to act as a provider I think is an open debate
- OpenID becomes palatable because when you make a friend request on someone else's blog it asks you for your blog url which just happens to be your OpenID. The interaction is natural rather than the odd login experience you currently get with OpenID that confuses most users. (I tried using OpenID and nobody understood that they needed to enter a url for their username. Normal users have a hard time getting that.)
- OpenID lets you establish the initial connection with another user or with a community. During the interaction the two blogs exchange authentication information which will let them request data at a later time based established relationships between the blogs.
-
Trust
- Spam is a problem so when somebody makes a friend request they enter their url and login to their blog using OpenID. After that two blogs exchange data. If the person making the request is already trusted by someone you trust or is trusted by a community you trust then you would see their request.
- It is possible to scan through networks and find out if the person is trusted 5 or 6 levels. This would work kind of like the DNS system where if one system doesn't know the IP address they ask the next guy. Might have to be careful on this one though so that you don't end up with bots constantly scanning your friend's friends looking for people to trust.
- If a user belongs to a community you trust they would float to the top.
- The bots that want to be your friend could then float to the bottom, or an Akismet style system could be setup where users contribute to the list of known bad guys
-
Stream of Consciousness
- Since your blog now has all your friends setup it is easy to watch the data coming into their profile and suck that into your blog. You would go to your blog to see what your friend's are up to or the stream could be feed back out to a reader.
- Each entry in the stream could have a discussion attached. The discussion could then be fed back out when your friend's harvest your blog. Think it as a distributed forum.
- A share button would share things you find with your friends. You could even add a bookmarklet that dumps interesting crap you find on the net into your blog which would then be fed back out to your friends.
- Applications are merely Wordpress Plugins that interact with the stream. Riding in the MS 150 and need donations? Install an app and have it post a message to your stream. Want to poke someone? Add a plugin, the poke shows up in their stream and they can click to add the new plugin. Granted this would take a bit of work as the plugin would have to be installed, but we'll figure it out.
-
Chat
- A dream feature for me would be a chat that understood my relationships. At night only my wife and video game buddies could see me. During the day I could shut down friend chatter while I am at work. No longer would I have to maintain 6 IM accounts. (Why hasn't anyone done this?)
- Community
- For the guys who are already popular community is not a problem. People flock to them. For a new blogger the question becomes how do I get people to read what I write? If you are into SEO the question is how do I get links? There are a lot of great writers on the Internet that are not A-list bloggers.
- Make the A-list irrelevant. Outside of the geek community many people don't care about the top bloggers. My wife wants scrapbook information. My dad is looking for motorcycle junkies. I would love to be able to push a button an have a short term community that lets me and a few other guys work together for a few months. Student study groups may not live beyond a semester but are extraordinarily valuable during their lifespan.
- You sign up by adding your blog
- A community will be made up of bloggers that apply to join. If a user wants to join but doesn't have a blog Wordpress MU will provide one if the community is built on this platform.
- The community will aggregate posts from users and filter on tags, editor's opinion or collaborative filtering based on how the community creator sets it up. Think millions of Diggs with the community in charge.
- Even without a WPMU install you could spawn a community from your blog - handy for the throw away groups where we only need to collaborate for a short period of time.
- New members who write well would find their way to the top of the heap so it is no longer difficult to get attention from people who matter to you.
- Since the community is sucking in posts from its members it can connect users with one another based on existing friend relations and based on the content generated by each person.
- A new community must be trivial to create
- If the community needs profile specific meta data it can request that data when the user signs up. The data is added to the user's blog and then harvested by the community. This information would be namespaced by the community url and therefore unavailable to other communities. I'm still thinking through that process.
- Use Lucene to index incoming data and make recommendations.
This is what I have so far - at least that is what I have distilled from the pile of drawings on my desk. I will be interested to see how much of what we want to do overlaps Automattic's efforts with Buddy Press. If we overlap I am hoping they get done first so we can use that :-). We will also be watching the DiSo project closely. This is a great opportunity for the community to build and individual and collectively own the social graph.
Let me know what you think.
Tags: DiSo · Oauth · OpenID · Social Software · Teachers Without Borders · Wordpress · wpmu15 Comments











15 responses so far ↓
Wow, that’s ambitious. However, I do think that the coding is possible. The only problem is buy in. Facebook’s greatest value as a social networking tool is the fact that “everyone” is on Facebook. Where would all the millions of Facebook users get these modified blogs from? Do 99% of users care whether or not their data is in a silo? The only way I see something of this scale working is to work with <a href=”http://automattic.com/”Automattic to incrementally incorporate these features into WordPress.com. Then, when it gets far along enough WordPress could release a “plugin pack” that allows self-hosted users to incorporate the social network features into their blogs. It would also take WordPress changing the way that plugins work in MU, so that blog owners in an MU system can install plugins without affecting everyone else on the system. Given all of that, it would still only target a small percentage of the community. I just don’t think the general population cares enough about openness to seriously buy in.
[...] this focus is what has me very excited about recent posts from Andre Malan, Justin Ball, and David Wiley. All of whom are starting to imagine WPMu as both a dynamic learning space, as [...]
That’s a lot of coding.
Also, Andrea what do you mean by “. It would also take WordPress changing the way that plugins work in MU, so that blog owners in an MU system can install plugins without affecting everyone else on the system.”
because that’s currently possible.
Andrea, I just mean that if you are one of the anonymous users of a service like WordPress.com and you find a cool plugin, you can’t just install it. Plugins have to be installed site-wide and from there can be activated on a per blog basis. What I’m thinking is that if the user could install plugins into a place like “blogs.dir” instead of “plugins” then we could do stuff like “want to poke someone? Add a plugin”. Reading the post again, I see that Justin recognizes this hurdle in the last sentence of point 5.
Don’t let my negativity be misinterpreted, I think that this is a great framework for working with WPMU as a social network and many of these things need to be tried. I have a few other features that I have been thinking of (ones that Facebook hasn’t even thought of) that I will post about within the next few days.
Ture, users can’t install plugins.
This is for reasonable security measure,s but since the current WP has API to see when plugins need updating, I’m sure at some point you probably *could* make it so a user can install a plugin internally from a trusted source.
Thinking about it, now *that* would be cool… Ever work with SMF? It does something similar. Mostly, I try to anticipate what a user would want and install the plugin for them and they can activate or deactivate it as they wish. On one site I run, users have been known to request specific plugins, and if they work, everyone’s happy.
I don’t see you as being too negative, I worry I might be doing the same.
The m ore I look at all of these ideas, the more I see that anything really *is* possible - we just need someone to code it.
This is a lot of coding and a bit ambitious, but a lot of coding is what I do. Also, I think we will break the work into pieces. Do something meaningful then release it. Try to get some adoption for that part and then add to it. That’s how we have managed the development cycle at COSL so far and it seems to work pretty well. Working in Ruby on Rails we can put up prototypes of our ideas in just a few days (sometimes just a few hours). My PHP fu is a bit lacking right now, but we have the drive to make this happen.
Andre, I agree that Facebooks greatest value is that everyone is at the party. However, in spite of my ripping on Facebook I don’t think that these efforts will result in one giant party that will compete with Facebook and Myspace.
What we want to enable is the formation of a social graph between bloggers and a platform for niche communities. In that space I think people will adopt the technology because they derive personal benefit from it. Those wanting to create communities will do it because the technology is free and they can do what they want with it. If they want to form a community around underwater basket weaving they will be able to do that. If they want to run ads to make money they can do that. If they build the community so their friends can get together it is simple to do so. I think people will create communities because it benefits them which is key to the success of any system.
I think users will install the plugin because it will let them slip in and out of communities with ease. The fact that I don’t have to recreate my entire profile is a key selling point. I don’t envision grabbing every Facebook user. Instead I envision getting the attention of existing bloggers who want to enrich their blogging experience.
One other key point. This system will go into production for Teachers Without Borders. That is an established community with thousands of members. Even if that is the only community that ever uses this system we will be justified in building. However, I am hoping that others see the value in this and a great desire wells up within them to participate.
Andre I don’t see your comments as negative either. All of your points are valid and need to be carefully thought out.
I am looking forward to reading about your ideas. I think we have a conference call this next week. In this space what you guys are doing at UBC is pretty cool and we have a lot in common.
I’ve been thinking about this every since Justin posted. I think it is a very interesting idea. And I think Andre raises a point a good point about 99 percent of the users don’t care about their information being in a silo..
But we’ve all seen the number of facebook users grow to an incredible point in spite of the fact that there was already the juggernaut MySpace available. People came to facebook because they saw something interesting. It met some need. Maybe that need was simply the ability to throw a sheep at somebody, but I think it was more.
So really the question becomes does an idea like the one Justin proposes present something new? Something users will say, “hey, I’d like to do that”. If it does, then people will join.
Personally, I think it does. And once people see the value, they’ll want to hop in. Not necessarily because they don’t want their information siloed (though there will be many who join for that exact reason), but for any number of other reasons. Things they can do, and have control over, that are not currently available in any of the social networks.
Great conversation, thanks!
Just so long as I can still “poke” people, Justin. If you can’t “poke” people, no one will ever use it.
Just kidding of course. I do worry about “too many moving parts” here. Given that the data portability and privacy implications of Facebook aren’t exactly unpublicized, it seems hard to me to argue that people (at least currently) seem willing to forsake these in favour of the “all in one” silo. Maybe given the option not too (in a new system that offered as much and was similarly easy to use but not a silo) they might not. But I do sometimes worry that we are making assumptions about the users, I’m not saying these worries are big enough to not do this (it’s a great idea!) but it’s gotta be simple. That said, if the modern-day CMS is the yardstick by which it’ll be measured, then bob’s your uncle!
[...] this focus is what has me very excited about recent posts from Andre Malan, Justin Ball, and David Wiley. All of whom are starting to imagine WPMu as both a dynamic learning space, as [...]
[...] soon as I see an alpha version of Justin Ball’s app that brings social networking to blogging, I’m bailing. Subscribe to TechConsumer: RSS / [...]
[...] hearing Justin rave about WPMU, I thought I would give it a shot. WP normally installs easy, so I expected the same. It would have [...]
Do it! I totally agree with you. Things need to be controlled individually and not through an outsourced identity system.
Afterall, you keep your important things in your house and not locked up in storage in a warehouse across town. That’s my little analogy anyway.
Wow I can’t believe it. I was thinking about the same thing (almost 80% identical) only not restricted to wordpress. In fact I’ve started to code such plugin (ok with only a handful of features) and I hope I can show a live demo soon.
I’ll let you know when that happens.
Hi Justin. I’ve just finished the plugin that implements (some of) these ideas. You can download it and try it at http://minerva.sapiensworks.com . Hope you have the time to tell me what you think about it.