In meinem letzten Post schrieb ich, dass das Verhalten von dezentralen Netzwerken wie Friendica und Diaspora vor allem für Laien recht undurchsichtig und unvorhersehbar ist, sobald es um die Auflistung von Hashtags geht. Faldrian erklärt, wie die Kommunikation zwischen den Servern eines dezentralen (verteilten) Netzwerks unter der Haube vonstatten geht, und was das für den User bedeutet. Der Beitrag erschien ursprünglich hier und darf unter der Lizenz CC BY-SA genutzt werden.

Bei zentralen Netzwerken wie Facebook, Google Plus und Twitter ist recht leicht vorstellbar, wie diese Netzwerke funktionieren. Wenn jemand einen Beitrag schreibt und abschickt, wird dieser von einem Server empfangen und gespeichert. In Wirklichkeit bestehen diese Netzwerke aus vielen Servern, die aber gegenüber der Benutzer so tun, als wären sie ein Server, beispielsweise „www.facebook.com“. Im Hintergrund arbeiten viele Server, auf die der Ansturm der Benutzer verteilt wird, damit die große Menge von Benutzern überhaupt handhabbar ist. Für den Benutzer erscheint es, als wären diese Netzwerke jeweils ein großer Platz. Wenn jemand dort etwas schreibt, ist es für jeden anderen Teilnehmer sofort erreichbar, sofern es die Einstellungen zulassen.

Etwas anders verhält sich das bei dezentralen Netzwerken wie Friendica und Diaspora. Diese Netzwerke bestehen aus vielen verschiedenen Servern, bei denen es nach außen sichtbar ist, dass es verschiedene Server sind. Die Server
werden auch von unterschiedlichen Personen und Organisationen betrieben im Gegensatz zu den zentralen Netzwerken, die jeweils einer Firma gehören. Aber wie funktioniert hier die Kommunikation, wenn es keine zentrale Datenbank gibt, in der alle Beiträge sind?

Als Benutzer dieser Netzwerke bin ich auf einem Server angemeldet und habe dort mein Benutzerkonto. Mit diesem Konto schließe ich Freundschaften mit anderen Benutzern. Diese können auf dem gleichen Server sein oder auf anderen Servern, die dieses Netzwerk unterstützen. Es gibt in diesen Netzwerken öffentliche und private Beiträge, wie auch in einigen der zentralen Netzwerke. Ich möchte an dieser Stelle nur auf die öffentlichen Beiträge eingehen und vereinfache manches etwas, um mich auf das Wesentliche zu konzentrieren.

Als Benutzer hast du eine Timeline (oder Stream o.ä.), in der werden alle Beiträge der Personen anzeigt, die du als Freunde hast. Wenn jemand etwas Neues schreibt, erscheint es oben in der Timeline, sie ist also nach Zeit sortiert. Solange deine Freunde alle vom gleichen Server kommen wie du selbst, verhält sich das ähnlich zu den zentralen Netzwerken – wirft also keine neuen Rätsel auf, denn es gibt eine Datenbank, in der die Beiträge gespeichert werden und abgerufen werden, sobald du die Timeline öffnest.

Hast du hingegen Freunde von anderen Servern und sie schreiben einen Beitrag, verhält sich das wie bei E-Mail-Übertragungen. Bei E-Mail-Übertragungen kommuniziert dein Mailprovider mit dem empfangenden Mailprovider: „Huhu, ich habe eine Mail für dich, hier, bittesehr!“ und überträgt die E-Mail. Hast du mehrere Empfänger angegeben, wird der Vorgang für jeden Empfänger wiederholt.

