AccueilTechniqueServices → Forms

    Forms

    Fonctionnement🔗

    Le service Forms est une surcouche logicielle à Nextcloud Forms qui permet de créer des formulaires en un clic, sans inscription. Cette fonctionnalité est rendue possible grâce à la surcouche sncf (Simple Nextcloud Forms), développée en interne (en Rust), qui agit comme proxy HTTP entre l’instance Nextcloud et l’utilisateur·ice.

    L’outil sncf génère des liens d’administration et crée un compte par lien à l’aide de l’API de Nextcloud. L’authentification est réalisée de manière transparente lors de l’utilisation du lien d’administration. Le trafic entre l’utilisateur·ice et Nextcloud est régulé par sncf et le HTML est modifié à la volée en cas de besoin.

    Historique🔗

    Ce service a été ouvert le 20 septembre 2020 en version bêta. En date de février 2023, il est toujours en version bêta et son développement stagne. Notre communication à son sujet sur les réseaux sociaux reste marginale en raison de son statut expérimental.

    Nous avons choisi de développer cette solution car nous souhaitions depuis longtemps déployer un service de formulaires, mais aucun logiciel libre existant ne convenait à nos attentes (Yakforms n’existait pas encore).

    De plus, développer un logiciel de gestion de formulaires de zéro nous paraissait assez insurmontable, ce pourquoi nous avons choisi de nous baser sur le travail réalisé par la version 2.0 de Nextcloud Forms, tout juste sortie à ce moment-là… de la même manière que le module Webform de Drupal fait fonctionner Yakforms.

    L’objectif de se greffer en tant que surcouche logicielle d’une solution existante nous permettait de bénéficier des nouvelles fonctionnalités et de la maintenance régulière de Nextcloud Forms, tout en ayant peu de code à maintenir. En réalité, la maintenance de cette surcouche logicielle s’avère sans doute plus chronophage que le développement de la solution de formulaires elle-même, et Nextcloud Forms est très peu entretenu.

    Installation🔗

    Pour l’installation de Nextcloud, nous utilisons l’image officielle library/nextcloud, (dépôt Core). Il s’agit de la variante apache, sans optimisations supplémentaires. L’instance est très légère car peu d’applications sont installées dessus à l’exception de Forms ; elle ne nécessite donc pas autant d’optimisations qu’une instance complète.

    Pour sncf, nous avons notre propre image basée sur Debian.

    Le processus d’installation de Nextcloud (et son application Forms) couplé à sncf est complexe. Il est détaillé sur le wiki de sncf.

    Tests🔗

    L’application peut être rapidement testée en navigation privée (pour s’assurer qu’il n’existe pas de cookies datant d’une navigation précédente) :

    • En utilisant un lien d’administration /admin/ pour tester l’authentification automatique de sncf à un compte existant ;
    • En cliquant sur le bouton « Créer un formulaire » sur la page d’accueil pour tester la création de compte puis l’authentification.

    Les journaux de l’application peuvent être utilisés pour vérifier que l’application ne renvoie aucun message d’erreur.

    Statistiques d’utilisation🔗

    Voici les statistiques d’utilisation de notre service Forms.

    Il s’agit de moyennes journalières mesurées pendant la 5e semaine (calendrier ISO) de chaque année listée.

    AnnéeRequêtesUtilisateur·ice·s uniquesBande passante
    20218053264,39 MB
    20221 0944828,84 MB
    20231 3453426,45 MB

    Nous communiquons très peu sur ce service, il est donc peu utilisé.

    En production, en date de février 2023, le conteneur sncf consomme 70 MB de RAM tandis que l’instance Nextcloud dans le conteneur nc-forms consomme 110 MB de RAM.

    En termes de stockage disque, la base de données SQLite de sncf consomme 350 KB à la même date, pour 500 MB pour Nextcloud (qui ne stocke que le système de base de Nextcloud, puisqu’aucun upload de fichiers n’est possible). La base de données PostgreSQL de cette instance Nextcloud pèse 33 MB.

    Depuis l’ouverture du service, 905 comptes ont été créés sur l’instance Nextcloud, pour 750 formulaires (soit moins d’un formulaire par compte… de nombreux comptes ont dû être créés pour tester le service, sans créer de formulaire).

    Ce service est globalement en désuétude faute de temps pour le maintenir, et cela se reflète dans son utilisation très marginale.

    Précautions🔗

    La brique logicielle qui fait fonctionner ce service n’est plus maintenue pour le moment, nous déconseillons son déploiement en production.

    Par ailleurs, sncf manque encore des fonctionnalités cruciales, telles que la suppression automatique des comptes inutilisés après un délai de plusieurs mois (ou un an), ou la possibilité de retrouver le lien d’administration après l’avoir utilisé.

    Entretien🔗

    Ce service n’est pas entretenu au-delà du monitoring externe de l’instance Nextcloud (la route /status.php) et de sncf (la page d’accueil).

    Mise à jour🔗

    Ce service n’est plus mis à jour en raison de l’incompabibilité de sncf avec les versions ultérieures à Nextcloud 22. Il est dans l’attente d’une réécriture complète.

    Évolutions envisagées🔗

    Redéveloppement complet de sncf🔗

    Une réécriture complète de sncf est nécessaire pour permettre au logiciel de s’adapter à une plus forte charge et de ne plus casser à chaque mise à jour de Nextcloud. L’une des solutions envisagées est la mise en place d’un serveur d’authentification centralisé (serveur oauth ?).

    Fermeture du service ?🔗

    Si nous ne parvenons pas à trouver le temps de redévelopper l’application, l’autre piste envisagée est de fermer progressivement ce service pour mettre un terme à sa version bêta. Les formulaires créés pourraient rester accessibles pour une durée d’un an, puis le service serait désactivé.