Kategorien
Infrastruktur Messenger Wunschthema

Brücken bauen in der Matrix

Interoperabilität ist ein kompliziertes aber wichtiges Wort und das Thema spielt eine grosse Rolle in der Wirtschaft.

Wenn beispielsweise im Schienenverkehr in manchen Ländern unterschiedliche Spurweiten bestehen, so ist es technisch nicht möglich, dass Züge länderübergreifend in den verschiedenen Schienennetzen verkehren können. Transporte über Ländergrenzen sind dadurch aufwendiger, weil Lokomotiven getauscht und Waren umgeladen werden müssen. Hätte man eine einheitliche Spurweite, gebe es diesen Aufwand nicht.

Daher gibt in in der europäischen Union eine Richtlinie über die Interoperabilität des Eisenbahnsystems in der Gemeinschaft (2008/57/EG vom 17. Juni 2008).

Ähnlich verhält es sich bei Stromspannungen, Steckerkonstruktionen, Rohrgrössen, Telefonnummern, Ländervorwahlen, IP-Adressen und ähnlichen Dingen, kurz gesagt:

„Wenn zwei Systeme miteinander vereinbar sind, nennt man sie auch interoperabel.“

https://de.wikipedia.org/wiki/Interoperabilit%C3%A4t

Was bei Eisenbahnen und Wasserhähnen völlig selbstverständlich ist, ist bei Software-Plattformen noch immer weitgehend unbekannt.

Eine Nachricht auf Twitter kann technisch nicht auf Facebook erscheinen, da es keinen (einfachen) Weg gibt, die beiden Plattformen miteinander zu verknüpfen. Ähnlich verhält es sich mit Instagram, WhatsApp und den meisten anderen proprietären Services. Auch Cloud-Plattformen sind meistens nicht interoperabel.

Aus Kundensicht wäre eine Interoperabilität zwischen diesen Services natürlich wunderbar.

Viele Plattformen sind aber an Interoperabilität nicht interessiert und nutzen den Lock-In Effekt aus. Dieser Effekt ist durchaus auch ausserhalb von Software-Plattformen weit verbreitet, um Konkurrenten auszuschliessen. Man denke nur an Rasierklingen und deren Klingenhalter, Fotoapparate und die dazu passende Objektive und Kaffeemaschinen mit den dafür passenden Kaffeepads.

Die Spieltheorie modelliert Lock-in-Effekte als das Gebundensein eines Spielers in einem System, obwohl daneben ein überlegenes System existiert

https://de.wikipedia.org/wiki/Lock-in-Effekt#Strategie

Messenger-Systeme

Die Messenger-Welt ist voller Lock-In Effekte. Man muss auf die Plattform gehen, auf der die die Freunde und Bekannte sind, denn sonst kann man sie nicht erreichen. Im Ergebnis benötigt man daher mehrere Apps auf dem Telefon um überhaupt Kontakt per Messenger aufnehmen zu können. Viele Messenger-Systeme versuchen permanent das persönliche Adressbuch auszulesen, um zu zeigen, wer schon alles aus der Bekanntschaft das wunderbare System nutzt.

Ohne gesetzliche Regulierung ist es schwer bis unmöglich den Lock-In Effekten der Plattformen zu entkommen.

Die Matrix

Matrix ist ein Kommunikationsprotokoll, dass sich dieses Problems annimmt. Ziel ist eine nahtlose, wenn möglich auch Ende-zu-Ende verschlüsselte Kommunikation zwischen verschiedenen Anbietern. Zum Thema Matrix habe ich im Novatrend Blog hier (Gruppenchats anschaulich erklärt. in der ) und hier (WhatsApp, Threema, Signal? Komm in die Matrix! Jetzt!) bereits geschrieben.

Implementierungen und Bridges

Wie nimmt man aber nun Kontakt mit anderen Plattformen auf und wie benutzt man überhaupt die Matrix?

Matrix selbst ist ein Kommunikationsprotokoll und kein Stück Software. So ein Protokoll enthält Vereinbarungen und Regeln für die gemeinsame Kommunikation. Um nochmal das Schienenverkehrs-Beispiel zu bemühen entspräche der Inhalt des Matrix-Protokolls in etwa der EU-Richtline 2008/57/EG für den Schienenverkehr. Die Lokomotiven, die Schienen und die Waggons müssen gemäss dieser Richtlinie gebaut werden. Diesen „Bau“ nennt man in der Software-Welt Implementierung.

