Als wir damit anfingen uns mit der Einführung cloudbasierter Infrastrukturen zu beschäftigen, stand hinter dem Thema Messenger ein großes Fragezeichen. Der mögliche Einsatz eines Messengers warf viele Fragen auf:

Welche der verfügbaren Open Source Lösungen genügt den Ansprüchen an Benutzerfreundlichkeit, Datenschutz und Integrierbarkeit? Welche Erwartungen werden in Punkte Erreichbarkeit an die Lehrkräfte gestellt. Was darf über den Messenger kommuniziert werden? Wie kann Missbrauch entgegengewirkt werden?
Mit der durch die Niedersächsische Bildungscloud initiierten Einführung von schulübergreifenden Teams gab es dann den ersten Anwendungsfall für eine messengerbasierte Kommunikation. Dafür wurde RocketChat als Chat-Komponente innerhalb von Teams eingeführt.

Das Feedback unserer Nutzer:innen zeigte uns aber das der Bedarf für eine direkte Kommunikation und auch für die selektive Kommunikation in weiteren Kontexten besteht, wie z.B. in Kursen. Spätestens mit der COVID-19-Pandemie war klar, dass wir das Thema Messenger noch einmal ganzheitlich angehen mussten.


🔎 Technologieauswahl

Dazu gehörte als erstes noch einmal erneute Marktsondierung und Evaluation der verschiedenen OpenSource Konzepte und Technologien.

RocketChat hatte sich nicht bewährt, zeigte Skalierungsprobleme und undokumentiertes Verhalten. Signal schien spannend, aber das Projekt stand dem Betrieb von eigenen Instanzen ablehnend gegenüber. Wire war technologisch am reizvollsten und bot darüber hinaus eine überzeugende Nutzererfahrung (UX), doch die Schritte hin zu einem Betrieb ohne AWS Komponenten und auf eigener Hardware waren nicht schnell genug. Auch schien die Community rund um das Projekt noch sehr anbieterfokussiert zu sein. Blieb noch Matrix. An Matrix gibt es viele spannende Ansätze:

  • Es gibt eine Trennung zwischen Protokoll und Implementierung.
  • Es gibt eine lebendige Community, rund um eine Firma die kommerziellen Dienste rund um den Messenger anbietet.
  • Mehrere Instanzen lassen sich zu einem Netzwerk verbinden.
  • Es existierten Bibliotheken für zahlreiche Plattformen und Sprachen.

Es gab aber auch kritische Punkte:

  • Die UX der Benutzeroberfläche (Riot) war durchwachsen.
  • Die Performance der Server konnte bei großen Installationen an Ihre Grenzen kommen.
  • Es gibt keinen nativen Support für audio- und videobasierte Kommunikation (anders als etwas bei Wire die hier punkten können).

Schauen wir uns diese drei Punkte daher im Detail an:

Die Benutzeroberfläche, insbesondere der älteren iOS App, ist in die Jahre gekommen. Doch das Riot Team hat dies erkannt und schenkt dem Thema UX mehr Aufmerksamkeit. So wurde die Android App unter Berücksichtigung des gängigen Material Designs komplett neu geschrieben, und das Riot Team hat sich personell im UX Bereich verstärkt. Zudem erlauben die Bibliotheken eine Integration, ohne dass die Apps benutzt werden müssen (dazu später mehr).

Die Performance des eingesetzten Servers namens Synapse kommt bei großen Installationen an seine Grenzen. Neue kompatible Server sind noch nicht fertig. Aber auch hier ist das Matrix Team aktiv, und die letzten Releases drehten sich alle um dieses Thema.

Die Unterstützung von video- und audiobasierter Kommunikation fehlt in Matrix, dafür wird aber die Open Source Software Jitsi integriert.

Damit sind die von uns identifizierten Schwachstellen adressiert. Und als wir bereits eifrig testeten, erreichte uns dann die Nachricht, dass auch die Bundeswehr künftig auf Matrix setzt.


So bauen wir den neuen Messenger ein 🔧

Der Einbau des neuen Messengers sollte tiefenintegriert sein, aber die Modularität der Cloud nicht verletzen. Wer also einen anderen Messenger nutzen möchte sollte dies tun können.

Damit der Messenger funktioniert, muss er wissen welche:r Nutzer:in eingeloggt ist und in welchen Räumen dieser mit welchen Berechtigungen aktiv sein darf. Hierbei werden zwei Szenarien unterschieden:
Zum einen wird der Messenger automatisch geladen, wenn man die HPI Schul-Cloud öffnet. Hierfür haben wir auf Basis des React-SDK eine Embedded-Version des Messenger implementiert. Diese bekommt für die Dauer der Nutzung ein Zugangstoken. Alle unnötigen Funktionen haben wir entfernt.

Eine Nutzung von Apps ist vorbereitet - hierfür haben wir Synapse um ein OAUTH2 Login erweitert, der zwar in der Spezifikation des Matrix-Protokoll, aber noch nicht in der Synapse Implementierung vorhanden war (Dieser PR wurde von einem anderen Contributor aufgegriffen, die Funktionalität befindet sich inzwischen im Master Branch).

Der neue Messenger verfügt über ein mehrstufiges Opt-In Verfahren. Als erstes muss der Messenger für die Schule aktiviert werden. Ab diesem Zeitpunkt steht er in allen Kursen und Teams zur Verfügung. Allerdings ist er per Standardeinstellung nur unidirektional, d.h. nur Lehrer:innen oder Teamadministrator:innen können Nachrichten verfassen.

Ist eine bidirektionale Kommunikation gewünscht, so muss dies einzeln für jeden Kanal (z.B. Kurs, Team) aktiviert werden.

Die Synchronisation von Nutzern und Räumen erfolgt asynchron über ein RabbitMQ-Nachrichtenbus. Hierfür wird ein zweistufiges Consumerverfahren verwendet. In der ersten Queue wird vermerkt, dass für eine:n Nutzer:in Änderungen vorliegen. Eine zweite Queue holt sich dann den Soll-Zustand aus der HPI Schul-Cloud und aktualisiert über eine API den Messenger. Hierdurch werden harte Abhängigkeiten vermieden. Auch funktioniert die Synchronisation wenn der Messenger bspw. während eines Updates kurz nicht zur Verfügung steht. Und Lastspitzen, die etwa beim gleichzeitigen Import von hunderten von Nutzer:innen auftreten könnten, werden entzerrt.

Zwei besondere Känale sind das Lehrerzimmer und der Ankündigungsraum.

Im Lehrerzimmer treffen sich automatisch alle Lehrkräfte einer Schule. Anders als die Lehrerzimmer-Funktionalität muss der Ankündigungskanal pro Schule explizit aktiviert werden, denn er führt dazu das sich alle Schüler:innen, ähnlich wie auf dem Schulhof, sehen können und ein Gespräch beginnen können. In der Grundeinstellung können sich nur die Nutzer:innen sehen und ansprechen, die in einem gemeinsamen Raum (also einem Kurs oder Team) sind.


📈 Was kommt als nächstes?

Momentan läuft die interne Testphase und wir schauen speziell auf Funktionalität, Datenschutz und Sicherheit sowie die Finalisierung des Deployments. Wir hoffen, dass der neue Messenger schon in wenigen Wochen zur Verfügung steht und die Kommunikation an Schulen wesentlich vereinfachen kann.