PROJET AUTOBLOG


Marien Fressinaud

Site original : Marien Fressinaud

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Mon (futur) service de veille

vendredi 12 juillet 2019 à 11:30

J’ai partagé il y a quelque temps un questionnaire destiné à étudier le marché des agrégateurs d’actualité dans le but d’une potentielle création d’entreprise. Mon objectif était de mieux connaître le marché actuel, d’évaluer un début de tarification et de mieux connaître les attentes de potentiel·les client·es. J’en profite d’ailleurs pour remercier les 281 personnes qui ont pris le temps de répondre, ça m’a bien aidé à y voir plus clair dans ce que j’allais faire !

Je reviens dans cet article sur les raisons qui m’encouragent à mettre en place un tel service et j’appuie certains éléments par les questions posées par le questionnaire.

La raison de faire

Si vous suivez ce blog, vous savez sans doute que je suis au chômage depuis décembre dernier. Loin d’être une situation subie, j’en ai profité pour poser à plat mes envies à travers un travail d’introspection. Je comptais alors, sans le dire explicitement, suivre une voie « par défaut » qui était celle de me mettre en auto-entrepreneur pour faire du service auprès d’entreprises. J’ai mis un moment avant de prendre réellement conscience que ce métier ne m’intéressait absolument pas.

Mon chômage s’écoule doucement mais sûrement depuis maintenant 7 mois, finançant d’une certaine manière mes activités bénévoles (en témoigne l’évolution de ma page « En ce moment » ces derniers mois). Il est toutefois temps que je commence à travailler concrètement sur mon futur professionnel afin de me dégager un salaire. L’idée n’étant pas de générer un salaire mirobolant, mais juste assez pour pouvoir vivre tranquillement (par transparence, je vise entre 1 500 et 2 000 € par mois).

Je n’envisage pas mon avenir professionnel en tant que salarié d’une entreprise « traditionnelle » où l’on décide à ma place ce sur quoi je dois travailler. J’ai toujours pris soin de ma liberté de choix et je compte bien continuer. En avant donc pour créer ma propre structure. Aussi, l’envie de créer un service en ligne de manière professionnelle me trotte dans la tête depuis plusieurs années et cette remise en question m’a permis de la remettre au goût du jour.

Pour terminer sur ma raison de « faire », je souhaite revenir sur la limitation volontaire de mon salaire. J’ai à cœur de pouvoir travailler et être d’une quelconque aide au monde associatif, en particulier celles œuvrant dans les luttes pour le climat ou les luttes sociales. Le monde économique dans lequel nous vivons ne valorisant pas (encore ?) le travail qui peut être fait dans ces milieux-là, il s’agit bien souvent de bénévolat. Mon but en limitant mon salaire est donc de générer du temps libre que je pourrai mettre à dispositon d’associations : « gagner moins pour travailler plus utile » en quelque sorte.

Les raisons d’être

Se pose maintenant la question de la raison d’être du service en ligne. Quelle raison me fait dire que le service aura une quelconque utilité ? À quel besoin je réponds ?

L’une des choses que j’observe depuis longtemps, en partie à travers mon action au sein de Framasoft, c’est le cloisonnement de nos données et notre assentiment à déléguer le choix de nos sources d’information à des plateformes privées telles que Twitter ou Facebook. On l’a vu notamment lors du scandale de Cambridge Analytica : cela peut avoir des conséquences désastreuses sans réelle réflexion politique ni mesure de contre-pouvoir.

Pourtant, il est important de pouvoir se tenir au courant de l’actualité. C’est le cas pour toutes les personnes qui veulent s’informer de ce qu’il se passe dans le monde, mais aussi à des échelles plus locales. Il peut s’agir de politique, d’évènements festifs, de sport, etc. D’un point de vue professionnel, la veille spécialisée permet de se tenir à jour des évolutions de son domaine (on peut penser à l’informatique mais aussi au domaine législatif par exemple).

À travers notre veille, nous nous faisons influencer par les points de vue des personnes qui publient l’information, voire par la pub qu’elles y insèrent. Aucune information n’est totalement objective, mais nous décidons de suivre tel ou tel site de manière encore à peu près consciente. Cela devient plus pernicieux lorsque cette veille est orientée sans nous le dire par les plateformes sur lesquelles nous l’effectuons. Il me paraît par conséquent important d’avoir confiance dans ces plateformes (et donc les outils techniques sous-jacents).

Dans ce que j’explique ici, j’identifie deux raisons d’être distinctes :

Cela implique tout un tas de choses que je détaille dans la partie suivante en me basant sur les chiffres qui ressortent de mon questionnaire.

La philosophie du service

Connexion

J’ai eu beaucoup de réponses à mon questionnaire de personnes m’expliquant qu’elles préféraient utiliser un logiciel sur leur propre PC, voire même une personne m’a affirmé que les services en ligne étaient inutiles. Si je comprends très bien que l’on puisse préférer un logiciel sur sa machine, il me semble néanmoins que les outils de veille en ligne ont aussi leur utilité, ne serait-ce que pour faire face aux usages liés à la mobilité (c’est-à-dire lire sur différents terminaux en fonction de la journée tout en gardant synchronisé ce que j’ai lu ou marqué en favori). La connexion est aussi intéressante dans les interactions qu’elle peut apporter. Si notre suivi de l’actualité a migré sur des plateformes sociales, ce n’est pas parce qu’elles sont meilleures pour cet usage spécifique mais parce qu’elles permettent de réagir, compléter et confronter l’information à d’autres avis. Aujourd’hui les agrégateurs d’actualité ne le permettent effectivement pas, mais il s’agit pour moi d’une évolution qui aurait tout son sens.

Simplicité

Ensuite, la simplicité d’usage est importante si je veux toucher un public autre que celui qui est prêt à creuser les fonctionnalités ou qui comprend déjà le fonctionnement d’un agrégateur de flux RSS. C’est une composante essentielle si je veux poser mon service comme une véritable alternative face à d’autres plateformes. Deux questions dans mon sondage devaient d’ailleurs me permettre de valider cet aspect-là. À l’argument « Les fonctionnalités du service sont très ciblées et restent volontairement simples », 58% des personnes ont répondu qu’il les inciterait à utiliser le service, et 32% non. L’argument corollaire « Le service dispose de nombreuses fonctionnalités (au risque de devenir complexe) » a reçu 38% d’avis positifs et 54% négatifs. J’admets toutefois que ce deuxième argument était orienté, j’aurais sans doute dû éviter. On voit néanmoins que les rapports s’inversent de façon très claire. Et j’ajoute que le questionnaire a touché un public plutôt geek, plus enclein à fouiller un logiciel, alors qu’il ne s’agira pas forcément de ma cible finale (j’y reviens plus loin).

Transparence

La transparence du service m’apparaît comme une composante essentielle dans le respect des utilisateur·ices car cela peut amener à comprendre certains choix qui sont faits. Par exemple, une majorité de personnes sont prêtes à payer 1 ou 2 € par mois pour utiliser le service. Néanmoins, plus le prix sera bas, et plus je devrais avoir de client·es pour générer mon chiffre d’affaire. Qui dit plus de monde dit aussi plus de support à faire (donc moins de temps par personne), un serveur plus puissant avec plus de capacités de stockage, etc. Être transparent c’est aussi expliquer que le prix se calcule en fonction de nombreux paramètres et que s’il peut paraître cher, il y a une raison derrière. Cet argument sur la transparence des prix a d’ailleurs emporté l’adhésion de 70% des répondants à mon questionnaire, il y a donc une véritable demande.

