1

Nextcloud Sorts : un prototype d’application Nextcloud pour naviguer plus facilement dans vos fichiers

Et si Framasoft se penchait un peu sur la solution collaborative libre Nextcloud ?

NB : cet article existe aussi en version anglaise (traduction automatique)

 

Dans notre Lettre d’informations #28 (Automne 2021), nous vous parlions de Romain, stagiaire à Framasoft, dont nous savions que le sujet de stage allait tourner autour du logiciel libre Nextcloud.

Quelques semaines plus tard, nous invitions les structures « engagées » et utilisatrices de Nextcloud à répondre à un questionnaire (aujourd’hui fermé), conçu avec la designer Marie-Cécile Godwin, et La Fabrique à Liens.

Puis, une fois les résultats analysés (nous vous en proposons une version brute anonymisée et une analyse synthétique en fin d’article), nous avons pu identifier un besoin utilisateur non satisfait, sur lequel pourrait travailler Romain.

En effet, Nextcloud comporte de (très) nombreuses fonctionnalités, mais celle qui demeure centrale est probablement le stockage et partage de fichiers. Or, la navigation parmi les fichiers dans l’interface web est assez fastidieuse : un clic à chaque fois que l’on change de dossier, et donc un rechargement plus ou moins rapide de la page et de l’arborescence des dossiers et fichiers. Et parfois de nombreux clics pour passer d’un rameau de l’arborescence à l’autre.

Il y avait sans doute moyen de faire plus accessible et plus naturel.

Romain, qui ne connaissait ni le langage informatique PHP ni la solution Nextcloud au début de son stage, s’est donc lancé dans le développement d’un prototype d’application tierce, qui permettrait non seulement de pouvoir « développer l’arborescence de fichiers » au sein d’une même interface, mais aussi de pouvoir faire des recherches avancées.

Deux mois plus tard naissait le plugin « Sorts », dont nous vous racontons l’histoire ci-dessous.


Bonjour Romain, peux-tu te présenter ?

Je m’appelle Romain et j’ai 24 ans. J’ai grandi en Guadeloupe avant de venir étudier à Villeurbanne, à l’Institut National des Sciences Appliquées de Lyon, dont je serai diplômé en 2022 en tant qu’Ingénieur Télécom.

Quand je ne suis pas occupé par mes études, je passe pas mal de temps à bricoler et réparer des vieilles machines, et à m’investir dans des projets collectifs ! Je suis notamment très engagé au Karnaval Humanitaire, une asso étudiante qui organise un festival de musique dont j’ai été le régisseur site en 2021 et 2022.

Photographie de Romain, stagiaire INSA Lyon à Framasoft de Septembre 2021 à Février 2022

Concernant ton stage, tu as choisi Framasoft. Pourquoi ?

Je voulais un stage en accord avec mes valeurs de libre partage des connaissances, et en rupture avec le capital et les grandes entreprises !

Je connaissais déjà un peu les actions de Framasoft et notamment les services en ligne et le développement logiciel, et je savais que j’y trouverais des projets intéressants dans un cadre super… et je n’ai pas été déçu !

Venons-en au sujet de ton stage. Quel était l’objectif général ?

Mon stage s’est déroulé au début d’un projet plus large, dont le nom de code est « Framacloud » [Note de Framasoft : on vous reparlera de ce projet ambitieux à la rentrée], dont l’objectif est de permettre aux structures luttant pour le progrès social et la justice sociale de s’approprier, maîtriser et contrôler les processus de collaboration numérique.

Ce projet de Framasoft est centré sur un logiciel de collaboration en ligne et de partage de fichiers : Nextcloud.

Cependant, bien que ce soit une des solutions libres les plus abouties et complètes dans ce domaine, il est avant tout conçu pour répondre aux besoins des clients de « Nextcloud GmbH« , la société allemande éditrice du logiciel. Ces clients, ce sont de grosses structures, publiques, universitaires ou privées. Du coup, il y a un risque de différences entre les attentes des petites structures associatives et les priorités de développement de Nextcloud GmbH.

Le but de mon stage était donc de trouver comment améliorer ce logiciel afin de le rendre plus utile et plus accessible pour les structures alternatives.

OK, c’est un vaste sujet ! Comment t’y es-tu pris ?

Eh bien d’abord, il fallait à la fois que je me forme sur le développement de Nextcloud, et qu’on en apprenne davantage sur ce logiciel : son fonctionnement, ses défauts et surtout ce qui manquait aux utilisateurs qu’on visait.

Après plusieurs tests du logiciel et plusieurs hypothèses sur comment l’améliorer, on a décidé de se rapprocher de nos utilisateurs cibles. On a donc mis en place une enquête visant des personnes faisant parties de structures engagées pour le progrès social et la justice sociale qui utilisaient déjà Nextcloud. Cette enquête questionnait leurs usages de l’informatique collaborative au sein du collectif, leurs usages de Nextcloud, leurs frustrations et leurs attentes.

C’est grâce aux presque 200 réponses de cette enquête qu’on a décidé des développements logiciels que j’ai réalisés au cours de ce stage et qui ont abouti à la création d’un plugin Nextcloud appelé « Sorts » !

 

Arrêtons nous déjà sur ce travail d’enquête. Quels en ont été les résultats ?

Les préoccupations principales qui ressortaient de cette enquête étaient, au final, des préoccupations d’ordre plutôt général sur l’outil Nextcloud. Mais ça nous a permis de voir ce qui est important pour le public qu’on souhaite impacter.

Parmi la vingtaine de sujets que j’ai pu identifier dans les réponses, les deux premiers étaient des sujets sur lesquels on ne pouvait pas faire grand-chose : l’édition collaborative de documents et la « lenteur » générale de l’outil.
Par contre, parmi les sujets qui suivaient on avait plus de perspective pour aider à changer les choses en quelques mois de stage : prise en main et ergonomie du logiciel, problèmes de synchronisation ou encore aide aux utilisateurs pour s’y retrouver parmi les fichiers du collectif.

C’est cette dernière préoccupation de s’y retrouver dans l’arborescence des fichiers qui m’intéressait le plus, et qui m’a mené au développement de « Sorts« .

Pour ceux qui souhaitent jeter un œil aux détails de l’enquête, nous avons publié les résultats anonymisés, ainsi qu’une synthèse des différents sujets abordés que j’ai réalisée pour affiner le sujet du stage (c’est sans doute plus digeste que le tableur de résultats bruts).

[Note de Framasoft : Retrouvez les résultats de l’enquête en fin d’article]

Donc, tu es parti sur la création de l’application Nextcloud « Sorts » . Mais… il fait quoi, ce plugin, en fait ?

L’idée derrière Sorts, c’est d’aider les gens à retrouver les fichiers qu’ils cherchent et à comprendre comment les dossiers et les fichiers ont été organisés par le collectif dont ils font partie.

Pour régler le premier problème on a profité de toutes les informations relatives à chaque fichier que Nextcloud stockait déjà (date de modification, poids, « étiquetage » du fichier par l’utilisateur, …) et on a codé une interface qui permet de faire une recherche qui mélange ces différents attributs. Par exemple « Trouve-moi tous les fichiers dans le dossier « Subvention » et ses sous-dossiers qui sont marqués comme étant importants, et qui sont des .pdf ».

Recherche par filtres dans Sorts
Recherche par filtres dans Sorts

 

Pour régler le deuxième problème on a décidé de présenter les dossiers, sous-dossiers et fichiers d’une manière qui n’était pas encore présente dans Nextcloud : en liste arborescente. C’est-à-dire que lorsqu’on clique sur un dossier, au lieu de « rentrer » dans ce dossier et de ne voir que son contenu direct, le dossier est « déroulé » et on voit son contenu ainsi que les dossiers et fichiers qui sont « à coté » de lui. Cette liste arborescente prend plus de place qu’une liste simple mais elle permet de bien comprendre où on se situe dans les dossiers, ce qui aide à comprendre la façon dont ils sont rangés.

Navigation par arborescence
Navigation par arborescence : un clic sur un dossier ouvre le contenu de ce dossier sous forme arborescente.

 

Techniquement, tu as rencontré des soucis ?

Oui, comme dans tout processus de développement. Je pense qu’une des grosses difficultés a été de trouver quelle partie des API de Nextcloud utiliser, quelles étaient ses limites et comment faire avec. La recherche Nextcloud est pensée autour d’une recherche « groupée » (« unified search ») où l’utilisateur cherche une chaîne de caractères, et Nextcloud renvoie comme résultats tout ce qui correspond à cette chaîne de caractères parmi les ressources diverses et variées de Nextcloud (fichiers, todo, évènements, mails, conversations, …). Autant dire que ça ne correspond pas du tout à ce qu’on souhaite faire : chercher parmi les fichiers uniquement selon plusieurs conditions, dont certaines ne sont pas des chaînes de caractères (dates, nombres, …). Mais, heureusement pour nous, il y avait une autre API de recherche propre aux fichiers. Cette autre API paraissait très prometteuse parce qu’elle était déjà pensée pour permettre de combiner des conditions de recherches sur des attributs propres aux fichiers. Cependant, cette API était assez vieille et peu utilisée, ce qui m’a parfois donné un peu de fil à retordre.

De plus, je me suis rendu compte assez tard que l’API ne prenait pas en compte deux des différents attributs des fichiers : les « étiquettes » (tags) et les informations sur les partages de fichiers. Ces informations sont gérées dans des API totalement séparées. Je me suis donc retrouvé face à un dilemme : soit je réécris une API qui fait elle-même les requêtes en base de données avec tous les attributs, soit je complète l’API présente, soit je bricole quelque-chose où je fais 3 requêtes en base de données par recherche et je combine les résultats. La première solution m’aurait pris trop de temps et la deuxième solution aurait été refusée par Nextcloud GmbH (on ne modifie pas les APIs de Nextcloud à la légère), donc j’ai bricolé quelque-chose, et tant pis pour les performances de l’application.

As-tu eu des contacts avec la communauté Nextcloud ou son entreprise éditrice (Nextcloud Gmbh), et si oui, comment ça s’est passé ?

Oui bien sûr, lorsqu’on a commencé à avoir une bonne idée de ce qu’on souhaitait faire de Sorts j’ai écrit une note d’intention avec un lien vers un prototype sur le forum dédié au développement de plugin Nextcloud. Ça a mené à quelques échanges avec des développeurs salariés de Nextcloud qui étaient intéressés par le projet et qui m’ont fait quelques retours constructifs. On a même fait une réunion en visio avec eux pour discuter du plugin mais aussi du projet plus large, mais avec les plannings des uns et des autres cette réunion a eu lieu assez tard dans le développement de Sorts et elle n’a pas beaucoup impacté le plugin.

