Matrix, ein quelloffenes Protokoll zur Kommunikation zwischen Einzelpersonen und in Teams, genauer gesagt dessen prominentester Client Element, vormals Riot.im, haben in letzter Zeit einiges an Barrierefreiheit dazugelernt. Hier folgt nun eine Einführung wie man den Client fürs Web und Desktop, sowie die mobile Anwendung für iOS und Android, als blinde Nutzer:in verwenden kann.

Matrix selbst ist lediglich das unterliegende Protokoll. Dieses beschreibt den Standard, nach dem Clients und Server Nachrichten sowie Anrufe und andere Informationen austauschen sollen. Das Prinzip ist, dass es viele Server gibt, zu denen sich Nutzer verbinden können. Diese Server können miteinander föderieren, also sich gegenseitig erzählen, welche Räume und Nutzer sie haben. So können sich alle erreichen, unabhängig davon, auf welchem Server sie sind. Das kann man sich ungefähr so vorstellen wie eine E-Mail-Adresse. Bei der ist es ja egal, bei welchem Provider sie ist. Da der Austausch standardisiert ist, können sich Gmail- und GMX-Nutzer genauso schreiben wie die von T-Online, Outlook oder iCloud, und das natürlich in jeder Form kombinierbar.

Räume sind Orte, an denen viele Nutzer mit gleichen Interessen zusammenfinden. Sie können öffentlich oder privat sein. Man kann ihnen also beitreten oder muss dazu eingeladen werden.

Matrix ist aus dem Hintergrund des alten IRC (Internet Relay Chat) entstanden und hat sich zum Ziel gesetzt, dessen Kinderkrankheiten nicht zu erben. Eine dieser Kinderkrankheiten ist, dass es bestimmte Räume nur auf bestimmten Servern gibt und man für verschiedene Interessen im Zweifel Zugänge auf verschiedenen Servern benötigt. Es gibt zwar auch im IRC Netzwerke von mehreren Servern, die untereinander die Nachrichten austauschen können, dies ist aber nicht standardisiert und funktioniert eher schlecht als recht. Ein Begriff, der IRC-Admins regelmäßig Schweißperlen auf die Stirn treibt, ist der sogenannte Netsplit, bei dem sich ein Netzwerk unfreiwillig aufdröselt, weil irgendwo etwas klemmt. Aus Erfahrung kann ich sagen: Das ist nicht schön.

Matrix selbst bietet aber auch noch weitere Funktionen wie eine Ende-zu-Ende-Verschlüsselung von Räumen und Privatnachrichten, Moderation von Anwendern oder ganzen Servern und vieles mehr, was die Kommunikation unter vernünftigen Menschen entspannter und angenehmer gestaltet. Auch gibt es Vertrauensstellungen zwischen Servern, sodass solche Moderationen auch von anderen Servern übernommen werden können.

Element für Web und Desktop 🔗

Der prominenteste Vertreter eines Matrix-Clients, also des Programms, mit dem wir als Endanwender uns in die Matrix begeben, ist Element von der gleichnamigen Firma. Element hieß bis vor Kurzem Riot.im, und die Firma hieß New Vector. Dies hat sich, nachdem es mehrere große Verträge mit Regierungen und Firmen gegeben hatte, als nicht mehr praktikabel erwiesen. Außerdem gab es Namensstreitigkeiten, sodass eine Umbenennung erfolgte.

Der Registrierungsvorgang ist ähnlich dem vieler anderer. Meldet man sich direkt bei Element an, wird man aufgefordert, sich mit einer gültigen E-Mail-Adresse zu verifizieren. Man wählt sich einen Nutzernamen, der dann mit dem Namen des sogenannten Heimservers vervollständigt wird. Bei Element selbst ist dies standardmäßig matrix.org, es gibt aber auch diverse andere Anbieter, z. B. Tchncs.de, die Matrix-Dienste anbieten. Der vollständige Name, unter dem man dann im föderierten Matrix-Netzwerk bekannt ist, lautet @Benutzername:heimserver.Domain, also z. B. in meinem Fall @marcozehe:matrix.org.