La transparence induit également l’utilisation de code libre. Une telle condition n’est pas une fin en soi mais permet à qui le souhaite et le peut de vérifier que le code respecte ses utilisateur·ices et qu’il est effectivement à leur service. Sans surprise vis-à-vis du public touché, le logiciel libre est un argument pour utiliser le service pour 81% des répondants.

Confiance

La question de la confiance était posée sous différentes formes (et est d’ailleurs déjà traitée à travers la transparence). La confiance, c’est ce qui va convaincre les gens de venir, de rester (donc de payer) et de parler autour d’eux de mon service. C’est aussi peut-être ce qu’il y a de plus compliqué à assurer sur le long terme. Cela passe à la fois par le dialogue et par les actes ; les critiques ne seront pas tendres en cas (d’accumulation) de faux-pas.

Les deux composantes essentielles du dialogue que je vois sont la communication sur les médias sociaux et le support offert aux client·es. Une mauvaise communication ou un mauvais support, c’est ce qui peut plomber une image de marque ; à l’inverse d’un bon support, dont vous n’entendrez jamais parler. Quant à l’excellent support, c’est les anciens de Captain Train / Trainline qui en parle le mieux. À l’argument du support par email, j’ai d’abord été surpris de n’avoir que 51% de réponses favorables… mais cela ne veut pas dire qu’il ne faut pas en faire, juste que cela ne correspond pas à un argument marketing qui justifierait de changer de service.

Ensuite, je compte aligner mes actes avec mes paroles à travers au moins trois actions :

D’un point de vue marketing, les deux premiers arguments sont sans appel : 82 et 85% d’avis favorables. Le troisième est intéressant car c’est celui qui a recueilli le plus de personnes ne se prononçant pas (26% alors que les autres arguments tournent plutôt entre 7 et 15%). Je l’analyse du fait que les CHATONS n’est pas (encore) un collectif très connu et que les personnes ne savent donc pas quoi en penser. En revanche, 78% des avis exprimés sont favorables, ce qui est plutôt positif dans l’ensemble !

Qualité de service

Pour terminer, la qualité du service (performances et maintenance du service en ligne) devra être au cœur de mes préoccupations si je veux rester crédible. Sur ce point néanmoins je dispose d’un peu moins de billes aujourd’hui, même si je maintiens déjà Lessy sans trop de soucis.

L’une de mes certitudes toutefois est qu’il ne faut pas lésiner sur les moyens et notamment sur les capacités du serveur et la sécurité que ce soit maintenance, monitoring ou backups.

Pour avoir vécu quelques applications en production douloureuses, j’ai également conscience qu’il y a véritablement un changement d’esprit à opérer entre un service offert (type lessy.io) et un service payant professionnel.

Marché et tarification envisagées

La définition d’un marché est un exercice compliqué car, d’une part, je ne l’ai jamais fait et, d’autre part, c’est un peu naviguer à l’aveugle. Dans le cas d’un agrégateur d’actualités, c’est encore plus casse-gueule car les technologies comme RSS semblent à la fois sur le déclin et déjà fortement investies par l’auto-hébergement. On me l’a d’ailleurs (sous-)entendu de (très) nombreuses fois dans les commentaires de mon questionnaire. 70% des répondants utilisent déjà un service hébergé ou sur leur propre PC et seulement 37% se disent prêt·es à payer pour un tel service ; ce qui ne signifie pas non plus qu’ils et elles viendront chez moi ! Qu’à cela ne tienne, je vais tout de même tenter une réponse.

Je vois très clairement deux périodes pour mon service. La première consistera à proposer un service basé sur un logiciel existant (très certainement FreshRSS). Je viserai alors un public déjà sensibilisé à ce genre d’outils, qui n’a pas l’envie ni le temps de maintenir un service en ligne et qui est prêt à payer pour déléguer ces tâches à quelqu’un d’autre. J’ai bon espoir d’arriver à générer un peu de chiffre d’affaire, de quoi commencer à me sortir un salaire (probablement pas énorme). En parallèle de cette période, je compte améliorer le logiciel pour l’orienter vers quelque chose de plus grand public et moins dépendant de technologies précises. Tout du moins, je pense qu’il sera nécessaire de repenser la façon de s’abonner à des sites. Je dis « améliorer » mais comme FreshRSS est déjà soutenu par une communauté, cela se fera nécessairement en accord avec celle-ci. Ce qui m’amènera donc à la deuxième période où je pourrai toucher un public élargi et qui ne se soucie pas des technologies sous-jacentes. En résumé, plutôt que de lutter pour m’insérer sur un marché hyper-concurrentiel, je compte en changer pour me permettre de respirer.

Un autre point, qui rajoute peut-être une couche de complexité, c’est que je compte m’adresser à un public exclusivement francophone. On peut trouver cette décision un peu étrange à l’heure de la connexion mondiale, mais je fais ce choix de manière pragmatique pour me faciliter la communication. Je ne serai en effet jamais aussi efficace qu’en français pour véhiculer une idée ou pour aider une personne sur le support. Je crois que ce choix me permettra de m’économiser de l’énergie pour d’autres tâches plus importantes (et j’aurai déjà beaucoup à faire !) Bien entendu, si le service se base sur FreshRSS, il existe déjà de nombreuses traductions donc je ne m’amuserai pas à les enlever. Je parle ici bien uniquement de la communication.

Concernant la politique tarifaire, cela reste encore à valider mais je partirais sur :

Concernant le dernier point, plus de 90% des répondants se contentent de moins de 500 flux ce qui me semble tout à fait gérable. Reste les 10% restants et les abus éventuels qui pourraient faire exploser les coûts de stockage et de traitement notamment. J’envisageais d’abord de mettre une limite à 500 abonnements, déblocable sur simple demande au support, mais d’un point de vue marketing je trouve qu’il est plus efficace de ne pas mentionner de limite et de gérer les abus au cas par cas. L’avenir me le dira !

Aussi, j’ai décidé de ne pas appliquer de tarifs évolutifs en fonction du nombre d’abonnements. Les avis étant très partagés sur la question, il me semble qu’il est plus simple d’avoir un tarif unique.

Avenir envisagé sur le long terme

La grande question qui se pose lorsque l’on s’abonne à un service en ligne, c’est celle de sa pérennité. Est-ce que le service sera toujours là dans un an ou deux ? Vous aurez peut-être compris que je ne souhaite surtout pas me lancer sur un modèle « startup » qui consiste pour beaucoup à cramer de l’argent dans l’espoir de trouver un business model… bien au contraire. Comme déjà évoqué plus haut, mon premier objectif sera de me générer un revenu correct pour vivre. Cet objectif, j’aimerais l’atteindre globalement seul afin de valider un certain niveau d’autonomie. Mais maintenir un service seul sur le long terme ne me paraît absolument pas viable et extrêmement fragile, c’est pourquoi j’envisage le long terme au sein d’une structure avec plusieurs personnes. Il est bien sûr trop tôt pour m’avancer sur quoi que ce soit, en particulier sur la forme que prendrait cette structure. J’ai toutefois une ambition, directement inspirée par la société Basecamp : celle de maintenir le service jusqu’à la fin d’Internet.