Bei Matrix gibt es anstelle von Hardware (Lokomotiven, Schienen und Waggons) Software (Server, Clients und Bridges). Diese Software muss gemäss des Protokolls (Richtlinie) implementiert (gebaut) werden.

Synapse Server – matrix.org

Damit eine einfache Kommunikation über das Matrix Protokoll funktioniert, bedarf es mindestens eines Servers und eines Clients. Die Matrix-Organisation bietet einen Server namens Synapse als Referenzimplementierung an.

Eine Referenzimplementierung ist etwa so, als würde die Europäische Union eine Beispiel-Lokomotive mit freien Bauplänen bauen um den Herstellern von Lokomotiven zu zeigen, dass und wie man auf der Basis der EU-Richtlinie eine Lokomotive bauen kann. Ein Hersteller könnte nun auf der Basis der freien Plänen diese Lokomotive bauen und vielleicht um ein paar Features ergänzen und/oder an der „freien“ Lokomotive mitbauen.

Synapse ist Open Source Software und kann auf einem eigenen Server gehostet werden. Ausser Synapse gibt es bereits weiter Implementierungen (siehe Screenshot).

https://matrix.org/docs/projects/try-matrix-now

Der Service matrix.org verwendet den Synapse Server. Unter der URL https://matrix.org/_matrix/federation/v1/version kannst du sogar die verwendete Version sehen.

{
  server: {
    name: "Synapse",
    version: "1.33.2 (b=matrix-org-hotfixes,019ed44b8)"
  }
}

Du nutzt also den Synapse Server, wenn du, so wie ich, ein Konto bei matrix.org hast (@hagengraf:matrix.org). Wenn ich wollte, könnte ich Synapse auch auf einem eigenen Server installieren und dann einen eigenen Matrix-Server betreiben.

Element Client – New Vector Ltd.

Analog zum Synapse Server ist der Element Client entstanden (element.io). Auch er wurde, damals noch unter dem Namen Riot als Referenzimplementierung zur Verfügung gestellt. Heute ist Element ein Trademark der Firma New Vector Ltd.

https://element.io/ Fusszeile

New Vector Ltd. bietet Dienstleistungen rund um Matrix an und entspricht damit gewissermassen dem ersten echten Hersteller von Lokomotiven in der Matrix 🙂

Interessant, wichtig und typisch für die Matrix ist, dass du Element als Client (App) benutzen, deine Daten aber auf einem beliebigen Server speichern kannst. Der Server könnte matrix.org, ein selbst gehosteter Server, der deines Arbeitgebers oder einer anderen Organisation sein, zu der du Vertrauen hast.

Brücken zu anderen Systemen

Das Matrix Protokoll sieht Brücken zu anderen Systemen vor. Auch diese Brücken sind im Protokoll „nur“ beschrieben und müssen im Einzelfall implementiert werden.

