Coupler le discours avec le chat et le cloud

Suite à une question posée par @debryc ici, voici un bref aperçu du travail que nous avons réalisé pour faire fonctionner harmonieusement nos forums Discourse avec un stockage cloud (une instance NextCloud) et un outil de chat (Mattermost dans notre cas).

Ce message est long, alors cachons les détails jusqu’à ce que vous cliquiez sur la flèche…

[details=“Message complet et détaillé”]

Je dois commencer par préciser que je ne suis pas le développeur de ce système. Il a été créé en C#/.NET par un autre membre de l’équipe technique, je ne peux donc pas répondre à des questions techniques précises à son sujet. Je me contente simplement d’exposer les problèmes que nous souhaitions résoudre et ce que nous avons fait.

Contexte : Nous utilisions un système intégré (Basecamp) pour la discussion, le chat en temps réel et l’intégration du stockage de fichiers. Ce système présentait de nombreux éléments insatisfaisants, tant sur le plan structurel que sécuritaire, c’est pourquoi nous avons décidé de migrer l’organisation vers un nouveau système ou de nouveaux systèmes open source.

Nous avons effectué de nombreuses recherches et évaluations. Certains de nos choix ont été dictés par la nécessité d’agir rapidement, d’autres par la recherche de la meilleure adéquation avec nos besoins, et d’autres encore par la nécessité de rendre la migration aussi douce que possible pour nos 10 000 utilisateurs (qui comprennent une forte proportion de non-spécialistes et un nombre significatif de personnes technophobes, tous ayant leurs propres opinions bien arrêtées — pas facile de satisfaire tout le monde !).

Pour aller droit au but, nous avons opté pour trois composants distincts : Mattermost pour le chat en temps réel, Discourse pour les discussions plus réfléchies, et Nextcloud pour le stockage sécurisé de fichiers et l’édition collaborative (remplaçant une combinaison du stockage natif de Basecamp et de Google Docs). Tous sont hébergés sur nos propres serveurs gérés.

Nous avions donc besoin de trouver un moyen de relier de manière relativement transparente les trois identifiants requis, de créer automatiquement des comptes utilisateurs et d’assigner les utilisateurs aux groupes/forums appropriés (Discourse), aux groupes de stockage partagé (Nextcloud) et aux équipes et canaux (Mattermost).

L’organisation compte plusieurs centaines de groupes/équipes distincts (par lieu et fonction), et les utilisateurs peuvent appartenir à de nombreux groupes. Certains sont fermés, d’autres sont ouverts et permettent à n’importe quel utilisateur de s’y joindre librement.

Le premier problème consistait à créer des comptes utilisateurs sur les trois systèmes et à s’assurer initialement qu’ils aient le même nom d’utilisateur (pour qu’ils puissent se reconnaître mutuellement) et le même mot de passe (afin d’avoir au moins un seul ensemble d’informations d’identification à retenir ou à stocker, et ultimement un accès unique aux trois systèmes).

Nous avions également besoin d’un moyen de gérer l’assignation des personnes aux bons groupes lors de la création du compte. Il n’y avait pas de correspondance adéquate entre les groupes réels et les groupes en ligne dans l’ancien système, nous ne pouvions donc pas simplement effectuer une migration.

La solution que nous avons trouvée est un site web séparé, appelé le Hub, qui s’occupe de suivre les comptes utilisateurs et d’utiliser les API des trois systèmes pour créer et mettre à jour les détails des utilisateurs.

Le Hub permet également aux « Champions Tech » de chaque groupe (ou ensemble de groupes) d’inviter des personnes à rejoindre les nouveaux services, garantissant ainsi que seules les bonnes personnes se retrouvent à chaque endroit.

Ainsi, un utilisateur reçoit un email d’invitation pour rejoindre les nouveaux services, avec un lien unique vers le Hub où il peut créer un nom d’utilisateur et un mot de passe. Ces informations sont ensuite utilisées pour créer automatiquement des comptes utilisateurs correspondants sur les trois services distincts.

Le Hub sait également quels groupes/forums, équipes/canaux et zones de stockage l’utilisateur devrait pouvoir accéder, et les ajoute aux endroits pertinents via les API.

Au fil de son évolution, le Hub a vu de nouvelles fonctionnalités se développer. Désormais, un utilisateur peut l’utiliser pour trouver des canaux et des forums, demander à y rejoindre, ainsi que pour diverses autres fonctions d’administration tant pour les Champions Tech que pour les utilisateurs.

Il peut désormais également fournir une forme d’authentification unique (SSO), de sorte qu’en se connectant au Hub, un utilisateur peut se connecter à l’un des autres services en un seul clic. (Une partie du travail ici a consisté à exclure les connexions standard de type réseaux sociaux d’entreprise utilisées)

Nous avons examiné diverses façons d’intégrer le chat et de gérer le stockage de fichiers dans un seul système (les trois permettent une partie de cela), mais cela impliquait toujours des compromis massifs, et on se retrouvait avec un « chameau » (un cheval conçu par un comité) comme Basecamp. Mieux vaut s’en tenir à une solution dédiée de race pure pour chacune des fonctions principales et les faire bien.

7 « J'aime »

Wow ! C’est incroyable !!! J’adore vraiment cette solution qui consiste à créer un portail permettant aux personnes de s’inscrire à différents canaux de communication, plutôt que de tenter d’avoir une seule plateforme qui fait tout pour chaque fonction. Je mets ce post en favoris pour que, si nous devons un jour résoudre le même problème, nous ayons une idée de ce qui est possible.

En passant, savez-vous par hasard si cette configuration peut fonctionner avec Slack et la Suite Google (en particulier les Groupes Google et les Lecteurs partagés ?)

2 « J'aime »

Merci pour vos gentils mots. Je suis tout à fait d’accord sur l’utilisation de solutions différentes selon les besoins. Cependant, pour un calendrier partagé flexible, nous avons pour l’instant opté pour celui intégré à Nextcloud.

Pour ces applications spécifiques, je ne sais pas. Cela dépendra des fonctionnalités d’API qu’elles offrent. Les logiciels commerciaux ont tendance à être plus limités que les logiciels libres et open source (et dans notre cas, nous avions particulièrement besoin de quitter Google).

1 « J'aime »