Man vergibt sich selbst auch ein möglichst sicheres Passwort, und schon geht’s los. Nach der erfolgreichen Anmeldung bekommt man eine kleine Einführung, und sobald man die hinter sich hat, kann man über den Erkunden-Bereich seine Interessen suchen und Räumen beitreten, die im Matrix-Universum öffentlich verfügbar sind.

Der Aufbau 🔗

Der allgemeine Aufbau des Clients im Browser oder der Desktop-App sieht ungefähr so aus, gesprochen aus der Perspektive eines typischen Screen-Reader-Nutzers mit einem virtuellen Cursor.

Ganz oben befindet sich ein Button mit Namen Communities. Bei einigen Firmen- oder Regierungsinstanzen befinden sich dahinter Teilorganisationen. So können Angestellte, freie Mitarbeiter, Kunden oder Vertragspartner unterschiedlichen Communities angehören. Dies wird dann neben ihrem Namen mit einer kleinen Grafik angezeigt. Das hilft zum Beispiel dabei zu unterscheiden, wer im Zweifel Fachkompetenz besitzen könnte.

Als Nächstes folgt der Menü-Button für das Benutzerprofil. Dahinter verbergen sich Links zum eigenen Profil, das man mit einem Bild vervollständigen, ein paar angaben zu sich machen oder wo man auch eine Handynummer hinterlegen kann, mit der man ggf. das Passwort zurücksetzen kann. Auch finden sich hier die Einstellungen, ein Link zur Hilfe und die Option zum Abmelden.

Die Einstellungen sind in mehrere Tabs unterteilt. Diese werden am oberen Ende eines Dialogfeldes als Schalter angezeigt. Hier kann man diverse Einstellungen vornehmen, Sicherheitsaspekte feinabstimmen, andere von einem selbst angemeldete Geräte als vertrauenswürdig verifizieren usw. Einstellungen hier werden normalerweise sofort aktiv und gespeichert. Ich empfehle, die Einstellungen einmal durchzugehen. Besonders das Zeitfenster, nach dem die Markierung für ungelesene Nachrichten in einem Raum verschwindet, sollte hier angepasst werden. Die steht standardmäßig auf 3.000 Millisekunden, also 3 Sekunden. Das ist für Screen-Reader-Nutzer erfahrungsgemäß zu kurz. Ich habe den Wert bei mir auf 15.000 geändert. Dies findet sich im Reiter Einstellungen ganz unten. Es ist das vorletzte Eingabefeld. Ganz zum Schluss kann man den Dialog mit dem Schließen Schalter ganz oben verlassen.

Zurück im Hauptfenster findet sich unterhalb dieses Benutzer-Menü-Buttons die linke Seitenleiste. Hier werden die Räume und Direktnachrichten, an denen man beteiligt ist, in einer herkömmlichen Baumstruktur angezeigt. Wie im Explorer, navigiert man mit Pfeil rauf und runter, öffnet ausklappbare Unterpunkte wie Personen oder Räume mit Pfeil rechts usw. Oberhalb des Baumes befindet sich ein Suchfeld, mit dem man die vorhandenen Räume und Unterhaltungen filtern kann. Zusätzlich kann man eine Symbolleiste zuschalten, die die 10 zuletzt besuchten Räume oder Unterhaltungen enthält, sodass man schnell zu ihnen umschalten kann. Diese Symbolleiste verhält sich wie viele andere Symbolleisten: Man navigiert im Fokus-Modus mit Pfeil links oder rechts und wählt mit der Leertaste aus. Tab springt zum nächsten Element, in diesem Fall dem Baum.

