In this post I will discuss what I believe needs to be the next evolution in being social on the Internet: a social network for freedom. But first, lets review where we are and why it’s bad.
What’s Wrong With Current Social Networks
Websites like Twitter, Facebook, and Google+ have triggered in a leap in capabilities for being social on the Internet, but in one very important way they go against everything that has made the Internet successful — that is they are centralized and closed systems. They have an illusion of openness because they have public web services APIs. But when you are a user of those websites, everything you put into them belongs to them. In a limited way you can get it back out by browsing their website, using their API, or in some cases download some of your data. But they are still in very much in control over your information and you are very limited in how you get your information back out. You also give them the ability, although arguably not the right, to use your information for their benefit such as selling it to advertisers. They also have the ability to hand your data over to 3rd parties, censor what you say or report it to the government .
Besides the problem of privacy in how they can share your information without your knowledge or approval, there is a more ruinous compromise to using those websites. That is that you can only be social with people who use those websites if you yourself use the same website. And there is no freedom of choice in who you decided to trust with your information. This is a form of censorship. With Email and the Web, you can host your information on any server connected to the Internet. There are a common sets of rules and methods (i.e. open protocols) for servers connected to the Internet to transfer Email and Web content between each other. Imagine if you signed up for an email account on GMail but could only email people who also had a GMail account and you couldn’t email anyone with a Yahoo!, Hotmail, or any other email account.
Even though GMail hosts your email and is susceptible to taking advantage of your data for their own purposes, which GMail does by using content in your email to select more relevant advertising, you are free to not use GMail. You can sign up with another service or run your own email server and can still exchange email with other users of GMail.
Closed social networks also limit what other companies can do to innovate using the data contained within those networks. Google was possible because web servers were open to the Google web crawlers so they could find, index, and expose the wealth of information available on the Internet. New companies are limited in how much information they can access within the current social networks. There are obvious limitations to accessing private data and it is important people understand how their data can be used. So many people choose to share so much information and we haven’t even begun to see what is possible with how you can extract, combine, analyze, and create new forms of data.
A great quote from John Gilmore applies here: “The Net interprets censorship as damage and routes around it.”  Even though Gilmore was talking about censorship I believe anyone who understands the Internet would interpret many aspects of Twitter, Facebook, and Google+ as damage to the Internet. How can the Internet route around these websites? Through a social network for freedom — an open and decentralized social network which respects users’ freedom and at least maintains, if not improves upon, the features we all love about current social networks.
How We Can Create A Social Network For Freedom
I should admit that I am certainly not the first person to come to this conclusion or come up with these ideas. Diaspora*, for example, is an open source project aimed at creating an open and distributed social network. It seems to have a lot of people and momentum behind it. I fairly recently discovered it and haven’t had time to look into it in detail. But it is definitely something that sounds promising.
Before I get into how a social network for freedom should work, I’d like to review a couple of important aspects of current social networks that have made them so huge. The first is the new types of content they allowed you to create and consume. There are two main types of content you create on a social network: persistent content and transient content. Persistent content is information about you that for the most part doesn’t change like your name, picture, location, interests, etc. It is your profile. Transient content is information you create and accumulate over time, i.e. posts or status updates. Further, there are three major types of transient content, each growing in size and occurring less frequently. The first and most common is short little blurbs that are quick and easy to create like a tweet or typical Facebook post. The second is a more thoughtful, slightly longer post that won’t fit in a tweet but sometimes shows up on Facebook, though less frequently. The third and last is more like an essay. I don’t often create longer-form content but every so often something builds up to that point and I want to be able to share it with people. Whatever new social network we create should handle (1) easy creation and management of content of these types, (2) appropriate presentation of the content to match its qualities so nothing is lost and the people you intend actually get to see it.
The other important aspect of current social networks I wanted to mention is being able to control who sees what content you create. Some content you want to be able to share publicly. Some content you only want to share with a select group of people. And some content you only want to share with one person. This is probably the most important breakthrough which sets modern social networks apart from previous technologies like personal homepages and blogs. It significantly contributed to making people comfortable with and want to share more and more information with each other on the Web.
These are the core features which will be critical to creating a social network for freedom:
- Open communication protocol — Simple, well defined, and secure protocol for communicating with and between servers.
- Distributed and decentralized architecture — Anyone can run a server and anyone on any server can share and communicate with each other. Each server, or set of servers working together, services a domain in the social network. My server would service all users @joemonti.org. Servers/domains can also be public or private. This would allow an organization to run a private version only accessible to their employees.
- Asynchronous permissions — A model similar to Twitter or Google+ where you can follow me but I don’t have to follow you. And can chose to require that I approve your ability to access parts of my information but you do not necessarily have to approve my ability to see yours. This isn’t how Facebook works. In Facebook we both have to say we are friends with each other before we can see each others information.
- Sharing control — Ability to share content either publicly, to a subset of pre-approved users (groups, circles, etc), or to an individual.
- User discovery — A social network isn’t very interesting without friends, and you can’t have friends if you can’t find them. This is as important for finding people you already know as it is for finding people you don’t yet know but with whom you share common relationships or interests. It also has to work across domains. There will need to be a way for websites to create searchable directories of public profiles across domains as well as limited private profile access given proper permissions.
- Search and data sharing — There needs to be a mechanism for public and authorized data to be exposed in a way that is accessible by third parties. In a distributed environment, there needs to be a way for external services to provide value to data distributed across multiple domains. This will allow search engines to index content across the network as well as foster innovation in new ways of using social data.
- Applications — We can’t invent all capabilities possible in a social network alone, so there must be an easy way for application developers to create new capabilities and applications that are integrated with the social network.
- Embeddable in the Web — You should just as easily be able like/share content from around the web on Facebook/etc by embedding social widgets on any website. There are some cross domain issues here, but it is a necessary feature.
- Export and Transfer Data — You must own your data. For for that you must be able to export your data, save it locally, and transfer it between domains.
There are many more important features, but those I believe are the most important.
Challenges In Creating New Social Network
There are a lot of challenges and obstacles to overcome in not only building a new social network but in building an open and decentralized social network. The biggest challenge is actually getting people to use it. Someone can create the best social network in the universe with the best and most features, but if your friends aren’t using it or you can’t find new friends on it, then you have no incentive to participate. There has to be activity. There has to be people using it so there is interesting content to see and so that you know people are going to see content you create. Creating a new social network is risky, but perhaps between a grassroots effort or big players getting involved it may take off. A new open social network may be able to succeed when a new closed social network would not.
Another major challenge will be around security, privacy, and spam. These are critical issues to address and are among the most important to users. Being an open source project is a double edged sword here. On one side, security vulnerabilities are easier for the community to find and fix before they are exploited than closed systems. On the other side, an open source-based system is much more well documented which helps attackers find exploits. The net effect, however, is that an open source project can be more secure. One thing that people need to realize is that an open and distributed social network is very much like email with regards to security, privacy and spam. The good thing is that for email they are at acceptable levels for most users. So I believe these issues can be addressed, although they will take significant effort.
To address these issues and to build a project that succeeds, here are a few ideas that will be helpful:
- Start with designing the protocol specification.
- Provide reference implementation as open source project. This will help test and validate the protocol specification as well as provide at least a starting point for people to use the service and run their own server.
- Use SSL to protect data between domains and shared-key message digests to validate message contents and authenticity for users. Encrypt personal data stored on disk.
- Ability to integrate with other social networks that don’t follow same protocol. Whether we like it or not, people will still want to use other social networks. A new social network couldn’t survive without integrating with others like Twitter, Facebook, and Google+.
- Build for scalability. While there may initially only be a few users and it may never grow beyond that, if the network does grow the platform must be able to handle it. If it can’t handle growing traffic, it may miss its only opportunity to be accepted by and used by a widespread audience.
- Decouple back-end (core service) from front-end (user interface) to make it easy for administrators to customize the user experience. Building custom front-ends may be more important to more people than we realize and this will help foster front-end innovation.
- Make it easy for server administrators to upgrade to new versions. Along the same lines, don’t break old implementations with new versions of the protocol or reference implementation.
- Encourage others to create their own implementation of the protocol using different programming languages, databases, and other technologies.
- Core project team can host reference implementation and charge users minimal fee (ex: $2/yr), giving users an easy to use and ad-free experience. Fee will support service and development.
There are of course so many more details to discuss, but that is a thorough overview of why I think we need a social network for freedom and how I think we can start building it. Unfortunately I’m not in a position now to have time to build it, but hopefully in time the community will begin to see the benefits of this approach to a social network and enough of them will be developers who can build it.