Es gibt bereits Implementierungen für IRC, Slack, RSS, Discord, Rocket Chat, iMessage, Facebook Messenger, E-Mail, SMS, Mastodon, libpurple, GroupMe, Skype WeChat, Gitter, Tox, Mummele, Twitter, Mattermost, Keybase, Google Hangouts, Instagram, Signal Telegram und WhatsApp (https://matrix.org/bridges/).

Man unterscheidet dabei vier Arten von Brücken.

  • Portal-Rooms: Portal-Räume werden meistens von der Seite des entfernten Netzwerks verwaltet.
    Beispiel: IRC
    https://matrix.org/bridges/#irc
    https://freenode.net/news/matrix-bridge-realname
  • Plumbed-Rooms:
    Beispiel: Der Raum #matrix:matrix.org wird mit dem Kanal #matrix auf Freenode und matrixdotorg/#matrix auf Slack verbunden. Die Zugriffskontrolle für Matrix-Benutzer wird notwendigerweise von der Matrix-Seite des Raums verwaltet. Das ist nützlich um verschiedene Communities über Matrix zu verbinden.
  • Bridgebot-Style: Hier werden Nachrichten in beide Richtungen von einem Bot übermittelt, der sich auf der jeweiligen Plattform befindet.
    Bei dieser Verfahrensweise gehen Metadaten verloren.
    Szenario: Alle Nachrichten werden von einem Bot gesendet, dem Nachrichtentext wird der Name des ursprünglichen Absenders vorangestellt. Siehe auch das t2bot.io Beispiel im weiteren Verlauf.
  • Puppeting: löst die Probleme des Brigdebot-Styles, indem ein Benutzer auf der anderen Seite der Brücke gesteuert wird (die Puppe). Für Benutzer sehen die Nachrichten so aus, als ob sie vom richtigen Absender gesendet würden. Normalerweise sind „Puppen“ auf beiden Seiten, man spricht dann von Double-Puppeting.

Jede der oben erwähnten Brücken nutzt eine dieser vier Möglichkeiten und muss auf dem verwendeten Matrix-Server installiert werden.

Wenn du also die Brücke zu WhatsApp oder Instagram nutzen willst, musst du einen Matrix-Server finden, der die Brücke anbietet oder selbst einen aufsetzen und entsprechend konfigurieren.

Der Server matrix.org bietet in unverschlüsselten Räumen „nur“ Brücken zu IRC und zu Slack an. Diese Brücken (Integrations) können pro Raum zugeordnet werden.

Brücken in matrix.org

Die Verbindung an sich ist einfach. Man muss sich mit seinem Slack-User einloggen und die Verbindung bestätigen.

Slack-Integration

t2bot.io – Brücken im Botstyle

Wenn du keinen eigenen Server hast und auch keinen anderen Server findest, der deine gewünschte Brücke anbietet, so besteht die Möglichkeit auf t2bot.io „bridgebot-style“ Brücken über Bots zu realisieren. Hier ein Beispiel mit Telegram.

Erstelle einen unverschlüsselten Raum in Matrix und lade den User @telegram:t2bot.io ein. Ich nutze für die Screenshots die Weboberfläche von Element (https://app.element.io/) und Telegram (https://web.telegram.org/).

Telegram Bridge – Bot-Style
Der Bridge Bot meldet sich im Matrix-Chat

Wenn du dich nun von matrix.org aus versucht mit dem Befehl !tg login bei Telegram anzumelden, erhältst du diese Meldung.

Meldung vom Telegram Bot – https://t2bot.io/telegram/

Anstelle des Logins musst du von Telegram aus deinen Matrix-User hinzufügen (On Telegram, invite @matrix_t2bot to the channel then run /id to get the channel’s ID.). Der Bot funktioniert nur in Telegram Gruppen, denn ein 1 zu 1 Chat ist ja nicht möglich. Du, der Telegram Account und der Bot sind ja schon drei.

Anlegen einer neuen Gruppe in Telegram

Nun musst du im Telegram Chat den Befehl /id eingeben. Der Bot liefert dir daraufhin die Nummer (id) des Telegram Chats. Im Matrix Chat musst du mit dem Befehl !tg bridge und der entsprechenden id die Synchronisierung beider Chats anstossen.

Wenn das geklappt hat, hast du eine Brücke zu Telegram eingerichtet und kannst interoperabel chatten.

Matrix

Chatverlauf im Matrix Raum

Telegram

Chatverlauf in der Telegram-Gruppe

Diese Verbindung funktioniert nun natürlich in allen Matrix Clients, die du mit deinem Matrix-User benutzt, auch auf deinem Smartphone.

Mit Hilfe der Bots von t2bot.io kannst du dich mit Telegram, Discord, Gitlab und Trello verbinden.

Fazit

Die etablierten Plattformen machen es einem nicht leicht dem Lock-in-Effekt zu entkommen und interoperabel unterschiedliche Messenger zu benutzen. Grundsätzlich ist es aber möglich und allein das sollte ein Grund zum Optimismus sein. Services wie t2bot.io zeigen bereits heute, was auch ohne eigenen Server möglich ist.

Wer Freude am Ausprobieren hat, kann natürlich auch den Synapse Server und alle gewünschten Bridges selbst auf eigenen eigenen Server installieren.

Links:


tl;dr: Die gute Nachricht: Der Brückenbau in der Matrix funktioniert!

Von hagengraf

Ich erstelle bequeme und benutzerfreundliche Orte in virtuellen und physischen Umgebungen.

Eine Antwort auf „Brücken bauen in der Matrix“

Kommentar verfassen