Aller au contenu

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 !

Un vélo maquillé en moto avec du carton.

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.

Écran du panneau QChat dans QGIS

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 😰

Et là, c'est le drame...

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...

Lancement du templater de plugins QGIS pour générer la structure de QChat

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.

Écran du plugin QField compatible avec QChat

À 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#

Portrait 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#

Portait de 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/

Partager sur :

Commentaires

Afin de favoriser les échanges constructifs, merci de préférer le pseudonymat à l'anonymat. Pour rappel, l'adresse mail n'est pas exposée publiquement et sert principalement aux notifications de réponse. Les commentaires sont automatiquement republiés sur nos réseaux sociaux pour favoriser la discussion. Consulter la page sur la confidentialité et les données personnelles.
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 Pictogramme BeerWare