Cela ne peut rester qu’une ambition tant que je ne génère pas de revenu et que la stabilité de l’entreprise n’est pas prouvée, mais je trouve que c’est une vision juste et encourageante que ce soit pour moi ou pour mes (futur·es) client·es. Là où beaucoup trop de services sont aujourd’hui éphémères, je trouve qu’il est rassurant de savoir qu’un tel endroit est prévu pour durer. J’espère également que cela me poussera à faire les choses « correctement » et inspirera d’autres personnes à faire de même.

Prochaines étapes

Tout ce que je viens de raconter reste très théorique tant que je n’ai pas commencé à avancer dessus. Je n’ai d’ailleurs pas encore de date à donner quant à la sortie officielle du service. J’ai commencé un plan pour avoir une vue d’ensemble de tout ce que j’ai à faire d’ici là. Si je suis assez confiant sur le fait de pouvoir avancer relativement vite, le service ne devrait pas sortir pour autant avant la fin de l’année. J’ai notamment, avant ça, un voyage à faire en Bretagne ; voyage que je repousse depuis plusieurs années… mais cela risque bien d’être le dernier moment si je veux le réaliser sous la forme que j’envisage.

En parallèle de ce travail de définition de mon service, j’ai également réalisé des documents prévisionnels pour connaître les coûts de mon projet et comprendre mon chiffre d’affaire. Il me reste encore à affiner ces chiffres, en particulier les objectifs en terme de nombre de client·es. La prochaine étape que je vois est celle du choix du statut légal de l’entreprise. J’envisage aujourd’hui deux possibilités : le statut de micro-entreprise ou rejoindre une coopérative d’activité et d’emploi. Je reste néanmoins toujours à l’écoute d’autres solutions.

Quant au nom du service… je le garde pour plus tard 😉

Questionnaire sur votre utilisation des agrégateurs d’actualité

mercredi 29 mai 2019 à 17:50

J’ai partagé hier matin sur les réseaux sociaux un questionnaire pour étudier l’utilisation des agrégateurs d’actualité (ou « de flux RSS »). Je reviendrai plus longuement dans un autre article sur le pourquoi et le comment mais, pour faire court, je souhaite me mettre à mon compte d’ici la fin de l’année et j’ai pour cela besoin de connaître un peu mieux les attentes des personnes utilisant de tels outils.

J’ai pour le moment récupéré plus de 200 réponses, ce qui représente le double de ce que j’espérais initialement. J’aurais toutefois souhaité un peu plus de réponses de personnes prêtes à payer pour un tel service (un peu plus du tiers des répondants pour le moment).

Si vous souhaitez me donner un petit coup de main, n’hésitez donc pas à remplir ce questionnaire et à le partager auprès de vos proches et collègues. Je l’ai pensé court pour pouvoir le remplir en 5 minutes sans avoir à se creuser la tête. Je ferai sans doute un questionnaire plus détaillé ensuite pour les personnes acceptants de prendre un peu plus de temps.

Je publierai l’analyse des résultats sous la forme probable d’un article de blog afin que cela puisse bénéficier à n’importe qui.

Merci d’avance !

Concevoir les logiciels de demain

mardi 16 avril 2019 à 11:05

J’ai donné le dimanche 7 avril dernier une conférence à l’occasion des Journées du Logiciel Libre (JdLL). L’article qui suit correspond à la transcription de ce que j’y ai raconté. Je me proposais de poser des réflexions autour de la conception des logiciels de « demain », en intégrant à la fois des considérations environementales et d’impact utilisateurice. Loin d’être exhaustive, cette présentation était surtout l’occasion de jeter quelques pistes à défricher ensuite ensemble. Le format lui-même tentait de faire intervenir les personnes venues m’écouter. Sur ce point j’ai été particulièrement satisfait que les conversations se déroulent de manière aussi fluide, sans accaparement de la parole ; vraiment merci aux personnes qui étaient là ! J’ignore si elles sont reparties avec ce qu’elles étaient venues chercher, c’était finalement assez éloigné de ce que j’avais en tête au moment de proposer le sujet. J’ai en tout cas pris plaisir à donner cette conférence (même pas stressé !) Pour bien faire, il faudrait maintenant que je creuse chaque sujet dans des articles spécifiques, il y a de quoi faire.

La transcription est plus complète que ce que j’ai raconté à l’oral vu que j’ai nécessairement oublié de dire des choses. Je l’ai aussi annotée pour redonner du contexte lorsque nécessaire. Les quelques diapos sont accessibles en suivant ce lien.


Introduction

Je vais commencer par vous poser une question : qui ici s’est déjà posé la question d’adopter un mode de vie numérique plus en accord avec la planète ?

Note : tout le monde ou presque a levé la main alors que la salle était pleine. Très content de cette réponse même si du coup ça a augmenté mon syndrome de l’imposteur. Ça a toutefois bien aidé à alimenter les discussions qui ont suivi.

Si je vous pose la question, c’est parce qu’en préparant cette conférence, je me suis rendu compte que je n’arriverais jamais à aborder tous les sujets qui pourraient l’être. Je risque de perdre des gens, et je risque surtout de ne pas répondre aux attentes de celleux qui se sont posées plus de questions que moi. Alors j’aimerais faire de cette conférence un espace participatif en tentant un format un peu particulier. Je vais introduire les deux parties de notre conférence pendant 10 à 15 minutes chacune, et à la fin de chaque partie, je vous poserai une question pour ouvrir le sujet. Le but étant de venir compléter ce que j’aurais dit, ou de débattre selon les envies. Ce que je vais raconter paraîtra sûrement incomplet aux yeux de certaines personnes, mon but n’est pas forcément de rentrer dans le détail mais de défricher un certain nombre de sujets… en les survolant donc.

Mon objectif est que vous repartiez avec trois éléments. Le premier, c’est que vous vous posiez la question de savoir si votre vie numérique est en accord avec vos convictions. Le deuxième, ce sont des idées, des outils pour concevoir plus simple, plus orienté « bien-être » utilisateurices. Enfin, je voudrais tracer quelques sillons de sujets que vous auriez envie de creuser, d’approfondir en sortant de cette salle.

Je vous mets un pad à disposition pour retrouver la transcription de ce que je vais raconter ainsi que les diapos. Mais je vous encourage, si vous prenez des notes, à le faire de manière collaborative sur ce pad. Si vous avez des questions, des retours à faire sur le fond comme sur la forme, allez-y. Si vous voulez partager des liens, des ressources ou si vous voulez échanger des coordonnées pour discuter de tout ça entre vous plus tard, faites-vous plaisir !

Note : personne n’avait son PC sur les genoux du coup l’idée du pad collaboratif est tombée à l’eau. Pas très grave, les gens étaient d’autant plus à l’écoute.

Moi, super-héros et développeur de sites statiques

Pour commencer, je vais vous parler de moi. Et donc aussi un peu de vous, je l’espère.

