URL:     https://linuxfr.org/users/nishiki/journaux/mpw-4-2-0-released
Title:   MPW 4.2.0 released
Authors: nishiki
Date:    2017-06-08T00:09:56+02:00
License: CC By-SA
Tags:    mot_de_passe
Score:   24


Bonjour,

Je n'ai pas l'habitude d'écrire un journal, mais aujourd'hui je viens à vous pour faire un peu de pub et parler de mon expérience sur le développement d'un logiciel.

Donc on commence par la pub avec la sortie de la version 4.2.0 de manage-password alias mpw.
Qui n'est autre qu'un gestionnaire de mot de passe en cli, qui utilise GPG pour chiffrer les données.

Les améliorations, dans le désordre, sont:

* gestion de plusieurs portefeuilles (base de donnée de mots de passe)
* chiffrement d'un portefeuilles avec plusieurs clés GPG
* gestion des codes OTP (One Time Password)
* copie dans le presse papier du mot de passe / utilisateur / url / code OTP
* import et export des données

Liens:

* [Code source sur Github](https://github.com/nishiki/manage-password/)
* [Gem](https://rubygems.org/gems/mpw)

# Histoire #

Ce projet a commencé il y a 4 ans, je voulais avoir un projet de développement pour m'améliorer en programmation.

Ma première étape fut d'avoir quelque chose de fonctionnel rapidement, donc j'ai opté pour le format CSV avant que les données soient chiffrer.
Tout de suite j'ai délégué le chiffrement à GPG car je ne voulais pas réinventer la roue.
Au tout début je me suis orienté vers le python, vu que j'en faisais au travail, mais mon amour pour le ruby à vite repris le pas car je voulais me faire plaisir.
Déjà habitué à git, tout naturellement j'ai tout de suite créé mon repo.


Lors de la seconde étape, j'ai voulu tester des nouvelles bibliothèque de ce fait j'ai créé un serveur de synchronisation.
C'est aussi l'étape où j'ai voulu devenir un conformiste en créant une gem pour simplifier l'installation.
Mais c'est surtout la fin du CSV qui est vraiment un format vieillissant, que j'ai remplacé par du YAML qui est vraiment un bonheur à manier.

La 3eme étape fut un retour à la simplification avec la suppression du serveur des synchronisation que j'avais créé précédemment.
Ce fut aussi une étape pour consolider les bases et améliorer grandement l'interface, et ajouter quelques améliorations comme la gestion de l'OTP.

La 4eme et dernière étape fut une grosse étape de conformiste avec la création de test unitaire, de l'utilisation de rubocop (correcteur syntaxique pour ruby), ce qui a permit de corriger pas mal de bug.
De plus les commentaires ont été réécrit au format YARN, ce qui permet de générer une documentation HTML. 
Un dernier effort de simplification a été réalisé pour supprimer toutes les synchronisations, car je pense que de nos jours il suffit de mettre le fichier mpw dans un cloud pour le synchroniser.
Pour automatiser les tests j'utilise travis.

# Conclusion #

Donc ce qui en ressort au final pour moi:

 * les tests unitaires sont indispensables, mais pas forcément facile à mettre en place quand on a une application qui a besoin d'un environnement complet
 * l'utilisation d'un correcteur syntaxique (rubocop dans mon cas) est un vrai plus et permet d'avoir un code cohérent
 * comme prévu je me suis amélioré en programmation, ce qui m'aide dans ma vie de tous les jours
 * petit plus, j'ai amélioré mon vim avec des plugins pour être plus efficace dans mon développement

Je tiens à dire que même si le projet à 4 ans, je n'ai pas forcément assidu, j'ai eu des grands passages à blanc car j'avais d'autres licornes à fouetter.


