I had planned to spend this post performing an impossible task; I was going to tell you how to put together the freedom box out of existing parts. As recent discussions have shown, there are as many ways of building these tools as there are people who want to build them. Instead of trying to find the one magic combination of parts and listing them out, I’m going to talk a little more abstractly about the very basic features for a social networking tool and how we might build a system that embraces the multiplicity of different social communication tools people are building.
Connections in Context
Social networks, whether online or off, are made up of person-to-person connections. We each belong to many of these networks, and every one has it’s own shared history and set of expectations about what information is appropriate to communicate and with whom. As social animals we navigate these social contexts in all of our offline communications. We select which facts about a romantic date we should share with family members, or drinking buddies, or work colleagues, with a practiced familiarity born from years of inter-personal interaction.
That same easy information management is what we need for our digital communication tools. Existing tools do this poorly, if at all, because they tack information management on after the fact. We need to realize that social contexts are what make a "social network" different from any other computer network and start building an awareness of context into our communication tools from the ground up.
These then are your minimum requirements for a social network: 1) the ability to make person-to-person connections and 2) the ability to manage what information you communicate based on the social context of the personal connection.
Building for Flexibility
Once people can connect with each other and manage what information they communicate, they’re going to need some actual communication tools. Social networks are not communication tools, they enable communication in much the same way that roads enable travel by car but don’t actually do the driving for you.
Online, communication tools can take many forms. IM, Email, Wave, bittorrent, photo sharing, wikis, blogs, rss, these are all possible ways that people will want to communicate with their friends and family. Ideally our social networking tools will be flexible enough to allow any of these kinds of communications, or whatever new ones we come up with down the road.
If I could get one message out to the various groups making distributed social networking systems it would be this: remember that the communication tools you are building around will change. If your communication tools and your social network are too closely intertwined, you run the risk of losing both when people decide to switch to a cooler communications tool or when they want to join their friend’s social network rather than get their friends to switch to your tools.
One way to get network flexibility, as I mentioned in my last post, is to separate your social networking layer and your communication tools entirely. Make social network connections more like an ssh connection or a VPN with built in information management and let people run whatever they want over the network. Maybe instead you want to build a central communication tool with a flexible plug-in architecture. Perhaps you want to build a protocol for different communication tools to talk to each other and let the everyone else build to your specifications.
It is easy to think, when building a whole system for social networking, that your tools are the only tools people will use. It is important to remember that there are lots of people building these systems, using lots of architectures and writing in lots of languages. The more flexible your system, the better able it will be to benefit from the work going into these other tools by incorporating or cooperating with those tools rather than competing with them for a fragmented user base.
Fragmented user bases are a particular problem for social networks because social networks only work when you and your friends are in the same one. Currently ~0% of users are on a distributed social network. 100% should be, but getting from here to that Kantian paradise will be difficult. If you are going to try, you need a plan.
I met with the Disapora developers last week, before they had quite hit their summer fund raising goal, and their plan sounds very sensible. The idea is that your distributed social network system starts our for most people as a client for their existing social communication tools, whether those are social networks like Facebook or photo sharing sites like flickr. You manage everything as if your friends were on Diaspora with you but you can also continue communicating with your contacts who are using the old tools, sending status updates through Facebook and posting new pictures through flickr. You never have to choose whether to abandon your existing social connections in order to change your communication tools.
Once some of your friends do start using the new system, things change. When your two machines notice that they are both able to run a distributed social network, they stop sending your communications through the old centralized services and start communicating over direct encrypted connections. As more of your friends switch over, more of your communications become private.
It is a nice gradualist strategy that neatly inverts the network effect problem. We could all start running our own network and still talk to people on Facebook freely, but every person who moves to our network hides more communication from Facebook by joining. Facebook has no place in our network of trusted friends because they are neither trustworthy nor our friends. When we have tools for direct private communication, Facebook drop out of the picture.
However you feel about this particular plan, as I have loosely paraphrased it, every distributed network builder should have something like it at the core of their system design. We’ve had the capability for private darknets for a long time now and people have not flocked to them. We need tools that people will actually move to if this is going to work, and that requires a plan.
Help Your Friends
Facebook grew at the expense of it’s users privacy. If we build our system wisely, we can build a tool that not just salvages, but actively promotes the privacy of its users. We should do this for our own sake, but we should also do this for our friends. That’s the difference between our tools and theirs: we’re building for people we care about, not people we need to exploit in order to make a profit. That difference should be clear in every part of our system.
Posts in this series
Part 1 – The Idea: Freedom Box
Part 2 – Finding each other: Dynamic DNS Facebook
Part 3 – Talking amongst ourselves: Friend-to-Friend Network
Part 4 – Putting the pieces together: Freedom Box schematic
Part 5 – Making it easy: Look and Feel