L’autre jour en trainant sur Twitter, je suis tombé sur une photo montrant un ours sur la banquise, rachétique et visiblement mal en point. Le commentaire sous la photo laissait entendre que son état était dû au réchauffement de la planète. Du coup, ni une ni deux, un sentiment de révolte m’envahit ! « Comment peut-on laisser faire ça ? » Mais l’ours n’est pas la seule raison de cette colère : chaque tweet, chaque article traitant d’inégalité, de racisme ou d’effondrement vient alimenter ce sentiment d’injustice, et par la même occasion, cette envie de vouloir tout résoudre. Ce syndrome, c’est celui du super-héros, celui qui est capable de tout remettre dans l’ordre. Nous avons tous envie d’être un super-héros pour résoudre les problèmes dans le monde. Mais notre kryptonite à nous, ce n’est pas un caillou radioactif, c’est les photos de chats « vraiment-trop-mignons ». Invariablement après une telle photo, notre colère s’estompe.

Heureusement, il y a celleux qui font. Celleux qui font pipi sous la douche pour économiser l’eau de la planète. Celleux qui éteignent la télé avant de se coucher pour sauver la banquise de ce pauvre ours famélique. Et il y a celleux qui développent des sites statiques pour réduire leur impact carbone. Alors oui, ça vous fait peut-être rire : « C’est pas comme ça qu’ils vont sauver le monde, hé ! » Mais en attendant, est-ce qu’ils et elles ne font déjà pas un peu plus que vous, en colère derrière votre écran ?

Évidemment, je vous présente des situations caricaturales, on est toutes et tous un peu des deux à la fois, et il est hors de question de confronter celleux qui font à celleux qui se révolent. Nous ne sommes pas toutes et tous égaux face à l’action politique (au sens large du terme), notamment à cause de nos inégalités face au temps, aux ressources ou à notre position sociale. Je propose que nous restions tous humble vis-à-vis de ce que l’on peut entreprendre et d’accepter que nous avons tous une part d’incohérence que nous travaillons chacun·e à notre rythme. Je suis convaincu par ailleurs (c’est donc subjectif) que ce sont nos actions individuelles (bien que parfois un peu ridicules) qui nous font avancer sur le chemin d’une action plus collective et plus efficace. C’est parce que j’ai rejoint une AMAP un jour que j’ai eu l’idée de faire une conférence participative et que demain je m’associerai peut-être à un collectif pour faire avancer les causes qui m’importent, en espérant peut-être un effet boule de neige.

Mais revenons-en à notre sujet : j’ai moi-même développé un générateur de sites statiques avec dans l’idée de faire « mieux ». Évidemment, je sens bien que c’est totalement insuffisant, mon site personnel notamment a une toute petite visibilité, quel impact pourrait-il bien avoir sur la planète ? Alors si mon site statique est insuffisant, qu’est-ce que je fais ? J’ai essayé de formaliser un peu les problèmes que le numérique me pose.

Partons de ce schéma représentant la répartition de notre empreinte carbone. On y voit notamment que notre usage du numérique possède un impact aussi important que celui de notre consommation de viande et de poisson et on peut parier sur une augmentation au moins à court terme.

schéma montrant que l’empreinte carbone des Français concernant nos achats et usage du numérique est de 1180 Kg eq CO2/an tandis que notre consommation de viande et de poisson est de
1144.

Cet empreinte est notamment due à notre façon d’acheter compulsivement du matériel et d’en changer sans réel besoin : on change de téléphone en moyenne tous les 2 ans et d’ordinateur tous les 3 à 4 ans ! Mais je laisse ce sujet à d’autres, je veux me concentrer sur le sujet du développement logiciel aujourd’hui.

Lorsqu’on cherche comment est réparti cet impact numérique, c’est la consommation de vidéos qui ressort principalement. Ainsi, selon le Shift Project, « Le visionnage d’une vidéo en ligne de dix minutes disponible dans le “Cloud” induit par exemple une consommation électrique équivalente à la consommation propre d’un smartphone sur dix jours ». Vous penserez à moi la prochaine fois que vous regarderez une vidéo de « chatons-trop-mignons » en haute définition sur Youtube !

On pourra donc commencer à nous questionner sur nos usages un par un, en commençant peut-être par regarder moins de vidéos et en qualité plus basse, le but étant à terme d’avoir un usage plus respectueux de la planète. Mais je me pose quand même une question : suis-je vraiment le fautif dans l’affaire ? Je veux dire, nous sommes tout de même des millions d’utilisateurs et utilisatrices à partager une consommation irraisonnée de vidéos en ligne et nous partagerions un même usage sans s’être jamais concerté·es ? Excusez-moi mais je flaire quand même quelque chose de louche dans l’affaire ! Est-ce que ce ne serait pas plutôt l’outil qui me pousse à l’usage ? Mais pourquoi ? Qui l’a conçu ? Dans quel but ?

Lorsque je me rends sur Youtube, c’est facile : c’est Google qui a conçu cette plateforme de divertissement. Mais moi, lorsque j’entends Google, j’ai un petit drapeau qui se lève dans la tête et qui me dit « attention, Google est l’une des plus grosses capitalisations boursières et génère la grande majorité de son chiffre d’affaire à partir de la pub ! » Et pour que la pub génère de l’argent, il faut des personnes pour la regarder. Idéalement beaucoup. Et qui reste longtemps. Est-ce que j’ai réellement consenti à regarder beaucoup de vidéos à la suite… ou est-ce Google qui m’a incité à le faire pour vendre du « temps de cerveau disponible » (comme dirait l’autre) et donc m’incite à rester sur sa plateforme ? Vous l’aurez compris, je touche du doigt un problème du capitalisme design de l’attention.

Donc non seulement il y a des usages, des logiciels qui ne respectent pas l’environnement, mais en plus ils ne respectent pas non plus leurs utilisateurices ! Est-ce qu’on ne pourrait pas y faire quelque chose ? Par exemple, si on commençait à virer cette colonne de suggestions de vidéos « qui pourraient nous intéresser » ainsi que l’enchainement automatique de vidéos ? Évidemment Youtube ne vous permet pas de le faire… mais est-ce qu’on aurait pas inventé une chose qui se nomme « le logiciel libre » ? Si je n’aime pas ce que fait telle ou telle plateforme de mon attention, alors je vais la modifier pour qu’elle me respecte, n’est-ce pas la promesse du logiciel libre ?

Nous sommes sauvé·es !

Vraiment ?

Prenons une plateforme de vidéos libre comme Peertube, et imaginons qu’il y ait au sein de Peertube un tel système de suggestions de vidéos ainsi que l’enchainement automatique de vidéos. Qui dans la salle se sent capable de modifier le code pour virer ces deux fonctionnalités ? Et en moins d’une heure (le temps que je considère comme raisonnable pour ne pas avoir l’impression de le perdre) ? Et bien je suis désolé de vous annoncer que toutes les personnes qui ont levé la main ne sont pas vraiment libre ! Ils ou elles sont dépendantes soit d’une personne externe, soit de temps et de ressources qu’elles devront dépenser de façon disproportionnée vis-à-vis du gain consenti. La liberté 1 du logiciel libre, celle qui implique que l’on peut modifier le code n’est finalement peut-être pas si bien respectée.

Note : quelques mains se sont levées dans la salle lorsque j’ai posé la première question, mais toutes se sont rabaissées lorsque j’ai précisé « en moins d’une heure ». J’ai bien conscience qu’il s’agit d’un temps arbitraire, mais j’avais à cœur de remettre en perspective le « temps disponible » que nous n’avons pas toutes et tous à disposition de manière égale.

