THE FUTURE OF SOCIAL NETWORKING
Almost three years ago, I started the Appleseed Project as a way to
start experimenting with the idea of distributed social networking.
Armed with enough hubris and naivete to think I could build it
alone, I coded and coded until I got to the point I am now: With a
project that stands at around 75% complete, it functions as a sort
of proof-of-concept for distributed social networking in general.
I've learned a lot, however, about the technological hurdles and
impact that a truly open and distributed social networking platform
I'm writing this as a way to present my ideas and what I've learned
in the hopes that an open and distributed solution becomes the
direction that social networking takes. Although I would be
happiest to see Appleseed succeed, I'd be excited to see any open
and distributed social networking solution be adopted and replace
the walled gardens that currently dot the internet landscape.
1. The Problem With Walled Gardens.
The current crop of social networking sites (Myspace, Friendster,
Facebook, etc) all operate as "walled gardens", where content is
exclusive to the site, and most importantly, the sites provide very
little interaction with the outside internet. A user on Myspace has
no way to interact with a user on Facebook, despite the design of
the internet having historically favored the concept of interaction
between internet locations. There is no technological reason for
why a user on Myspace wouldn't be able to add a user on Friendster
or Facebook to their friends list. At the very least, there is no
reason why the same Myspace user couldn't send a message to that
same Facebook or Friendster user.
While building Appleseed, I realized just how simple it was to get
two "nodes" to communicate. It became a matter of a simple
behind-the-scenes request which returned a small XML file. It
became apparent to me that the reason that we don't have
communication between social networking sites had nothing to do
with technological constrants, and was a purely economic decision
on the part of existing sites. Almost all major social networking
sites business models are centered on having the largest userbase
possible, and user lock-in is a major part of that. By restricting
your ability to interact with outside sites, they also restrict
your ability to choose another site and still maintain your
relationships and ability to contact your friends.
The whole situation we're in makes no sense in the context of the
way the internet was meant to operate. Concentrating user bases
into centralized locations and locking them in seems more like the
early 90's and the way Compuserve, AOL, and the like attempted to
use walled gardens to monopolize the internet. The natural
evolution is an open, distributed standard. A sort of SMTP for
social networking, which allows any node to fully connect to any
other node. Would people put up with an email address at gmail.com which could only email other
gmail.com users? Of course not, and
the same standard should be applied to social networking.
2. Why "glue" doesn't work.
One of the solutions proposed is to use aggregation services which
act as "glue" to hold together the current systems. This is a
fundamentally flawed solution, because it ultimately relies on no
single standard for communication between sites. Site A, B, and C
might work with the aggregation service, but brand new Site D will
require that the aggregation service supports their system. And
what happens when sites change their format? The result becomes a
constant process of modifying and extending the aggregation service
when new sites and formats arise.
Oddly enough, when it comes to making sense of multiple walled
gardens, the best we've come up with is to glue them together and
hope it holds. But this is hardly a solution, and really shouldn't
be advocated by those who want to see social networking properly
3. The Distributed Solution.
The solution is actually pretty simple. Especially considering
things like OpenID already solve the problem of distributed logins.
A user has a home node, which provides them with a social
networking address, much like an email address. I'm currently
This also becomes their OpenID identity, and allows them to log in
to other Appleseed (and potentially any OpenID site) nodes.
Communication between sites exists as a simple http request from
one node to another. Friend requests, messaging, all types of
interaction between users becomes easily distributed while
functioning seamlessly as far as the end user is concerned.
The result is that instead of having one Myspace or one Friendster,
each with millions of users on it, we have thousands of sites which
range from a few dozen to hundreds of thousands of users. Except
they all exist in a network of nodes which communicate between each
The importance of distributed social networking can be outlined in
the advantage that the user gains: Freedom to choose between any
compatible node without losing access to their contacts.
4. Privacy And Trust In A Socially Networked World.
It's a whole new ball game when you're dealing with a distributed
social networking model. No longer provided the protection of a
walled garden, it's important to think of the system from the
ground up in terms of "Privacy" and "Trust."
Privacy means that the home node of a user should never give out
any information that isn't explicitly stated to be publicly
available. Because nodes are querying other nodes about information
about users, the assumption is always on the side of privacy,
lacking any further data otherwise. Although you cannot achieve
full privacy in a socially networked world, most social networks
today function as unlocked glass houses, providing very few, if
any, privacy options for the user. In a world that is increasingly
socially networked, where social networks will very likely include
one's boss, parents, landlord, and more, it's important to be able
to provide strong mechanisms for restricting access. Tthe user
should have as much granular control over who in their immediate
network can see what as practically possible.
Trust is the concept of utilizing social networks to determine
relationships with strangers, much like in the real world. If you
sit alone in a public place, and a stranger comes up and begins
talking to you, you have very little trust between you and that
person. However, if you sit with a good friend, and that good
friend introduces you to that same stranger, a trust relationship
has been established. Social networking must recognize this basic
aspect of human social interaction, and find strong and intuitive
methods for implementing it on a software level. This not only can
help with the random friend requests that many on MySpace get, but
also can help to eliminate spam, and even possible provide for a
social network where everyone can participate as safely as real
life, using their trust networks to evaluate new
5. Technological Hurdles And Considerations.
Most importantly, it must be stated that social networking works
best when the concerns of the users are considered to be greater
than the concerns of the developers. Many open source social
networking solutions break too much from the current social
networking convention in what may be interesting technologically,
but can be off-putting to users who have grown accustomed to sites
such as MySpace. Being at the birth of a new paradigm provides a
lot of opportunities to experiment technologically, but when this
is done without usability kept in mind, or when it solves a problem
that only really exists for the developer, it serves as a deterrent
to building a large userbase, which is the only real purpose of
Balancing this consideration with the technological problems that
distributed social networking creates can be very difficult. For
instance, the issue of spam messages, while easily guarded against
from within a walled garden with active administration, becomes a
much more difficult task during decentralization. One of the
solutions that Appleseed has used is a simplified version of the
IM2000 protocol (http://www.im2000.org/), which is a
sender-stores system, as opposed to the receiver-stores system of
SMTP. This provides the most important protection against spam:
Accountability. In order to send a message, your node must maintain
it's existence and identity on the internet until the message is
"read" (downloaded). Without going too far into this idea, the
balance between this system and the previous concern of usability
is that users will be reluctant to adopt this new system unless it
feels incredibly similar to a standard email application.
Other hurdles include scaling outward (as opposed to upwards, like
current walled gardens do), and how to perform searches in such a
distributed environment. Maintaining that distributed system, from
a development and API standpoint, is probably the most difficult
task. Error checking for downed nodes, allowing for variable speeds
in response times, etc., all become huge issues, and unlike a
walled garden, a social networking node cannot control anything
outside of it's own server. Fortunately, these are issues inherent
in the distributed nature of the internet, and have been solved in
varying degrees plenty of times before. The issue is simply to
apply those solutions in the best manner possible.
Eventually, Myspace and Facebook, no matter what fancy features
they may add, will seem as archaic as Compuserve and Prodigy do
now. The acceptance of a distributed social networking model is, as
the internet has shown, an inevitability. All proprietary walled
gardens have given way to distributed models, and social networking
is the next frontier. And just like open, distributed protocols
before it, social networking requires an open API in order to
function properly. Since many walled gardens are based on amassing
as many users as possible, in order to maximize ad revenue,
adopting a distributed model goes against their business plan.
Therefore, it's up to the open source community to come up with a
real distributed social networking solution.