Und es gibt den bereits erwähnten Button zum Erkunden von Räumen, in denen man noch nicht Mitglied ist. Man hat ein Suchfeld zur Verfügung. Die Ergebnisse werden darunter in einer Datentabelle angezeigt. Neben dem Namen und der Beschreibung finden sich auch Optionen für die Vorschau, wenn verfügbar, oder zum Beitreten in den Raum. Betätigt man diesen, wird sofort in den neuen Raum umgeschaltet, und man bekommt die neuesten nachrichten angezeigt. Anders als bei IRC hält Matrix die Historie des Raumes vor, sodass man auch ältere Nachrichten nachlesen kann. Server-Admins können allerdings begrenzen, wie lange Nachrichten vorgehalten werden, z. B. Nur die Nachrichten der letzten sechs Monate.

Ist ein Raum geöffnet, folgt auf den Bereich der linken Seitenleiste bereits die Haupt-Sprungmarke. Hier finden sich einige Buttons zum Verwalten der Raumeinstellungen und die Beschreibung des Raumes.

Diesen Elementen folgen einige Tabs, die die Mitglieder in diesem Raum, die mit diesem Raum geteilten Dateien oder Benachrichtigungen für einen selbst anzeigen können. Diese werden dann unterhalb der Tabs, für sehende rechts in einer Seitenleiste, angezeigt.

Die Raumliste besteht aus einer Reihe Schaltern, für jeden Benutzer einen, einem Suchfeld und der Möglichkeit, andere mit deren Matrix-Benutzernamen in diesen Raum einzuladen. Für jeden Benutzer kann man auch ein Kontextmenü auf die übliche Weise aufrufen, also mit Umschalt+F10 oder der Anwendungen-Taste.

Auf der Registerkarte Dateien werden die Dateien, die mit diesem Raum geteilt wurden, angezeigt. Man kann sie entweder herunterladen oder in einer Vorschau anzeigen.

Hat man die Seitenleiste verlassen, was übrigens auch mit dem Befehl „Springe aus dem aktuellen Container heraus“ funktioniert, landet man auf einigen Buttons direkt oberhalb der eigentlichen nachrichten-Liste. Es handelt sich hierbei um Schalter zum Springen zur ersten ungelesenen Nachricht oder zur neuesten Nachricht. Effektiv markiert dies meist den Raum als gelesen. Manchmal kann es aber auch sein, dass man zusätzlich einen Button hat, mit dem man einen Raum als gelesen markieren kann.

Diesen Buttons folgt nun die eigentliche nachrichten-Liste. Diese ist dynamisch, d. H., erreicht man das eine oder andere Ende, werden ältere bzw. Neuere Nachrichten nachgeladen, sofern vorhanden. Man navigiert diese Liste am besten mit dem Befehl zum Springen zum nächsten oder vorherigen Listenelement, um zu einer Nachricht zu gelangen. Navigiert man dann mit Pfeil runter in die Nachricht, erscheinen unterhalb des Nachrichtentextes in einer Symbolleiste Funktionen zum Reagieren auf die Nachricht, zum Antworten, und weitere Optionen. Steht man auf einer von einem selbst verfassten Nachricht, kann man diese sogar bearbeiten, z. B. Um Schreibfehler zu korrigieren.

Zwischen den Nachrichten können Trenn-Elemente auftauchen, sogenannte Separatoren. Bei NVDA und JAWS werden diese mit der Schnellnavigationstaste s angesprungen. Einer dieser Teiler markiert den Beginn der ungelesenen Nachrichten, andere markieren den Beginn eines neuen Tages im Chat-Verlauf.