J’ai donc posé lors de cette partie trois questions / problèmes qui se posent à moi aujourd’hui dans le numérique : mon usage du numérique respecte-t-il la planète ? Suis-je maître de mon attention lorsque j’utilise un logiciel ? Et suis-je capable de modifier ce logiciel pour qu’il respecte l’usage que je souhaite avoir de lui ?

Mais vous, quels problèmes vous pose le numérique aujourd’hui et aimeriez voir disparaître / résolu demain ?

Note : la discussion a eu tendance à dévier vers des solutions aux problèmes que j’ai soulevés. En cela le résultat de cette première question est mitigé, bien qu’il y ait eu des prises de parole vraiment pertinentes. N’ayant pas pris de notes, je ne serai pas capable de tout retranscrire ici cependant.

Cultivons notre jardin (ou une vision positive du numérique de demain)

Bien, maintenant que nous avons établi les problèmes que nous pose le numérique, on voit un peu mieux ce dont on ne veut pas… mais du coup, on veut quoi ?

Essayons pour cela de commencer par déterminer ce qui nous fait vibrer. Pour ma part, mon premier gros coup de cœur pour le numérique a été un jour d’hiver lorsque j’étais en troisième et que j’ai reçu mon premier PC à Noël. Lorsque j’ai réalisé que j’allais pouvoir avoir Internet directement dans ma chambre, je me suis tout de suite imaginé converser avec des personnes aux quatres coins du monde. C’est difficile de définir ce que j’ai ressenti mais je m’en souviens encore. Et c’était synonyme d’un numérique très positif.

Mais bon, à l’époque c’était compliqué l’informatique pour moi, on était encore en 56K avec le modem qui faisait du bruit dans le bureau de mes parents et j’étais persuadé qu’il fallait que j’installe le cédérom fourni par Orange pour que ça marche. Révélation : ça n’a jamais marché. Le temps est passé, Internet s’est fait omniprésent et me vendait de moins en moins de rêve ; une sorte de routine s’est installée.

Mais voilà qu’en 2017, avec les copains de Framasoft on lançait la campagne Contributopia. Je me souviens très bien du sentiment positif que j’ai eu lorsque Pouhiou et pyg nous ont présenté ce qu’ils avaient en tête. C’était le même sentiment que quelques années plus tôt, et ça dessinait un numérique tout aussi positif, voire plus.

Ce sont ces sentiments, ces imaginaires que j’aimerais qu’on arrive ensemble à reconstruire. Si on pouvait appuyer sur un bouton reset, il ressemblerait à quoi notre monde numérique ? Plutôt que de faire une liste détaillée qui prendrait des plombes à faire, je vais me contenter de parler de trois « zones » que j’aimerais rebatir si je devais repartir de zéro. Cette liste est donc très loin d’être exhaustive ! Notez que je vais mélanger alégrement numérique et Internet dans cette partie, c’est voulu.

Le premier point, c’est celui qui m’a fait vibrer au collège. C’est cette possibilité de pouvoir faire des voyages culturels, le cul vissé sur ma chaise et au prix d’une connexion Internet ; rencontrer son prochain sans contrainte de distance. Peut-être que ça ne fait pas rêver tout le monde, mais ça faisait rêver un garçon de 13 ans, donc pourquoi pas commencer par là ? Et de toute façon demain sera sans avion, autant commencer à changer notre façon de voyager.

Le deuxième sujet numérique qui me donne ce sentiment « wahou ! », c’est le partage des ressources et des connaissances. Vous connaissez peut-être ce petit site qui se nomme Wikipédia : il s’agit d’une encyclopédie en ligne alimentée uniquement par des bénévoles… je vous jure que ça marche ! Et tout le monde peut participer, donc même des sujets hyper spécifiques peuvent se retrouver être présentés en long et en large. Ce que j’aime, c’est ce pot commun, tout le monde contribue et tout le monde peut se servir sans léser personne. Il n’y a pas d’accaparement de la connaissance, c’est pour tout le monde.

Enfin, le troisième coin d’Internet que je trouve « beau », ce sont les zones d’information et d’entraide entre oppressé·es et personnes ayant besoin de se renseigner pour « améliorer » leur cadre de vie, pour s’organiser ou tout simplement pour discuter. L’anonymat notamment que permet Internet offre la possibilité de se dégager d’une certaine honte et de se sentir plus en confiance pour aborder certaines recherches et discussions. Les liens tissés entre les individus sur Internet sont généralement décrits comme « virtuels », mais je vous assure que ça ne l’est pas du tout. Ces liens numériques se prolongent d’ailleurs bien souvent dans la vie « réelle » (mais je préfère le terme « vie physique »).

Vous me rétorquerez alors : « ton Internet de demain il ressemble quand même vachement à celui d’aujourd’hui » et vous aurez sans doute raison. Sauf que dans celui d’aujourd’hui, ce ne sont pas ces aspects-là qui dominent. J’aimerais que les logiques de communautés prennent le pas sur les logiques individuelles en quelque sorte. Et l’élagage des usages que j’ai effectué permet de rendre le numérique plus soutenable. Mais un réseau d’entraide basé sur des vidéos en très haute qualité n’est pas forcément beaucoup plus soutenable, il faut bien évidemment se poser aussi la question de la conception en plus de celle des usages.

Alors comment on conçoit pour demain ? Quel est le secret si bien gardé de cette conférence ?

Je vous propose de partir sur une idée que j’applique de temps en temps lorsque je veux progresser dans ma pratique d’un sujet : je me pose des contraintes fortes. Ces contraintes ne sont pas des axiomes de conception qu’il faudrait appliquer coûte que coûte, mais des exercices qui doivent vous pousser à vous questionner sur des pratiques que vous auriez plus ou moins intégrées comme « normales ». Ces contraintes doivent répondre à un problème que vous cherchez à résoudre. Et ça tombe bien, on a identifié au moins trois problèmes dans la partie précédente !

Concernant l’impact environnemental tout d’abord, quel genre de contraintes peut-on imaginer ? Le poid des pages étant souvent pointé du doigt, commençons par là. Première contrainte : transformer un site ou une application pour que ses pages de fassent pas plus de 200Ko, images comprises ! Cette première contrainte devrait déjà soulever des questions : est-ce que mon fichier HTML est suffisamment simple ? Et mon fichier CSS ? Mais cette librairie JavaScript pèse déjà 200Ko, quelles implications si je dois m’en passer ? Combien d’images puis-je insérer ? Avec quelle qualité ? Et comment appliquer ça à un service de partage de photos ou de vidéos ? Quels choix de conception cela implique-t-il ? Peut-être que vous ne trouverez pas de réponse satisfaisante sans relacher légèrement la contrainte, mais ce n’est pas grave car vous aurez déjà commencé à vous poser la question et imaginer des solutions plus « simples ».

