Project Zero 0.1
J’en parlais lors de ma rétrospective 2016 sur ma méthodologie de travail, j’ai commencé à bosser sur une application qui devrait me servir de cadre méthodologique. Jusqu’à maintenant j’utilisais le système de fichiers de l’ordinateur pour organiser mes projets, mais c’était trop contraignant et je n’arrivais pas à assurer un suivi suffisant.
Après un mois de travail acharné, j’ai enfin terminé la version 0.1 de « Project Zero ». Le code source est disponible sur GitHub sous licence MIT et vous pouvez même vous créer un compte sur le service que je mets à disposition : zero.marienfressinaud.fr. Attention, l’application n’est pas encore disponible en HTTPS !
Pourquoi Project Zero ?
Cela fait longtemps maintenant que j’imagine un outil de gestion de mes projets. Bien sûr, je suis un éternel insatisfait des outils que j’utilise et il fallait absolument que je développe mon propre logiciel :). Comme il devait s’agir du projet à la base de tous mes autres projets, je l’appelais « Projet Zéro ». Fin 2015 je donnais un coup de frein à ma contribution à FreshRSS pour commencer à bosser sur ce fameux outil… chose que je n’ai jamais concrétisée car mes idées à l’époque n’étaient absolument pas claires sur ce que je voulais faire.
C’est en août, pris dans la tourmente de mes nombreux projets commencés mais dont aucun n’avançait, que je mettais en place quelques actions pour me reconcentrer sur ce que je faisais. Cela a donné une pré-version de ce que je voulais obtenir.
Fin décembre, voyant que ma méthodologie avait globalement bien fonctionné mais que j’avais toujours des soucis à assurer le suivi, j’ai dessiné les premiers écrans d’une application que j’ai donc nommé « Project Zero » (notez le passage à l’anglais).
Les (quelques) fonctionnalités
Il y a aujourd’hui très peu de fonctionnalités car je veux d’abord voir comment évoluent mes besoins. Je préfère avoir très peu de fonctionnalités qui me servent toutes que beaucoup qui ne me servent pas. Ce qu’il est possible de faire :
- créer un compte (et s’authentifier, évidemment) ;
- gérer ses projets (qui ne consistent qu’en un nom, une description en MarkDown et quelques dates) ;
- démarrer jusqu’à trois projets en même temps en précisant une date de fin ;
- stopper les projets qui stagnent ;
- terminer les projets… terminés.
Il s’agit de la version 0.1 bien sûr, tout reste encore à construire… et j’ai pas mal d’idées pour ça :).
Sous le capôt
J’ai pas mal tergiversé avant de me décider sur les technologies à utiliser pour développer Project Zero. Voulant au départ découvrir de nouvelles choses, je partais sur un backend Django, le frontend en Elm et une API à base de GraphQL.
Mais plus j’hésitais plus je me convainquais que j’allais accumuler les difficultés et que je n’avancerais pas. Au final j’ai décidé de partir sur des bases que je connais et avec lesquelles je suis à l’aise :
- Ruby on Rails pour le backend comme cela fait presque 1 an et demi que j’en fais quotidiennement, pas de difficulté à ce niveau ;
- une API classique en Json, je savais que j’avais encore besoin de progresser là-dessus mais je n‘exclue pas d’inclure du GraphQL à terme ;
- VueJS pour le frontend, pour le coup que je ne connaissais pas mais qui n’est pas trop éloigné conceptuellement de React.
Pour ce qui est de VueJS, la lecture de la documentation m’a convaincu que tous les problèmes que j’avais avec React allaient disparaître comme par magie… et ce n’est pas tout à fait faux :). Bien sûr d’autres questions se sont posées au fur et à mesure que j’avançais, mais je suis tout de même content du résultat ! L’époque où j’écrivais du JS imbitable sur FreshRSS est révolue :D.
Comme je le disais plus haut, le code est hébergé sur GitHub mais il n’est pas exclu que je le déplace sur Framagit. Ce qui me retient de le faire actuellement est de deux ordres :
- j’ai dans l’espoir de trouver une troisième solution. Le but de Framasoft n’étant pas de tout centraliser sur ses serveurs, j’aimerais aller voir ailleurs et de préférence chez un chaton local ;
- GitHub reste à des années lumières de Gitlab au niveau expérience utilisateur. Gitlab a beau avoir des fonctionnalités (très) intéressantes, son interface reste foutraque et j’ai du mal à m’y faire.
Le service Project Zero
J’expliquais plus haut que j’ai mis à disposition un service à l’adresse zero.marienfressinaud.fr. Si l’adresse est temporaire, j’ai dans l’espoir que le service ne le soit pas. Je ne me fais pas trop d’illusions, actuellement Project Zero est beaucoup trop limité fonctionnellement pour être utile à qui que ce soit, mais je pense qu’à terme il pourrait plaire à quelques-uns.
Attention, le service est aujourd’hui ouvert à n’importe qui et gratuit, mais je n’exclu pas à terme de le rendre payant. On ne pourra pas dire que je n’ai pas prévenu ! Bien sûr le logiciel restera sous licence libre et je ne prévois absolument pas de version alternative « closed-source ». L’idée serait plutôt de rembourser les coûts du serveur et de mettre un petit quelque chose de côté pour me donner un peu plus de temps libre, absolument pas de faire fortune.
Mes idées pour la suite
Voici une liste non-exhaustive de ce que j’ai en tête pour le moment :
- gestion de listes de tâches à faire (communément appelées « todo lists ») ;
- gestion d’environnements pour distinguer les projets personnels des projets professionels ;
- envoi de mails de rappels ;
- gestion de sous-projets ;
- client en ligne de commande pour notamment synchroniser des dossiers en local, ça permettrait d’avoir par exemple un dépôt Git en local associé à un projet ;
- gestion du profil utilisateur et projets publics.
Ma priorité numéro 1 va être la gestion des tâches. J’utilise actuellement Todoist et j’en suis vraiment très satisfait. Ceci dit il y a parfois des petits bugs et je n’aime pas la façon dont il gère le système de karma qui pousse parfois à bacler des tâches seulement pour garder de bonnes statistiques. Et puis c’est toujours rigolo de redévelopper des choses qui existent déjà, non ? :). Je cogite encore pour réfléchir à comment m’y prendre et ne pas faire quelque chose de trop bâteau.