Um nun also z. B. In einem Raum schnell zur ersten ungelesenen Nachricht zu gelangen, kann man beispielsweise so vorgehen:

  1. Den Raum öffnen.
  2. An den Anfang springen.
  3. In die rechte Seitenleiste per Sprungmarken-Navigation.
  4. Aus dem Container heraus. Dies bewirkt meistens ein Landen auf dem Button zum Springen zur ersten ungelesenen Nachricht.
  5. Diesen betätigen.
  6. Sobald der Screen Reader wieder zu sprechen beginnt, weil die nachrichten-Liste gescrollt wurde und es sich bei ihr um eine live Region handelt, die von Screen Readern automatisch gelesen wird, mit s zum Trennsymbol springen. Das ist höchstwahrscheinlich der Beginn der ungelesenen Nachrichten.
  7. Ab hier mit i chronologisch nachlesen, was neu ist.

Unterhalb der nachrichten-Liste befindet sich das Eingabefeld für eine eigene Nachricht. Mit einem @-Zeichen beginnt man, einen Namen eines anderen Mitglieds zu suchen, um diese Person zu erwähnen. Mit Pfeil rauf und runter, nachdem man ein paar Zeichen eingegeben hat, die richtige Person auswählen und mit Leertaste bestätigen. Dies fügt gleich ein Leerzeichen ein, und man kann mit seinem Text fortfahren. Aufgrund eines nicht standardkonformen Verhaltens rate ich vom Nutzen der Tab- und Enter-Tasten ab. Das soll sich aber demnächst zum Glück ändern. Genauso kann man verfahren, indem man einen Doppelpunkt eingibt. Nur sucht und vervollständigt man hier nicht Nutzer, sondern Emojis. Die lassen sich also auf schöne Weise finden und benutzen.

Darunter gibt es dann noch ein paar Buttons zum Einfügen von Dateien, zum Tätigen eines Sprach- oder Videoanrufs oder zum Einfügen eines Emojis mit einem sehr visuellen Overlay.

Es lohnt sich auch, im Bereich „Hilfe und über“ der Einstellungen einen Blick in die Tastaturkürzel zu werfen. So kann man, im Eingabefeld für eine neue Nachricht stehend, mit Alt+umschalt+Pfeil runter/rauf zum nächsten/vorherigen Raum mit ungelesenen nachrichten springen. Dann mit Escape den virtuellen Cursor einschalten und mit Umschalt+S schauen, ob der Trenner für die ungelesenen Nachrichten bereits angezeigt wird, oder ob rauf gescrollt werden muss, um die neuen nachrichten chronologisch zu lesen. Mit der Zeit wird man so sehr schnell eine Routine entwickeln, mit der man auch mehrere Räume problemlos verfolgen kann.

Der iOS-Client 🔗

Element für iOS hat mehrere Tabs am unteren Bereich. Den Startseite-Tab sollte man zurzeit ignorieren, der ist nicht zugänglich. Im Favoriten-Tab kann man häufig genutzte Räume und Unterhaltungen ablegen. Die Räume- und Personen-Tabs enthalten entsprechend die Liste der Räume und Personen, mit denen man gechattet hat. Diese Listen sowie die Zustände der ungelesenen Nachrichten, entsprechen dem, was man auch auf dem Desktop hat. Diese Informationen werden also synchron gehalten.

In einem Raum gibt es oben, kurz unterhalb der Titelleiste, einen Button, der besagt, dass man zur ersten ungelesenen Nachricht springen kann. Dies setzt den VoiceOver-Cursor fast immer richtig. Allerdings kann es vorkommen, dass dann Updates hereinkommen und der cursor manchmal um eine Zeile vorspringt. Man kann aber in der Regel die Nachrichten jetzt durch Rechtswischen chronologisch lesen.

Mit einem Doppeltippen und halten auf einer Nachricht kann man deren Kontextmenü aufrufen und da verschiedene Aktionen ausführen. Rotor-Aktionen werden zurzeit noch nicht unterstützt.

Auf dem Personen-Tab kann man zusätzlich, wenn man seine Kontakte mit dem Matrix-Heimserver geteilt hat, feststellen, ob andere aus dem Adressbuch einen Matrix-Account irgendwo haben, der ihrer E-Mail-Adresse oder Telefonnummer entspricht, und so direkt Kontakt aufnehmen. Dieser Abgleich passiert sehr datenschutz-freundlich.