Sur l’attention de l’utilisateurice maintenant. Je rappelle que son but dans la vie n’est pas de passer son temps sur votre site ou application, il ou elle a bien d’autres chats à fouetter (mais ne faites pas ça chez vous, c’est de la maltraitance animale et c’est mal). Imaginons la contrainte suivante : au bout de 5 minutes passées (durant une journée) sur votre application, celle-ci se ferme automatiquement. Comment allez-vous la concevoir pour que l’utilisateurice fasse tout de même ce qu’elle est censée faire ? Cela pose la question de ce que doit faire votre application car il vous faut maintenant définir quelles fonctionnalités sont maintenant essentielles. Par exemple, comment appliquer cette contrainte à un réseau social ? Quels choix allez-vous faire pour que la personne qui se rend sur Twitter ou Mastodon puisse toujours lire ce qu’il ou elle l’intéresse ? Et au fait, à quoi ça doit servir un réseau social ? Faire de la veille ? se détendre ? créer des liens ? organiser des communautés ? tout à la fois ?

Enfin, concernant la maintenabilité des logiciels, comment favoriseriez-vous la possibilité pour un néophyte de rentrer dans votre code ? Exemple de contrainte : votre programme doit faire moins de 500 lignes de code. Là encore peut-être qu’il va devenir compliqué de recréer quelque chose comme un réseau social ou une plateforme de partage de vidéos, mais posez-vous les questions que cela engendre. Que doit faire mon programme ? Comment j’organise mon code ? Vous réaliserez sans doute qu’on ne peut pas faire l’impasse sur une « éducation au code » et tant mieux. Maintenant : quelles sont les actions que vous prendrez pour qu’un minimum d’éducation soit nécessaire pour au moins comprendre l’architecture de votre logiciel ? Et on voit que des tas de questions peuvent découler d’une bête question (celle de rendre votre code accessible au plus grand nombre).

On peut évidemment imaginer des tas d’autres contraintes comme limiter le temps de chargement de votre site ou application à moins de 0,5 seconde, limiter le nombre d’écrans à 2, développer une application sans aucune dépendance autres que celle du langage et de sa librairie standard ou encore limiter l’accès au réseau au strict minimum. Vous pouvez aussi les mixer, les modifier, etc. Ces contraintes vont sans doute vous paraître contre-productives par moment, voire totalement opposées à leur objectif et c’est pour ça que j’insiste sur le fait qu’il ne s’agit que de guides de conception. Le risque étant d’appliquer aveuglément ces contraintes en perdant de vue votre objectif initial.

En appliquant ces différentes contraintes, j’ai bon espoir que vos logiciels deviennent plus simples, plus respectueux d’un environnement mal en point et d’utilisateurices souvent malmené·es. In fine, ce sont vos logiciels qui deviendront plus libres. Pour rappel, ce n’est pas vraiment le logiciel qui doit être libre (lui il s’en fout, vous pouvez lui demander mais il y a peu de chances qu’il réponde), c’est son utilisateur ou utilisatrice. Alors la prochaine fois que vous concevrez un logiciel, merci de penser à sa liberté à ellui.

Et vous, quels usages vous semble prendre tout leur sens dans le numérique ? Qu’est-ce qui vous fait vibrer là-dedans ? Et comment le concevriez-vous ?

Conclusion

J’ai évoqué à un moment donné que je faisais parti de l’association Framasoft. Bien que les questions posées lors de cette conférence et les esquisses d’un monde numérique plus sobre fassent parties des réflexions qu’on mène dans l’asso et plus spécifiquement dans le cadre de notre campage Contributopia, je voulais souligner le fait que le sujet ne nous appartient pas. À partir du moment où vous vous sentez concerné·e, alors vous êtes légitime pour traiter le sujet et probablement tout aussi pertinent·e que nous. Je voulais faire ce petit aparte car il semble y avoir de plus en plus d’attentes envers l’association pour porter ces réflexions. Cette confiance nous fait certes plaisir, mais notre monde à nous (celui de demain) est émancipé et ne repose pas sur un groupe de quelques copain·ines. Alors n’hésitez surtout pas à cogiter sur tout ça dans votre coin et à lancer ensuite d’autres structures collectives pour imaginer d’autres imaginaires. C’est en les multipliant qu’on avancera !

Conception de la v8 du site

vendredi 1 mars 2019 à 13:20

Au fil des années, j’ai pris le temps d’annoncer les changements importants du site, je ne vais donc pas non plus déroger à la règle cette fois-ci. Cette huitième version (quand même) arrive presque deux ans après la dernière. C’est avant tout pour moi un retour au « fait-maison » qui était la base lorsque j’ai démarré. J’avais été lassé de maintenir des outils souvent complexes ; la cinquième version introduisait notamment une idée un peu fumeuse consistant à agréger les éléments que je partageais via 3 outils que j’avais moi-même développé…

En revenant à un outil plus simple (je vous renvoie à ma série d’articles), je reviens aussi à une idée de l’informatique qui me plaît : maîtriser (ou au moins comprendre) les outils que j’utilise.

Cet article, donc, revient sur les grandes lignes directrices que j’ai souhaitées pour cette énième version de mon site. Notez que le contenu n’est pas terminé, il manque notamment le manifeste qu’il me reste à rédiger et la liste des projets que je souhaite mettre en avant. J’envisage aussi une page « à propos » mais je ne suis pas certain de son intérêt.

Une approche pédagogique et ouverte

Si j’ai toujours tenté d’adopter une démarche pédagogique, je crois que je commence à avoir une certaine maturité sur le sujet. La série d’articles dans laquelle s’inscrit celui-ci en est la preuve la plus évidente puisque j’y explique toute la démarche qui se cache derrière ce site. Un autre exemple que j’aime bien est celui de la partie « Traitement des données » de ma page « Mentions légales » dans laquelle j’explique que malgré le fait que je ne collecte pas de données… et bien j’en collecte quand même ; j’en profite pour expliquer la raison et les circonstances.

Le côté ouverture est quant à lui illustré par les liens qui renvoient à chaque fois vers les articles qui décrivent la raison de tel ou tel paragraphe, ou pour compléter en informations. J’ai aussi insisté sur les liens renvoyant au code source. J’envisage, pour aller plus loin, d’ajouter pour chaque page des liens discrets vers les fichiers sources correspondants.

L’une des conséquences de cette approche est que cela rend le site plus verbeux. C’est voulu. Celleux qui me connaissent savent que j’écris facilement de gros pavés et cela fait partie intégrante de qui je suis, j’assume. Pour équilibrer cela, j’ai appliqué une série de bonnes pratiques de typographie pour que le contenu reste agréable à lire, notamment le principe du « triangle équilatéral du paragraphe parfait » (c’est-à-dire équilibrer la taille de la police d’écriture avec la largeur et l’espacement des lignes). Le choix de couleurs qui contrastent bien entre elles a pris un peu de temps, mais l’outil d’accessibilité intégré à Firefox a été d’une aide précieuse.

Capture d’écran qui montre que le ratio de contraste du titre de cet article avec l’arrière-plan est de 14,32

Le but de tout cela est aussi d’apposer une « patte » particulière sur mon site, pour faire en sorte que la forme du blog épouse le fond de ce que je veux promouvoir.

Navigation restreinte

Deux choses m’agacent souvent dans la navigation des sites :

Pour cette nouvelle version du site, la navigation se passe en majorité « dans le texte ». C’est-à-dire que la majorité des liens vers les autres pages sont (ou seront) contextualisés au sein du texte de la page d’accueil. Dans l’en-tête du site, seulement deux liens : l’un pour revenir à l’accueil, l’autre pour accéder au blog (qui reste le « lieu de vie » du site). Cette économie de navigation m’évite en plus le fameux menu « hamburger ».