Et donc, la question qui pique : Sorts, ça marche ou pas ?

Eh bien OUI ! Sorts propose une vue de l’arborescence des fichiers « dépliante » et permet déjà de faire des recherches combinées sur une bonne variété des caractéristiques que peuvent avoir des fichiers !

Cependant, il s’agit d’une version Bêta qui présente quelques limites… J’ai dû faire quelques arrangements avec les problèmes techniques évoqués dans la question précédente, et si la version actuelle fonctionne sur des petites instances Nextcloud, elle aura sans doute du mal à « passer à l’échelle » pour fonctionner avec des instances réelles avec des centaines d’utilisateurs et des milliers de fichiers.

 

Vidéo de démonstration des fonctionnalités de Nextcloud Sorts 0.1.0-beta (source)

 

Et la suite ? C’est quoi à ton avis, et pour quand ?

Sorts est disponible sur https://packages.framasoft.org et sur l’app store Nextcloud en version beta !

Nous souhaitons continuer à maintenir cette application et à traiter et accepter toutes les contributions éventuelles, mais ni moi ni Framasoft n’avons prévu de développer à plein temps dessus pour le moment. Sorts rentre maintenant dans le monde du développement bénévole, ce qui veut dire que les développements portés par Framasoft et moi-même se feront au fil des envies et des disponibilités, sans agenda particulier (ce qui veut aussi dire que nous n’annoncerons pas de « date de sortie » quelconque).

On arrive à la fin de cette interview. Souhaites-tu nous partager un sentiment sur le travail effectué pendant ce stage ?

Résumer un stage en une émotion ? C’est difficile ! Développer un programme, c’est passer de la frustration quand ça ne marche pas, à l’excitation d’enquêter sur pourquoi ça ne marche pas, à la satisfaction de voir la fonctionnalité fonctionner quand on a trouvé.

Non, plus sérieusement, il y a eu quelques frustrations comme ne pas avoir beaucoup de temps pour développer ou ne pas retrouver autant de temps et de motivation que ce que j’aurais souhaité pour boucler le projet après le stage, mais je suis satisfait. Satisfait d’avoir fait quelque-chose qui marche mais surtout d’avoir pu concevoir ce plugin du presque début à la presque fin, en prenant le temps d’identifier ce qu’on pouvait faire d’utile, de réfléchir à quoi ça devait ressembler, et d’ensuite réfléchir à comment le réaliser techniquement.

Dernière question, récurrente dans nos interviews : quelle est la question que tu aurais aimé qu’on te pose, et quelle serait ta réponse ?

Mais pourquoi ne pas avoir publié Sorts plus tôt ?

C’est mon grand regret ! Et je pense que les personnes qui s’étaient intéressées à l’application lors de la note d’intention se sont aussi posées la question. Mais ma vie associative et personnelle était assez chargée après le stage et ne m’a pas laissé beaucoup de temps pour m’occuper de Sorts, c’est aussi ça le développement bénévole.

Merci Romain ! Ainsi qu’à toutes les personnes qui auront rendu ce travail possible, notamment en répondant au questionnaire !

Rappel des différents liens évoqués dans l’article :




Nextcloud Sorts : a Nextcloud application prototype to navigate your files more easily

What if Framasoft took a look at the free/libre collaborative software Nextcloud?

 

In our newsletter #28 (Autumn 2021), we talked about Romain, an intern at Framasoft, whose internship topic was related to Nextcloud.

A few weeks later, we invited  » socially committed  » structures using Nextcloud to answer a survey (now closed), created with the designer Marie-Cécile Godwin, and La Fabrique à Liens.

Then, once the results were analyzed (you will find an anonymized raw version and a synthetic analysis at the end of the article), we were able to identify a set of unmet user needs, on which Romain could work.

Nextcloud provides loads of features, but the one that remains the most central is probably the storage and sharing of files. However, browsing files in the web interface is quite tedious: a click each time you change folder, and thus a more or less fast reloading of the tree structure. And sometimes many clicks to go from one branch of the tree to another.

There was probably a way to make it more accessible and more intuitive.

Romain, who knew neither the PHP computer language nor the Nextcloud software solution when beginning his internship, indulged himself with the development of a prototype of a third-party application, which would not only allow to « open the file tree » within the same interface, but also to be able to make advanced searches.

Two months later, the « Sorts » plugin was born, and we would like to share its story below.


Hello Romain, can you introduce yourself?

My name is Romain and I am 24 years old. I grew up in Guadeloupe (French West Indies) before coming to study in Villeurbanne, at the Institut National des Sciences Appliquées in Lyon, where I will graduate in 2022 as a Telecom Engineer.

When I’m not busy with my studies, I spend a lot of time tinkering and repairing old machines, and getting involved in community projects! I am particularly involved in Karnaval Humanitaire, a student association that organizes a music festival for which I was the site manager in 2021 and 2022.

Picture of Romain, INSA Lyon intern at Framasoft from September 2021 to February 2022

 

Why did you choose Framasoft for your internship?

I wanted my internship to be in line with my values of free sharing of knowledge, and away from capitalism and big companies!

I already knew a bit about Framasoft’s projects, especially the online services and software development, and I knew I would find interesting projects in a great environment… and I was not disappointed!

Let’s come to the subject of your internship. What was the main goal?

My internship took place at the beginning of a larger project, codenamed « Framacloud » [Framasoft’s note: we’ll be telling you more about this ambitious project in the upcoming months], whose goal is to allow structures fighting for social progress and social justice to gain ownership, master and control over digital collaboration processes.

This Framasoft project is focused on an online collaboration and file sharing software solution: Nextcloud.

However, although it is one of the most successful and complete open source solutions in this field, it is primarily designed to meet the needs of customers of « Nextcloud GmbH« , the German company that publishes the software. These customers are large structures, public, university or private. As a result, there is a risk of differences between the expectations of small associations and the development priorities of Nextcloud GmbH.

The goal of my internship was therefore to find out how to improve this software in order to make it more useful and more accessible for alternative organisations.

OK, that’s a big topic! How did you manage about it?

Well, first of all, I had to learn about the development of Nextcloud, and we had to learn more about this software: how it works, its flaws and especially what was missing for the users we were targeting.

After several tests of the software and several hypotheses on how to improve it, we decided to get closer to our target users. So we set up a survey targeting people who were part of organisations committed to social progress and social justice and who were already using Nextcloud. This survey questioned their uses of collaborative computing within the collective, their uses of Nextcloud, their frustrations and expectations.

Thanks to the almost 200 answers of this survey we decided on the software developments to be achieved during this internship and that led to the creation of a Nextcloud plugin called « Sorts »!

 

Let’s focus a moment on this survey work. What were the results?

The main concerns that came out of this survey were rather general concerns about the Nextcloud tool. But it allowed us to see what is important for the public we wanted to address.

Of the 20 or so topics I was able to identify in the responses, the first two were topics we couldn’t do much about: collaborative document editing and the general « slowness » of the tool.
On the other hand, among the following subjects we had more perspective to help change things in a few months of training: handling and ergonomics of the software, synchronization problems or help to users to find their way among the files of the collective.

It is this last concern: « finding one’s way in the tree of files more easily » that interested me the most, and that led me to the development of « Sorts ».

For those who want to have a look at the details of the survey, we have published the anonymized results, as well as a synthesis of the different subjects I have discussed in order to refine the subject of the workshop (it is probably easier to digest than the spreadsheet of raw results).

[Framasoft’s note: You can find the results of the survey at the end of the article]

So, you decided to create the Nextcloud application « Sorts ». But… what does this plugin actually do?

The idea behind Sorts is to help people find the files they are looking for and to understand how the folders and files have been organized by the collective they are part of.

To solve the first problem we took advantage of all the information about each file that Nextcloud was already storing (modification date, weight, « tagging » of the file by the user, …) and I coded an interface that allows users to perform a search mixing these different attributes. For example « Find me all the files in the folder « Grant » and its subfolders that are marked as important, and that are in PDF format ».

 

Recherche par filtres dans Sorts
Search by filters in Sorts

 

To solve the second problem we decided to present the folders, subfolders and files in a way that was not yet present in Nextcloud: in a tree list. That is to say that when you click on a folder, instead of « entering » this folder and seeing only its direct content, the folder is « expanded » and you see its content as well as the folders and files which are « next to » it. This tree-like list takes up more space than a simple list but it allows you to understand where you are in the folders, which helps you to understand how they are arranged.

 

Navigation par arborescence
Tree navigation: clicking on a folder opens the contents of that folder in tree form.

 

Technically, did you encounter any issues?

Yes, like in any development process. I think one of the big challenges was to find out which part of the Nextcloud APIs to use, what were its limitations and how to deal with it. The Nextcloud current search feature is designed around a « grouped » search (« unified search ») where the user searches for a string of characters, and Nextcloud returns everything that matches this string among the various resources (files, todos, events, emails, conversations, …). This is not at all what we wanted to do: search among files only according to several conditions, some of which are not strings (dates, numbers, …). But, fortunately for us, there was another search API specific to files. This other API looked very promising because it was already thought to allow combining search conditions on file-specific attributes. However, this API was quite old and not widely used, which sometimes gave me a bit of trouble.

Moreover, I realized quite lately that the API did not take into account two of the different file attributes: « tags » and file sharing information. This information is managed in totally separate APIs. So I faced this dilemma: either I rewrite an API that does the database queries itself with all the attributes, or I complete the existing API, or I cobble together something where I do 3 database queries per search and combine the results. The first solution would have taken too much time and the second solution would have been rejected by Nextcloud GmbH (you don’t change Nextcloud APIs so easily), so I cobbled something together, and so much for the performance of the application.

Did you have contacts with the Nextcloud community or its editor (Nextcloud Gmbh), and if so, how did it go ?

Yes of course, when we started to have a clear idea of what we wanted to do with Sorts I wrote a note of intent with a link to a prototype on the Nextcloud plugin development forum. This led to some exchanges with Nextcloud’s employed developers who were interested in the project and sent me some constructive feedback. We even had a video meeting with them to discuss the plugin but also the wider project, but with everyone’s schedules this meeting took place quite late in the development of Sorts and it didn’t impact the plugin much.

And now, the nagging question: is Sorts really working?

Well YES ! 🎉 Sorts offers an « unfolding » file tree view and already allows combined searches on a good variety of characteristics that files can have!

