In the non-libre-software world, we have well known social networks. Each one is built on its own privative social network system, let’s call it a software stack. Many of them use libre software in part of that software stack, but not in all of it, so you cannot setup a copy of their complete system in your machines for your personal, family, academic or corporative use.
One example. Twitter is a social network of microblogging. The company that owns the software (and the data) is Twitter Inc. Twitter Inc. releases some libre software pieces such as Bootstrap and others (see https://dev.twitter.com/opensource). But you cannot install your Twitter-clone platform. If you want to use their software, you need to create an account in their servers. If you want to look at their non-free-software code, you have to be a Twitter employee. The same happens with Facebook, Google+, LinkedIn…
So aren’t there social networks totally built on libre software?
Sites where I can register an account, but offering also to download the complete stack to deploy a server in order to being able to communicate but hosting my data myself, or provide such kind of service to my company’s intranet, for example? The answer is yes.
There are lots of social network engines that are libre software.
We have microblogging-based system as StatusNet + GNU Social + FreeSocial (they are currently merging code in order to become a single system called GNU Social).
We have SocialStreaming, which is a libre software social network software developed in the University where I work!
The intention of many of these systems is that you build your own server to communicate, so it could happen that we don’t find any public instance that allows just registering an account. But the common cases is that you find a list of public instances or demo sites to try the software in action.
Interaction between servers and networks: federation, crossposting, and more
If you want to setup your own social network to be used in a private, closed environment (let’s say, a company’s intranet, or communication in a family), you can choose the software that suits you best, and deploy it in your computers. You’ll probably need one or more “servers” where to host the data and provide the web interface to users. Users probably can also setup other clients or add-ons to interact in the social network in different ways, extending the functionality offered by the web interface.
Which criteria should we take into account when choosing the particular software to deploy such social network? Well, you probably need to look at the hardware and software requirements for the server, the feature set of each one, and the health and activity of the project (active development, frequent updates, user support, good documentation…).
When you want your social network or server to interact with other servers or networks (using the same software than yours), you need to know if the software supports “federation“. If yes, your server will be able to talk (send, receive data) with other servers installed across the internet (if you have connectivity with those other servers, of course). This is for example how StatusNet works: you can install your own StatusNet server or register an account in Quitter.se for example, and you’ll be able to interact with people using StatusNet in their own server, in Quitter.se or in any other public instance (and shout Viva La Federation!).
What about talking with social networks that don’t use the same software than ours? What about talking to privative social networks?
Many social networks have implemented “bridges” between different networks in order to avoid the user to re-post everything twice or three times. For example, StatusNet has a plugin called TwitterBridge to send to Twitter (of course you need to have a Twitter account to connect to). This bridge is bidirectional so you can get updates from your friends in Twitter in your StatuNet timeline. However, depending on the server configuration (due to resource limitations or number of users), the bridge can be activated in only one direction (or even keep it disabled if the server administrator decided to do so).
Friendica is known for its many bridges to libre and privative social networks. It allows you to select to which networks each post will be propagated, and you receive replies from those other networks in your Friendica timeline.
In the case of Pump.io, bridges are implemented by third parties, not the core software. There’s PumpTweet which is a script that you can run periodically to obtain your Pump.io updates and send them to Twitter. Pump2status.net allows to find friends between the StatusNet and the Pump.io networks, and propagating posts from Pump.io to StatusNet is in active development. Pump2rss converts the Activity Stream JSON feed into a RSS feed so you can use it as “input” to crossposting services like brdcst.it (or the non-libre-software IFTTT).
A note about bridges and crossposting from/to non libre software networks
It is common to find that non libre software networks are controlled by one company having part or its whole business depending on it (for example, sending ads to their users), so they have a strong motivation to not support federation or other kind of interoperability (they focus in communication “inside” their network) and avoid their users doing their communication from outside (with bridges, crossposting…). The specifications of their APIs may change and they may not allow third parties to connect easily.
On the other side, libre software networks usually give much importance to interoperability (or try to). One of the reasons is being able to let your friends know that there are other (better) ways to communicate and help them escape from the walled gardens.
The social networks that I use, and why
I think this topic deserves its own post. And this one took too long. If you’re still interested, read about it here.