El rediseño de QChat#
Date de publication initiale : 8 septembre 2025
QChat est mort, vive QChat !
Après une première version un peu bancale, Geotribu est content d'annoncer des changements assez profonds et impactants pour QChat, le système de tchat intégré à QGIS.
QChat nouvelle version, c'est un peu comme quand Com Truise monte sur une moto : ça fait de l'air dans les veuch !
Une photo honteusement volée sur mastodon... Si vous connaissez l'auteur/ice, contactez-nous !
QChat !?#
QChat est un tchat qui s'intègre dans QGIS sous forme de panneau, permettant de partager des messages texte, des images, des screenshots, des données vectorielles légères etc, avec les autres gens connectés.
Pourquoi ?#
La première version de QChat était assez rudimentaire, et pas très scalable comme on dit dans les milieux autorisés. Concrètement, du fait de sa conception initiale assez limitée, l'API ne pouvait tourner que sur un seul worker uvicorn, c'est-à-dire un seul processus système. Ce qui pouvait amener à limiter le nombre de personnes connectées simultanément.
On s'en est rendu compte lors des dernières Rencontres QGIS-fr d'Avignon, et lors du quizz notamment
Avec plus de 100 personnes connectées, ça commence à souffler...
Afin d'être en capacité d'accueillir plus de personnes, quand y'a du monde sur la corde à linge, il nous fallait donc revoir la conception et l'implémentation de l'API.
À noter que la nouvelle version apporte quelques fonctionnalités supplémentaires, ceci dit la refonte est principalement sous le capot.
Refonte de l'API : gischat
#
Ainsi, le problème de la conception initiale est que côté serveur, on enregistre les utilisateur/ices et leur connexion websocket dans des listes et dictionnaires python. Ce qui a l'avantage de rester simple - c'est là un peu l'idée initiale de QChat .
Mais lorsqu'on commence à travailler avec plusieurs workers parallèles, ça devient un souci, car les workers sont des processus séparés, qui ont donc chacun leurs propres listes et dictionnaires python. Impossible par exemple d'insérer un élément depuis un worker et de le récupérer depuis un autre.
Il devient donc inévitable d'utiliser un système de "bases de données" ou équivalent, afin de pouvoir stocker des informations communes et faire communiquer les différents workers. Difficile de faire sans pour s'caler.
Dans l'optique de rester K.I.S.S. , on s'est tournés vers redis, qui peut tourner sur notre serveur et qui propose une "base de données" très légère : listes, dictionnaires, etc. Soit exactement ce qu'il nous faut pour que QChat ne devienne pas une usine à gaz.
De plus, Redis propose un mécanisme de publication & souscription, qui va permettre à nos différents workers parallèles de communiquer entre eux afin de notifier un channel QChat.
Voici un schéma qui explique le fonctionnement du nouveau serveur QChat, et qui reste le même peu importe le nombre de workers parallèles :
graph TD
subgraph Clients QChat
QGIS1[👩 Alice]
QGIS2[👨 Bob]
end
subgraph Serveur gischat
Worker1[🤖 Worker 1]
Worker2[🤖 Worker 2]
Redis[💾 Redis]
end
QGIS1 --> |1👋 Ouvre une connexion| Worker1
Worker1 --> |2✅ Enregistre Alice| Redis
Worker1 --> |3👋 Publie l'arrivée d'Alice| Redis
Redis --> |4👋 Diffuse l'arrivée d'Alice| Worker2
Worker2 --> |5👋 Diffuse l'arrivée d'Alice| QGIS2
QGIS2 --> |6📦 Envoie un message| Worker2
Worker2 --> |7📦 Publie le message| Redis
Redis --> |8📦 Publie le message| Worker1
Worker1 --> |9📦 Diffuse le message| QGIS1
Info
Le serveur "par défaut" de Geotribu est à l'adresse qchat.geotribu.net
, et propose un channel par langue / pays : QGIS-fr
, QGIS-es
, QGIS-de
, QGIS-it
... Il est aussi possible de monter son propre serveur en suivant les instructions sur le dépôt gischat
.
Création du plugin QGIS officiel: QChat
#
La version initiale de QChat dans QGIS résidait dans une fonctionnalité occulte du plugin QTribu. Pas super simple à découvrir ni à retrouver.
Voici donc un nouveau plugin dédié et disponible sur le dépôt officiel : QChat.
Afin de le générer, c'est le templater de plugins QGIS qui a été utilisé. Contrairement au Plugin Builder, qui faisait l'objet d'un article publié sur Geotribu en 2010... ce templater a le mérite de créer une structure solide et moderne de plugin QGIS :
- une arborescence de fichiers propre.
- un paramétrage customizable pour le plugin, directement dans les paramètres généraux de QGIS.
- un squelette de documentation qu'il est aisé de faire évoluer.
- une CICD qui permet de publier son plugin automatiquement et selon sa plateforme Git préférée (GitHub ou GitLab sont disponibles).
On a fait tourner le templater, et 24 prompts plus tard on se retrouve avec une structure solide de plugin QGIS !
Voici la sortie de l'opération de génération du plugin, en plus c'est bien ça permet de savoir s'il y a besoin d'aller voir l'ophtalmo en cette rentrée...
Warning
Si vous souhaitez créer un nouveau plugin QGIS à l'avenir, oubliez l'article de 2010 et le Plugin Builder, mieux vaut partir sur le templater.
En extra: un plugin QField pour QChat#
En parallèle du développement de l'API et du plugin QChat, il y a aussi maintenant un plugin QField compatible avec QChat, pour lequel nous remercions Mathieu Pellerin, à l'initiative et qui nous a lancés sur les rails.
À l'heure actuelle, pour l'utiliser il faut ajouter cette URL dans les paramètres "Plugins" de QField : https://github.com/geotribu/qchat-qfield-plugin/releases/latest/download/qfield-plugin-qchat.zip
À l'avenir, nous ferons tout pour le rendre disponible sur le dépôt de plugins QField, quand celui-ci sera en place
Et maintenant ?#
Il y a toujours des idées et des nouveaux trucs à développer dans QChat, on pense à ceux-là notamment :
- Ajout d'un petit formulaire pour lâcher des emojis
- Partage de modèles graphiques entre plusieurs clients connectés à QChat.
- Partage et exécution de code pyqgis. Oui. Rien que pour faire plaisir à ton Responsable Sécurité Informatique
- Ajout d'un nouveau panneau et fonctionnalité de l'API, pour communiquer avec des serveurs matrix, un standard de communication décentralisé.
Et d'autres trucs encore ! Si vous avez des idées, n'hésitez pas à nous les partager !
Auteur·ices#
Guilhem ALLAMAN#
Je suis ingénieur informaticien. J'aime les ordinateurs. Mais ce que j'aime par-dessus tout (oh oui !), c'est itérer, et ce de manière agile, transverse et langoureuse, de bon matin, dès l'aube, à l'heure où blanchit le dashboard du sprint backlog.
Basé à Paris, j'ai commencé par le développement Java avant de découvrir les joies des SIG et de m'y spécialiser. Mon parcours m'a amené à travailler un certain temps dans les télécommunications au sens large, et avec des boîtes comme Oslandia, une filiale de Canal+ Afrique et OPENGIS.ch avec qui j'évolue désormais.
Je participe à Geotribu depuis début 2024, et mes contributions ici n'engagent que moi, me, myself and I.
L'équipe Geotribu#
Toute l'actualité de la géomatique Open Source ! Mais aussi des tutoriels, des billets de blog, des tests et surtout une bonne humeur géographique !
Licence Beerware #
Ce contenu est sous licence Beerware (Révision 42).
Les médias d'illustration sont potentiellement soumis à d'autres conditions d'utilisation.
Réutiliser, citer l'article
Tant que vous conservez cette licence :
- vous pouvez faire ce que vous voulez de ce contenu
- si vous rencontrez l'auteur/e un jour et que vous pensez que ce contenu vaut le coup, vous pouvez lui payer un coup en retour
Citer cet article :
"La refonte de QChat" publié par Guilhem ALLAMAN, Geotribu sur Geotribu - Source : https://geotribu.fr/articles/2025/2025-09-08_refonte_qchat/
Commentaires
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.
Ce contenu est sous licence Beerware