Auf dem Räume-Tab gibt es auch eine Liste von populären Räumen auf dem eigenen Heimserver, und es gibt eine Suchfunktion, die in etwa der Erkunden-Funktion der Web- bzw. Desktop-App entspricht. Das alles sind allerdings sehr standardmäßige Elemente, sodass es hier keine größeren Schwierigkeiten bei der Bedienung geben sollte.

Der Communities-Tab ist ähnlich zu betrachten, wie ich es schon weiter oben ausgeführt habe.

Was bei der iOS-Version noch nicht geht, sind Erwähnungen von Benutzern. Das Problem haben aber nicht nur VoiceOver-Nutzer, die Funktion gibt es einfach noch nicht.

Element für Android 🔗

Element für Android hieß früher RiotX. Es gab auch Riot, aber RiotX war das zuletzt aktivere Projekt und wird zurzeit in die Element-App überführt. Auch Nutzer der alten Riot-App werden auf Element migriert. Ich selbst muss allerdings gestehen, dass ich die App unter Android nie benutzt habe. Als ich mit Matrix so richtig anfing, als sie endlich barrierefreier wurden, war ich schon wieder auf iOS umgestiegen. Ich höre aber nur Gutes von Android-Nutzern, was die Zugänglichkeit angeht.

Zukünftige Pläne für die Desktop-Version 🔗

Ich habe mich in den letzten Monaten sehr für die Web- und Desktop-Version engagiert und selbst auch ein paar kleine Bug Fixes eingepflegt. Es gibt hier noch einiges zu tun. So soll es bald einen zugänglichen Emoji-Picker geben, der sowohl für die Emojis in Nachrichten als auch bei der Reaktionsauswahl auf eine Nachricht zum Zuge kommen soll. Auch soll es in Zukunft möglich sein, die nachrichten-Liste mit der Tastatur zu bedienen, also z. B. Mit den Pfeiltasten durch die nachrichten-Liste zu wandern, ähnlich wie in Slack oder einem E-Mail-Client. Dann kann man den Screen Reader auch im Fokus- oder Anwendungs-Modus betreiben und bekommt trotzdem alle Informationen. Da wir Element bei meinem Arbeitgeber einsetzen und ich die Entwickler inzwischen ziemlich gut kenne, werde ich meinen Teil beratend dazu beitragen, dass das richtig gut wird.

Auch in der iOS-App gibt es noch einige Baustellen, bei denen ich hoffe, da in nächster Zeit etwas erreichen zu können. Diese ärgerlichen Verspringer bei Updates z. B., und dass nicht immer alle Links antippbar sind, sind nur einige Punkte, die mich an der iOS-App noch stören. Es gibt inzwischen auch einige andere Versuche, iOS-Apps für die Matrix zu schreiben, aber davon ist bisher keine wirklich besser und vor allem auch noch gar nicht zur App-Store-Reife gelangt.

Ich finde Matrix bzw. Das offene Ökosystem dahinter sehr spannend und eine wirklich gute Alternative zu geschlossenen und zentralisierten Systemen wie Teams oder Slack. Und seit etwa einem Jahr tut sich auch bei der Barrierefreiheit bei diesem Open-Source-Projekt erfreulich viel. Und das kann man ja leider nicht von jedem Open-Source-Projekt behaupten. Hier gibt es inzwischen allerdings eine ganz klare Zuwendung zum Thema. Dies ist vermutlich auch den Großverträgen mit Firmen und Regierungseinrichtungen geschuldet. Gut so!

Ich hoffe, euch mit dieser Einführung einen Überblick verschafft zu haben, wie man sich als Blinder im Element-Matrix-Client zurechtfindet. Vielleicht sieht man sich mal in einem Chat-Raum. Meine ID findet ihr ja weiter oben.