Conscient que ce type de navigation est là encore verbeux, les différents liens sont accessibles depuis le pied de page pour avoir une vue d’ensemble du site.

Le dernier élément de navigation présent sur le site est le bouton qui apparaît en bas de la page une fois que vous l’avez faite défiler un peu et qui permet de remonter en haut de la page. Pour le créer, je me suis basé sur un article de Signal v. Noise. J’ai dû légérement adapter le code qui s’appuie sur leur cadriciel JavaScript, ce qui donne un petit script d’une dizaine de lignes. Le code CSS quant à lui est un peu plus long, mais principalement pour l’apparence.

Un thème moins bleu

Le thème de ce site a toujours été bleu, voire très bleu. Chose révolue donc puisque je suis parti sur du rouge brique (il y aura bien quelqu’un·e pour me dire que c’est orange, non ? /private-jock). Pourquoi ce rouge ? Pas de raison particulière pour le coup, ça ne transmet pas de message particulier. On pourra toujours disserter sur la signification des couleurs qui irait, dans le cas présent, à l’encontre de ce que je veux transmettre ; mon pari est que ça ne joue qu’à la marge et qu’on peut bien choisir un peu les couleurs que l’on veut tant qu’elles nous plaisent ! Si quelqu’un vient argumenter sur le fait qu’il trouve le thème agressif, je reconsidèrerai toutefois volontier mon sentiment.

La « charte » se décline ainsi :

La règle est de ne jamais superposer deux couleurs différentes, à part la couleur de contraste qui est prévue pour cela (son ratio avec les autres couleurs est suffisant pour assurer une bonne lisibilité).

Mobile avant tout

J’ai pensé le site pour fonctionner sur mobile. Même si je n’utilise plus que très peu le téléphone pour aller sur Internet, il est toujours plus agréable de naviguer sur les sites prévus pour (c’est quand même l’une des promesses des technologies web, de pouvoir être accessibles quel que soit le périphérique).

Pour cela j’ai utilisé le mode « mobile » de Firefox (le raccourci pour l’utiliser est ctrl+maj+M). J’ai commencé par faire en sorte de supporter la largeur d’écran la plus petite que je souhaitais pouvoir gérer (360 pixels), puis j’ai ajouté quelques points de « rupture » (c’est-à-dire des largeurs d’écran pour lesquelles le style doit changer). Par exemple, pour les blocs des séries sur la page de blog, les blocs sont affichés en colonne par défaut :

.blog-series {
    display: flex;
    flex-direction: column;
}
.blog-serie {
    margin-bottom: 1rem;
}

Ce qui donne :

Capture d’écran de la page principale du blog où l’on voit les blocs des séries en colonne

Mais à partir d’une largeur de 40rem (qui correspond à 640 pixels dans ce cas), on les affiche en lignes avec retour à la ligne autorisée.

@media(min-width: 40rem) {
    .blog-series {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
    }
    .blog-serie {
        width: 30%;
        margin-right: .5%;
        margin-left: .5%;
    }
}

Ce qui donne donc :

Capture d’écran de la page principale du blog où l’on voit les blocs des séries qui sont passés en lignes

Mise en production imminente

Ayant suffisamment repoussé la mise en production jusque-là, j'envisage de le faire dès la semaine prochaine même si je n’ai pas tout à fait fini le contenu du site. Tout viendra en temps et en heure. J’ai pu tester que l’importation des articles de l’ancien site se faisait sans soucis. À part quelques flux RSS, les liens ne devraient donc pas se casser.

Vous pouvez donc supprimer ce site de votre agrégateur de flux RSS et repasser sur celui du site initial, tous les articles y seront transférés.

Construire un site complet à base de Boop!

mardi 26 février 2019 à 09:30

Après une petite pause d’un mois sur la refonte de ce site, il est temps pour moi de m’y remettre. La dernière phase avait consisté à imaginer un prototype pour me donner une vision globale de l’architecture du site. Cela devait aussi me permettre de pointer du doigt les manques de Boop!, mon générateur de sites statiques. Et il y en avait, des manques ! Je reviendrai prochainement sur les évolutions du contenu du site ainsi que sur son habillage (qui n’est d’ailleurs pas terminé). Pour l’instant je vais me contenter de détailler les dernières évolutions techniques.

Des améliorations dans le processus de développement

L’une des choses qui me tenait à cœur avec Boop! était de pouvoir travailler de la manière la plus agréable possible sur mon site. Le mieux dans cette situation étant de s’observer râler.

Premièrement, lors de la génération du site, je voulais pouvoir ouvrir rapidement les fichiers générés. Comme la plupart du temps je travaille sur un article, je veux pouvoir l’ouvrir immédiatement. J’ai donc fini par afficher le nom des fichiers dans la console, et comme il s’agit de chemins absolus commençant par file://, je n’ai plus qu’à cliquer dessus pour ouvrir mon article. Une exécution de Boop! ressemble grosso-modo à ça :

[marien@pizza marienfressinaud.fr]$ boop.py --development
Written page: file:///home/marien/marienfressinaud.fr/site/index.html
Written page: file:///home/marien/marienfressinaud.fr/site/blog.html
Written article: file:///home/marien/marienfressinaud.fr/site/construire-un-site-complet-a-base-de-boop.html
Written article: file:///home/marien/marienfressinaud.fr/site/suivre-le-boop-blog.html
Written article: file:///home/marien/marienfressinaud.fr/site/simplifier-la-redaction-darticles-dans-boop.html
Written article: file:///home/marien/marienfressinaud.fr/site/boop-une-introduction.html
Written feed: file:///home/marien/marienfressinaud.fr/site/feeds/all.atom.xml
Static files copied
Boop!

Ici vous ne pouvez évidemment pas cliquer sur les noms des fichiers, mais ça fonctionne dans un terminal.

À noter que lorsque je génère les fichiers pour la mise en production, ce sont les URL finales qui sont affichées (voir le code), ce qui me permet d’ouvrir l’article directement une fois en ligne.

Le deuxième point agaçant était que je devais quitter mon éditeur de texte régulièrement pour générer les fichiers et vérifier que le résultat me convenait. Lors de la phase de relecture d’un article par exemple, je peux vouloir regénérer le site plusieurs fois en quelques secondes : passer de la fenêtre de mon éditeur à celle de mon terminal pour revenir de nouveau à l’éditeur est très pénible. Utilisant Vim, j’ai ajouté deux raccourcis dans mon .vimrc : l’un pour générer le site (,,) et un autre pour publier le site en ligne (,p).

