Le week-end des 25 et 26 novembre 2017 s’est déroulé le 1er hackathon de Nouvelle-Calédonie, organisé à la bibliothèque universitaire de Nouville par l’Observatoire Numérique. J’ai participé avec grand plaisir à cet événement, avec un projet qui me tenait vraiment à cœur. Nous avons constitué l’équipe Oleti, composée de Ludovic de Mon Coach Webmarketing, Victor développeur à la Province des îles, et de moi-même, pour y consacrer les 30 heures de l’événement avec l’objectif de réaliser un projet fonctionnel dès la fin du week-end.
J’avais entendu parler il y a déjà longtemps des systèmes d’échange locaux, généralement portés par des associations dans diverses villes en France métropolitaine ou ailleurs dans le monde. Le concept m’avait beaucoup plu, mais je n’étais pas très emballée par le fonctionnement : l’adhésion à une association, la gestion d’un compte sur papier, les petites annonces affichées dans un local ou sur dans un catalogue papier… je n’ai de toutes façons jamais eu l’occasion de vivre assez proche d’une de ces initiatives pour l’expérimenter moi-même.
A Nouméa cependant, il existe de nombreuses associations qui évoluent autour de cette même idée de partage, de solidarité et de mieux-vivre. Je m’investis notamment dans le Repair Café qui propose ponctuellement à tous de venir réparer ses objets en panne ou abîmés avec l’aide de réparateurs bénévoles. Je rencontre régulièrement des personnes qui souhaitent vivement aider les autres mais ne savent pas forcément comment s’y prendre, d’autres qui pensent n’avoir que peu de choses à apporter aux autres et qui se découvrent des talents de réparateur ou un intérêt à apprendre avec les autres.
J’ai pu expérimenter les bienfaits d’aider les autres, notamment lors des moments difficiles de la vie ou le sort semble s’acharner sur nous. Aider les autres, c’est aussi s’aider soi-même, se sentir utile apporte un sentiment de fierté et une reconnaissance qu’on n’a pas toujours l’occasion d’obtenir dans nos vies. Le monde professionnel n’est pas toujours la solution, et il n’est pas non plus accessible à tous. L’argent est souvent un frein pour obtenir un service. Et pourtant les calédoniens trouvent déjà des solutions à ces contraintes : le troc fait partie de la culture locale, que ce soit de fruits et légumes, de poisson pêché ou de services, nous y avons tous recours lorsque l’occasion se présente.
Lorsque j’ai commencé à réfléchir à un projet pour ce Hackathon, ce sont toutes ces expériences qui m’ont animée : pourquoi ne pas construire une plateforme pour faciliter ces échanges ? Donner l’occasion à chacun d’apporter son aide aux autres, de se sentir utile, et d’améliorer sa qualité de vie sans dépenser d’argent ? Tout ça est déjà possible, les solutions existent déjà, il suffit d’un espace commun pour faciliter les échanges ! Grâce à l’aide et aux discussions avec Ludovic de Mon Coach Webmarketing, le projet Oleti était né dans nos têtes, quelques jours à peine avant le début de la soirée de lancement du Hackathon.
L’idée de la monnaie virtuelle est arrivée dans un second temps, comme une solution pour répondre à cette question : que faire si j’aimerais obtenir de l’aide de quelqu’un qui n’a pas besoin de mon aide ? Cette ouverture sur la monnaie a permis de pousser le concept encore plus loin, mais a également soulevé de nombreuses questions ! Que ce soit sur le fonctionnement, sur le plan économique de la gestion d’une monnaie, sur la valorisation des services, sur la possibilité d’intégrer les échanges de biens… certaines de ces questions ne sont d’ailleurs toujours pas résolues aujourd’hui :p
Une fois le projet défini, ce sont les choix techniques pour parvenir à notre objectif qui ont été prépondérants. L’objectif technique était de réaliser un site fonctionnel, j’ai donc choisi de me servir de ce qui existait déjà plutôt que de partir de zéro, dans l’idée de gagner du temps et de bénéficier de l’expérience d’autres développeurs utilisant des fonctionnalités similaires.
Bien sûr, il était hors de question d’utiliser autre chose que des outils libres pour un tel projet ! WordPress est aujourd’hui leader dans les logiciels de gestion de contenu, et propose de nombreuses fonctionnalités via des plugins. Nos besoins pour ce projet étaient similaires à un site de petites annonces, ou à un site e-commerce, bien que l’un et l’autre nécessitaient des adaptations pour correspondre aux besoins. Après avoir testé plusieurs solutions, mon choix s’est donc porté sur WordPress avec divers plugins notamment e-commerce et marketplace, de gestion de points pour la monnaie, et de gestion des utilisateurs.
Le plus gros du travail serait de sélectionner les meilleurs, de les tester, de les configurer, et de développer les adaptations et parties manquantes. C’est un travail qui demande généralement de tout casser pour tout refaire plusieurs fois, et il était donc impossible que nous puissions travailler à plusieurs sur la même installation de WordPress.
Je ne savais pas comment allait être l’accès internet fourni lors du hackathon. Notre solution reposant entièrement sur un serveur web, il me paraissait risqué de compter sur un serveur distant, même en Nouvelle-Calédonie : si l’accès internet n’était pas assez stable et rapide, nous aurions été fortement ralenti à cause de problèmes techniques. J’ai donc préféré opter pour un serveur web local, sur un petit raspberry facile à transporter. J’ai pu y installer facilement une distribution Raspbian, un serveur web Apache, une base de donnée MariaDB, et php7 pour faire tourner WordPress. J’ai également créé plusieurs environnement de travail (8 en tout), pour que chaque membre de l’équipe ait sa propre version de WordPress qu’il pourrait casser sans perturber les autres, et des versions d’intégration sur laquelle les différents développements étaient regroupés pour construire une version finale propre.
Afin de faciliter la gestion de ces environnements, j’ai créé 2 petits scripts :
$ cat wpbackup.sh #!/bin/bash if [ "$1" == "" ]; then liste="www www1 www2 www3 www4 am bruce ludo victor" else liste=$1 fi for i in $liste; do # backup da=`date "+%F@%H:%M:%S"` mkdir -p /srv/backup/$da-$i rsync -a /var/www/$i.troc-oleti.nc /srv/backup/$da-$i mysqldump $i > /srv/backup/$da-$i/$i.sql done;
$ cat wpcopy.sh #!/bin/bash if [ "$1" == "" ]; then echo "source?? (arg 1)" exit fi if [ "$2" == "" ]; then echo "destination?? (arg 2)" exit fi # backup da=`date "+%F@%H:%M:%S"` mkdir -p /srv/backup/$da-$2 mv /var/www/$2.troc-oleti.nc /srv/backup/$da-$2/. mysqldump $2 > /srv/backup/$da-$2/$2.sql # sql mysql -e "DROP DATABASE $2" mysql -e "CREATE DATABASE $2" mysqldump $1 |mysql $2 mysql $2 -e "UPDATE wp_options SET option_value='http://$2.troc-oleti.nc' WHERE option_name='siteurl';" mysql $2 -e "UPDATE wp_options SET option_value='http://$2.troc-oleti.nc' WHERE option_name='home';" # copie mkdir /var/www/$2.troc-oleti.nc/ rsync -a /var/www/$1.troc-oleti.nc/* /var/www/$2.troc-oleti.nc/. sed -i "s/define('DB_NAME', '$1');/define('DB_NAME', '$2');/g" /var/www/$2.troc-oleti.nc/wp-config.php chown www-data:www-data -R /var/www/$2.troc-oleti.nc
Toujours dans l’idée de nous garantir un minimum de soucis techniques et une autonomie maximale, il m’a semblé judicieux de créer notre propre réseau local. J’ai donc mis en place :
Ce choix nous procurait également plusieurs avantages :
C’est donc avec tout ce petit matériel que nous nous sommes rendus à la bibliothèque universitaire, et que nous avons pu mener à bien notre projet tout le week-end !
L’objectif étant d’avoir une plateforme fonctionnelle au minimum, j’ai commencé par liste les fonctionnalités attendues du projet et à les répartir dans différentes versions du projet. J’ai utilisé Trello pour gérer cette organisation et communiquer l’état d’avancement avec toute l’équipe durant le week-end.
Les fonctionnalités minimales indispensables au projet (la gestion des utilisateurs, la possibilité de créer des annonces de service, la gestion du solde d’Oletis et des échanges de monnaie contre des services) constituaient la v1, que j’espérais pouvoir réaliser pendant le hackathon.
La v2 ajoutait quelques fonctionnalités bien pratiques, et rendait l’utilisation du site plus intuitif et agréable, comme l’ajout de catégories ou la localisation des annonces et surtout la création de badges de reconnaissance basés sur l’implication des utilisateurs dans l’entraide. J’espérais pouvoir la commencer sérieusement durant le hackathon.
La v3 prévoyait des évolutions très intéressantes comme l’évaluation mutuelle des utilisateurs après un échange, la géolocalisation des utilisateurs pour proposer des annonces proches, et un système de dons d’Oletis entre utilisateurs.
La v4 allait beaucoup plus loin, avec la création d’un tiers de confiance lors d’un litige sur une transaction, une réflexion sur les façons d’échanger des Oletis hors ligne, et la transition de l’Oleti vers la crypto-monnaie pour sécuriser les échanges.
Je n’espérais pas vraiment arriver à la v3 et encore moins à la v4 lors du hackathon, mais les fonctionnalités listées font toujours partie de la feuille de route du projet à long terme.
Le dimanche midi, nous avions une v1 fonctionnelle, avec quelques fonctionnalités de la v2. Certes pas aussi finie que ce que j’aurais espéré, mais tout de même utilisable ! Je l’ai mise en ligne avant la présentation du projet devant le jury, pour permettre à tous de la tester.
Le projet n’a malheureusement pas retenu l’attention du jury et n’a pas été primé, probablement car le projet était un peu en dehors des critères du hackathon : nous n’avons pas utilisé les jeux de données fournies spécialement lors de l’événement. Le public et les différentes personnes rencontrées ont cependant été séduites par l’idée et souhaitent vivement voir troc-oleti continuer son chemin !
C’est d’ailleurs notre souhait également, et depuis la fin du hackathon, une première mise à jour a permis de rendre l’interface plus simple et conviviale, conformément à ce que j’aurais souhaité pouvoir faire initialement lors du week-end !
Le projet suit sa route, et désormais libéré des contraintes de temps et de moyens du hackathon, plusieurs questions se posent quant aux solutions techniques choisies :
Des questions toujours en suspend qui trouveront probablement une réponse avec le temps !