Beim schließen der Freundschaft in einem dezentralen Netzwerk wirst du (sagen wir „Person A“ dazu) bei deinem Freund („Person B“) als Empfänger für alle öffentlichen Beiträge eingetragen. Schreibt also Person B etwas, so gibt es – neben der Veröffentlichung auf seinem Profil – eine Liste von Personen, die den Beitrag bekommen. Nach dem Abschicken des Beitrags werden alle Server kontaktiert, zu denen die Empfänger gehören. Sollten mehrere Benutzer auf dem gleichen Server angemeldet sein, kann der Server von Person B das anhand der Adressen erkennen und stellt den Beitrag dem Server einmal zu, vermerkt aber, dass es Personen X, Y und A betrifft. Der Beitrag wird in der lokalen Datenbank des Servers abgelegt und bei Person X, Y und A wird markiert, dass dieser Beitrag in ihrer Timeline erscheinen soll.

Durch dieses Verhalten haben wir den Effekt, dass alle Beiträge auch bei allen ankommen, obwohl sie auf verschiedenen Servern sind. Neben dieser grundlegenden und wichtigsten Funktion gibt es noch einige Funktionen, die etwas seltsam und und nicht intuitiv erscheinen.

Bei Diaspora gibt es ein total praktisches Feature, das sind Tags. Es klingt verlockend, man kann Tags abonnieren und dann bekommt man Beiträge in seine Timeline, die diese Tags enthalten. Man kann so Beiträge zu seinen Interessen sehen und mit gleichgesinnten Kommunizieren. Allen gleichgesinnten? Nein! Ein kleines Dorf… nein, ein Großteil des Netzwerks wird dir trotzdem nicht in deiner Timeline angezeigt, obwohl dort Beiträge geschrieben werden, die deine Lieblings-Tags enthalten. Wieso das denn? Das ist ja total gemein!

Vorhin habe ich erklärt, wie öffentliche Beiträge verteilt werden. Die einzigen Beiträge, die dafür in Frage kommen, in deiner Timeline aufzutauchen, da sie einen abonnierten Tag enthalten, sind öffentliche Beiträge. Das bedeutet, ein Beitrag, der in deiner Timeline auftauchen soll (da er einen Tag enthält, dem du folgst) muss an deinen Server übertragen worden sein. Das ist aber nur der Fall, wenn mindestens eine Person von deinem Server der Person vom anderen Server folgt, die diesen Beitrag geschrieben hat. Ist das der Fall, so befindet sich der Beitrag bereits in der Datenbank deines Servers und wird dir auch angezeigt, da dein Server lokal nach dem Tag sucht und alle Beiträge findet, die mit diesem Tag versehen sind.

Bei Friendica gibt es die Volltextsuche, mit der bequem nach allen öffentlichen Beiträgen mit einem Wort oder Satzteil gesucht werden kann. Es kann sogar nach dem Teil eines Wortes gesucht werden. Leider gelten hier die gleichen Einschränkungen wie bei den Tags. Es kann nur gefunden werden, was sich sowieso schon in der lokalen Datenbank deines Servers befindet.

Die einzige Möglichkeit diese Probleme zu umgehen ist eine externe Suche. Öffentliche Beiträge von öffentlichen Profilen können (sofern das nicht verhindert wird) von Suchmaschinen indiziert werden und so können die Beiträge auch über Google oder andere Suchmaschinen gefunden werden. Ein schöner Kompromiss wäre an dieser Stelle, wenn jeder Betreiber eines Servers einen YaCy Suchmaschinen-Client laufen hätte und seinen Server indizieren würde. Da YaCy dezentral funktioniert, könnten alle Server damit wieder zusammenarbeiten und wären global durchsuchbar.

Leider wird man trotzdem nie alle Beiträge mit #lolcat in seiner Timeline haben. Aber wem das wichtig ist, dem sei Twitter empfohlen. Da rauschen die Beiträge nur so vorbei und jeder kann sich davon überzeugen, wie viel los wäre, wenn Tags global funktionieren würden. Über den Nutzen lässt sich streiten – aber das ist ein anderes Thema.

Ich hoffe der Beitrag hat zum Verständnis beigetragen und eventuelle Halbwahrheiten oder Auslassungen seien mir verziehen. :)