However, this is a Beta version and it has some limitations… I had to make some accommodations with the technical issues mentioned in the previous question, and while the current version works on small Nextcloud instances, it will likely have trouble to scale when working with real instances counting hundreds of users and thousands of files.


Nextcloud Sorts 0.1.0-beta feature demo video (source)

Features of Nextcloud Sorts 0.1.0-beta (source)

 

What’s next? What do you think is next, and when?

Sorts is available on https://packages.framasoft.org and on the Nextcloud app store in beta version !

We want to continue to maintain this application and to process and accept all possible contributions, but neither I nor Framasoft have plans to develop it full time at the moment. Sorts is now entering the world of community/voluntary development, which means that the developments carried by Framasoft and myself will be done according to our desires and availabilities, without any particular agenda (which also means that we won’t announce any « release date »).

We are coming to the end of this interview. Would you like to share with us a feeling about the work done during this workshop?

Summarize an internship in one emotion? That’s a tough one! Developing a program goes from frustration when it doesn’t work, to the excitement of investigating why it doesn’t work, to the satisfaction of seeing the feature work when you’ve found it.

No, more seriously, there were some frustrations like not having much time to develop or not finding as much time and motivation as I would have liked to complete the project after the internship, but I am satisfied. Satisfied to have made something that works but especially to have been able to design this plugin from almost the beginning to almost the end, taking the time to identify what could be useful, to think about what it should look like, and then to think about how to realize it technically.

Last question, recurrent in our interviews: what is the question you would have liked to be asked, and what would be your answer?

Why didn’t you publish Sorts earlier?

That’s my big regret! And I think that the people who were interested in the application during the note of intent also asked themselves that question. But my associative and personal life was quite busy after the internship and didn’t leave me much time to take care of Sorts, that’s also what volunteer development is about.

Thank you Romain! And to all the people who made this work possible, especially by answering the questionnaire!

Reminder of the different links mentioned in the article :




Refuser les rapports et soutenances de stages confidentiels

Aujourd’hui, nous vous proposons de sortir un peu des sentiers (re)battus du libre et des communs pour explorer un peu plus ceux de l’éducation et du partage. Stéphane Crozat, membre de Framasoft et prof. à l’Université de Technologie de Compiègne, souhaite partager ici une réflexion autour des conditions de publication des rapports de stage. Profitons du fait que le Framablog est aussi le blog des membres de l’association Framasoft pour lui donner la parole.

Stéphane Crozat, Framasoft

Chaque semestre, une partie significative des entreprises qui accueillent des stagiaires de l’Université Technologique de Compiègne dont je suis suiveur font une demande de procédure de confidentialité concernant le rapport et/ou la soutenance de l’étudiant. Je suis opposé à cette pratique.

Récemment encore une grande société française impliquée notamment dans des activités en lien avec la défense m’a fait une telle demande.

Ce semestre, j’ai pris le temps de poser mes arguments à plat, à la suite de quoi la demande a été retirée. Le mail que j’ai reçu en réponse faisait état du bien-fondé de ces arguments. Je les partage donc afin de contribuer peut-être à rendre les demandes de confidentialité plus marginales.

Préambule : la confidentialité est un droit de l’entreprise

Je ne suis pas opposé aux besoins de confidentialité des entreprises. De nombreux contextes l’exigent. À titre personnel il est par exemple évident que les informations dont je dispose sur les étudiants ne sauraient être divulguées publiquement.

Il est à noter que :

  • le principe de confidentialité est inclus par défaut dans le droit de travail : « le contrat de travail est exécuté de bonne foi (article L1222–1 du Code du travail) » ce qui implique notamment la loyauté, la non-concurrence ou la confidentialité ;
  • le stagiaire n’est pas complètement soumis au code du travail mais le principe de confidentialité reste présent dans la logique du stage et est communément explicité par une clause de non divulgation qui peut être ajoutée au contrat de travail ou à la convention de stage.

Donc, la confidentialité est une règle qui s’applique légitimement par défaut.

Entretien d'embauche. À la question "pouvez-vous m'en dire plus sur votre stage" le candidat répond "euh, non".

Argument 1 : Le rapport de l’étudiant est un élément de son CV, s’il est confidentiel, il ne pourra pas le produire.

Si un rapport est confidentiel, alors il ne pourra pas être produit pour faire valoir le travail réalisé, lors de la recherche d’un stage ultérieur ou lors de la recherche d’un emploi.

  • Un mémoire de stage est un travail personnel significatif pour le stagiaire qui mérite de figurer au rang des choses dont il peut être fier et qu’il peut montrer. C’est le déposséder de quelque chose d’important que de lui interdire de produire le résultat de son travail.
  • À défaut, c’est minorer l’importance de ce travail de restitution, ce qui peut conduire à des rapports sans intérêt, puisqu’en fin de compte personne ne les lira (à part peut-être à des fins d’évaluation, une fois, peut-être distraitement).

Proposition 1 : faire un rapport court et public

Je propose d’écrire un rapport synthétique et de bonne facture, non confidentiel et éventuellement de lui annexer un document confidentiel (qu’il n’est pas nécessaire de diffuser hors de l’entreprise).

On aura d’emblée l’ambition que ce rapport soit public, destiné à être diffusé sur le Web typiquement.

Le stagiaire cherchera à faire valoir les actions qu’il a pu mener sans divulguer d’information sensible. On peut pour cela procéder à de l’anonymisation, ou encore à la troncature d’information, sans nuire à la bonne compréhension du propos général. C’est en soi un bon exercice. La stagiaire pourra bien entendu mentionner en préambule qu’il a rédigé son rapport sous cette contrainte (un exemple d’approche : librecours.net/module/ing/rap).

Cette proposition a également le mérite de simplifier la gestion de la confidentialité et d’éviter les entre-deux inconfortables où personne ne sait exactement ce qu’il peut faire et laisser faire :

  1. un rapport public accessible à tous tout le temps,
  2. un rapport privé accessible à l’entreprise uniquement.

Argument 2 : La soutenance est un moment de mise en commun, cela ne peut pas fonctionner si tout le monde ne joue pas le jeu.

La soutenance est un moment d’échange entre étudiants, enseignants et entreprises. Les sessions sont organisées de telle façon que chacun profite des expériences des autres. Lorsque quelqu’un demande une soutenance confidentielle, il exclut de fait les autres de ce partage, c’est donc un appauvrissement de cette phase de restitution de stage. Si tout le monde procède ainsi, l’exercice perd tout intérêt, c’est en quelque sort un cas de dilemme du prisonnier1 : si personne ne se fait confiance, alors tout le monde perd.

Les paroles de l'étudiant sont "caviardées" dans sa bulle

Pour que la situation reste équitable, les soutenances confidentielles doivent se dérouler à part, en dehors de l’espace commun partagé par les autres. Ainsi ceux qui refusent de partager leur expérience se privent de la possibilité de profiter de l’expérience des autres.

C’est donc une dégradation de la situation d’apprentissage pour le stagiaire.

Proposition 2 : sélectionner ce qui est présenté en excluant ce qui est confidentiel

Je propose une soutenance non confidentielle sans information sensible. Il est possible qu’une soutenance ne porte pas sur l’ensemble du stage, c’est même souvent le cas, on peut donc se focaliser sur quelques-unes des tâches les moins sensibles et les exposer avec soin.

Le but d’une soutenance n’est pas de rendre compte dans le détail de tout ce qui a été fait, le temps ne le permettrait pas, mais de donner à voir une partie de ce que l’on a appris, ce que l’on sait faire, et, peut être en premier lieu : de communiquer des choses intéressantes au public.

Le public de la soutenance : ses oreilles sont bouchées de gros tampons d'ouate.

Une bonne soutenance est pour moi une soutenance à l’issue de laquelle on a appris des choses que l’on ignorait grâce à la clarté de l’exposé du stagiaire.

Cela n’implique pas de révéler des secrets spécifiques, mais au contraire d’avoir été capable de monter en généralité pour présenter en dehors du contexte les compétences et connaissances acquises. C’est ce qui fait leur valeur pour le stagiaire et ses futurs collaborateurs.

Conclusion : un argument personnel complémentaire

Accepter un travail d’encadrement de stage correspond à la perspective d’instaurer un échange. On consacre un peu de temps, on fait éventuellement bénéficier un peu de son expérience lorsque c’est utile, et en échange on apprend des choses que l’on peut réinvestir dans sa propre pratique professionnelle.

Le métier d’un enseignant-chercheur consistant à publier de la connaissance au service de tous, les informations confidentielles lui sont mal utiles. Donc le bilan est négatif : on ne gagne rien et on perd un peu de ce temps si précieux pour tous.

Je refuse a priori tout engagement dans le suivi de stages comprenant des rapports ou soutenances confidentielles.




Un jeune libriste part à l’asso des mauvaises habitudes

Neil vient de finir un stage d’étudiant au terme duquel il a réussi à faire adopter des outils libres à une association. Il livre ici le récit de ses tribulations, c’est amusant et édifiant…

On aimerait bien qu’il y en ait beaucoup comme lui pour s’engager de façon aussi déterminée et efficace. Nous espérons entamer une série d’interviews de libristes qui comme lui sont particulièrement impliqué⋅e⋅s dans la diffusion des valeurs et des pratiques libristes.


avatar de Neil, un pigeon sur la tête
Avatar de Neil, image d’après Tunaniverse

Bonjour à tous,

N’ayant encore qu’assez peu d’expérience dans le domaine du libre et s’agissant de mon premier article sur Internet, je sollicite votre bienveillance et vous invite à me signaler toute éventuelle erreur ou mauvais usage des termes dans cet article.

Contexte

Les études

Avant de commencer, un peu de background. J’ai 20 ans et je suis en première année de BTS SIO (branche SLAM), formation post-bac orientée sur l’informatique de gestion et le développement d’applications.

Au bout d’un mois dans cette filière, j’ai senti qu’elle n’était pas pour moi en constatant notamment un retard assez grave dans les notions du référentiel. Mais pour des raisons financières (bourses, appartement, etc.) j’ai dû finir mon année, ce qui implique l’obligation de trouver un stage d’un mois en juin.

Le choix de l’association

J’ai donc choisi une association que je vais appeler Ciné-Asso, qui propose des tarifs réduits pour des séances au cinéma pour les établissements scolaires et ses adhérents. Ses responsables disaient avoir besoin de retravailler leur système d’information.

