Channel Apps
Jabber vs Matrix

 zuletzt bearbeitet: Tue, 05 Feb 2019 11:12:50 +0100
buckaroo@hub.netzgemeinde.eu
Ursprünglich wollte ich - zustätzlich zu dem öffentlichen Matrixserver matrix.netzgemeinde.eu - einen öffentlichen Jabberserver anbieten, jedoch habe ich sehr schnell meine Meinung geändert und werde den entsprechenden Jabberserver ASAP löschen. Das hat zwei Gründen: Der Server selbst (ejabberd) und das Protokoll selbst.

Ejabberd

Ich hatte mich für ejbabberd entschieden, ein Jabberserver geschrieben in Erlang, welcher schnell und effizient sein soll (das glaube ich sogar, wenn ich andere Erlang-Projekte ansehe). Die Installation als solche war unproblematisch, aber die Konfiguration, mein Gott die Konfiguration!

Die Konfiguration

Die mitgelieferte Konfiguration umfasst etwa 800 Zeilen YAML (viele Zeilen davon sind Kommentare). Die Doku erkennt das Problem und versucht den Administrator zu beruhigen:
Do not let this complexity scare you. Most of you will be fine with default config file (or light changes).

Soweit so gut, nun zur Dokumentation:

Die Dokumentation

Die Dokumentation befindet sich unter https://docs.ejabberd.im/admin/configuration.
Wenn man eine so komplexe Konfiguration hat, ist eine gute Dokumentation das A und O, ansonsten ist man relativ aufgeschmissen und rennt ständig in Probleme. Genau das ist mir passiert, denn das Grundübel der Dokumentation: Es ist vollkommen unklar auf welche Version des ejabberd sie sich bezieht! Ich hatte 17.04 am laufen, divere Konfigurationsoptionen, die in der Doku beschrieben sind, funktionieren nicht - anscheinend bezieht sich die Dokumentation auf die allerneuste Version von ejabberd, ohne das irgendwo zu erwähnen! Besonders unangenehm war das bei der Datenbank: Ich befolgte den Rat das „neue“ SQL-Schema zu benutzen ( https://docs.ejabberd.im/admin/configuration/#database-and-ldap-configuration). Nach viel Fluchen und Herumprobieren (welche der Konfigurationsoptionen denn nun gehen und für meine Version zuöässig sind) gelang es mir endlich den Dienst zu starten - ich konnte bloß keine User anlegen. Es stellte sich heraus, dass das „neue“ SQL-Schema nicht von meiner Version unterstützt wurde!

Also die Datenbank gelöscht, neu aufgesetzt, „altes“ Schema eingespielt und endlich - nach viel Herumprobieren - funktionierte das Teil endlich!

Jabber

Nachdem ich endlich die meisten Probleme gelöst hatte habe ich mit einigen Jabber clients herumspielt und zu meinem extremen Erstaunen stellte sich heraus, das Jabber/XMPP eines der grundsätzlichensten Features eines Messengers nicht unterstützt: Die Fähigkeit mit mehr als einem Client an einer Sitzung teilzunehmen. Dieses Feature ist so grundlegend, dass es erst gar nicht glauben konnte. (Zugegeben, Whatsapp kann das auch nicht, aber wenigstens sagt Whatsapp das. Ditto Telegrams verschlüsselte Nachrichten. Auch hier eine Warnung).

Ich hatte drei Clients laufen - einen der in KDE/Plasma eingebaut ist (Telepathy), Kopete und einen unter Android. Und das war ein reines Glückspiel: Manche Nachrichten kamen in Android an, manche in Kopete, etc. Das macht Jabber für mich fast unbenutzbar: Normalerweise läuft bei mir ein Client unter Android  und einen auf dem Desktop. Wenn ich den Desktop verlasse kann ich Unterhaltungen unter Android weiterführen und umgekehrt. Das ist unmöglich uunter Jabber - ich kann nicht auf alte Nachrichten zugreifen, und das scheint auch noch unter mobil ein Problem zu sein: Da sich dort regelmäßig die IP ändert gibt es wohl Probleme mit Jabber.

Erweiterbarkeit (XMPP]

Ich habe herausgefunden dass es für das Problem „mehrere Clients“ ein Workaround gibt - eine Erweiterung des Protokolls (XEP). Es gibt ein Github repository für die notwendige Erweiterung (XEP-0280), aber warum ist ein solches Kernfeature als Erweiterung des Protokolls implementiert? Und selbst wenn, warum ist es nicht Teil von ejabberds Standardsetup?

Die Erweiterbarkeit des Protokolls ist theoretisch eine gute Sache - praktisch jedoch erzeugt das massive Probleme. Als Beispiel: Ich hatte captcha für die Registrierungen aktiviert. Das führte leider dazu dass Registrierungen nicht möglich waren - der Client hatte das entsprechende XEP nicht implementiert (Die Webregistrierung funktionierte sowieso nicht. Gab nur einen 404. Warum? Keine Ahnung). Das führt dazu dass es ein zweiseitiges Problem bei der Nutzung von Jabber gibt:  Zuerst muss man einen (öffentlichen) Server finden, der die benötigten XEPs implementiert, und dann noch einen Client der diese auch alle versteht - nicht nur auf dem Desktop, sondern auch unter Mobile. Das ist viel zu viel Aufwand/Ärger die man sich damit einfängt.

Matrix

Die Probleme unter Jabber hatte ich nie bei Matrix/synapse gehabt. Zugegeben, man muss einige Dinge konfigurieren, die Dokumentation ist aber gut und richtig, die Migration von sqlite zu PostgreSQL war gut beschrieben und lief problemlos. Es lief einfach so - mehrere Clients pro Sitzung, Voice/Videochat, Kanäle, Offline Nachrichten, egal was.

Ergo

Statt den Jabberserver für die Öffentlichkeit werde ich diesen Haufen .. (man kann sich denken) löschen. Die Doku ist nicht korrekt, der Server ist einer Programmiersprache geschrieben die ich nicht beherrsche, was dazu führt dass ich bei Problemen nichts machen kann und zu guter Letzt fehlen Jabber elementare Eigenschaften eines Messengers - z.B. mehrere Clients pro Sitzung, deshalb sehe ich keinen Sinn darinen ein XMPP-Server zu betreiben. Ich habe auf einem anderen Server ein Profil angelegt falls jemand mich per Jabber kontaktieren möchte, jedoch bleibt Matrix die bevorzugte Kommunikationsform.

Es gibt einen deutschsprachigen Blogartikel zu dem selben Thema: https://www.kuketz-blog.de/messenger-matrix-das-xmpp-fuer-hobby-admins/