autocmd BufRead,BufNewFile */*marienfressinaud.fr/* nnoremap <leader><leader> !boop.py --development<CR>
autocmd BufRead,BufNewFile */*marienfressinaud.fr/* nnoremap <leader>p make publish<CR>

Habituellement les générateurs de sites statiques proposent un serveur surveillant les changements faits dans les fichiers et qui les regénère à la volée… mais je trouvais cette solution bien compliquée pour un intérêt limité. Cela me permet aussi de garder Boop! concentré sur une seule tâche : générer un site statique.

Enfin, notons que je dispose d’un fichier Makefile dans le répertoire du site qui me permet d’effectuer des tâches usuelles de manière unifiée :

$ make boop    # génère le site en mode développement
$ make publish # génère le site en mode production et le téléverse sur le serveur
$ make clean   # nettoie le répertoire `site`
$ make open    # ouvre la page d'index du site dans le navigateur
$ make tree    # affiche la structure des fichiers en excluant le répertoire `site`

Une réécriture partielle de Boopsy

Si vous vous souvenez, Boopsy est mon système de template maison. Jusque-là, il se contentait d’afficher des variables au sein de fichiers HTML. Cependant, j’ai très vite eu besoin de pouvoir écrire des conditions (if) et des boucles (for). Ces structures ont cela de particulier qu’elles ont un impact sur la portée des variables. La boucle en particulier pose un problème, par exemple dans le cas suivant :

{% for article in liste_articles %}
    <div>{{ article.title }}</div>
{% endfor %}

Avant d’entrer dans la boucle for, la variable article n’existe pas, il faut donc gérer le contexte. L’article sur lequel je me base depuis le début gère cela de manière relativement maline : il transforme le template en mini-programme Python. Le for est donc transformé en syntaxe Python, ce qui permet de déléguer la gestion de la portée des variables à l’interpréteur de ce dernier. J’avais fort justement décidé de ne pas partir sur cette solution initialement (ne la comprenant pas, j’étais allé au plus simple), et j’ai donc réécrit en partie ce que j’avais fait.

Une fois ce travail fait, l’ajout du if et du for a ensuite été très facile vu que je n’avais plus qu’à traduire le code récupéré depuis le template en code Python.

L’apparition des pages…

J’en avais besoin pour avancer : les pages ont été ajoutées très rapidement après mon dernier article. Jusque-là, je ne pouvais avoir qu’une unique page (d’accueil) et des articles. Pourtant, les pages statiques sont bien pratiques pour donner des informations « intemporelles ».

Contrairement aux articles, les pages sont écrites exclusivement en HTML et se trouvent dans un répertoire qui se nomme… pages. Elles peuvent partager elles-aussi un template commun (voir le code).

Le problème auquel j’ai alors fait face a été de pouvoir définir des variables dans les pages pour pouvoir les utiliser dans le template. En effet, le HTML ne permet pas de définir de variables. Je suis donc parti sur la solution utilisée par Jekyll, celle d’accepter un en-tête YAML en haut des fichiers HTML. Je trouvais cette solution d’autant plus élégante qu’au final il s’agissait de la même façon de faire dans les fichiers Markdown.

… d’une page de blog…

Une fois tout cela en place, je n’avais plus grand chose à faire pour avoir le site de mes rêves. Une chose toutefois continuait de m’embêter : je devais lister les articles à la main, un par un, manuellement sur une page de blog.

Disposant désormais de tout ce qu’il me fallait pour construire une liste d’articles automatiquement, il m’a fallu très peu de temps pour ajouter une page de blog générée par Boop!.

… et des séries.

La dernière fonctionnalité que j’ai développée a été celle des « séries ». Une série est une sorte de catégorie regroupant une liste d’articles. La différence avec le système de catégories que l’on peut retrouver ailleurs est que la série liste les articles dans un ordre décidé par l’auteur. C’est-à-dire, dans mon cas actuel, du plus ancien au plus récent (l’inverse donc de la page de blog). Mais on pourrait imaginer que cet ordre soit encore différent ; c’est à l’auteur de voir ce qu’il préfère.

La conséquence de cela est que les liens vers les articles sont aujourd’hui à faire manuellement sur les pages des séries (c’est dommage alors que je viens de vanter les mérites de l’automatisation dans la partie d’avant). J’envisage toutefois un système un peu plus sympathique à terme, sans perdre pour autant en flexibilité.

Une série dispose aussi d’un flux Atom spécifique, de la même manière que les catégories dans Pelican. Je sais qu’ils étaient utilisés sur mon ancien site (pour Lessy notamment), je voulais donc retrouver ce système sur le nouveau. Dans le flux, les articles continuent par contre d’être listés du plus récent au plus ancien.

Une série est créée en regroupant des articles dans un répertoire et en créant une page nommée serie.html dans ce répertoire (voir l’exemple du « Boop! blog »).

Et une grosse réorganisation du code

Vous vous doutez que tous ces changements ont apporté leur lot de dette technique et le fichier presque unique qui contenait le code de Boop! commençait à devenir hors de contrôle (500 lignes de code dont 220 pour la seule fonction principale). Il était grand temps de faire quelque chose, mais pas n’importe comment.

Une chose que je n’aime pas quand je lis le code d’une autre personne, c’est lorsqu’il y a des indirections dans tous les sens et que je dois ouvrir 5 fichiers pour comprendre ce qu’il se passe. Dans mon cas, je voulais que le fichier principal contienne l’ensemble de la logique métier, c’est-à-dire :

  1. chargement de la configuration du site ;
  2. collecte de l’ensemble des articles et des pages ;
  3. écriture des articles et des pages ;
  4. écriture des flux Atom (le principal ainsi que ceux des séries) ;
  5. copie des fichiers contenus dans static.

Ensuite, les fonctions qui ne revêtent pas un caractère important dans la logique métier sont extraites vers un fichier utils.py. Ce fichier apporte néanmoins des informations importantes quant au fonctionnement de Boop!.

Les derniers fichiers quant à eux contiennent quelques classes utiles au fonctionnement, notamment Article, Page et Feed.

Pour les plus curieuses et curieux d’entre vous, vous pouvez retrouver les différents commits de cette réorganisation de code de cette manière :

$ git clone git@framagit.org:marien.fressinaud/boop.git && cd boop
$ git log --reverse --oneline 694c4e3f..7bfac8f4
e3c382a Move extension filtering in utility functions
9a2c645 Extract function to build an article from filepath
...
7bfac8f Refactor feeds generation
$ git show [le commit que vous voulez voir]

Je pense toutefois que l’intérêt reste limité, mais c’est vous qui voyez si ça vous intéresse.

Un outil taillé au poil

Boop! a cela de bien qu’il fait très exactement ce dont j’ai besoin : pas une fonctionnalité n’est superflue. Et s’il manque très certainement des choses, ce sont pour d’autres besoins que les miens. Alors, oui, ça m’a pris un certain temps à développer ; je ne conseille évidemment pas à tout le monde de développer son propre générateur de sites statiques. Il y avait avant tout une visée pédagogique dans ma démarche, en montrant comment en partant de zéro on peut concevoir un outil qui fonctionne tout aussi bien qu’un « plus connu ». J’ai d’ailleurs pris le soin au fur et à mesure de l’article (ainsi que des précédents) d’ajouter des liens vers les commits correspondants à ce dont je parlais, pour comprendre « comment j’ai fait ». Je voulais aussi montrer qu’en restant le plus simple possible, on obtient une meilleure maîtrise sur l’outil et on peut le faire évoluer plus facilement. On favorise ainsi la liberté 1 du logiciel libre.

Boop! n’est pas pour autant totalement terminé. Il me reste à l’utiliser régulièrement sur une longue période de temps, comprendre là où ça bloque, fluidifier mon processus de travail, fignoler les morceaux de code toujours pas très élégants, améliorer la documentation que je n’ai jamais pris le temps de structurer correctement… Cela pourrait presque être comparé à du travail d’orfèvre à ce niveau de précision, mais j’aime être pointilleux quand je peux me le permettre. Et je peux.