The meta-federated social network

03 October 2015 ยท #federation, #telecomunication

Today's social networks are all introvert in a way or an other at varying degrees. Some are fully centralized where interaction is done only with users from the same network and server. Some are decentralized and interactions occur between users on the same network spread on different servers. Some others go even further and let interactions occur between users from different networks and servers. This is the federation. Networks falling in the last category are few and a real federation is not there yet.

The fediverse is not federated

Networks should settle on a common protocol in order to understand each other. Years have passed and no unified protocol have been defined yet.

A huge hindrance to federation on one hand is jailing networks like Facebook, Twitter or G+ that are completely centralized and introverts by design. On the other hand federated networks provide the poorest and outdated documentation possible making it difficult for other developers to bypass the lack of a standard protocol.

The current state of things is that if a network talks to another, the communication is poor. For example, a user from GNU Social can subscribe to a user from diaspora* but not the inverse.

You cannot subscribe to a user living in a jail network.

My proposition

I propose to create a network that is polyglot. A network that thinks in its own way and expresses itself in the language of the one it communicates with. Lets name this social network The Polyglot.

A polyglot account would provide access to as many networks as network-languages it can speak. E.g. A polyglot account gives an account on GNU Social, diaspora*, Redmatrix, pump.io, friendica, and XMPP all in the same place under one user identifier.

How to achieve this is rather simple. The polyglot needs to know the basics of all the network-languages it wants to talk to:

  1. Get a user's profile including his avatar, header, bio, location, email and URL
  2. Get a user's publications (notices, dents, updates, statuses, tweets, etc.)
  3. Post a publication

These basics can be extended by basics level 2:

  1. Post a reply
  2. Get replies to a notice

On a more technical side this polyglot should know all the important API end-points. The polyglot should be developed in Object Oriented Programming and makes extensive use of Inheritance and abstraction.

This network is better written in a framework like Symfony2.

Lets say we have an abstract base class Polyglot defining all the vital and necessary operations. If we need our polyglot to speak a new network-language, we just create a new class defining how those basic operations work on that new network.

Eventual problems we might face

We might have a problem if two networks use the same API end point while using different data structures and format.

A real solution is prefixing APIs with the name of the protocol. Instead of having example.com/api/ as the base, we would have example.com/ostatus and example.com/diaspora as bases.

Conclusion

Only a polyglot can decide what language (protocol) is the most practical and efficient. This proposition is practical and feasible. Clients like Andstatus can operate on many networks, but they don't do so under one and same identity.

Update

Friendica apparently does most of what I describe and is the most federated. It can interact with GNU Social, diaspora*, redmatrix and itself. Why isn't it as widespread as others?