Kopplung von Diskurs mit Chat und Cloud

Nach einer Frage von @debryc hier möchten wir kurz über einige Arbeiten berichten, die wir durchgeführt haben, um unsere Discourse-Foren nahtlos mit Cloud-Speicher (eine NextCloud-Instanz) und Chat (in unserem Fall Mattermost) zu integrieren.

Da der Beitrag recht lang ist, haben wir die Details erst ausgeklappt, wenn Sie auf den Pfeil klicken…

Voller, ausführlicher Beitrag

Zunächst möchte ich betonen, dass ich nicht der Entwickler dieses Systems bin – es wurde von einem anderen Mitglied des Tech-Teams in C#/.NET erstellt, sodass ich keine detaillierten technischen Fragen dazu beantworten kann. Ich stelle lediglich die Probleme dar, die wir lösen wollten, und beschreibe, was wir unternommen haben.

Hintergrund: Wir hatten bisher ein integriertes System (Basecamp) verwendet, das Diskussionen, Echtzeit-Chat und Dateispeicherung in einer Lösung vereinte. Allerdings gab es zahlreiche unzufriedenstellende Aspekte, sowohl struktureller als auch sicherheitsrelevanter Natur. Daher haben wir uns entschlossen, die Organisation auf neue Open-Source-Systeme zu migrieren.

Wir haben eine umfassende Recherche und Evaluation durchgeführt – einige unserer Entscheidungen wurden von Pragmatismus geleitet, andere davon, die beste Übereinstimmung mit unseren Anforderungen zu finden, und wieder andere davon, den Migrationspfad für 10.000 Benutzer so schmerzfrei wie möglich zu gestalten (die Nutzergruppe umfasst einen hohen Anteil an nicht-technischen und eine beträchtliche Anzahl an technikabgeneigten Personen, die alle ihre eigenen, fest verankerten Meinungen haben – nicht einfach zu begeistern!)

Um auf den Punkt zu kommen: Wir haben uns für drei separate Komponenten entschieden – Mattermost für den Echtzeit-Chat, Discourse für fundiertere Diskussionen und Nextcloud für sichere Dateispeicherung und kollaboratives Bearbeiten (als Ersatz für eine Kombination aus nativer Basecamp-Speicherung und Google Docs). Alle Systeme werden auf unseren eigenen verwalteten Servern gehostet.

Nun galt es, eine Möglichkeit zu schaffen, die drei erforderlichen Anmeldungen relativ nahtlos miteinander zu verknüpfen und automatisch Benutzerkonten zu erstellen sowie Benutzer den entsprechenden Zugriffsgruppen/Foren (Discourse), geteilten Speichergruppen (Nextcloud) und Teams/Kanälen (Mattermost) zuzuweisen.

Die Organisation verfügt über mehrere hundert separate Gruppen/Teams (nach Standort und Funktion), und Benutzer können vielen Gruppen angehören – einige sind geschlossen, andere können von jedem Benutzer frei beigetreten werden.

Das erste Problem bestand darin, Benutzerkonten auf drei Systemen zu erstellen und zunächst sicherzustellen, dass sie denselben Benutzernamen (damit sie sich gegenseitig erkennen können) und dasselbe Passwort verwenden (damit sie zumindest nur ein Satz von Anmeldedaten merken/speichern müssen und letztendlich einen Single Sign-On für alle drei Systeme haben).

Außerdem benötigten wir eine Möglichkeit, festzulegen, wie Personen beim Erstellen des Kontos den richtigen Gruppen zugewiesen werden sollen – im alten System gab es keine gute Zuordnung zwischen tatsächlichen Gruppen und Online-Gruppen, sodass wir diese nicht einfach migrieren konnten.

Die Lösung, die wir entwickelt haben, ist eine separate Website namens „Hub“, die dafür sorgt, dass Benutzerkonten verwaltet werden und die APIs der drei Systeme verwendet werden, um Benutzerdaten zu erstellen und zu aktualisieren.

Der Hub ermöglicht es zudem „Tech-Champions“ jeder Gruppe (oder Gruppe von Gruppen), Personen für die neuen Dienste einzuladen – und stellt so sicher, dass nur die richtigen Personen an jedem Ort landen.

Ein Benutzer erhält also eine Einladungs-E-Mail, um die neuen Dienste zu nutzen, mit einem einmaligen Link zum Hub, wo er einen Benutzernamen und ein Passwort erstellen kann. Anschließend werden automatisch entsprechende Benutzerkonten auf den drei separaten Diensten erstellt.

Der Hub weiß auch, auf welche Gruppen/Foren, Teams/Kanäle und Speicherbereiche der Benutzer Zugriff haben sollte, und fügt ihn über die APIs an den entsprechenden Stellen hinzu.

Im Laufe der Entwicklung wurden am Hub weitere Funktionen hinzugefügt, sodass Benutzer ihn nun nutzen können, um Kanäle und Foren zu finden und eine Beitrittsanfrage zu stellen sowie diverse andere Admin-Funktionen sowohl für Tech-Champions als auch für Benutzer auszuführen.

Er kann mittlerweile auch eine Form von Single Sign-On bieten, sodass sich ein Benutzer, nachdem er sich am Hub angemeldet hat, mit einem einzigen Klick bei einem der anderen Dienste anmelden kann. (Ein Teil dieser Arbeit bestand darin, die Standard-Logins für soziale Medien, die im Unternehmen verwendet werden, auszuschließen.)

Wir haben verschiedene Wege untersucht, Chat und Dateispeicherung in einem einzigen System zu integrieren (alle drei bieten dies teilweise an), doch dabei ging es immer um massive Kompromisse, und am Ende landete man bei einem „Kamel“ (ein Pferd, das von einem Komitee entworfen wurde), ähnlich wie Basecamp. Besser ist es, für jede der Kernfunktionen eine spezialisierte, hochwertige Lösung zu verwenden, die ihre Aufgabe gut erfüllt.

7 „Gefällt mir“

Wow! Das ist unglaublich!!! Ich finde diese Lösung, ein Portal zu erstellen, über das sich Menschen für verschiedene Kommunikationskanäle anmelden können, anstatt eine Plattform zu haben, die für jede Funktion alles erledigt, wirklich, wirklich gut. Ich werde diesen Beitrag als Lesezeichen speichern, damit wir in der Zukunft, falls wir dasselbe Problem lösen müssen, eine Vorstellung davon haben, was möglich ist.

Nebenbei gefragt: Weißt du zufällig, ob dieses Setup mit Slack und Google Workspace (insbesondere Google Groups und Shared Drives) funktioniert?

2 „Gefällt mir“

Danke für die netten Worte. Ich stimme dir völlig zu, dass man für unterschiedliche Anforderungen verschiedene Lösungen einsetzen sollte. Allerdings haben wir uns für einen flexiblen gemeinsamen Kalender vorerst für den integrierten Nextcloud-Kalender entschieden.

Bei diesen spezifischen Apps habe ich keine Ahnung. Es hängt davon ab, welche API-Funktionen sie bereitstellen. Kommerzielle Software ist tendenziell eingeschränkter als FOSS. (Und in unserem Fall mussten wir besonders von Google wegkommen.)

1 „Gefällt mir“