C’était pour moi une chance que de pouvoir mettre mes connaissances à disposition d’une association, ce qui m’attirait bien plus que les stages choisis par mes camarades de classe (stage en banque, en dépannage/réparation informatique, au supermarché, en startup French Tech qui développe sous WinDev2. Choix judicieux que de choisir un stage WinDev en BTS SIO : WinDev fait partie des logiciels étudiés et utilisés tout comme WordPress, Microsoft Visio, Win’Design, PC Wizard 2015 et plein d’autres. (Vous comprenez pourquoi je n’aime pas cette filière ?)

Et je préférais travailler pour une asso en rapport avec l’art et la culture. Le choix était donc déjà fait.

Un peu de technique

En ce qui concerne les outils utilisés, mon ordinateur tourne sous Debian Buster (prerelease) depuis Janvier 2018. Je code exclusivement sous Vim, mon éditeur préféré. Pour le développement web, j’utilise Apache et MariaDB côté serveur (en local, donc sur mon propre poste). J’utilise souvent MySQL Workbench (la version sous licence GPL par Oracle) pour éditer la BDD, sinon en CLI. Je travaille tout le temps avec draw.io (licence Apache), un logiciel vraiment pratique pour réaliser des schémas en tous genres, des cartes mentales aux modèles relationnels. Je m’estime par ailleurs libriste et refuse, lorsque la situation le permet, de travailler avec des logiciels propriétaires. Vous allez voir que défendre ses valeurs n’est pas facile…

Tâches assignées

Principalement deux tâches me seront confiées durant ce stage d’un mois :

  • Retravailler le site web de Ciné-Asso Leur site web tournait sous une très ancienne version de Joomla ! et franchement, ce n’était pas beau à voir. Bref, un site des années 2006. Ma mission sera de développer un site vitrine pour le remplacer, avec une gestion d’évènements planifiés (de séances de films, en l’occurrence) pour l’association. Cela inclut évidemment la formation des bénévoles à l’outil ;
  • Retravailler la base de données, reconstruire la base de données utilisée pour enregistrer les adhérents et les donateurs de l’asso. La base de données actuelle a été créée il y a 10 ans sous Access 2003 (si ce n’est 98…) et elle est encore utilisée jusqu’à présent. La base n’est pas relationnelle alors qu’elle devrait l’être. Résultat : 35 champs dans une table avec les adhérents et donateurs mélangés, des doublons, des couples sur un seul enregistrement et de sérieuses limites. Je vais donc devoir créer une nouvelle base, migrer toutes les données et former les bénévoles.

Le tout, donc, en un mois, avec la contrainte personnelle de n’utiliser que des logiciels libres.

capture de la liste des entrées de la base de données ancienne
La base d’adhérents au départ…

Présentation de Ciné-Asso

Je vais donc vous présenter brièvement l’équipe de Ciné-Asso. De faux noms leur seront attribués afin de préserver leur anonymat.

M. Touron est le président de l’association. Un esprit juste et logique.

Mme Nougat est la trésorière et celle que je dois convaincre. Elle est très réticente à l’intégration de mon travail au sein de l’asso. Elle sera aussi l’une des principales utilisatrices du logiciel de gestion de base de données. J’ai donc intérêt à faire du bon travail afin de satisfaire ses attentes.

M. Réglisse s’occupe de la communication auprès des adhérents. Il utilise tout le temps l’outil informatique dans son travail, pas toujours comme il le faudrait.

Mme Caramel est une jeune bénévole qui soutient mes idées. Elle s’occupe principalement du site web.

M. Calisson est un bénévole octogénaire et maintient la base de données Access. C’est un autodidacte de l’informatique. Il racontait fièrement qu’il avait programmé en COBOL pour le gouvernement à une époque désormais révolue.

M. Prunelle est un prestataire de services extérieur à l’association et jouera un rôle crucial.

Une réunion est organisée entre deux ou trois bénévoles et moi deux fois par semaine afin de présenter l’avancée de mon travail et de m’ajuster à la demande. En dehors des réunions, je travaille en autonomie.

Un détail important à relever : aucun membre de Ciné-Asso n’est assez compétent en informatique pour s’occuper du côté technique du site après mon départ.

Le site web

J’ai consacré les 15 premiers jours à la réalisation du site web. Et parmi tous les CMS possibles, j’ai choisi… Allez, devinez… WordPress.
Vous avez le droit de jeter vos tomates pourries ; mais je n’avais aucune expérience, ni avec Drupal, ni avec Joomla! et je n’avais clairement pas le temps de tester les solutions (rappelons que j’ai seulement 15 jours pour finaliser le site, formations incluses). De plus, je connaissais déjà bien WordPress pour l’avoir utilisé par le passé. Et croyez-moi, j’ai regretté de ne pas avoir été assez curieux, car ces 15 jours mêlèrent ennuis et souffrance.

Le décor

On commence par le design. J’ai choisi la version gratuite d’un thème qui leur plaisait bien. Je leur conçois une jolie bannière d’en-tête (avec GIMP, bien évidemment). Au final, j’ai dû la refaire 16 fois dans une réunion de 4 heures pour satisfaire aux demandes de M. Touron, président. Mais passons. J’ai dû bidouiller le CSS afin de convenir à leurs attentes, au risque de tout casser à la prochaine mise à jour. En guise de solution, je leur ai demandé de tout mettre à jour, sauf le thème.
C’est sale, ça contourne le problème, mais je ne vois pas d’autre option dans le temps imparti ; de plus, les thèmes souffrent rarement d’une faille de sécurité. J’ai donc jugé le pari suffisamment sûr.
Travailler sur WordPress n’est pas jouissif. Ça me servira de leçon pour mes stages futurs.

Les plugins

Je choisis le plugin WP Theater pour programmer les séances de cinéma.
Évidemment, les fonctions les plus intéressantes sont payantes. Je me contente des fonctions de base et réussis à convenir à leurs demandes. M. Touron m’a proposé d’acheter la version payante du plugin, mais j’ai insisté en disant que n’était pas nécessaire et que pour le prix de la fonctionnalité, ça relevait plutôt de l’escroquerie.

Les deux semaines s’écoulèrent (trop) paisiblement avec quelques ajustements par-ci par-là. La formation fut terminée en une après-midi. L’intéressée, Mme Caramel, appréciait l’interface conviviale du logiciel.

Choses vues

En un mois, j’ai appris à connaître les membres de l’association : leur personnalité, leur empathie et surtout, leur usage de l’outil informatique. J’ai tout de même quelques anecdotes qui font peur.

M. Réglisse et Micro$oft Office

J’apprends que l’un des membres de l’association, M. Réglisse, utilise MS Office 2003 pour travailler sur les documents de l’asso. Malheureusement, ce logiciel de Micro$oft n’arrive plus à exporter en PDF sur son poste, pour une raison inconnue (tout autant à lui qu’à moi). Sans compter que Office 2003 ne lit pas les nouveaux formats MS Office (depuis 2007 : xlsx, docx, etc.) ni les formats libres (odt…). Et ainsi, à chaque fois que M. Réglisse souhaite lire ou éditer un fichier incompatible, il envoie ce fichier par mail à sa collègue qui le convertit en PDF (à l’aide d’Apache OpenOffice) et qui lui renvoie par mail, et ce depuis longtemps.
Il fallait quand même que je me retienne de sourire en écoutant ça.
On me demande conseil.
En bon libriste, j’explique que le logiciel est trop vieux et qu’il faut passer à LibreOffice gratuitement ou acheter le pack Office tous les 3 ans, en insistant bien sur la première option.
« Oui, mais j’ai déjà essayé, ça marche pas, y’a des bugs et c’est pas toujours compatible… » Finalement, j’ai réussi à le convaincre. Ça a changé un peu la mise en forme de ses fichiers et il ne s’est pas gêné de me faire remarquer qu’un pixel dépassait par-ci par-là, mais il devrait s’en satisfaire pour le moment.

Vive le libre !

M. Réglisse et le mailing

Dans les aventures de M. Réglisse, j’ai aussi celle où il souhaite envoyer une newsletter à tous les adhérents de l’association. Il ouvre sa base Access 2003, et demande au logiciel de lui donner tous les mails des membres de l’asso. Il ouvre Thunderbird en parallèle, crée un nouveau groupe… et ajoute tous les mails en les réécrivant un par un à la main ! On m’explique que c’était parce que certains mails peuvent avoir été entrés dans la base de données avec des erreurs (une virgule au lieu d’un point, par exemple…) et que copier coller pose alors des problèmes… Car la base de données ne détecte pas les erreurs de saisie…

Je promets à M. Réglisse que le mailing sera beaucoup plus facile avec ma solution.

La réunion à mi-chemin

Les réunions furent assez régulières avec moi au sein de l’asso, mais celle-ci fut de très loin la plus importante. Je rencontre M. Prunelle, expert en informatique, retraité. Il s’agit d’un prestataire de services extérieur à l’association, contacté par Mme Nougat dans l’idée de contrôler mon travail et de m’aiguiller. Pour la première fois, M. Calisson, mainteneur de la base de données, est présent. M. Prunelle commence donc par parler de son parcours ; il a fondé une entreprise d’informatique pendant sa jeunesse et a déjà programmé en COBOL et en assembleur, raconte-t-il avec nostalgie.

M. Prunelle joue un rôle crucial : il s’engage à maintenir mon travail à mon départ en tant que bénévole si le projet correspond à ses attentes. Il s’agit donc d’une personne avec laquelle je devrais collaborer.

Les deux premières heures

On parle beaucoup du site web. Je l’ai présenté, il était déjà globalement fini, prêt à être basculé en production. M. Prunelle approuve mon choix du CMS WordPress et raconte qu’il a de l’expérience avec. On discute des quelques bidouillages sur le CSS (peu nombreux mais hélas impératifs conformément aux demandes).
Mon code étant commenté et mes modifications légères et peu nombreuses, il les approuve et se propose même de les maintenir si ça casse après une mise à jour. Super, ça m’arrache une épine du pied !

Les deux dernières heures

J’aborde le sujet de la base de données. Il faut savoir que la trésorière, Mme Nougat, s’oppose assez fortement au fait que je travaille sur la BDD. Elle souhaite que je me consacre pleinement au site et veut plutôt confier la base à un intervenant extérieur aux frais de l’association. C’est d’ailleurs pour cela qu’elle a fait appel à M. Prunelle…

J’explique mon projet. Un intranet maison, développé from scratch, une BDD relationnelle. Le tout fait à la main. J’avais déjà préparé un schéma relationnel que je lui montre.

« Ta base m’a l’air bien, relationnelle, tout bien comme il faut, c’est du bon travail. Par contre, je ne suis pas trop d’accord avec ta solution pour l’hébergement de la base de données, Maria DB… Je connais de nom mais ce n’est pas très utilisé dans le domaine professionnel… »

Il sort son cahier. Puis son stylo. Je le remarque alors… Un stylo rose fluo, avec le fameux logo de WINDEV dessus. Gulp. Je sais ce qui m’attend.

M. Prunelle me demande alors d’aller voir sur une page cachée d’un site web sur lequel il avait récemment travaillé. Il m’épelle l’adresse, quelque chose du genre « xalex-xpert.com/xalex_expert ».
S’affiche alors une vieille interface de connexion sans TLS, et je reconnais rapidement WEBDEV, de la même boîte. Je fais la moue. J’explique alors que je ne souhaite travailler qu’avec des logiciels libres, par éthique. Un sourire en coin s’affiche sur le visage de M. Prunelle :

« Ha ha ha, moi aussi, quand j’avais ton âge, j’étais un rebelle et je votais à gauche ! Mais aujourd’hui sur le marché du travail, dans un contexte professionnel de l’industrie informatique, jamais je ne me permettrais de présenter une verrue de Linux chez un client ! »

Hein ? L’industrie professionnelle de l’informatique ? Le marché du travail ? Qui a parlé de Linux ? Une verrue ?
La rébellion gauchiste ? Ce n’est pas un #MercrediFiction ni une exagération. C’est mot pour mot ce qu’il m’a dit. Je suis resté bouche bée pendant quelques secondes avant de passer à l’offensive en défendant mes arguments.

Et là, tout de suite, la grosse condescendance. En puissance. Limite, s’il m’avait versé un coulis de caca sur la tête, ça aurait été plus respectueux.

« Non mais de toute façon voilà, c’est comme ça qu’on débute, on fait tous des erreurs, on progresse ensuite, moi j’en ai vu, c’est pas le premier, je sais comment ça se passe »

Et alors évidemment Mme Nougat s’incruste et en rajoute une couche…

« Moi je pense qu’on a la chance d’avoir un professionnel parmi nous, M. Prunelle sait ce qu’il faut faire. Quand on est jeune, on ne connaît pas le marché du travail, on ne sait pas comment bien faire les choses pour répondre aux demandes du client, c’est normal »

(Allez-y, pissez-moi dessus encore, j’aime ça.) Mais avant que je ne me fasse totalement recaler, M. Touron et Mme Caramel interviennent au moment opportun et insistent pour me laisser une chance. Ouf, c’est sauvé. Par contre, du coup, inutile de compter sur lui pour maintenir ma « verrue de Linux ». Plus qu’à me débrouiller tout seul.

Résultat, les deux solutions seront proposées au conseil d’administration et c’est le conseil qui tranchera. J’ai intérêt à bien faire le boulot.

La veille technologique, ou comment j’ai changé d’avis

Ok, j’ai donc 15 jours pour réaliser une solution convaincante à partir de rien, migrer la solution actuelle vers la mienne et enfin former les nouveaux utilisateurs… Bon, j’ai des bouts de code de prêts pour ça, je suis assez expérimenté en PHP pour me débrouiller comme un grand. Mais 15 jours…

État des lieux

Tout d’abord, le lendemain de la réunion, M. Calisson (mainteneur octogénaire de la BDD) s’est présenté à moi. Il a fait l’effort de se déplacer dans les locaux pour me proposer personnellement son aide.
Face à une telle bienveillance, je ne pouvais refuser. Il m’a donné une documentation utilisateur d’une vingtaine de pages (datant de quelques années), très détaillée, qui m’a beaucoup appris. Il a ensuite pris le temps de m’expliquer chaque détail flou de la base actuelle et décrit les attentes particulières de Mme Nougat, qui attend d’être convaincue par ma solution.

Il n’était pas obligé de faire tout ça et je lui en suis grandement reconnaissant. Avant de le rencontrer, je pensais que ça allait être un esprit conservateur qui considère que sa solution (une table, 35 champs, rappelons-le) est la meilleure de toutes… et je me suis bien trompé. Comme quoi, le code ne fait pas le développeur…

À l’aide, Mastodon !

Dans le doute, je fais appel au réseau des réseaux. Et dans la panade, je fais appel au Fediverse.

Appel à l’aide sur Mastodon…Voyez tous les conseils reçus suite à ma demande !

 

Amis, camarades, connaissances, merci à vous. Vous avez été d’un précieux soutien dans cette situation difficile, vous m’avez aiguillé quand M. Prunelle m’avait lâché. Je savais que je pouvais compter sur vous ! Et j’ai attentivement écouté vos conseils.

Alors que choisir ?

Je peux dire beaucoup de mal (à tort et à raison) de mes professeurs de BTS SIO, mais c’est l’un d’eux qui m’a conseillé Galette en premier (en l’occurrence, ce professeur revendique des valeurs libristes mais enseigne WinDev et Win’Design aux élèves, ironiquement. Il enseigne Merise aussi, en 2018. Mais passons !)

Galette est un CMS libre de gestion d’adhérents pour les associations, inscrit sur Framalibre, l’annuaire contributif où j’aurais dû chercher en premier. Le logiciel a été créé en 2004 et est toujours maintenu à l’heure actuelle via des mises à jour régulières. Il est utilisé par des dizaines d’associations et reste un choix à considérer pour un déploiement rapide et efficace.

La Fediverse m’ayant conseillé (entre autres) Galette, j’ai décidé de m’y intéresser de plus près. Je connaissais déjà Galette (de nom seulement) avant que mon professeur m’en parle, mais tout écrire de soi-même avait l’air tellement plus amusant…

Et la solution avait l’air vraiment sympa. Il m’a fallu quelques jours pour m’assurer qu’elle collait bien au cahier des charges de Mme Nougat, mais tout avait l’air d’aller comme il faut. Et comme je n’ai plus le temps, il vaut mieux choisir cette option plutôt que de partir de zéro et rendre un travail insatisfaisant ou incomplet.

Partons donc pour Galette !

Galette

Abordons un peu l’aspect technique. La formation WordPress et quelques autres tâches ayant un peu débordé sur le planning, il me reste 10 jours pour déployer la solution et former les utilisateurs.

Le cahier des charges

Je rencontre un problème. Le cahier des charges n’est pas respecté sur un point : les statistiques. L’asso a besoin de stats assez précises pour la comptabilité et Galette ne fournit que deux ou trois pauvres camemberts. Galette tournant sous PHP, je prends la décision d’écrire un plugin.

Le plugin

C’est ce qui va prendre le plus de temps. Je travaille dans un environnement avec lequel je ne suis pas familier du tout, même si c’est du PHP, car je n’ai jamais touché à des frameworks PHP ni utilisé une API conçue pour des plugins. Ma première rencontre avec Zend Framework se passe… mal. Très mal, au point où j’interroge directement la base de données avec des requêtes en dur pour faire le boulot.
J’aurais aimé apprendre comment m’en servir, mais « je n’ai pas le temps ». Bon, j’ai moins d’excuses pour le switch à 90 cases avec des requêtes SQL et les 80 lignes de HTML dans un string… Mais chut…

Blague à part, je commence à être vraiment à la bourre. Plus que quelques jours de stage déjà, et c’est fini. Je me débrouille comme je peux pour coder quelque chose qui fonctionne. Qui a parlé de maintenabilité ?
Le prochain qui passera derrière moi sera probablement un stagiaire de BTS SIO, ça lui fera les pieds 🙂 (Il va me retrouver et me tuer pour avoir écrit ça, et je ferai moins le malin quand je tomberai sur un cas similaire. Bon au moins, j’ai mis plein de commentaires)

La demande de dernière minute

J’ai présenté le plugin de stats à Mme Nougat et il a fallu s’adapter à une demande de dernière minute. Totalement justifiée cela dit, ça faciliterait grandement la comptabilité. Il s’agit encore de stats.
J’applique des quickfixes sur le code dégueulasse que j’ai pondu juste avant. Il me reste trois jours. (Comment ça, ce n’est pas une excuse ? Au moins ça fonctionne !)

Bon allez, on plie ça vite fait et on passe à l’importation, qui n’est même pas commencée !

Préparation pour la migration

Un peu plus de technique.
La base de données est sous forme de fichier. MDB (Access), format propriétaire. Elle pèse 8.5 Mo. J’ai des frissons dans le dos. J’utilise le paquet mdb-tools pour convertir la structure et les données en requêtes SQL et je crée une nouvelle DB en local (MariaDB) et j’importe le tout.
Vive le libre.

Voilà la table à 35 champs… Ma première tâche va être de séparer les entrées des couples (M. et Mme) qui ont été enregistrés en une seule entrée.
Sur le coup, LibreOffice Calc est mon ami. J’importe tous les enregistrements où Sexe=« M. et Mme » et je les sépare à coups de Chercher/Remplacer. Une fois le boulot fini, j’importe tous les autres adhérents enregistrés dans la base jusque là sur le tableur, c’est plus facile que sur Workbench. Et nous y voilà, un total de 1275 lignes.

La grande migration

Allez, c’est parti. Je saisis 1275 adhérents à la main, depuis l’interface de Galette.

Bien sûr que non. Vous croyez vraiment que j’allais faire ça manuellement ?
Je me remémore ce que disait l’un de mes professeurs de BTS SIO :

« Un développeur, c’est un branleur. Une quiche molle. Alors à un m’eng donné, il faut savoir optimiser son traitemeng ou on va se retrouver avec une KYRIELLE de travail à faire. »

Il reste 2 jours. Comptant un jour de formation et d’installation du logiciel, j’ai 24 heures pour réaliser la migration. Admettons que je prenne trois minutes par entrée (adhérent + contribution). (1275 x 3) / 60= 63h45 de travail. C’est hors limites !

La seule solution est donc d’automatiser le tout. Mais il ne s’agit pas d’un simple INSERT INTO dans une table, hélas. Galette utilise un système de champs dynamiques qui permet d’avoir des champs personnalisés par l’association. Il les gère d’ailleurs assez mal : lorsqu’on supprime un adhérent ou une contribution, les champs dynamiques associés ne se suppriment pas avec. Encore un bug à signaler, tiens. Mais passons.

Formatage des données

Je commence par ajouter un adhérent et une cotisation annuelle pour ce dernier et j’identifie dans la BDD les tables mises à jour. Il y en a trois : galette_adherents, galette_cotisations et galette_dynamic_fields.

Ensuite, ça reste quand même assez trivial. J’identifie à quoi correspondent les champs dans les tables et je prépare mes inputs selon mes besoins. Je n’oublie pas de m’adapter au logiciel. Exemple, Galette interdit les adresses mail dupliquées dans la BDD. Je supprime tous les duplicatas depuis LibreOffice avant de commencer quoi que ce soit. Puis vient le plus
pénible. Le formatage des inputs. LibreOffice est pratique pour ça, mais je préfère tellement Vim qui s’avère bien plus efficace quand on a l’habitude du logiciel.

Vérification des données

Je vérifie encore mes inputs. Les erreurs les plus courantes :
– Doubles espaces (un coup de regex et c’est fini)
– Accents dans les adresses mail
– Virgules à la place de points un peu partout
– Formatage pas toujours standardisé du numéro de téléphone… J’étale le champ adresse, unique jusque là, sur deux lignes. C’est long et pénible, un bon travail de stagiaire. Par superstition, j’enlève les guillemets placés inutilement dans les adresses physiques.
– Au passage, je découvre des adresses Yahoo, AOL, Cegetel, Alice, Wanadoo, Neuf et même quelques .gouv.*.
Ça fait un peu peur.

– Le champ galette_adherents.login_adh contient des caractères aléatoires servant d’identifiant pour l’adhérent. L’asso n’utilise pas cette fonctionnalité, mais pour ne pas contrarier Galette, je vais insérer des caractères aléatoires dedans : SUBSTRING(MD5(RAND()) FROM 1 FOR 15)
Ce n’est pas censé être un identifiant hexadécimal, mais ce n’est pas grave.

Enfin, je prends soin de distinguer les champs vides des champs NULL. On peut maudire SQL pour ça, je suppose.

Je termine la migration le 28 juin au soir, soit 24 heures avant la fin du stage. La journée de demain commencera à 09h00.

Déploiement de la solution

Ah oui, à ne pas oublier. Avant de former les utilisateurs, il faut d’abord déployer Galette sur leur réseau (en intranet). Je choisis l’utilisation de XAMPP sur l’un de leurs postes Windows.
Je configure le serveur DHCP de leur box pour que l’IP du poste en question soit fixe. Ma méthode est probablement discutable mais je ne vois pas d’autre option possible, surtout qu’héberger Galette sur le “cloud” ne leur aurait pas servi car ils ne travaillent sur la BDD qu’en local. Enfin, je déploie Galette, j’exporte la BDD depuis mon poste et je l’importe sur le leur. Je transfère aussi les fichiers de mon plugin. Évidemment, l’opération ne s’est pas déroulée sans accroc – surtout sur des postes Windows. J’ai perdu une à deux heures dans la migration.

L’imprévu fatidique

En formant l’une des deux bénévoles, on s’aperçoit ensemble que de nombreuses données de l’ancienne base sont erronées depuis quelques mois (suite à une maintenance de M. Calisson) et que ces erreurs ont été (évidemment) reportées sur la nouvelle base. Nous arrivons à une conclusion terrifiante : il faut repasser manuellement derrière chacune des 1275 adhésions à partir des bordereaux d’adhésion, conservés par précaution. Cette opération nous a coûté 4 à 5 heures. La bénévole a eu la gentillesse de m’apporter une pizza pour que je puisse finir mon travail d’esclave le plus vite possible sans sortir du bureau.

fig.1 Travailler en équipe pour résoudre un problème. La théorie.

fig.2 Travailler en équipe pour résoudre un problème. La réalité.

La formation

Vous imaginez qu’il ne me reste plus beaucoup de temps pour former les utilisateurs. La première bénévole était assez familière avec l’informatique, mais la deuxième ne l’était pas du tout – au contraire, elle détestait l’informatique. J’ai dû abréger beaucoup de points que je préciserai dans une documentation utilisateur à rédiger après mon départ. Ce fut très laborieux, mais l’essentiel a été vu. Il est 18h00, mon stage se termine et ma mission avec. Je remercie M. Touron qui m’offre une gratification de stage de 150 euros.

Le suivi

Le libre, c’est bien, mais quand il est encadré et suivi, c’est mieux. Le site web de l’association est hébergé par la Ligue de l’Enseignement, ce qui leur permet de profiter de tarifs très préférentiels. J’ai pu rencontrer l’un de leurs membres avec M. Touron dans le cadre de la migration du site de Joomla ! vers WordPress.
Ce monsieur, aux antipodes de M. Prunelle, était clairement fâché de mon choix de WordPress, en disant que les webmasters oublient souvent de mettre à jour le CMS et qu’il est généralement considéré comme une usine à gaz trouée par des failles de sécurité. Je ne peux qu’être d’accord avec lui sur ces points-là, malheureusement.
M. Touron aborde finalement la question de la gestion de la base de données (Galette, donc) et ce monsieur semble non seulement connaître le CMS, mais exprime sa satisfaction quant au choix d’un logiciel libre. Quand je lui ai dit que ce choix était par éthique, nous sommes rapidement partis dans une discussion libriste mentionnant La Quadrature du Net, l’April, Framasoft, les RMLL 2018 qui approchent à grands pas…

C’était ma première discussion avec un libriste dans la vraie vie et elle ne pouvait pas tomber à un meilleur timing. La personne idéale pour reprendre le projet était déjà trouvée, je peux dormir sur mes deux oreilles !

Ressenti personnel

Cet article est déjà beaucoup trop long, mais je tiens à exprimer mon ressenti sur ce stage. La rencontre avec M. Prunelle fut très parlante pour moi : j’ai réalisé à quel point les esprits peuvent être conservateurs dans le domaine de l’informatique.

Être libriste, c’est avant tout avoir des convictions que l’on défend au quotidien. Je ne m’attendais pas à entrer en conflit d’éthique avec qui que ce soit pendant ce stage, tout comme je ne m’attendais pas à rencontrer des personnes défendant les mêmes valeurs que moi. C’est aussi inciter les utilisateurs moins familiers vis-à-vis de l’outil informatique à découvrir les outils libres, faire face à leurs réticences dues à la peur de l’inconnu, à leur habitude d’utiliser des outils propriétaires et parfois, à leur manque de confiance en votre personne au prétexte de votre jeune âge et de votre supposé manque d’expérience.

Ce stage fut un véritable combat au nom de l’éthique et de mes propres convictions, mais il fut aussi porteur d’espoir : les libristes sont plus nombreux que je ne le pensais, et mon déplacement à mon tout premier meeting (les RMLL 2018) va probablement m’aider à mieux connaître (et sympathiser !) avec les différentes communautés et me permettre de définir plus précisément mon parcours professionnel en vue, dans l’idéal, d’un métier dans ce domaine.

Vive le libre !

@Neil@shelter.moe




Robin, stagiaire chez Framasoft et porteur de projet

Vous ne connaissez pas Robin ? C’est le stagiaire qui a conçu les pages Framasites dont nous parlions ici, ou plus exactement le logiciel libre qui les fait tourner, à savoir PrettyNoémieCMS

Si son stage est terminé, nous ne pouvions pas le laisser partir sans parler avec lui de sa démarche, ses projets, etc.

Pour le plaisir, nous avons décidé d’illustrer ce long échange de captures d’écrans de pages Framasite qui ont retenu notre attention.

Cliquez pour découvrir cette page Framasite qui explique comment faire une page Framasite. Hyper-méta, tavu.

Portrait de Robin

Bonjour Robin, peux-tu te présenter en quelques phrases

J’ai bientôt 30 ans et j’ai un parcours avec plein de virages qui m’ont fait passer par les cases école d’ingé, CAP cuisine, travail social… le tout avec des fortes valeurs éthiques et un intérêt particulier et assez central pour l’abolition du capitalisme (lectures, engagement militant, syndical, squat…). le dernier virage m’a amené à l’envie de créer un outil numérique d’émancipation sociale dont l’idée a pointé pendant le mouvement contre la loi travail, j’ai donc dû passer à l’apprentissage du code pour pouvoir le réaliser.

Comment on se retrouve stagiaire pour Framasoft avec ce parcours ?

Framasoft me permettait plusieurs choses intéressantes : découvrir de l’intérieur le monde du libre et de la production collaborative de services web, me faire une expérience intéressante en développant pour eux, et peut-être de faire de ce stage un tremplin pour mon projet… d’éviter enfin de me retrouver à bosser gratuitement pour une entreprise dont la finalité est le profit. J’ai fait une candidature spontanée en parlant de mon parcours de mon projet et de mes valeurs, et ça a très vite collé.

Comment as-tu été accueilli ?

J’ai rien à redire sur mon accueil, à la fois carré et sans laisser de faux espoirs et de fausses promesses et en même temps très chaleureux, rémunéré en plus ce qui est rare… Je suis quelqu’un d’autonome et je m’y suis bien retrouvé, les impératifs de la campagne de financement de fin d’année ne permettaient pas forcément à l’équipe de me tenir par la main, mais j’aime bien la liberté que ça m’a permis. et puis j’ai pu ressentir tout au long de mon stage une grande confiance dans les choix que je faisais et ça a été très encourageant.

Quelle était ta mission / ton cahier des charges ?

J’étais censé réaliser des améliorations de l’interface utilisateur du dernier service proposé par Framasoft : Framasite. L’idée était d’offrir une expérience utilisateur assez proche de la simplicité d’un WIX pour que n’importe qui, sans aucune compétences spécifique en informatique, puisse mettre en ligne un joli site web en quelques clics dans une interface très intuitive. La voie que je devais explorer pour y parvenir consistait à améliorer le CMS sur lequel était basé Framasite, en lui ajoutant tout plein d’améliorations le rendant plus simple à utiliser.

cliquez sur l’image pour découvrir ce fan-site consacré à Pepper and Carrot

 

…et finalement, tu as plongé dans le code et qu’est-ce que tu as découvert ?

Framasite est basé sur GRAV, un CMS au code élégant, qui permet de générer des pages assez rapidement avec relativement peu de compétence en PHP puisque il utilise un mélange de markdown, de fichier de configuration en YML et de templates en TWIG. beaucoup d’aspects sont très automatisés, et cela amène une grande élégance du CMS, comme par exemple la génération automatique des formulaires du panneau administrateur… Pourtant cette automatisation rend très difficile d’adapter l’interface afin d’offrir des parcours utilisateurs simplifiés pour la construction des pages, comme de regrouper certains champs d’un formulaire, n’en faire s’afficher que certains, ou de manière progressive… Il est très difficile de partir de l’expérience utilisateur souhaitée pour réaliser le code correspondant, et l’on se retrouve toujours avec des solutions de « bricolage ».

L’image que j’ai en tête pour des personnes pas très familières avec le code : c’est un peu comme essayer de construire une belle armoire normande à partir d’une armoire IKEA, vu de loin ça a l’air pratique parce qu’on est pas très loin du résultat attendu, mais peu à peu on se rend compte que le design initial est très limitant, et oblige finalement à réaliser un travail bien plus laborieux et complexe que de partir d’un bon tas de planches et d’outils performants… d’autant plus que l’on me demandait que mes modifications restent compatibles avec les mises a jour de GRAV, et donc, pour filer la métaphore, que l’armoire IKEA ne soit pas cassée dans l’opération.

Bref : Un vrai casse-tête.

Donc tu n’as pas rempli ta mission ? C’est un terrrrrrible échec qui te tourmente jour et nuit (debout) ? Comment a réagi la personne qui assurait l’encadrement de ton stage ?

J’ai assez rapidement été découragé de suivre l’option d’une modification de Grav pour obtenir l’effet attendu, et je suis revenu des fêtes de fin d’année en me disant que même si mon stage durait 6 mois, je ne crois pas que j’arriverais a faire mieux pour simplifier la création de site par mon utilisateur que de l’orienter vers un hébergeur solidaire offrant une installation de wordpress à la volée… donc j’en ai parlé à l’équipe et à la personne qui m’encadrait sans trop savoir ce qui allait advenir, j’étais prêt à peut-être partir sur un autre stage… c’est pas facile de remettre en question totalement les choix fait par une équipe, je sais qu’en cuisine ou ailleurs, ça aurait signifié une fin de contrat plus ou moins houleuse…

Mais bon, mes arguments ont été plutôt convaincants, et on est assez vite arrivé a une solution qui m’est venue assez tôt dans le stage, créer un outil simple depuis le début en utilisant un framework PHP nettement plus bas niveau qu’un CMS, et surtout en partant d’une idée de ce que je souhaitais offrir à l’utilisateur plutôt que de partir de quelque chose d’inadapté pour le bidouiller.
Ça a été très motivant et en une quinzaine de jours j’ai pu réaliser une version limitée de cet outil, et j’ai eu de très bons retours, à la fois de mes amis non-codeurs qui étaient très intéressés par la simplicité avec laquelle ils pouvaient réaliser un site web mais aussi par les membres de l’équipe qui étaient très enthousiastes.

Une question de détail par un gars sur Mastodon (Llaq @lelibreauquotidien) : Hé, @Framasoft, pourquoi vous avez appelé le CMS des pages Framasite « PrettyNoemieCms » ?

Oh ben je suis amoureux d’une fille qui s’appelle Noëmie, donc le nom est venu comme ça… le premier nom c’était Easy ShowcaseSite CMS… c’est quand même mieux Noemie CMS, non ? Enfin moi je trouve. Il y a un proverbe dans le libre qui dit que c’est ceux qui font qui ont raison, et vu que c’est moi qui l’ai fait, c’est moi qui ai raison.

Comment a été accueilli ton travail, par Framasoft et par le public ?

À la fin de mon stage, l’outil a été mis en ligne et j’ai tout de suite eu pas mal de bons retours, celui qui m’a fait le plus plaisir c’était quelqu’un qui m’a dit : « c’est le plus simple des CMS ». je sais pas si on peut être aussi catégorique, mais si j’ai réussi à créer un outil auquel on pourrait mettre juste une demi-étoile sur 5 de difficulté, j’aurai vraiment réussi mon pari… En tout cas j’ai fait tout mon possible pour aller dans cette direction. Ce qui me plaît bien aussi c’est des amis non codeurs qui partagent le plaisir créatif qu’ils ressentent en utilisant l’outil, ils me disent qu’ils se sont « amusés » avec Noëmie, ce qui me ravit.

J’ai eu aussi quelques retours de bugs, rapidement corrigés, et aussi plein de personnes qui s’y sont intéressé de près en voyant le potentiel de l’outil et qui m’ont fait part d’idées d’amélioration.
Les membres de l’association m’ont fait part non seulement de leur satisfaction quant à mon travail, mais ils m’ont aussi exprimé qu’ils avaient été impressionnés par ma capacité à sortir quelque-chose d’aussi abouti et de fonctionnel en si peu de temps. Ça me fait chaud au cœur, car je débute dans la programmation, il y a un an et demi je n’avais pas encore écrit une seule ligne de code, et je ne participe à une formation que depuis moins d’un an. Je tiens au passage à remercier chaleureusement Simplon (mon organisme de formation) et son formateur Patrick qui m’ont aidé à prendre peu à peu confiance dans mes capacités de développement, et m’ont guidé dans cet apprentissage.

La page des « Framasoft fan art » de JCFrog nous a fait hurler de rire.

 

Quelle suite pour Noemie CMS ?

Aujourd’hui je pense que ce CMS trouve sa place à côté de ceux déjà existants, grâce a sa simplicité. il ne sera jamais aussi complexe et personnalisable qu’un WordPress ou un Grav, mais il peut trouver sa niche en étant « le plus simple des CMS».

Les contributions sur le Repository vont bon train : déjà 66 issues postées, dont 52 réalisées, 17 merge request, on peut dire que je me sens pas seul sur le projet. Plein de pistes d’amélioration se dégagent, et d’autres que moi se saisissent avec plaisir du projet. Quant à moi je suis partagé entre un projet perso qui me tient vraiment à cœur : HUmanBeing (on en reparlera en fin d’article), ma formation qui s’arrête et le besoin de trouver un moyen pour vivre qui risque de bouffer beaucoup de disponibilités et l’envie de poursuivre le travail entamé sur ce CMS. Ça fait beaucoup d’envies et malheureusement pas suffisamment de temps pour tout faire à 100%.

Dans l’idéal je reprendrais Noemie CMS depuis le début avec un framework JS frontend (Vue-React- angular) afin de rendre l’expérience utilisateur encore plus fluide (pas de rechargement de pages à chaque sauvegarde, possibilité d’aller plus loin dans la complexité du code pour proposer une expérience utilisateur toujours plus simple, et peut-être ajouter la possibilité de créer un site de plusieurs pages… enfin bon, si j’avais plus de temps et pas la nécessité de devoir faire un truc débile, plus ou moins néfaste pour les gens qui m’entourent et dans le seul but d’enrichir un patron pour pouvoir payer mon loyer ces prochains mois c’est ce que je ferais… mais bon… je crois pas que j’en aurai l’opportunité.

En attendant, je vais quand même continuer de faire avancer tout doucement les fonctionnalités, résoudre des bugs, et surtout passer du temps à transmettre aux autres contributeurs « les clefs » de mon code pour qu’ils puissent aussi se l’approprier et le faire évoluer.

Pendant ta période de stage, on t’a aussi obligé à assister à l’assemblée générale de Framasoft, tu peux nous raconter un peu comment ça s’est passé ? Ils t’ont fait quelle impression les membres de l’association ? et le fonctionnement de l’asso, qu’est-ce que tu en penses ?

Ce fut très intéressant, j’ai rencontré plein de chouettes personnes, avec un beau projet en commun. les discussions étaient très riches. je me suis parfois demandé s’ils ne manquaient pas un peu d’ambitions : en effet le bilan financier leur permettrait à mes yeux de s’engager sur plus de projets, en termes de développement direct ou de soutien financier à des projets ; en même temps je comprends tout a fait que la « sérénité financière » de Framasoft est très récente, et je n’ai pas vraiment suffisamment de compétences en gestion pour pouvoir donner un avis là dessus.

Peut-être aussi que ça m’a permis de prendre conscience d’un décalage entre la vision que j’avais de Framasoft et son projet associatif : avant mon stage j’envisageais Framasoft un peu comme une équipe associative de développeurs qui cherchaient à produire des outils libres et gratuits et de la meilleure qualité pour le plus grand nombre, pour le plaisir de pouvoir offrir des services libres et gratuits à leurs utilisateurs… peu à peu j’ai pris conscience que ce qui animait cette association était aussi très militant et axé sur des enjeux « idéologiques » dans le sens de réaliser des actions visant à faire évoluer les consciences, promouvoir le logiciel libre, lutter contre les GAFAM.

Et j’avoue que je me suis moins reconnu dans ces enjeux, Ça peut paraître paradoxal par rapport à mon engagement sur les #NuitDebout, mais en vrai même sur les Nuit debout ça n’a jamais été le côté tribune et réflexion et changements des mentalités qui m’attiraient, mais plutôt le fait de trouver un espace où l’on pouvait participer et collaborer librement avec plein de gens pour produire au mieux toutes sortes de choses sans que viennent se mêler des questions d’argent ni de hiérarchie (cuisine collaborative, organisation de la vie sur la place, résistance contre les flics…). Je crois que je suis pas très militant dans l’âme, dans le sens que j’ai pas la volonté de faire changer les consciences, ce qui m’intéresse c’est plus de partager des expériences de rapports sociaux désaliénés, et d’inviter un max de gens à me rejoindre dans le plaisir que représente le fait de cesser collectivement de se soumettre au fric et à l’état.
Je pense aussi que j’ai pu ressentir un décalage car je suis partagé quant à leur rigueur sur les moyens à employer. J’utilise quotidiennement Google, Chrome, etc. et dans mon travail c’est pareil je vise surtout à utiliser les meilleurs outils dans l’objectif d’offrir des services agréables et gratuits aux personnes qui utiliseront mes travaux sans me préoccuper de leur caractère libre ou non. J’ai tendance à privilégier les outils qui m’offrent pratiquement plus de pouvoir d’agir plutôt que des outils « libres ». Cela ne veut pas dire que je ne reste pas attentif aux effets secondaires de l’utilisation de certains trucs propriétaires, mais je ne les exclus pas d’emblée, et les préfère parfois.

Cliquez pour voir une très, très belle page Framasite : celle du groupe musical Volivent.

 

Tu as eu aussi l’occasion d’intervenir pour présenter ton projet personnel, de quoi s’agit-il au juste ?

C’est ce projet qui m’a amené à l’informatique, guidé dans mon apprentissage des technos du développement web : durant les Nuits debout j’ai pris tristement conscience que 80% des projets ne se font pas car les personnes avec des initiatives se rencontrent trop difficilement. Du coup j’ai essayé de remédier à cela en faisant du lien, d’abord en notant sur un carnet, puis sous forme de fiches papier et de panneau d’affichage où chacun pouvait partager son projet pour potentiellement trouver des personnes pour le rejoindre. Ça avait plutôt bien marché, même si c’était pas du tout scalable pour parler en termes dev : en effet, en trois jours, il y avait 70 fiches de projets et d’initiatives sur le tableau d’affichage et cela devenait très complexe pour quelqu’un venant sur la place pour la première fois de trouver rapidement un projet sur lequel s’investir.

J’ai donc commencé à créer un outil, en réfléchissant à la manière de répondre au mieux à ce besoin de mise en relation dans le monde non-marchand. En effet, le monde marchand dispose des Pôle emploi et des agences d’intérim pour mettre en lien les gens sur la base de leurs compétences et des projets, alors que le non-marchand n’a pratiquement rien de plus que le bouche-à-oreille, et c’est très frustrant de voir que 80% des projets non marchands sont morts-nés faute de participants alors que très souvent les personnes potentiellement intéressées existent, mais ne sont pas dans le même réseau, le même cercle élargi de connaissance. Et on a la même problématique en ce qui concerne le partage, dans une grande majorité de cas, on se résout à aller au supermarché acheter un truc dont on a besoin alors qu’il y a probablement dix personnes dans le quartier, ou une asso qui produit cette ressource qui pourrait le donner ou le prêter gratuitement.

La troisième problématique à laquelle j’aimerais pouvoir apporter une solution avec cette plate-forme, c’est celle de la multiplication exponentielle des outils collaboratifs lorsqu’on est investi sur plusieurs projets. je reçois par exemple en ce moment les mails de 5 listes de mails bavardes, je suis inscrit sur trois systèmes de chat différents, 2 pads, github et gitlab, et un kanban, tous avec leurs adresses différentes que je perds une fois sur deux… Bref : l’enfer, alors que pourtant je crois être plutôt à l’aise avec l’outil informatique. Je rêve de quelque chose qui pourrait les centraliser sur une plate-forme, avec tous mes projets, et pour chacun des projets son agenda, sa liste de tâches, etc. — et ne plus me perdre dans un dédale d’outils collaboratifs dispersés.

L’idée de HUmanBeing c’est de répondre à ce besoin, en proposant :

  • une plate-forme de mise en relations des utilisateurs sur la base des projets qu’ils créent, de leurs centres d’intérêt, de leur localisation, et de leurs compétences
  • une suite d’outil collaboratifs pour tous les projets créés grâce à la plate-forme : agenda, forum-chat de discussion, liste des tâches.
  • une plate-forme de partage pour que les projets et les utilisateurs puissent partager les ressources dont ils disposent, qu’ils créent et dont ils ont besoin.
  • une plate-forme sans modérateur, dont la modération se fait de manière autonome par des votes de la communauté d’utilisateurs venant réguler les conflits et poser les base de ce qu’elle trouve acceptable ou non, une communauté créant ainsi sa propre légitimité autonome des lois étatiques.

L’objectif et l’ambition de cette plate-forme serait dans un premier temps d’apporter un sacré plus à tous les projets collaboratifs et non-marchands en leurs permettant de scaler et de prendre de l’ampleur au-delà des cercles de connaissances de chacun et donner du coup plus de possibilités d’agir sur le monde à tous ceux qui ont déjà cette éthique de vouloir donner du sens à leurs activités au quotidien.
L’espoir qui m’anime au-delà d’apporter ces possibilités à ces personnes, est lié à ma façon pessimiste de penser l’avenir de la société marchande et de l’état dans leur capacité à répondre aux besoins des personnes. Je m’imagine la prochaine crise économique, lorsque par exemple le ramassage des ordures s’arrêtera en raison de la faillite de ma communauté de communes et que l’accès aux soins sera devenu aussi difficile qu’en Grèce… et je me dis, si à ce moment on a un outil qui me permet de trouver 2 médecins, 4 infirmiers pour faire un centre de soins autogéré, ou alors faire une recherche de 5 chauffeurs poids lourds et 10 autres personnes pour créer une équipe de ramassage des ordures en moins d’une journée… Je me dis que cet outil pourrait être un formidable vecteur par lequel la collaboration, le partage et la gratuité pourraient s’imposer face au capitalisme sur le plan de la production matérielle de l’existence des hommes.

Et je me suis mis à le réaliser.

J’avais commencé en symphony (un framework PHP), mais c’était vraiment inadapté, donc je suis parti sur le framework METEOR JS très à l’aise pour gérer le temps réel : bien pratique lorsqu’il s’agit de collaborer. Pour l’instant j’ai une messagerie en temps réel fonctionnelle (chiffrée end to end), on peut créer un projet, inviter d’autres membres, le rechercher en fonction des compétences, localité qu’ils ont renseignée, chaque projet et chaque utilisateur peut s’exprimer publiquement grâce a un blog tout simple. je dirais que j’ai fait 80 % du travail de réflexion et 40 % de l’écriture du code avant de pouvoir en sortir une version Bêta…

Ça fonctionne pas trop mal en local, c’est même plutôt joli, mais j’ai encore des soucis à le mettre en prod sur une version de démo et pas mal de bugs, dont certains pour lesquels je n’ai aucune piste de solution… mais bon, ça viendra, et je suis hyper motivé, j’ai appris à coder pour pouvoir créer cette plateforme, ce projet me tient à cœur depuis 2 ans maintenant, je suis pas prêt de baisser les bras !

J’ai récemment réalisé une vidéo pour présenter l’avancement du travail que vous pouvez regarder ici :

Cliquez sur l’image pour regarder la vidéo (YouTube)

 

Tu as demandé des retours, ils te les ont donnés, ça ne t’a pas paru trop violent ?

Ben d’une certaine manière les retours étaient très bons, ils ont été impressionnés par la quantité et la qualité du travail que j’avais réussi à réaliser en si peu de temps ainsi que par ma courbe d’apprentissage très rapide. D’autre part, l’objectif émancipateur visé par le projet à fait écho au projet associatif de Framasoft, on pourrait même dire que le projet HUmanBeing vise à inscrire la force de la création collaborative de contenus immatériels du libre (Wikipédia, Linux, etc..) dans la réalité matérielle concrète de la production des besoins des hommes.

Néanmoins à mes yeux trois points font que ce projet n’avait pas les prérequis nécessaires pour pouvoir bénéficier du soutien matériel que j’ai demandé à Framasoft (même si cette interview me permet de le faire connaître assez largement et constitue un soutien qui est toujours bon à prendre).

  • Ce projet pose un rapport radical vis-à-vis de l’État et de l’économie ( « nous n’avons rien à attendre d’eux, créons un outil d’organisation qui nous permet de nous en émanciper »). Je pense que ça s’éloigne de la ligne directrice framasoftienne qui aurait plutôt tendance à vouloir créer des outils favorisant l’économie sociale et solidaire, des outils permettant plus d’interactions citoyennes (framapetition, etc.), avec des valeurs de gauche moins radicales, basées, comme une grande partie de la gauche actuelle sur les valeurs du conseil national de la résistance : un état fort et démocratique gérant la répartition des richesses et le soutien au plus démuni. Il me semble que ce temps-là est dépassé, il appartient a une époque où les hausses de productivité annuelles permettaient au capitalisme ce genre de concessions aux travailleurs, et que l’état et l’économie marchande nous démontrent jour après jour, et année après année que nous n’avons rien à attendre d’eux, si ce n’est l’intensification de l’exploitation de l’homme par l’homme et la destruction de l’écosystème permettant la vie des hommes.
  • D’autre part il me semble aussi que la façon d’envisager ce projet s’écarte de l’idéal de décentralisation poursuivi par Framasoft, dans la mesure ou il se propose de rassembler sur une seule et même plateforme beaucoup de services. dans l’idéal je rêverais que HUmanBeing soit décentralisé, avec plusieurs instances communiquant entre elles sur un réseau commun, mais bon, il me semble que ça ne pourra venir qu’après avoir fait la proof of concept de cette plateforme, un début de comm dessus. Il faut bien se rendre compte que développer une application décentralisée double ou triple le temps de développement.
  • enfin la façon de penser la modération de cette plateforme : autogérée et potentiellement porteuse de projets en-dehors du cadre légal (celui qui fait que les riches sont de plus en plus riches et les pauvres de plus en plus pauvres ou jetés en prison), a pu être perçue à juste titre par Framasoft comme quelque chose mettant potentiellement en danger le reste de ses activités.

Enfin bon, je reste plein d’enthousiasme pour la suite, et sais que quand je suis motivé je suis capable de déplacer des montagnes et de résoudre tout un tas de problèmes. Toujours est-il que le soutien matériel de Framasoft aurait permis de solutionner le problème majeur de savoir comment je vais payer mon loyer si je passe 10 heures par jour à développer une plate-forme non marchande…

On voit qu’il reste du boulot pour mener à bien ton projet, c’est peut-être le moment de réunir une petite équipe de gens intéressés pour contribuer ?
Tu as mis les sources quelque part en ligne ? C’est codé en quoi ? Comment on peut contribuer ?

Ben ouais, carrément ! Le projet est dès le départ très très ouvert à toutes les contributions, le « cahier des charges » s’est fait avec les contributions de plusieurs dizaines de personnes durant les Nuits debout, et au fil du temps je fais des rencontres et j’ai quelques petites contributions extérieures, plus tous mes amis qui me font des retours au fur et a mesure que j’avance dans les fonctionnalités. J’ai bien conscience que c’est un énorme projet et qu’il faudra qu’on soit nombreux à y participer pour que ça puisse exister durablement.

Le projet est donc codé en JavaScript, HTML, CSS, mongoDB autour du framework METEOR JS (et matérialize css pour le front end), qui est un outil assez facile à prendre en mains avec de très bons cours en français et en anglais et énormément de ressources. Il faudrait aussi des personnes avec des compétences en comm’ et aussi des personnes sans compétences particulières, avec juste l’envie de participer à l’aventure, et qui apporteront sans aucun doute au projet toute leur richesse.

Comme dirait un enfant du paradis : A vot’ bon cœur M’sieurs dames !

L’asso te remercie de ton implication et de ton travail et te souhaite une pleine réussite dans tes projets. On te laisse le mot de la fin comme d’habitude.

Je vous remercie de m’avoir fait confiance dans la création de Noemie CMS, et de m’avoir permis de faire ce qui me plaît le plus : contribuer, par mon travail, au bien-être des personnes qui m’entourent.
Je profite aussi de cette interview pour renvoyer vers mon CV (créé grâce aux pages Framasite et donc grâce a NoemieCMS), et informer les lecteurs qui auraient des pistes que je suis actuellement à la recherche d’un emploi.

Merci beaucoup de m’avoir offert cet espace d’expression, ce fut un plaisir de répondre à cette interview.