Cela fait quelques semaines que le développement a redémarré pour MyPads, le plugin Etherpad, et donc Framapad, qui apportera la gestion des groupes et pads privés par utilisateur. Il est donc temps de faire un premier point sur ce qui a été fait et ce qui reste à réaliser.
L’avancement
Le développeur a choisi de commencer par le code côté serveur, lequel n’est pas directement visible aux utilisateurs. À ce jour, ont été réalisés :
- La formalisation de MyPads en tant que plugin Etherpad, installable manuellement.
- Une partie de la gestion de la configuration du plugin, des utilisateurs, groupes et pads.
- Une API HTTP-REST publique associée à chacun des modules.
- L’authentification en propre.
Il reste côté serveur à améliorer l’API, gérer les permissions selon les utilisateurs, permettre l’envoi de mails par exemple pour la récupération de son mot de passe.
Ce qui a pris du temps
Outre la mise en place générale, l’un des points de difficultés pour le développement d’un plugin Etherpad de ce genre est la gestion de la base de données. En effet, Etherpad emploie ueberDB, une bibliothèque NodeJS en partie conçue pour lui, qui transforme plusieurs moteurs de bases de données en simples bases clés-valeurs. Il est important d’utiliser ueberDB afin de maintenir la compatibilité du plugin avec l’ensemble des bases de données supportées par Etherpad.
Or, ueberDB ne fournit de manière commune que très peu de fonctions : fixer une clé et sa valeur, supprimer cette clé, récupérer la valeur en fonction de la clé ou enfin obtenir une liste de clés selon un préfixe donné. De fait il revient à l’application de gérer les différents types d’objets à stocker, les liens entre ceux-ci et les index… En somme de prendre soin de l’intégrité des données et de la performance générale.
MyPads, dans cette version préliminaire, c’est en cumulé un peu plus de 10 000 lignes écrites, tests et commentaires inclus.
La suite
Le développement du client Web débutera la semaine prochaine. Dès les premiers modules réalisés, une version de test, remise à plat chaque jour, sera proposée. Elle utilisera la toute dernière version du code et permettra à ceux qui le souhaitent de voir plus concrètement où en est le développement. Un nouveau billet sera rédigé à ce moment-là.
Cette phase permettra l’amélioration de la partie serveur, dont l’API, et l’implémentation des fonctionnalités encore manquantes.
PS : pour ceux qui sont intéressés par le code, vous le trouverez sur notre miroir Github, en attendant que notre Gitlab soit à nouveau opérationnel.
MyPads : first feedback
A few weeks ago MyPads development has been resumed. This Etherpad plugin, and so Framapad plugin, will bring groups and private pads managements per user. It’s time to give you some information about what has been done and what remains.
Progress
The programmer has chosen to begin with server-side code, which is not obvious for users. Up to now, here is what has been done:
- MyPads bootstrap as an Etherpad plugin, with manual installation.
- Partial management of the plugin configuration, users, groups and pads.
- HTTP-REST public API for common functions of each module.
- Local authentification.
Server-side some tasks are still to be done: improving API, permission handling for users , email sending – for example for password recovery.
Time-consuming work
Besides global bootstrapping, one of the major problems for an Etherpad plugin like MyPads is to work with the database. Currently Etherpad depends on ueberDB, a NodeJS library made for transforming database engines into simple key-value store. It’s important to use ueberDB in order to keep the plugin compatible with all Etherpad supported databases.
ueberDB currently offers only a few functions: set a key and its value, remove a key, get the value of the key and retrieve a list of keys according to a given prefix. Consequently, the application has to handle the different types of objects to store, links between them, indexes… In short taking care of the data integrity and global performance.
MyPads, the current preliminary version, represents a little more than 10,000 lines accumulated, tests and comments included.
Next steps
Web client development will begin next week. As soon as the first modules are done, a test demo, rebooted daily, will be available online. It will use the last source code and allow to watch more concretely what we are talking about. A new blog post will be published at that time.
This step will help improving server-side code, including API, and implementation of missing functionality.
NB: those who are interested by the source code can find it on our Github mirror, until our Gitlab is back online.