Améliorons Etherpad/Framapad

Plugin MyPads pour groupes, comptes personnels et pads privés

  • MyPads : seconde version admissible

    La première version admissible - Release Candidate - est sortie il y a dix jours. Un grand merci à ceux qui ont pris la peine de la tester et de nous faire des retours. Ces derniers ont conduit à une seconde version admissible.

    Changements depuis la RC1

    Depuis le début de la semaine dernière et les premiers échanges :

    •     Jusqu'ici tous les éléments de MyPads étaient dotés d'un identifiant unique aléatoire généré par la bibliothèque cuid. Efficaces et ordonnés, les identifiants ainsi générés avaient pour défaut principal d'être trop peu visuels et compréhensibles pour un usage en adresse web. Il a ainsi été décidé de passer à une génération empreinte de davantage de sens.
    •     Par exemple, un groupe nommé Affaires classées 312 aura maintenant pour identifiant affaires-classees-312-xxxxxxx. Les derniers caractères restent cependant aléatoires afin de ne pas imposer l'usage de noms uniques lors de la création dans toute l'instance. Ont été impactés par ce changement les groupes, pads, utilisateurs et listes d'utilisateurs.
    •     L'email était d'ores et déjà obligatoire pour la création d'un compte utilisateur. Pourtant, il n'était pas forcément unique en base de données : seuls les identifiants devaient l'être. Ce choix avait été fait pour permettre de créer plusieurs comptes sur une même adresse mail. Nous avons souhaité revenir sur cet état de fait et de rendre les adresses elles aussi uniques, ce qui nous permet dorénavant :
    •     ==> au niveau des groupes restreints, d'inviter des utilisateurs ou de partager avec eux l’administration de ces groupes via leurs adresses email en plus de leurs identifiants;
    •     ==> pour le module de listes utilisateurs, également les emails en plus des identifiants;
    •     ==> enfin, le recouvrement de mot de passe se fait maintenant par la saisie de l'adresse email.
    •     Lorsque vous invitez des utilisateurs, vous êtes maintenant plus clairement informés concernant ceux pour qui l'opération a réussi et ceux pour qui ce n'est pas le cas.
    •     L'ensemble des éléments de MyPads possède aujourd'hui un champ contenant leur date de création, pour un tri plus fiable au sein de l'application.
    •     Un bug gênant introduit par le changement récent de méthode d'authentification a été corrigé : en effet, un certain nombre de modifications concernant les comptes utilisateurs, par exemples les favoris, n'étaient pas reflétées au niveau du cache serveur, ce qui entrainait la perte des informations après un rafraîchissement manuel de la page.
    •     Des correctifs concernant les traductions.
    •     Une partie non négligeable des tests unitaires et fonctionnels ont dû être adaptés suite à ces modifications.

    La suite

    À court terme il est toujours important que cette seconde version admissible soit massivement testée et que les anomalies rencontrées puissent être rapportées dans notre espace Gitlab.

    Vous pouvez maintenant tester cette version (dont seules quelques améliorations nous séparent de la version définitive) à l'adresse : https://mypads.framapad.org

    Comme nous considérons l'application suffisamment stable, nous ne supprimerons à priori pas les données des pads créés à cette adresse (cependant, nous ne pouvons pas le garantir de façon absolue).

    Note importante : si vous utilisez de comptes privés sur l'ancienne version d'Etherpad, nous vous invitons dès aujourd'hui à copier-coller le contenu de vos anciens pads dans de nouveaux pads créés pour l'occasion sur https://mypads.framapad.org

  • MyPads : version admissible

    Après deux semaines de tests sur la bêta 2, nous atteignons aujourd'hui un nouveau palier et n'avons jamais été aussi proches de la version stable : nous vous présentons aujourd'hui MyPads version admissible (release candidate).

    Derniers travaux réalisés

    Depuis le point du 30 juillet :

    •     Comme prévu, la gestion de l'envoi de mails depuis MyPads avec
    •     ==> au souhait de l'administrateur, la vérification des adresses mails avant activation du nouvel inscrit;
    •     ==> une procédure de recouvrement de mot de passe;
    •     ==> la génération de jetons dont la validité est limitée dans le temps pour ces deux actions;
    •     ==> côté administration la configuration du serveur SMTP qui sera employé pour l'envoi des mails.
    •     La possibilité de fournir des paramètres propres à chaque pad. Par exemple, dans un groupe sur invitation, il est dorénavant possible d'y créer un pad public ou en lecture seule. Dans un groupe protégé par mot de passe, vous pouvez créer un pad qui aura son propre mot de passe etc. Par défaut le comportement reste le même, à savoir que les pads héritent des propriétés de leur groupe parent.
    •     L'ajout d'un champ facultatif de description pour chaque groupe.
    •     Un certain nombre de corrections concernant les visibilités publiques et par mot de passe, notamment lorsque les pads ont des options différentes des groupes auxquels ils sont rattachés.
    •     Quelques améliorations concernant les traductions.

    Plus récemment, une refonte conséquente de l'authentification a du être entreprise. L'un des plugins d'etherpad, dont nous avions parlé en semaine 17, a la fâcheuse tendance à empêcher le fonctionnement de MyPads. Ce comportement s'est avéré aléatoire en fonction de la base de données utilisée par l'instance et le temps que celle-ci mettait à répondre après le lancement d'etherpad. Il faut dire que les plugins etherpad sont lancés suite à un événement global et que nous ne pouvons à notre connaissance pas contrôler leur ordre de lancement. Pour passer outre, il a fallu initialiser MyPads plus tôt, ce qui a empêché ce dernier de se brancher sur le système de sessions utilisé d'etherpad. C'est pourquoi, afin de garantir un fonctionnement sans conflit, il a été nécessaire de passer d'un système d'authentification simple en local vers un système à jetons,  JSON Web Token, mais toujours au travers de la bibliothèque passportjs.

    L'aboutissement

    Cela fait un peu plus d'un an que le projet MyPads a été financé. Le développement, dont le début était prévu pour novembre, a été reculé à février de cette année et la charge de travail initialement prévue a été largement dépassée, en partie en raison d'une mésestimation du travail nécessaire pour créer un tel plugin pour Etherpad (ce type d'extension étant rare) et de bonus vis à vis du cahier des charges initial, ajoutés gracieusement par le prestataire. Ce dernier s'étant engagé, le dépassement est resté à sa charge et le plugin ne coûtera pas davantage que ce qui était prévu. Notez que Framasoft n'a de son côté pas souhaité appliquer des pénalités pour les retards constatés (MyPads, une fois le développement repris en février, devait être publié avant la fin du mois d'avril).

    Quelques chiffres : MyPads, c'est aujourd'hui un peu plus de 13.000 lignes pour 10.000 lignes de code. Les deux tiers de ce total sont consacrés aux tests unitaires et fonctionnels du plugin. En tout, le logiciel aura vu passer un peu moins de 80.000 lignes - ajouts et suppressions - dont une faible partie provient des dépendances et le reste de refactorisations du code.

    De nouvelles tâches sont prévues pour les mois à venir mais il ne devrait plus y avoir d'ajout avant la version stable et la mise en production sur les serveurs de Framasoft.


    Testez

    Merci à ceux qui ont déjà fait l'effort de tester MyPads. Pour cette toute dernière ligne droite, nous avons à nouveau besoin de vous. MyPads a été installé sur notre instance bêta. Plus cette version sera utilisée et plus les anomalies rencontrées seront rapportées, moins il y aura de mauvaises surprises pour le déploiement et l'utilisation par tous. Ceci est prévu dans à peine quelques semaines.

  • MyPads : lancement de la seconde beta

    Le dernier point concernant MyPads remonte au début du mois. Il était donc temps de donner des nouvelles. Au menu : seconde, et sans doute dernière, bêta mais aussi des avancées significatives.

    Ces dernières semaines

    La liste des tâches réalisées est la suivante :

    • Quitter un groupe de pads : dans le cadre des groupes sur invitation, la possibilité de quitter un groupe, pour un administrateur s’il n’est pas le seul administrateur ou pour tout autre utilisateur.
    • Les listes d’utilisateurs : chaque personne disposant d’un compte peut créer des listes d’utilisateurs, lesquelles regroupent, à partir de leurs identifiants, d’autres inscrits à l’instance MyPads. Cela est surtout utile lorsque vous créez un groupe et que vous voulez soit partager l’administration de ce groupe soit dans le cadre d’un groupe restreint, inviter des inscrits à celui-ci. Vous pouvez maintenant ajouter une liste complète d’inscrits au lieu de le faire personne après personne.
    • L’accès aux groupes et pads dont vous n’êtes pas utilisateur ni administrateur, avec ou sans compte :
      • Les groupes publics : l’adresse Web suffit.
      • Ceux protégés par mot de passe : l’adresse Web saisie, le mot de passe est demandé avant affichage des informations.
      • Les données visibles sont filtrées par rapport à un groupe restreint : il n’y a par exemple pas les informations sur les administrateurs du groupe de pads.
      • Pour faciliter le partage des liens, des boutons de partage sont disponibles un peu partout.
    • Le tri des listes de groupes et des listes de pads. Par défaut, ceux-ci sont rangés par ordre de création. Il est dorénavant possible d’opter pour un tri par nom, dans les deux sens.
    • Le module de configuration de MyPads
    • Avec un couple identifiant / mot de passe qui emploie celui de l’administration de l’instance Etherpad ;
      • Lequel permet la gestion des paramètres de MyPads : titre à afficher, taille des mots de passe, paramètres d’envoi de mail…
      • Mais aussi la gestion des utilisateurs : après une recherche par identifiant, il est possible pour les administrateurs de modifier un profil, de changer un mot de passe ou encore de supprimer un compte.
    • Et bien entendu les classiques correctifs et autres petites améliorations.

    Fonctionnellement, avant la version stable, il ne reste plus qu’à terminer la gestion de l’envoi des mails par serveur SMTP et ce qui en découle : vérification, selon les souhaits de l’administrateur de l’instance, des adresses mail saisies à l’inscription et récupération de mot de passe pour les utilisateurs.

    MyPads recherche testeurs

    Maintenant que MyPads est quasiment terminé, il est important que nous disposions de vos retours et de personnes testant la solution afin que nous puissions envisager un passage en production.
    Pour rappel, la dernière version de MyPads est mise en place à cette adresse. Attention, car il s’agit d’une adresse de démonstration et les données y sont régulièrement supprimées. Si possible, merci d’utiliser notre instance Gitlab pour effectuer vos retours, notamment les anomalies que vous pourriez rencontrer.

  • MyPads : point de la smeaine 27

    Ce qui a été fait

    Depuis le dernier point, voici les tâches qui ont été réalisées :

    •     un module de gestion de favoris qui regroupe les groupes et pads marqués comme tels, permettent de les en retirer ou encore d'y accéder rapidement ;
    •     la suppression de compte depuis le module de gestion du profil, laquelle entraine celle des groupes et pads pour lesquels l'utilisateur était le seul administrateur ;
    •     le déplacement de tous les pads d'un groupe vers un autre depuis la page de détails de chaque groupe, utile avant de supprimer complètement un groupe existant ou pour en fusionner plusieurs ;
    •     la prise en charge des permissions avec la différenciation entre :
    •     ==> des administrateurs globaux de MyPads, les mêmes que ceux de l'instance Etherpad, et lesquels ont droit de procéder à toute action, depuis l'API de MyPads ;
    •     ==> des utilisateurs, dont chaque action est vérifiée : un utilisateur peut modifier ou voir son compte mais pas celui des autres, modifier ses pads et groupes mais pas ceux dont il est seul invité, etc. ;
    •     ==> la suppression des actions non autorisées dans le client Web.
    •     quelques corrections de bugs lors de la destruction de compte sous Etherpad, l'ajout de favori depuis la page de travail des pads ou encore un souci avec l'une des bases de données supportées par Etherpad, à savoir Dirty, du fait que celle-ci renvoie les éléments qui ont déjà été supprimés.

    Le travail se poursuit. Il reste une dizaine de tâches à réaliser avant la version admissible (release candidate). Bien sûr, vous pouvez tester les dernières avancées sur la bêta en ligne. Pour rappel, ne travaillez pas sur cette version, les données y sont régulièrement écrasées et le prestataire ne fournit aucune garantie de service à cet endroit.

  • MyPads : point de la semaine 25

    Tâches réalisées

    Les avancées de cette semaine ne sont pas aussi importantes que prévu. Deux raisons à cela : un prestataire moins disponible et des tâches plus compliquées à réaliser qu’elles n’avaient été estimées. Voici donc ce qui a été fait :

    •     La localisation des messages côté serveur a été faite. Il s’agit des messages renvoyés par l’API de MyPads, laquelle est utilisée par le client Web principal. Ceci était important notamment car certains messages, des erreurs avant tout, étaient affichés tels quels par le client Web et n’étaient pas traduits depuis l’anglais. Cette tâche a pris un peu de temps, car il a fallu faire le tour des fichiers pour la mettre en place puis traduire les messages vers le français.
    •     La récupération de l’identifiant utilisateur et le choix d’une couleur pouvant être affichés par défaut dans les pads. C’est cette tâche, qui paraissait assez triviale, qui a été la plus chronophage. MyPads, en tant que plugin Etherpad, se sert du système d’événements renvoyés par Etherpad pour pouvoir interagir avec ce dernier. Modifier les paramètres de la session utilisateur était bel et bien possible, mais il n’y avait pas de moyen simple de connaître, dans le contexte renvoyé par Etherpad, quel était l’utilisateur actuel sous MyPads et de ce fait les informations à utiliser. Comme il n’était pas envisageable de modifier le cœur d’Etherpad pour renvoyer des données supplémentaires ni de modifier à la volée le code client d’Etherpad, il a fallu éprouver plusieurs pistes. Voilà comment cela se passe au final du point de vue utilisateur :
    •     ==> À l’inscription, vous pouvez d’ores et déjà opter pour une couleur par le biais de l’élément HTML5 dédié. Notez que ce choix est facultatif.
    •     ==> Par défaut, l’identifiant et la couleur, si elle a été sélectionnée, seront utilisés au sein des pads.
    •     ==> Dans votre profil, vous pouvez modifier votre couleur mais aussi demander à MyPads de ne pas utiliser vos données au sein des pads. Dans ce cas, MyPads n’interférera pas avec un usage classique d’Etherpad et il vous reviendra de spécifier votre nom et votre couleur au sein du pad.

    Bien entendu, même si vous avez choisi d’employer par défaut vos données, vous pourrez toujours modifier, pour une session donnée, vos paramètres, par exemple si un invité a choisi la même couleur que vous.

    Ces nouveautés sont disponibles sur la version en ligne. N’hésitez pas à tester et à nous donner vos impressions.


    Pour la semaine 26

    Sont prévus les deux éléments non réalisés la semaine dernière, à savoir le module de gestion des favoris ainsi que les pages publiques pour les groupes du même type ou ceux protégés par mot de passe.

    Également :

    •     Lorsqu’un groupe est supprimé, les pads qui lui sont attachés le sont également. L’idée est de vous proposer, si vous le souhaitez, de déplacer les pads du groupe supprimé vers un autre groupe.
    •     Vous laisser le choix de supprimer complètement votre compte. Si vous confirmez, tous les groupes et pads dont vous êtes le seul administrateur seront supprimés.
    •     L’administration de MyPads
    •     ==> Réservée aux administrateurs de l’instance Etherpad.
    •     ==> Avec un module de gestion des utilisateurs.
    •     ==> Et un module de paramétrage de MyPads (taille des mots de passe, configuration pour l’envoi de mail etc).