Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierLinuxFr.org : les dépêches
  • ✇LinuxFr.org : les dépêches
  • 15 ans de projets libres : bilan
    Il y a 15 ans j’écrivais un article faisant le résumé de ma première année d’activité en tant que développeur de logiciel libre. J’ai ensuite fait des bilans réguliers durant les 9 ans qui ont suivi où j’y ai discuté de sujets divers et variés tels que les premiers pas, la contribution, les échecs, etc. Je pensais avoir conclu ce cycle mais plus tard, après avoir vécu de nouvelles aventures comme voir le projet Kitsu prendre son essor, collaborer avec le projet Blender, ou devenir parent, je me

15 ans de projets libres : bilan

Il y a 15 ans j’écrivais un article faisant le résumé de ma première année d’activité en tant que développeur de logiciel libre. J’ai ensuite fait des bilans réguliers durant les 9 ans qui ont suivi où j’y ai discuté de sujets divers et variés tels que les premiers pas, la contribution, les échecs, etc.

Je pensais avoir conclu ce cycle mais plus tard, après avoir vécu de nouvelles aventures comme voir le projet Kitsu prendre son essor, collaborer avec le projet Blender, ou devenir parent, je me suis dit que je pouvais encore partager des choses. Voici donc mon retour d’expérience de ces cinq dernières années à temps plein sur Kitsu !

Sommaire

Contributions sur 15 ans

Il y a 15 ans j’écrivais un article faisant le résumé de ma première année d’activité en tant que développeur de logiciel libre. J’ai ensuite fait des bilans réguliers durant les 9 ans qui ont suivi. J’ai discuté de sujets divers et variés tels que les premiers pas, la contribution, les échecs, etc. Enfin, j’avais conclu ces 10 années sur la satisfaction que j’avais tirée de toutes ces réalisations. Je pensais avoir fait le tour mais après 5 nouvelles années, j’ai eu le sentiment d’avoir encore des choses à partager.

Durant cette période, ma contribution a été faite exclusivement sur mon projet Kitsu (licence AGPL) porté par mon entreprise CGWire. Kitsu est un logiciel de gestion de projets pour les studios d’animation et de VFX basé sur Javascript (Vue.js), Python (Flask) et Postgres. C’est une brique importante de leur système d’information. Autour de ce logiciel, nous fournissons des services d’hébergement et de support. Ce qui me permet d’en vivre à temps plein depuis maintenant bientôt 10 ans.

Pour ce bilan, après un récapitulatif sur l’état d’avancement de Kitsu, je vais aborder différents thèmes : la collaboration avec un projet à très grand succès, être parent et développeur, l’organisation de notre premier événement dédié à notre solution, trouver un modèle d’affaires viable, faire du logiciel libre à l’heure de l’IA générative, et enfin je sortirai du champ Kitsu avec des réflexions autour des données personnelles et des LLM.

Bilans précédents : 1, 2, 3, 4, 5, 6, 8, 9

État du projet Kitsu

Aujourd’hui, Kitsu est reconnu comme une solution solide par tout le secteur de l’animation. Nous équipons environ 500 studios de 1 à 1000 personnes (la majorité d’entre eux est composée de 20 à 50 personnes) dans plus de 30 pays dans le monde.

Les films et séries utilisant Kitsu sont principalement des productions indépendantes. Nombre d’entre eux ont reçu des prix prestigieux avec notamment des succès récurrents au Festival d’Annecy (la référence en animation 2D) mais aussi à Cannes, aux Césars ou aux Oscars. Le film qui a reçu le plus de récompenses est Flow (pour le coup en 3D !).

C’est un résultat assez réjouissant. Toutefois, nous ne sommes jamais sortis de cette sphère indé, les gros studios ont toujours boudé notre solution, préférant le standard américain géré par Autodesk. Nous sommes donc restés sur des performances financières très modestes comparées à celles des start-ups classiques (500 k€/an de CA). Ce résultat est toutefois à mitiger, car le secteur subit une forte crise depuis 2023, y survivre est déjà une performance en soi.

Du point de vue de l’équipe, nous sommes 5 à travailler dessus à temps plein et bénéficions de contributions régulières de notre communauté (tickets, PR, plugins et récemment une application mobile). Il y a donc une activité soutenue autour du produit.

Pour ce qui est de la licence, Kitsu est toujours sous AGPL. Son installation et son usage sont pleinement documentés, mais il dépend encore beaucoup de la structure commerciale derrière (CGWire). Son fonctionnement est bien compris par plusieurs membres de la communauté, mais pas assez pour qu’ils le maintiennent eux-mêmes.

En somme, le projet avance lentement mais sûrement et se porte bien. L’outil remplit son rôle, la communauté est contente et se développe. Nous avons pu conserver la licence tout du long et l’adoption est grandissante.

La rencontre avec Blender

À travers mon projet précédent, feu Cozy Cloud, et plus récemment les événements OSS Founders, j’avais déjà eu l’occasion de rencontrer des fondateurs de projets libres populaires. Parmi eux, on compte les CEO de Matomo, Nextcloud ou Strapi. Ces échanges sont toujours grisants, intéressants et informatifs, mais ça n’est pas allé plus loin que quelques bonnes discussions et poignées de main.

Avec Kitsu, pour la première fois, j’ai eu l’occasion de collaborer directement avec un projet libre à succès et pas des moindres : Blender (un outil de création 3D en plein boom). J’ai non seulement pu assister aux premières loges de leur ascension récente, mais j’y ai aussi un peu participé.

En effet, la plupart des studios utilisant Blender se sont tournés naturellement vers notre solution pour gérer leurs projets. La fondation portait un outil similaire de gestion (Attract) mais son développeur principal n’était autre que Francesco Siddi (aujourd’hui CEO). Son implication grandissante dans tous les domaines de la fondation lui laissait peu de temps pour s’en occuper. Voyant les progrès de Kitsu, il s’est tout simplement dit qu’il était plus simple de nous soutenir que de continuer à maintenir son projet.

Ainsi, Kitsu a été choisi pour suivre les projets vidéo du Blender Studio, mais a aussi été plébiscité par celui-ci. Nous avons donc gagné en notoriété et avons bénéficié d’une visibilité internationale. Le studio ne s’est pas arrêté là puisqu’il nous a également un peu soutenus financièrement en commandant quelques fonctionnalités dans le logiciel. En contrepartie, notre logiciel leur a bien été utile pour s’organiser et faciliter la création de leurs films. J’en profite tout de même pour les remercier une nouvelle fois pour leur aide !

Un autre élément important, qui nous a beaucoup impactés, c’est la présentation que Ton Roosendal m’a faite du projet Blender lors de ma visite au studio (encore CEO à l’époque, mais il intervenait moins car il avait commencé les soins du cancer dont il sera guéri plus tard). Il a partagé avec moi les valeurs profondes de la fondation. Leur mission principale est de donner à n’importe quel artiste la liberté de créer en lui fournissant des outils de création numérique haut de gamme. Blender est en fait bien plus qu’un logiciel, c’est un vrai mouvement pour un monde plus ouvert.

Ce qui m’a amené à pousser la mission de Kitsu dans ce sens : l’idée n’était plus seulement de permettre de collaborer sereinement au sein des équipes d’animation. Nous voulions aussi permettre à n’importe quel studio dans le monde d’avoir les outils d’organisation et la méthode pour mener un projet de long métrage ou de série au bout, malgré des budgets toujours plus serrés.

En effet, les narratifs de film d’animation sont encore trop peu diversifiés et s’inspirent souvent de ceux de Disney. Chaque film indépendant qui émerge propose une autre vision du monde. Cette diversité nous libère des conceptions véhiculées par les films à grands budgets. Comme les maigres budgets des films indés ne suffisent pas toujours à finaliser le projet avec la qualité souhaitée, de bons outils d’organisation sont nécessaires pour optimiser les efforts. Ceux-ci étaient difficilement accessibles (chers et complexes à mettre en œuvre), Kitsu de par son aspect libre et sa simplicité, a rendu possible l’utilisation de ces outils.

De cette manière, de nombreuses œuvres originales comme Flow, Jim Queen, In Waves, Linda veut du poulet, Allah n’est pas obligé ont pu aller au bout de leur vision artistique. Et dans le monde entier, le phénomène s’est répété, comme encore récemment avec des films comme Bravecat en Amérique latine ou Igi (en cours) en Géorgie. Ces nouveaux points comptent, car ils libèrent nos imaginaires en nous offrant un autre regard sur le monde.

Vous l’avez compris : rencontrer et être accepté par l’équipe et la communauté de Blender a été transformateur pour notre projet. Nous avons, d’une part pu étendre notre visibilité, mais surtout viser une finalité encore plus porteuse.

Diapositive de présentation du pipeline du Blender Studio
Diapositive de présentation du pipeline du Blender Studio

Logiciel libre et parentalité

Dans un tout autre registre, il y a 3 ans environ je suis devenu père. Cet heureux événement a eu un impact significatif sur mes projets et mes contributions.

Cela ne surprendra personne, mais ça prend beaucoup de temps et d’énergie d’être parent. D’autant plus que cela s’est passé sur fond de crise du secteur de l’animation, ce qui a fait que je n’ai pas pu vraiment lever le pied sur Kitsu.

J’ai donc forcément dû sacrifier pas mal d’activités. À partir de ce moment-là, toute contribution était devenue trop difficile pour que je me motive. J’ai dû aussi arrêter l’organisation des meetups que j’ai mentionnés dans mon précédent post. Même suivre l’actualité des différentes associations du libre ne m’était pas toujours facile.

Mon emploi du temps a été chamboulé et les soirées drainaient suffisamment mon énergie pour me démotiver à regarder d’autres dépôts de code ou à démarrer de nouveaux projets. J’ai donc pris conscience à quel point c’est difficile pour un parent de contribuer. Je suis d’autant plus admiratif quand je rencontre un développeur parent désormais.

Pour tempérer, cela s’améliore avec le temps. Pour preuve, j’ai pu écrire cet article ! Et cette situation peut aussi être vue comme l’occasion de se donner des limites strictes et de se concentrer sur un problème donné plutôt que de papillonner sur plein de projets différents.

La pression de l’offre gratuite

Vouloir vendre un logiciel “gratuit” n’est pas chose aisée. En réalité, on vend de l’hébergement et du support autour de Kitsu. Alors, certes, l’accès gratuit facilite la dissémination, mais cela nous amène aussi à quelques écueils.

Un premier souci est que les installations auto-hébergées sont rarement propres et que le logiciel n’est pas toujours utilisé de façon optimale. Cela nous arrive donc de croiser des utilisateurs mécontents sans comprendre l’origine du problème. Mais quand on creuse un peu, ils utilisent une version auto-hébergée et n’ont pas la dernière version ou ne sont simplement pas au courant de la disponibilité d’une fonctionnalité.

Les studios pensent faire des économies en se passant de nous, mais se priver d’un éditeur pour un logiciel clé a aussi un coût (installation, maintenance, impact des incidents, sous-optimisation). Et cela nous impacte négativement aussi dans le sens où on peut générer de l’insatisfaction sans que nous y puissions faire quoi que ce soit.

Ce problème est tout de même compensé par un autre phénomène : beaucoup de gens sont contents de pouvoir accéder à ce type d’outils alors que leur budget ne le permet pas. On ne compte plus les studios qui viennent nous remercier sur notre stand sans qu’on ait jamais entendu parler d’eux.

Pour autant, cela crée une situation où notre plus gros concurrent devient nous-mêmes. Nous sommes contraints d’argumenter en notre faveur auprès d’un utilisateur déjà convaincu. Il nous est aussi arrivé d’avoir des clients utilisant notre cloud, qui, au renouvellement, nous annoncent le prix qu’ils souhaitent payer en nous menaçant de basculer en auto-hébergement si nous refusons.

Et avec la crise du secteur, beaucoup de studios ont décidé de basculer sur la version auto-hébergée. Récemment, nous avons lancé une offre légère de support à petit prix. Le succès a été très timoré. Cela nous a mis dans la position inconfortable de devoir quémander des sous à des sociétés qui tirent un bénéfice conséquent de notre solution.

Cela crée une situation difficile à gérer. Nous ne l’avions pas anticipé, nous pensions que les productions avec des budgets significatifs n’oseraient pas se priver de la garantie de fonctionnement proposée par le fournisseur.

Ce manque à gagner freine clairement notre progression et surtout nous met toujours sur le fil. Quand les perspectives ne sont pas bonnes, cela nous met particulièrement sous pression. Malgré la dynamique vertueuse du logiciel libre, cela peut aussi engendrer des situations désagréables pour les mainteneurs. Pour pallier à ça, nous essayons aussi de mettre en place des fonctionnalités propriétaires externes au logiciel : système de synchronisation entre différents studios, serveur MCP, optimisations des traitements vidéo, configuration multi-régions, etc. Nous avons pas mal d’espoir que cela remotive les studios avec un budget à rebasculer sur une offre complète.

Pour résumer, le fait que Kitsu soit libre stimule énormément l’écosystème de l’animation. Pour autant, cela génère une pression importante sur l’entreprise soutenant son développement. Maintenir le projet à flot tout en restant libre requiert beaucoup de travail.

Standardisation

Mais le fait que l’application se diffuse facilement fournit aussi un avantage non négligeable : petit à petit, l’outil devient le standard de l’industrie. D’autant plus que notre modèle de données et nos interfaces sont plutôt légers comparés aux offres concurrentes. Kitsu est donc l’outil facile à adopter, sur lequel on peut démarrer très vite en passant de studio en studio.

Encore mieux, chaque studio peut scripter facilement des connexions avec ses propres outils et avec le Kitsu d’un autre studio. Comme il est courant de fonctionner en coproduction (plusieurs studios financent et fabriquent le projet), le côté standard de Kitsu facilite bien la collaboration.

Côté école, Kitsu a la cote aussi. Pour les étudiants, la facilité de prise en main les aide à mettre en place leurs premiers projets. Cela leur fournit aussi un cadre de studio. Ainsi, ils seront ce qui est attendu d’eux en matière de reporting et de communication une fois qu’ils intégreront une équipe. Les futurs professionnels de l’image connaissent déjà Kitsu et seront motivés pour en parler.

Étant donné que la difficulté du film réside dans la partie artistique, fournir une brique clé en main, facilement accessible, retire une bonne épine dans le pied à toutes les parties prenantes de l’industrie. Quand Kitsu devient le choix par défaut, le problème de l’outil d’organisation se règle. Les équipes de production peuvent se concentrer sur leurs métiers respectifs et, par conséquent, livrer de plus beaux films.

Le premier Kitsu Summit

Fort de ce succès, nous avons pu organiser le premier événement sur une journée entièrement dédiée à notre projet. 70 personnes ont été réunies autour de 12 conférences parlant de l’utilisation de Kitsu. Nous avons aussi accueilli quelques sponsors.

Cela nous a permis de faire se rencontrer tout un tas d’acteurs de notre écosystème. La communauté a pu échanger dans la joie et la bonne humeur. Nous avons aussi discuté avec tout un tas de personnes que nous ne voyons jamais directement. Ce genre d’événements est évidemment très stimulant.

Nous avons également pu récupérer beaucoup de captations vidéo. Ce qui nous a fourni un conséquent matériel vidéo à diffuser. Cela renforce notre crédibilité. Toutefois, organiser un tel événement a requis beaucoup d’énergie et a été assez coûteux (nous étions largement à perte). Nous ne sommes donc pas encore en capacité d’en faire un tous les ans, mais la motivation pour un autre est là !

Keynote d’ouverture au Kitsu Summit 2026
Keynote d’ouverture au Kitsu Summit 2026

Le code à l’heure de l’IA générative

Comme si la crise du secteur ne suffisait pas, notre métier de développeur a été révolutionné récemment. Les IA génératives génèrent du code correct rapidement. Quand j’enfile ma casquette de développeur, je passe donc plus de temps à discuter avec un agent qu’à intervenir sur le code directement.

Bien qu’étant une petite équipe, ces nouvelles possibilités, nous ont pas mal occupés. Nous avons pu lancer des refactorings longtemps attendus, en planifier d’autres et lancer des audits à répétition sur notre existant (à chaque avancée des modèles). Nous avons pu aussi prendre beaucoup plus de tickets. En interne, nous avons également développé plein de petits utilitaires pour nous faciliter la vie, surtout au niveau de notre infrastructure d’hébergement.

La partie assurance qualité du projet a été la plus boostée, mais nous avons aussi pu fournir de nombreuses fonctionnalités rapidement et trouver des solutions à des problèmes posés depuis longtemps (exemple : appliquer une gomme sur des dessins vectoriels).

Les contributions ne sont pas en reste. Elles sont déjà plus nombreuses, plus conséquentes, et de meilleure qualité. Voici quelques exemples : support d’OpenID, serveur MCP, app mobile pour valider les vidéos stockées sur la plateforme, plugin applicatif, etc. Pour les encaisser, nous faisons appel aux modèles eux-mêmes afin de faciliter les relectures.

Néanmoins, qui dit plus de code, dit plus de travail. Cela nous demande aussi de repenser notre organisation en vue de gérer cette nouvelle masse. Surtout si les contributions et tickets s’accélèrent, nous allons devoir revoir complètement notre infrastructure d’intégration continue (automatisation de l’analyse et traitement des tickets, des pull requests, des remontées Sentry, etc.).

Nous avons aussi pu utiliser pour la première fois Kitsu pour gérer un projet de développement complet. En effet, lancer un agent sur un projet long n’offre pas de retours clairs sur l’avancement. Avec notre outil, nous avons pu suivre toute la progression, fournir des retouches via notre système de discussion et surtout nous avons pu tracker la consommation complète de tokens (ainsi que le temps total passé). C’est un usage détourné de Kitsu mais c’est intéressant qu’à l’heure de l’IA, les développements se suivent plus comme un projet industriel classique : de manière linéaire avec un suivi de consommation.

Mais tout ceci vient avec de lourdes contreparties. La manière dont sont fabriqués et distribués les modèles est délétère : extraction massive de ressources, esclavagisme des travailleurs du clic, consommation excessive d’énergie, concentration du contrôle des modèles et communication menaçante des acteurs du secteur. Et pour revenir à un souci plus terre-à-terre, le prix du token n’est pas encore déterminé. Ce qui est possible aujourd’hui ne le sera pas forcément demain.

Pour mitiger ces aspects, nous avons rédigé un manifeste pour placer quelques garde-fous : https://www.cg-wire.com/sustainable-ai-manifesto. Ces lignes nous permettent de garder un minimum de respect pour nos utilisateurs, mais elles ne résolvent pas tous les problèmes mentionnés.

Dans les autres aspects négatifs, j’aimerais aussi souligner le fait que la perte de contrôle induite par l’utilisation d’un logiciel tiers, n’est pas négligeable. On passe d’un stade où on peut tout coder chez soi sans connexion internet et de manière privée à une situation où on envoie tout sur un cloud extérieur facturé à l’usage et analysant nos données (Andrew Kelley en parle mieux que moi).

Les reviews aussi sont plus délicates. Avant, faire une review permettait de faire progresser le contributeur. Désormais, la review sert principalement à valider le code. L’impact d’une relecture est donc moindre. Il faut aussi revoir beaucoup plus de code généré avec une logique exhaustive. Certes, les modèles respectent les règles de l’art, mais pour autant la charge cognitive à la relecture est plus importante.

Autre souci, les agents de code poussent à la consommation et proposent toujours d’aller plus loin. L’agent ne se fatiguant jamais, le fait de définir des limites devient difficile. Minimalisme et code agentique ne font pas bon ménage.

Enfin, le plaisir de coder n’est plus le même. Passer une bonne journée à résoudre des problèmes, nettoyer son code, écrire la documentation associée est bien plus plaisant que de discuter des fonctionnalités, de l’architecture et des objectifs avec un LLM.

Voilà pour un premier tour d’horizon. Le sujet de l’IA générative dans le code est très complexe. Je n’ai pas de recommandation à faire. L’idée ici est de partager un premier retour d’expérience. Ce changement est encore très récent et il est difficile d’avoir du recul dessus. Au passage, je recommande l’excellente publication Limites Numériques, qui pose pas mal de bonnes questions sur le sujet des LLM et IA génératives, notamment sur la partie expérience utilisateur.

Développement d’un serveur MCP suivi avec Kitsu
Développement d’un serveur MCP suivi avec Kitsu

IA et données personnelles

Cela me permet de faire la transition vers un sujet qui me tient particulièrement à cœur : la question des données personnelles (cf. l’ère Cozy Cloud). En effet, à travers les interactions avec les LLM, nous produisons et fournissons des données personnelles plus que jamais. Le besoin de récupérer le contrôle dessus se fait donc encore plus ressentir.

D’autant plus qu’un nouveau champ d’usage semble possible. Puisqu’avec plus de données de contexte, les réponses deviennent plus pertinentes et peuvent se baser sur des rapprochements intelligents. La mise à disposition d’un assistant virtuel paré à nous servir devient envisageable.

Aujourd’hui, des outils libres comme Hermes ou OpenClaw permettent déjà de mettre en place un tel agent pour organiser nos besoins personnels. Mais pour en tirer pleinement parti, il faut un accès à un LLM local (très coûteux aujourd’hui) et à des données personnelles structurées et privées. On peut évidemment fonctionner avec des LLMs du marché et la suite Google mais cela revient à se livrer totalement à un acteur tiers. Et comme on l’avait constaté avec Cozy Cloud, les données sont trop fragmentées entre plateformes concurrentes. C’est donc plus difficile de faire ça aussi bien qu’avec des services maîtrisés et déployés sur son propre hardware.

J’ai aussi pu observer que le principe d’autohébergement s’est popularisé : le Mac Studio est en rupture de stock, le Framework Desktop a un succès retentissant, Google propose des VM personnelles (Gemini Spark), NVidia propose sa box, etc. Toutefois, s’auto-héberger devient de plus en plus un sport de riches. Le prix du matériel explose et pour faire tourner un bon LLM, il faut compter plusieurs milliers d’euros.

Tout ça pour dire que l’informatique personnelle va probablement prendre une nouvelle dimension, mais cela profitera probablement surtout aux classes très aisées. Je suivrai tout de même cela de près et encouragerai toute initiative libre et protectrice de la vie privée dans ce domaine.

Conclusion

Ces cinq dernières années ont été très riches en événements, apprentissages, rencontres et découvertes.

Même si j’ai moins codé, j’ai beaucoup appris sur les dynamiques du logiciel libre et des modèles d’affaires liés tout en suivant les dernières évolutions technologiques. Mais surtout, j’ai pu voir mon projet se développer et rendre ses utilisateurs heureux. Enfin, j’ai pu travailler avec un des projets les plus excitants du monde libre.

Mon constat est que réaliser un projet utile et libre a un impact positif net sur le secteur ciblé. Cela amène à faire des rencontres inespérées auparavant. Mais plus l’outil progresse, plus l’alimenter nécessite des moyens conséquents. Les trouver requiert beaucoup d’énergie et amène à des situations ingrates. C’est dans ces moments que la mission prend tout son sens. Il faut savoir pourquoi on se lève le matin pour garder la motivation et trouver l’énergie pour continuer.

Kitsu a aussi permis à une brique libre de faire une percée dans un secteur où les solutions propriétaires étaient quasi omniprésentes (en dehors de l’adoption récente de Blender). C’est un pas de plus vers un monde numérique plus vertueux.

Tout ceci n’a pas été de tout repos, mais je dois dire que c’est une sacrée aventure dont je ne me lasse pas. J’ai tout de même hâte d’arriver à une forme de stabilité. Les aléas du marché créent une incertitude qui n’est pas toujours confortable. J’espère pouvoir vous dire que j’y suis arrivé lors de mon prochain bilan en y ajoutant plein d’autres apprentissages et nouvelles !

Session de validation de plans dans Kitsu (images : Wing it par le Blender Studio)
Session de validation de plans dans Kitsu (images : Wing it par le Blender Studio)

Questions-réponses tirées du journal

Est ce que tu penses que les difficultés dont tu parles sont liées à votre licence ? (piratebab2)

Avec la licence libre, on perd l’effet d’entraînement qui permet d’avoir plus de fuel pour continuer à faire grossir l’équipe et de rajouter des services. Et comme le marché est petit, d’une certaine manière ça diminue le nombre d’entreprises atteignables. Avec une approche propriétaire, il aurait été plus difficile de convaincre les premiers utilisateurs et le côté standard aurait été plus difficile à atteindre et la crise nous aurait aussi impactés. Ça n’aurait pas été simple non plus.

Avez-vous pensé à faire de la formation pour mettre du beurre dans les épinards ? (piratebab2)

Nous avions essayé sans succès, mais c’est peut-être une idée à relancer maintenant que la surface fonctionnelle du logiciel est plus importante. D’autant plus que les formations sont beaucoup subventionnées dans le secteur. Le coût pour un studio est faible.

Vous pouvez fournir une assistance à la mise en place de l’auto-hébergement, puis un contrat de maintenance (piratebab2)

Oui on a ajouté ça récemment avec notre programme Partners : https://www.cg-wire.com/partners/
Ça prend un peu, on va essayer de pousser ça pour se créer un flux de revenu supplémentaire. Si ça prend vraiment ça peut nous booster significativement (100 studios qui s’inscrivent = 350k€ / an en plus).

Pour pouvoir faire des formations professionnelles dont le paiement est pris en charge par les dispositifs en vigueur il faut avoir une certification Qaliopi ce qui entraîne des frais non négligeables parce que c’est payant. (Ysabeau 🧶)

Merci pour les infos. Dans le secteur de l’animation c’est L’AFDAS qui gère tout ça (la plupart des gens sont intermittents du spectacle), et idéalement il faut passer par un organisme de formation agréé.

Merci pour les suggestions !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Estampille : l'outil de gestion de tests ultra léger.
    Voici Estampille. Estampille vise à remplacer les fichiers tableurs partout où l’installation d’une suite complète de tests (Squash, HPALM…) n’est pas possible. Il est distribué sous licence GNU GPL. Cet outil permet de rédiger des cas de test composés de pas de tests. Il permet d’exécuter manuellement ces cas de test autant de fois que nécessaire. Un cas de test peut être appelé dans d’autres cas de tests pour factoriser la rédaction des cas. Les résultats d’exécution sont exportables sous for

Estampille : l'outil de gestion de tests ultra léger.

Voici Estampille. Estampille vise à remplacer les fichiers tableurs partout où l’installation d’une suite complète de tests (Squash, HPALM…) n’est pas possible. Il est distribué sous licence GNU GPL.

Cet outil permet de rédiger des cas de test composés de pas de tests. Il permet d’exécuter manuellement ces cas de test autant de fois que nécessaire. Un cas de test peut être appelé dans d’autres cas de tests pour factoriser la rédaction des cas. Les résultats d’exécution sont exportables sous forme de dossiers PDF.
Enfin une page de statistiques offre une vue générale de l’avancement des tests.

Contrairement aux suites logicielles de tests existantes, Estampille n’a pas besoin de base de données, ni de serveur dédié. Les tests et exécutions de tests sont stockées sous la forme de fichiers JSON partageables facilement ; que ce soit par courriel, répertoire réseau partagé, synchronisation cloud, etc.

Cet outil ultra léger (<300 ko tests unitaires compris) est écrit en python et utilise flask pour présenter l’interface graphique sur le navigateur web. Il fonctionne indifféremment sous Linux ou Windows.

Voilà déjà la fin d’une dépêche courte pour un outil simple qui répond à un besoin concret.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • J'ai mis un proxy entre claude et Internet
    Je sais que le mot "IA" sur LinuxFr, c'est un peu comme prononcer "systemd" en 2015 ; ça ne laisse personne indifférent. Et je comprends. La merdification est réelle, la bulle est réelle, les externalités sont réelles. Je n'ai aucune envie d'en rajouter une couche. Mais voilà, les lignes sont devenues floues, et j'ai pris le virage du coding assisté. D'abord avec curiosité et prudence, et maintenant les deux pieds dans le plat : ça ne remplace pas ma façon de penser, mais ça m'a ouvert des porte

J'ai mis un proxy entre claude et Internet

Je sais que le mot "IA" sur LinuxFr, c'est un peu comme prononcer "systemd" en 2015 ; ça ne laisse personne indifférent. Et je comprends. La merdification est réelle, la bulle est réelle, les externalités sont réelles. Je n'ai aucune envie d'en rajouter une couche. Mais voilà, les lignes sont devenues floues, et j'ai pris le virage du coding assisté. D'abord avec curiosité et prudence, et maintenant les deux pieds dans le plat : ça ne remplace pas ma façon de penser, mais ça m'a ouvert des portes : des concepts que je ne maîtrisais pas, des langages que je n'aurais pas pris le temps de toucher avant ; l'assistant me permet d'explorer, de comprendre, et de construire des outils qui m'aident. Et j'espère qu'ils aident d'autres personnes aussi.

Sauf que voilà. Au début, j'étais prudent. Je vérifiais chaque commande, chaque accès. Et puis petit à petit, j'ai lâché prise. J'ai désactivé les confirmations, laissé l'agent tourner sans supervision, accepté les permissions sans lire. On connaît tous ce moment où on clique "Allow" les yeux fermés parce que c'est la quinzième fois qu'il demande. J'ai fait exactement ce qu'on ne devrait jamais faire en sécurité : faire confiance par défaut.

Et un jour, je me suis dit : je n'ai aucune idée de ce que cet agent envoie sur le réseau. Aucune.

Alors j'ai construit un proxy un peu.. particulier.

Sommaire

Cher journal,

Ça fait un bail que je n'ai pas vraiment contribué à l'open source. Mes derniers vrais projets publics, c'était Kivy et les projets autour… ça remonte à quelques années maintenant, et j'ai pris ma "retraite" sur ces projets.

Mais je n'ai jamais arrêté de coder. J'ai juste réalisé un truc sur moi-même : le code, c'est un peu comme la musique pour moi. J'aime construire des choses. Je m'exprime mieux avec un éditeur et un terminal qu'avec ma voix ou mes mots. C'est probablement pour ça que je suis là à t'écrire un journal au lieu de faire un talk quelque part.

Le constat

On a passé des années à construire des pare-feux, des IDS, du monitoring pour nos serveurs de prod. Sur des entreprises plus grandes, on traque les connexions suspectes… Et puis un agent IA débarque sur notre machine de dev, on lui dit "tiens, refactore-moi ce module", et il fait ce qu'il veut sur le réseau sans qu'on le sache.

C'est quand même un peu absurde, non ?

Le truc, c'est qu'il n'existe pas vraiment d'équivalent à tcpdump ou iptables pour les agents IA sur nos machines. Pas de couche d'observabilité entre l'agent et Internet. Ou on contrôle, on se fait notre liste d'outils qu'on accepte, ou on fait confiance parce que bon, la sécurité, c'est pas si important… vraiment ?

Greywall et greyproxy

Avec l'équipe de Greyhaven, on a construit deux outils open source :

Greywall est un bac à sable deny-by-default pour les agents IA. Pas de Docker, pas de VM. Ça utilise directement les mécanismes du noyau Linux (namespaces, Landlock, Seccomp, eBPF) pour isoler le processus. Sur Linux, l'isolation réseau passe par un device TUN dans un namespace réseau dédié ; le processus sandboxé ne peut structurellement pas contourner le proxy. Sur macOS, c'est un peu moins élégant en utilisant des variables d'environnement pour forcer un proxy socks5h, si l'outil ne le supporte pas, il ne peut quand même pas sortir. Ça fait le job pour la plupart des outils.

Greyproxy est le plan de contrôle réseau. Un proxy SOCKS5/HTTP avec un dashboard web temps réel. Chaque connexion sortante de l'agent apparaît dans le dashboard. Si aucune règle ne matche, la connexion reste en attente et tu peux l'autoriser ou la refuser en direct, sans relancer la session.

Concrètement, ça donne :

greywall -- claude

Et hop, Claude Code tourne dans son bac à sable. Tu ouvres http://localhost:43080 et tu vois en direct chaque domaine qu'il tente de contacter. Tu autorises api.anthropic.com, tu autorises github.com pour les pushes, tu refuses le reste. Tout est interactif, tout est visible.

Ce que j'ai observé

Au début, c'était juste des connexions supplémentaires. Tiens, c'est quoi ces appels à opencode.ai quand je démarre opencode ? Tiens, pourquoi Claude appelle 2x toutes les 4 minutes un domaine chez Google ? Entre de la télémétrie que l'on ne peut pas désactiver, ou des requêtes qui font "office" de regarder si une nouvelle version est disponible… 2x toutes les 4 minutes. Ce n'est pas le meilleur argument, mais contrairement aux autres sandboxes, au moins ici je le vois en temps réel, et je peux dire oui ou non sur ce que peut accéder la commande.

Le dashboard de greyproxy rend tout ça visible. Tu vois passer les requêtes DNS, les connexions TCP, les domaines contactés. Tu peux construire progressivement une liste d'autorisations adaptée à ton projet. Il y a même un mode apprentissage qui trace les accès filesystem avec strace et génère automatiquement un profil de sécurité.

Ce n'est pas un outil pour les paranos. C'est un outil pour ceux qui pensent que l'observabilité, c'est un droit, pas un luxe.

Pourquoi ça compte

Je sais que l'enthousiasme pour l'IA est réellement différent en fonction des gens. Les questions sur la qualité du code généré, la consommation énergétique, la centralisation chez les GAFAM ; tout ça est légitime.

Mais justement. Si on utilise ces outils (et beaucoup d'entre nous le font, même ceux qui restent prudents), autant le faire avec les yeux ouverts. Greywall, c'est pas un outil pour promouvoir l'usage des agents IA. C'est un outil pour que, si tu en utilises un, tu gardes le contrôle.

Il y a une phrase qu'on a mise sur le site et qui résume bien l'idée :

"The security layer around your tools should be independent of the company selling you the AI."

La couche de sécurité autour de tes outils ne devrait pas dépendre de la boîte qui te vend l'IA. Claude a son propre sandbox intégré, Codex a le sien. Mais tu fais confiance aux entreprises pour te protéger d'elles-mêmes ? C'est un problème d'indépendance, pas de technologie.

Greywall est agnostique. Ça marche avec Claude Code, Codex, Cursor, Aider, Goose, Gemini CLI, Cline, et une dizaine d'autres. Tu changes d'agent, ta couche de sécurité reste la même.

Et après : vers un proxy sémantique

Le greyproxy actuel travaille au niveau des connexions : il voit les domaines, les ports, les IPs. Il ne déchiffre pas le TLS, il ne lit pas le contenu. C'est déjà très utile pour contrôler les accès réseau.

Mais là où ça devient vraiment intéressant, c'est quand on commence à reconstruire les conversations LLM qui passent par le proxy. Pas en cassant le chiffrement ; en instrumentant le flux côté client. L'idée, c'est de construire un proxy sémantique qui comprend ce que l'agent envoie et reçoit, qui peut faire du remplacement de variables d'environnement à la volée (pour ne jamais exposer tes vrais secrets à l'API du LLM), et qui te donne une vision complète de ce que l'IA fait en ton nom.

On en est au début, mais la direction est claire : remettre l'humain au milieu du système. Pas comme un goulot d'étranglement, mais comme un observateur informé qui peut intervenir quand c'est nécessaire. C'est ce qui manque cruellement à des systèmes comme OpenClaw et à la plupart des outils d'orchestration d'agents.

Pour essayer

Installation rapide :

# Homebrew
brew tap greyhavenhq/tap && brew install greywall

# Ou via curl (pas taper)
curl -fsSL https://raw.githubusercontent.com/GreyhavenHQ/greywall/main/install.sh | sh

Ça tourne sur Linux et macOS. Sur Linux, il te faut bubblewrap et socat comme dépendances. Greyproxy s'installe comme service systemd si tu veux qu'il tourne en permanence.

Si tu veux comprendre les détails techniques de l'architecture (les 5 couches de sécurité, pourquoi on a abandonné Docker, comment fonctionne la capture réseau transparente), on a écrit un article technique détaillé ici : https://greyhaven.co/insights/why-we-built-our-own-sandboxing-sytem

La question

J'ai une vraie question pour la communauté. Ceux d'entre vous qui utilisent des agents IA pour coder (même occasionnellement, même à contrecœur) : comment vous gérez la sécurité ? Vous faites confiance par défaut ? Vous avez mis en place quelque chose ? Ou vous préférez ne pas y penser ?

Et pour ceux qui n'utilisent pas d'agents IA : est-ce que le manque de transparence et de contrôle fait partie des raisons ?

Ça m'intéresse vraiment de savoir :)

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • 📰 Revue de presse — septembre 2025
    C'est la reprise après une pause estivale qui a fait souffrir les ventilateurs de nos ordinateurs. Voici donc un petit panorama, forcément subjectif et parti{e,a}l, de la presse papier disponible en cette rentrée 2025. Voici donc les nouveautés sorties en septembre dernier des éditions Diamond et disponibles jusqu'à fin octobre. Pour rappel, Linux Pratique est devenu SysOps Pratique, pour acter un état de fait et mieux refléter son contenu dédié aux administrateurs de systèmes libres et open

📰 Revue de presse — septembre 2025

Par : Florent Zara
18 septembre 2025 à 09:25

C'est la reprise après une pause estivale qui a fait souffrir les ventilateurs de nos ordinateurs. Voici donc un petit panorama, forcément subjectif et parti{e,a}l, de la presse papier disponible en cette rentrée 2025.

Image une de Journal

Voici donc les nouveautés sorties en septembre dernier des éditions Diamond et disponibles jusqu'à fin octobre. Pour rappel, Linux Pratique est devenu SysOps Pratique, pour acter un état de fait et mieux refléter son contenu dédié aux administrateurs de systèmes libres et open source.

  • GNU/Linux Magazine France no 277 vous explique que finalement, vous ne comprenez rien à Git ;
  • SysOps Pratique no 151 détecte les vulnérabilités avant de déployer ;
  • MISC magazine no 141 regarde de plus près GitHub et la sécurité des plateformes DevOps ;
  • Hackable no 62 débogue facilement avec GDB.

Et les éditions Diamond continuent de fêter leur 30 ans. À cette occasion, elles proposent de (re)découvrir l'une de leurs publications en offrant le numéro 270 de GNU/Linux Magazine via leur support de lecture en ligne, Kiosk Online (en HTML).

Les sommaires des numéros sortis en septembre 2025

Mosaïque des couvertures GLMF 277 Mosaïque des couvertures LP 151 Mosaïque des couvertures MISC 141 Mosaïque des couvertures HK 62

GNU/Linux Magazine numéro 277

Au sommaire de ce numéro de septembre — octobre 2025 :

  • FreeBSD 14.3 ajoute un support pkg pour les modules noyau, c'est le moment de coder les vôtres !
  • Git : comment ça marche ?
  • Advent of Code, jour 17 (le retour) ;
  • Les codes fantastiques : variable et Unicode ;
  • Programmation robuste avec Bash ;
  • Erreurs en rafales, multiparités et codes Gray entrelacés.

SysOps Pratique numéro 151 (ex Linux Pratique)

Au sommaire de ce numéro de septembre — octobre 2025, devenu SysOps Pratique :

  • À la rencontre du CNLL, acteur clé du logiciel libre dans l’écosystème numérique français et européen ;
  • Gérer le cycle de vie d’un OS immuable en production : le cas Flatcar ;
  • Analysez vos projets avec Trivy, pour traquer vulnérabilités et mauvaises configurations ;
  • GlusterFS, CTDB et Samba pour une haute disponibilité dans un environnement hybride ;
  • Architecture conteneurisée hautement disponible avec HAProxy ;
  • Déployer Rook et intégrer un stockage Ceph externe dans Kubernetes ;
  • « Day One Operations » avec Ansible.

MISC Magazine numéro 141

Au sommaire de ce numéro de septembre — octobre 2025 :

  • Une prise de recharge ou une prise réseau ?
  • Compromission sur GitHub Enterprise : où et quoi chercher ?
  • Surveillance des sessions utilisateurs Kubernetes avec eBPF ;
  • Auditer le cloud autrement : l’approche graphe de Cartography ;
  • Présentation d'un pipeline d'ingestion et de qualification des IOC avec OpenCTI ;
  • La sécurité du protocole VRRP ;
  • C++ : contrôlez votre espérance de vie.

Hackable numéro 62

Au sommaire de ce numéro de septembre — octobre 2025 :

  • Et si on accédait en SSH à nos ESP32 ?
  • Créez votre propre clavier ergonomique ;
  • Débugger un système embarqué, virtuel ou réel, au moyen de GDB et JTAG ;
  • Recyclons un lecteur USB de SIM en interface pour smartcard ;
  • LiteX en pratique : créons notre MCU sur mesure ;
  • LiteX : parlons un peu de code…
  • Développement open source pour FPGA : pourquoi pas FreeBSD ?

Télécharger GNU/Linux Magazine numéro 270

Pour le récupérer, il suffit de

  1. se connecter ou de créer un compte sur leur boutique en ligne ;
  2. d'ajouter le numéro 270 de GNU/Linux Magazine à votre panier en sélectionnant bien le support Kiosk Online avant ;
  3. d'indiquer le code de remise ED30LINUXFR lors de la validation de la commande.

Bonnes lectures !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Des nouvelles de Fortran n°7 - juillet 2025
    Dans les actualités Fortran, on abordera en particulier la troisième édition de la conférence internationale Fortran, la sortie officielle du nouveau compilateur Flang dans LLVM et les actualités du gestionnaire de paquets fpm. Et comme c'est bientôt les vacances, on terminera par une section consacrée à Fortran dans la culture populaire, où l'on apprendra entre autres que le Nostromo avait un neuvième passager… lien nᵒ 1 : Alien, le huitième passagerlien nᵒ 2 : Organisation Fortran-lang.orglien

Des nouvelles de Fortran n°7 - juillet 2025

Par : vmagnin
17 juillet 2025 à 06:42

Dans les actualités Fortran, on abordera en particulier la troisième édition de la conférence internationale Fortran, la sortie officielle du nouveau compilateur Flang dans LLVM et les actualités du gestionnaire de paquets fpm. Et comme c'est bientôt les vacances, on terminera par une section consacrée à Fortran dans la culture populaire, où l'on apprendra entre autres que le Nostromo avait un neuvième passager…

Sommaire

Appel à contributions pour FortranCon 2025

FortranCon 2025 est la troisième édition de la conférence internationale sur le développement et l'utilisation du langage de programmation Fortran, et aura lieu les 4 et 5 novembre 2025. Avec cette conférence, nous avons l'intention de rassembler les développeurs actifs du projet Fortran dans tous les domaines : les développeurs de bibliothèques et d'outils ainsi que les personnes utilisant Fortran pour développer des applications scientifiques, afin de partager leur expérience et d'échanger des idées. L'événement est organisé sur Zoom grâce aux contributions de la communauté pour la communauté.

Le discours d'ouverture sera prononcé par John Reid, membre actif du comité Fortran de l'ISO/IEC JTC1/SC22/WG5 (et animateur du comité de 1999 à 2017). C'est également l'un des auteurs du livre de référence Modern Fortran explained, dont la sixième édition (couverture orange) inclut Fortran 2023.

Les vidéos des présentations des éditions 2020 et 2021 sont toujours en ligne sur la chaîne YouTube FortranCon.

Dates limites

  • Inscription (gratuite) : 15 octobre 2025.
  • Premier appel à résumés : 1er août 2025 (décisions envoyées avant le 30 août 2025).
  • Deuxième appel à résumés : 1er septembre 2025 (décisions envoyées avant le 30 septembre 2025).

Sur le front des compilateurs

Compilateurs opérationnels

Flang (LLVM)

Dans LLVM 20.1, sorti en mars 2025, flang-new a été rebaptisé flang et remplace son prédécesseur du même nom. Il s'agit donc du lancement officiel de ce nouveau compilateur soutenu par NVIDIA et le Département de l’Énergie américain, après sept ans de développement. Un article très complet du blog LLVM relate cette longue aventure :

La doc de Flang présente même une pierre de Rosette pour les gens connaissant le C ou le C++ et souhaitant débuter en Fortran.

Intel ifx

Intel ifx (basé sur LLVM) est actuellement en version 2025.2.0, avec en particulier quelques améliorations du côté Fortran 2023 et OpenMP 6.0, par rapport à la 2025.1.0 qui améliorait également ces deux points.

GFortran (GCC)

GFortran est en version 15.1. Attention, les fichiers .mod générés par GFortran 15 ne sont pas compatibles avec les versions antérieures. Si vous ne savez pas de quoi je parle, les .mod c'est un peu l'équivalent des fichiers headers .h en C, mais en pire puisque ce sont des fichiers binaires pas normalisés, donc pas interopérables entre les différents compilateurs Fortran, voire comme ici entre différentes versions. Bref, pas glop !

Parmi les six projets GCC du GSoC 2025, on en trouve un pour améliorer la prise en charge par GFortran de certaines fonctionnalités des normes Fortran 2018 et 2023. Le compilateur libre a également reçu 360 k€ de la Sovereign Tech Agency allemande, en particulier pour offrir un support direct des coarrays (co-tableaux) pour le calcul parallèle sur systèmes à mémoire partagée (pour l'instant il est nécessaire d'installer la bibliothèque OpenCoarrays pour les utiliser avec GFortran).

En gestation

Le développement du compilateur LFortran continue. Il s'approche tranquillement de la version beta, compilant déjà huit bibliothèques Fortran matures sur les dix définies pour ce jalon. On notera d'ailleurs que parmi les cinq projets de la communauté Fortran-lang du GSoC 2025, un projet a pour objectif de réussir à compiler le gestionnaire de paquets fpm avec LFortran. Une bonne façon de faire progresser le compilateur !

Fedora ou F comme Fortran ?

Une des meilleures distributions Linux pour faire du Fortran est peut-être Fedora. On trouve en effet directement dans ses dépôts pas moins de trois compilateurs Fortran libres en versions récentes : GFortran (GPL), Flang (licence Apache) et LFortran (licence BSD). Quand à Intel ifx, on pourra facilement l'installer par exemple dans un environnement Conda (paquet ifx_linux-64). Et avec la Fedora Rawhide, c'est bien sûr encore plus saignant (bleeding edge) au niveau des versions !

Communauté Fortran-lang

Projets Fortran-lang

fpm

Le gestionnaire de paquets Fortran fpm est disponible en version 0.12 depuis le 18 mai 2025. Parmi les nouveautés, on notera :

  • un fichier compile_commands.json exporté par défaut à chaque fois que l'on construit un projet avec fpm, ce qui facilitera son intégration avec d'autres outils, en particulier les IDE.
  • Deux nouveaux métapackages disponibles : BLAS/LAPACK et NetCDF.
  • La possibilité de générer des bibliothèques partagées, et non plus uniquement statiques.

Du côté des greffons, on citera fpm-modules et fpm-deps qui permettent de visualiser les dépendances d'un projet fpm à l'aide d'outils tels que Mermaid ou Graphviz.

Quelques projets divers

  • Fortitude 0.7.3 : un linter Fortran sous licence MIT, écrit en Rust et installable via Python.

  • Seer : une interface graphique pour gdb pour Linux, qui prend en charge de nombreux langages, dont Fortran. Licence GPL 3.0.

  • Codee commercialise un analyseur de code Fortran / C / C++ et un formateur de code Fortran. Ce dernier peut néanmoins être utilisé gratuitement pour un usage personnel. « Codee se distingue en tant que plateforme de développement Fortran, C et C++, en favorisant la correction du code, la modernisation, la sécurité, la portabilité et l'optimisation afin d'aider les développeurs à fournir des logiciels rapides, faciles à maintenir et fiables, conformes aux normes de l'industrie. » Codee vient de sortir en version 2025.3.

Fortran et culture populaire

Alien

Comme vous le savez peut-être, le Nostromo est le vaisseau spatial du film Alien (1979). Lors de l'atterrissage sur la lune Acheron LV-426, l'ordinateur de bord affiche un modèle 3D de son relief. Sur cet extrait sur YouTube, vous pouvez le voir plusieurs fois à partir de l'instant 2:28. Ce modèle est présenté par son auteur dans l'article suivant :

Le code ne faisait que 14 pages de code FORTRAN et son auteur explique :

Le matériel utilisé était un Prime 300 connecté à un FR 80 de III (Information International, Inc.) qui peut tracer directement sur pellicule. Le logiciel d'animation Frolic, développé par C. Emmett, tournait sur ce système dans les laboratoires du SRC à Oxfordshire.

Mon programme était écrit en FORTRAN avec des appels aux sous-routines Frolic.

Années 70 obligent, le graphisme n'est pas sans rappeler le signal du pulsar CP1919 tracé informatiquement par Harold D. Craft Jr dans sa thèse soutenue en 1970 et popularisé par Peter Saville sur la pochette de l'album Unknown Pleasures, dont je vous avais déjà parlé. Quarante-six ans après la sortie du film Alien, on pourra s'amuser de constater que n'importe quelle voiture actuelle a un écran couleur bien plus high-tech que celui du Nostromo ! Mais dix ans avant, le premier alunissage avait eu lieu avec une informatique et une électronique qui semblent aujourd'hui rudimentaires. C'est que se déplacer est avant tout un problème de mécanique (éventuellement céleste). Côté déplacement, le Nostromo reste quand même très largement en avance sur les starships actuels.

Fortran dans les dessins animés américains

Le langage semble avoir laissé des traces, plutôt bienveillantes, chez les (vieux) étudiants américains :

  • Dans la série d'animation Futurama, Olde Fortran est une marque de liqueur de malt (bière forte) consommée par le robot Bender, une sorte de boisson énergisante pour lui. On y voit aussi des jackpots Wheel of Fortran (roue de la fortune… Algorithme Monte Carlo ?).
  • Dans Les Simpson, épisode « L'homme qui vint pour être le dîner » (2015), un extraterrestre dit à 1:23 :

« En tant que jeunes choses insignifiantes, nous sommes éduqués dans la sagesse de l'univers. Physique, mathématiques, FORTRAN - le plus grand des langages de programmation ! »
(“As young thinglings, we are schooled in the wisdom of the universe. Physics, mathematics, FORTRAN - the greatest of the programming languages!”)

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Common Lisp ces deux dernières années: un monstre de l'évolution parmi nous
    Le langage Common Lisp n’est pas un dinosaure éteint. À l’instar de certains requins, c’est une bestiole qui n’a cessé d’évoluer pour devenir un prédateur redoutable aujourd’hui. C’est un langage qui éclate l’auteur du journal à l’origine de cette dépêche, dzecniv, au quotidien depuis des années, avec lequel il déploie certains services facilement (venant de Python, il apprécie le déploiement), alors il a de nouveau rédigé un petit récapitulatif de ce qui s’est passé dans cet écosystème ces deux

Common Lisp ces deux dernières années: un monstre de l'évolution parmi nous

Le langage Common Lisp n’est pas un dinosaure éteint. À l’instar de certains requins, c’est une bestiole qui n’a cessé d’évoluer pour devenir un prédateur redoutable aujourd’hui. C’est un langage qui éclate l’auteur du journal à l’origine de cette dépêche, dzecniv, au quotidien depuis des années, avec lequel il déploie certains services facilement (venant de Python, il apprécie le déploiement), alors il a de nouveau rédigé un petit récapitulatif de ce qui s’est passé dans cet écosystème ces deux dernières années.

Vous prendrez garde à ne pas conclure que les bibliothèques et projets qui sont présentés ici sont les seuls de leur domaine, ni que tous les nouveaux projets sont listés, ni qu’il s’agit d’un aperçu complet de l’écosystème.

Sommaire

(NdM: dans la suite, l'auteur du journal à l’origine de la dépêche s'exprime à la première personne)

Pour avoir un aperçu plus global de l'écosystème, veuillez faire une petite recherche sur GitHub, surveillez reddit/r/lisp et reddit/r/common_lisp, utilisez un moteur de recherche, ou commencez par jeter un coup d’œil sur la liste awesome-cl.

Il me tient à cœur de faire cette liste, car de l’extérieur on ne se rend pas forcément compte à quel point, certes, le langage et l’écosystème sont stables, mais qu’ils évoluent également.

S’il fallait en choisir trois, je mettrais ces travaux en avant :

  1. je suis impressionné par tout ce qui se passe autour de l’implémentation SBCL (et des travaux en cours sur ECL et ClozureCL)
  2. j’adore l’éditeur Lem, et suis également impressionné par tous les modules qu’il comporte déjà, par la qualité de sa base de code et par la facilité avec laquelle on peut l’explorer, ce qui est aussi rendu facile par l’interactivité du langage
  3. plusieurs outils pour écrire et exécuter des scripts plus rapidement que d’habitude émergent, et sont nécessaires à mon avis.

Bonne découverte.

Opus Modus v3

Hacker News est passé de Racket à Common Lisp (SBCL)

C’est une nouvelle plutôt cool pour nous les publicitaires pro du langage. HN a été développé avec le dialecte de Lisp Arc, initialement implémenté avec Racket, et pour des questions de performance ils l’ont ré-implémenté en Common Lisp, avec SBCL.

Pour plus de contexte : Paul Graham (avec Robert Morris) crée Viaweb en 1995, le premier fournisseur d’applications en ligne (pour garder la terminologie de Wikipédia, page Paul Graham), développé en Common Lisp, avec l’implémentation CLisp. Cette implémentation existe toujours et est légèrement développée, mais il est généralement conseillé d’utiliser SBCL (qui colle mieux au standard, qui est plus performante, qui donne plus d’indications de typage pendant le développement, etc.). “PG” vend Viaweb à Yahoo en 1998 (pour ce qui devient Yahoo! Store), et fonde l’incubateur de start-ups YCombinator. PG n’était pas satisfait par Common Lisp, au tout au moins (là, je n’ai pas les sources) voulait un dialecte plus succinct, qui permette d’écrire des applications web de manière plus compacte. Il ébauche un dialecte de Lisp, appelé Arc, et l’implémente avec Racket (MzScheme à l’époque). Le site de Hacker News (géré par YCombinator) fut donc écrit en Arc avec cette première implémentation.

Le responsable (ou un des responsables) du portage vers SBCL et modérateur d’Hacker News, dang, explique :

[Clarc, l’implémentation en Common Lisp] est beaucoup plus rapide et permet de faire tourner HN sur plusieurs cœurs. Ça a été un travail de fond de quelques années, principalement parce que je ne trouve pas le temps pour travailler dessus.

Les sources du site d’HN ne seront pas publiées pour ne pas dévoiler de multiples mécanismes anti-spam et anti-abus (les séparer du code source serait « beaucoup de travail »), mais les sources de Clarc pourraient l’être, avec un peu plus d’efforts pour les séparer du code d’HN.

https://lisp-journey.gitlab.io/blog/hacker-news-now-runs-on-top-of-common-lisp/

C’est quoi Common Lisp ?

C’est un langage multi-paradigmes, et selon les implémentations, comme avec SBCL : compilation en code machine très performant, typage graduel, très interactif :

  • débogueur interactif, permet de corriger une fonction, de la re-compiler et de reprendre l’exécution depuis la fonction boguée, sans devoir tout relancer de zéro (démo youtube)
  • ne perd pas l’état du programme en cours quand on travaille avec un bon éditeur
  • permet même de contrôler comment des instances sont mises à jour lorsque la définition d’une classe change (pas forcément utile pour le quotidien on est d’accord, encore que, quand on sait le faire on en tire parti, mais c’est pensé pour les systèmes à longue durée de vie, qu’on peut patcher pendant qu’ils tournent),
  • un REPL avec beaucoup de fonctionnalités (ne redémarre jamais, on peut installer des bibliothèques depuis le REPL), extrêmement utile et satisfaisant en tant que développeur (j’en ai toujours un d’ouvert),
  • on compile fonction par fonction avec un raccourci clavier, SBCL nous donne beaucoup de warnings et d’erreurs de typage instantanément (et pour du Haskell intégré dans Common Lisp, cf. Coalton ci-dessous).

Définir une fonction :

(defun hello ()
  (print "hello!"))

;; Appeler la fonction:
(hello)

Compiler la fonction :

  • soit C-c C-c depuis tout bon éditeur, sans quitter le programme, sans redémarrer quoi que ce soit,
  • soit C-c C-k depuis l’éditeur, pour re-compiler le fichier,
  • soit sbcl --load hello.lisp depuis la ligne de commande (ce qu’on va donc faire rarement, seulement de temps en temps pour vérifier que ça passe, pour construire un binaire, pour déployer depuis les sources…)

Liens :

La communauté

Elle est active, il y a des évènements IRL réguliers dans quelques villes, l’European Lisp Symposium chaque année…

On peut voir les chiffres de la communauté reddit/r/common_lisp (plus petite que le plus général “lisp”),

La communauté est présente sur reddit, Discord (lien: https://discord.gg/hhk46CE), IRC, Mastodon, LinkedIn…

Documentation

On a la chance d’avoir de très bons livres sur CL, mais historiquement peu de doc en ligne. Ça évolue.

Les spécifications du langage ont été portées vers des sites beaucoup plus sympas à l’utilisation que le site de référence, comme le Common Lisp Community Spec, site également publié sous licence libre,

Le Common Lisp Cookbook reçoit un bon nombre de contributions. On peut le trouver en EPUB : https://github.com/LispCookbook/cl-cookbook/releases/tag/2025-01-09

Le livre PAIP est maintenant disponible en ligne : https://norvig.github.io/paip-lisp/#/

J’ai sorti un nouveau site sur le développement web en Common Lisp : https://web-apps-in-lisp.github.io/index.html

FreeCodeCamp a publié un cours “complet” sur Youtube : https://www.reddit.com/r/Common_Lisp/comments/1i1e766/lisp_programming_language_full_course_for/

cf. d’autres vidéos sympas ici : https://www.cliki.net/Lisp%20Videos

J’ai sorti neuf vidéos (1h22) pour expliquer CLOS, le système objet : https://lisp-journey.gitlab.io/blog/clos-tutorial-in-9-videos-1h22min--read-the-sources-of-hunchentoot-and-kandria/

Les implémentations

Il s’en passe des choses.

SBCL

SBCL a toujours des sorties mensuelles : https://www.sbcl.org/news.html

SBCL s’est vue dotée d’un nouveau GC.

Entre autres choses, rapidement :

  • appeler SBCL comme une bibliothèque partagée depuis C ou Python, avec sbcl-librarian (par les mêmes personnes derrière Coalton) (recette sur le Cookbook),
  • compilation croisée pour Android
  • support pour Haiku
  • « memory allocation arenas » pour arm64
  • améliorations du module sb-simd
  • SBCL est porté pour la Nintendo Switch, pour les besoins du jeu Kandria (cf plus bas)
  • installation facile sur Windows avec Chocolatey (non officiel)
  • ou des builds quotidiens pour MSYS2

ABCL - CL pour Java

ABCL a sorti des nouvelles versions :

Et Clojure ? Je ne connais qu’à peine (ça reste du Java, ça reste gourmand en ressources, le REPL est moins riche en fonctionnalités, le langage ne donne pas d’erreurs de type à la compilation avec un C-c C-c), donc je peux juste citer d’autres lispers. cf. :

CCL, LispWorks, Allegro, ECL, CLASP, SICL, LCL, Alisp, Medley

Ces implémentations sont actives.

ECL a un module pour WASM, en cours de développement mais qui permet déjà de lancer Maxima, un logiciel de calcul formel, dans un navigateur.

Breaking news: ECL vient d'être accepté par NLNet pour justement travailler sur ce module.

Pour info, on peut également utiliser Maxima via SageMath, avec KDE Cantor, avec l'interface graphique wxMaxima, sur Android, dans un "notebook" Jupyter, via Emacs avec le paquet "maxima-mode", et on peut faciliter son utilisation depuis un REPL Common Lisp et avec maxima-interface.

CLASP, pour interfacer CL et C++ nativement, est toujours développé par une start-up en bio technologies :

SICL est peut-être le futur de Common Lisp. C’est une nouvelle implémentation, modulaire. Des bouts sont déjà utilisés dans d’autres implémentations.

Medley est la ré-incarnation de la Medley Interlisp Lisp Machine. Je ne l’ai pas connue, trop jeune. On peut la tester via un navigateur.

LCL pour Lua Common Lisp est une nouvelle implémentation, Alisp est une nouvelle implémentation en cours de développement (en C).

Industrie, offres d’emplois

Il y a peu d’offres, publiques en tout cas, on voit des opportunités passer de manière moins formelle sur les réseaux. Mais il y en a (cf. le lien original, par ex. une offre pour 3E à Bruxelles).

Et oui, certaines entreprises utilisent toujours Common Lisp, et certaines entreprises choisissent de leur plein gré ce langage comme base de leurs nouveaux produits. On le voit surtout dans le domaine de l’informatique quantique, et toujours pour une certaine forme d’IA. Mais des boîtes plus classiques peuvent en tirer parti. On voit des logiciels de management de projet (Planisware, cocorico c’est une boîte française, développé avec l’implémentation Allegro), du développement web, des bots internet…

Quelques exemples :

et des usages, moins dans l’actualité :

Projets cools

Éditeurs

Éditeurs pour Lisp : https://lispcookbook.github.io/cl-cookbook/editor-support.html (il y en a d’autres qu’Emacs, mais essayez donc !)

Lem : https://lem-project.github.io/

Construit en CL, il est donc extensible à la volée en Lisp, comme Emacs. Contient un client LSP qui fonctionne pour de nombreux autres langages, et des modes syntaxiques plus classiques pour nombre d’autres.

Quelques fonctionnalités de Lem :

  • mode vim et Emacs
  • interface Git interactive (opérations classiques, rebase interactive (sans les actions “edit” ou “reword”))
  • navigateur de fichiers
  • panneau de navigation
  • terminal via libvterm
  • curseurs multiples
  • pour le terminal (ncurses) et le bureau (SDL2), et une version “cloud” pour édition collaborative en chantier.
  • Tetris (en mode graphique)

Lem filer

Nouveau projet : Neomacs https://github.com/neomacs-project/neomacs basé sur Electron

Coalton : comme Haskell, pour Common Lisp

En les citant, Coalton c’est :

the implementation of a static type system beyond Haskell 95. Full multiparameter type classes, functional dependencies, some persistent data structures, type-oriented optimization (including specialization and monomorphization). All integrated and native to CL without external tools.

C’est une bibliothèque logicielle qu’on installe comme n’importe quelle autre, mais qui fournit un autre langage pour écrire des programmes typés statiquement, tout en s’interfaçant de manière native avec son langage hôte.

Coalton est développé à l’origine pour des boîtes dans l’informatique quantique. Cf le compilateur quilc.

Ce n’est donc pas un jouet. Et si les développeurs ne font pas un tonnerre de tous les diables pour montrer leur travail incroyable, c’est qu’ils bossent ;) (mais ils répondront au FUD sur HN).

Les gestionnaires de bibliothèques

Depuis au moins 10 ans, le « package manager » qui rend de fidèles services est Quicklisp. Il sort des distributions de bibliothèques, qui ont été vérifiées pour charger correctement. La dernière en date était en octobre :

Et oui, elle date un peu. Plusieurs explications à cela, à lire et discuter par ailleurs.

Aujourd’hui, de nouveaux outils émergent:

Développement de jeux

Le meilleur exemple dans ce domaine est Kandria, qui est sorti sur Steam :

  • https://kandria.com/
  • retours d’expérience (anglais): où oui, Common Lisp (ici SBCL) est assez performant pour faire tourner un jeu, y compris sur la Nintendo Switch, à condition de surveiller la création d'objets en mémoire.

Son auteur augmente maintenant son moteur de jeu pour la 3D. On peut le suivre et voir une démo sur Mastodon.

On trouvera d’autres ressources, par exemple :

Une fonctionnalité incroyablement utile pour les développeurs, est qu’on peut développer son jeu pendant qu’il tourne. Compiler une fonction avec C-c C-c, et voir le jeu changer. Sans tout relancer de zéro à chaque fois.

La communauté organise 2 fois par an des « Lisp Game Jam ». Où tous les dialectes de Lisp sont permis ;)

Interfaces graphiques

C’est un large sujet, et de multiples bibliothèques existent, plus ou moins faciles à prendre en main, plus ou moins portables, etc. Mais voyez la capture d’écran d’Opus Modus en introduction : c’est bien un logiciel graphique multi-plateformes. Dans ce cas, développé avec LispWorks. Par ailleurs, LispWorks possède un “runtime” pour Android et iOs.

Je vais vous laisser voir awesome-cl ou l’article original.

Le web, les web views, Electron

Le web en Common Lisp c’est faisable (et je le fais), on a pas mal de bibliothèques pour divers besoins, on a quelques “frameworks”, minimalistes. Il faut être prêt à mettre les mains dans le cambouis, à mieux connaître le web que lorsqu’on utilise des “frameworks” de haut niveau qui ont beaucoup de couches d’abstraction. Ceci dit, la malléabilité du langage, sa performance, son multi-threading, ses excellents outils de développement, ses fonctionnalités avancées, son déploiement facile… font que certaines choses compliquées dans un autre langage, ou qui nécessiteront une bibliothèque, se font en quelques lignes de manière native.

Ce qui me plaît, c’est la stabilité du langage et de l’écosystème, l’efficience des programmes (de l’ordre de C ou Java, une comparaison parmi d'autres, retours à trouver dans ses articles postérieurs et sur HN), et encore et toujours l’interactivité pendant le développement, le fait que le serveur de développement ne redémarre jamais, ne me fait pas attendre et reste réactif, et comme je disais plus haut le déploiement d’applications, facile : je peux générer un binaire de mon appli web, comprenant tous les fichiers statiques (templates HTML, le JavaScript, etc), le copier sur mon serveur, et c’est tout. Ou le vendre et ne pas devoir accompagner mon client pendant l’installation.

C’est ce que dit aussi l’auteur de Screenshotbot (projet open-source d’automatisation de prise de captures d’écran). Quand sa concurrence fait installer ses solutions via npm, il livre un petit binaire qui fait tout. Et j’ai bien dit petit, donc ±10Mo pour le projet et toutes ses dépendances, car il utilise LispWorks, qui permet d’enlever le code mort de l’image finale, alors que SBCL ne permet pas (encore ?) cela et les binaires pèsent ±30Mo compressés, 80Mo non compressés. Néanmoins, un binaire (compressé) de 30Mo (c’est le cas pour une application à moi qui inclue une douzaine de dépendances) contient le débogueur, le compilateur… ce qui permet de se connecter à une application pendant qu’elle tourne et de charger du code à la volée. On peut s’en servir pour observer ce qu’il se passe autant que pour faire des mises à jour. Au choix ! Mais oui, on peut garder les bonnes pratiques de l’industrie.

Pour démarrer sur le sujet :

Comme outils moins classiques, on a CLOG (CL Omnificient GUI), qui permet le développement d’applications web un peu comme une interface graphique, avec une grande interactivité pendant le développement (via websockets).

CLOG

L’infatigable lisper @mmontone se lance dans mold-desktop, un desktop pour le web, en suivant les principes de « moldable software ».

mold-desktop

Enfin, un article pour présenter les trois « web views » pour Common Lisp: webview, webui, Electron. On peut délivrer une application multi-plateformes écrite avec les technologies du web.

Une application web lancée en local dans un navigateur, avec webview

Scripting

En Common Lisp peut lancer un programme depuis les sources, ou bien générer un exécutable.

Mais, par défaut, l’un ou l’autre sont un peu lourds à l’usage et ne satisfont pas vraiment le développeur pressé qui souhaite lancer un petit script écrit en Lisp. C’est aussi un peu pour cela qu’on reste tant dans le REPL, où toute procédure une fois définie est instantanément appelable. On n’a pas véritablement besoin de passer par le terminal.

Mais des projets élargissent les possibilités.

kiln: « Infrastructure for scripting in Common Lisp to make Lisp scripting efficient and ergonomic » - soit, pouvoir appeler du Lisp depuis le shell de manière légère.

unix-in-lisp - il paraît fou ce projet : on “monte” les utilitaires Unix dans son image Lisp.

CIEL Is an Extended Lisp (discussion HN) - 100% Common Lisp, « batteries included »

  • une collection de bibliothèques pour rendre CL plus utile au quotidien aujourd’hui : inclue des bibliothèques pour le JSON, le web, le CSV, les expressions régulières…
  • un moyen de lancer des scripts au démarrage rapide et sans étape de “build”, avec toutes les bibliothèques à disposition.

Vidéos

Voici une petite sélection.

Des démos d’applications :

Apprendre :

De l’European Lisp Symposium 2024 :

Conclusion

C’était un compte-rendu écourté qui vous aura, je l’espère, donné envie d’en voir plus.

En Common Lisp on s’éclate ET on délivre du logiciel, ce qui n’est pas donné à tout le monde ;)

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Sortie de Lazarus 4.0, l'IDE pour Free Pascal
    Le 5 mai, jour qui se prête aux manipulations numériques, l'environnement de développement Lazarus est sorti en version 4.0. Lazarus est écrit en Pascal et permet de développer en Pascal Objet, c'est à dire en Delphi. Il accompagne le compilateur libre Free Pascal. Le langage Pascal est toujours très utilisé, l'index TIOBE de mai 2025 le classe en neuvième position (et ça progresse), loin devant PHP ou Rust. Et si on en parle peu malgré ses qualités c'est peut-être parce qu'il n'est pas porté p

Sortie de Lazarus 4.0, l'IDE pour Free Pascal

Par : orfenor
10 mai 2025 à 15:12

Le 5 mai, jour qui se prête aux manipulations numériques, l'environnement de développement Lazarus est sorti en version 4.0. Lazarus est écrit en Pascal et permet de développer en Pascal Objet, c'est à dire en Delphi. Il accompagne le compilateur libre Free Pascal.

Le langage Pascal est toujours très utilisé, l'index TIOBE de mai 2025 le classe en neuvième position (et ça progresse), loin devant PHP ou Rust. Et si on en parle peu malgré ses qualités c'est peut-être parce qu'il n'est pas porté par de grandes corporations.

Lazarus 4.0 est dispo sur Linux, *BSD, Macos, Windows, il y a même des paquets debian pour RapsberryPi. Il est compilé avec FreePascal 3.2.2. La LCL (Lazarus component library) fournit des widgets graphiques multi-plateformes pour

  • Linux/FreeBSD (GTK2, Qt4, Qt5 and Qt6)
  • Windows depuis Windows 2000 (y compris WinCE)
  • macOS (Cocoa, Carbon, GTK2, Qt4, Qt5, Qt6)

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Sortie de Tcl/Tk 9.0
    Le Tcl Core Team (TCT) est heureux d'annoncer la sortie de la version 9.0 du langage de script Tcl et de la bibliothèque d'interface graphique Tk. C'est la première version stable de la branche Tcl/Tk 9.0 dont le développement a commencé en janvier 2013. Il y a quelques potentielles incompatibilités avec les précédentes versions même si la plupart des programmes fonctionneront sans retouches. lien nᵒ 1 : L'annonce pour Tcl sur comp.lang.tcllien nᵒ 2 : L'annonce pour Tk sur comp.lang.tcllien nᵒ 

Sortie de Tcl/Tk 9.0

2 octobre 2024 à 06:39

Le Tcl Core Team (TCT) est heureux d'annoncer la sortie de la version 9.0 du langage de script Tcl et de la bibliothèque d'interface graphique Tk.
C'est la première version stable de la branche Tcl/Tk 9.0 dont le développement a commencé en janvier 2013.
Il y a quelques potentielles incompatibilités avec les précédentes versions même si la plupart des programmes fonctionneront sans retouches.

Les principales nouveautés et améliorations de Tcl 9.0

  • Données en 64-bit : support des structures de données supérieures à 2 Go (variable, chaîne de caractères, tableau, liste et dictionnaire).
  • Support étendu d'Unicode : avec tous les emojis qui vont bien.
  • Système de fichier virtuel dans le langage : basé sur le format zip et permettant la lecture/écriture ou le montage/démontage.
  • Déclaration de constantes : const
  • De nouvelles commandes de listes : lpop, lremove, ledit et lseq
  • De nouvelles options pour les tableaux : array default et array for
  • De nouvelles commandes de coroutines : coroinject et coroprobe pour interagir avec une coroutine en pause.
  • Substitution avec script : possibilités d'attacher un script à la commande regsub
  • Notation décimale explicite : un entier pourra optionnellement être précédé du préfixe 0d pour indiquer sans ambiguïté qu'il est en notation décimale.
  • Notation de nombre : possibilité de noter un nombre entier avec des tirets bas (underscore) pour plus de clarté (1_000_001).
  • Changement de l'interface de notification d'événements : remplacement de select par epoll/kqueue.
  • Le tilde (~) n'est plus interprété comme le répertoire home.
  • L'encodage par défaut d'un script devient l'UTF-8.

Les principales nouveautés et améliorations de Tk 9.0

  • Onglets de tous les côtés : haut/bas/droite/gauche et navigation avec la molette de la souris.
  • Accès au système de notification, à la barre des tâches et au gestionnaire d'impression : tk sysnotify, tk systray, tk print.
  • Texte dans une barre de progression : ttk::progressbar ... -text
  • Badge temporaire sur une icône : wm iconbadge
  • Image de fond dans un frame : frame ... -backgroundimage ... -tile ...
  • Support partiel du format SVG : image create photo ... -file test.svg
  • Accès aux métadonnées et au cannal alpha des images : image read/write/put/cget ... -metadata etimage get/put ... -to ...
  • Rotation des objets graphiques d'un canvas : canvas rotate ... x y angle
  • Support du défilement à deux doigts.

Pour le reste des nouveautés

  • Un pythoniste (Marc Culler) fait partie du TCT pour faciliter le développement de TkInter.
  • Il n'y aura pas de version 8.7 officielle.
  • Tcl 9 bénéficie d'un nouveau logo dessiné par une graphiste (Valerie Carroll).

Titre de l'image

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Arrêtons de (dé)tester nos applications web
    Dans ce billet, nous allons discuter d’un sujet crucial pour les développeurs et les testeurs : la pertinence des tests de bout en bout (ou end-to-end E2E) web. En effet, lorsqu’il s’agit de tester des applications web, les tests automatisés jouent un rôle vital, car ils peuvent être exécutés à plusieurs reprises sans effort et manuel supplémentaire. Parmi les tests automatisés, les tests bout en bout sont particulièrement importants, car ils simulent des cas d’utilisation réels. Cependant, il e

Arrêtons de (dé)tester nos applications web

Dans ce billet, nous allons discuter d’un sujet crucial pour les développeurs et les testeurs : la pertinence des tests de bout en bout (ou end-to-end E2E) web.
En effet, lorsqu’il s’agit de tester des applications web, les tests automatisés jouent un rôle vital, car ils peuvent être exécutés à plusieurs reprises sans effort et manuel supplémentaire. Parmi les tests automatisés, les tests bout en bout sont particulièrement importants, car ils simulent des cas d’utilisation réels. Cependant, il existe des pratiques courantes qui limitent la pertinence de ces tests.
Nous allons ici examiner 3 mauvaises pratiques, ou erreurs courantes, qui limitent la pertinence de vos tests de bout en bout.

  • lien nᵒ 1 : UUV

1. Écrire des tests centrés développement

La première erreur courante que l’on peut citer est de rédiger des tests E2E centrés sur la personne qui développe.
Pour comprendre ce que nous entendons par test E2E centré sur le développement, prenons un exemple.
Imaginons que je souhaite écrire un test pour vérifier que le titre « Welcome to weather App » et le bouton « Get Started » sont bien présents sur la page web suivante :

Application Weather App

Avec un outil populaire comme Cypress (sous MIT), je peux écrire le test suivant :

Test Développer centric

Et ça marche ! Mais ce test a, au moins, les 2 limitations suivantes :

  • Il est écrit en Typescript : Il n’est donc pas facile à comprendre pour les personnes qui ne développent pas (on entend ici toute personne qui ne comprend pas du code de programmation), et c’est un peu dommage, car il est censé représenter un cas d’utilisation réel.
  • Utilisation de testId : les testIds sont des attributs ajoutés par les développeurs pour faciliter la localisation des éléments de la page lors des tests.

Mais lorsqu’on les utilise dans nos tests, nous n’interagissons pas avec notre application comme un utilisateur final. Nos utilisateurs finaux ne connaissent pas les ID de test, ils connaissent les boutons, les liens, les champs de formulaire, ils connaissent tout ce qu’ils peuvent voir et/ou entendre.

Alors, comme bonne pratique, adoptons une approche centrée sur la personne utilisatrice (user-centric), qui consiste à utiliser des éléments connus de la personne utilisatrice finale pour interagir comme elle le ferait avec notre application.
Cet exemple montre le même test écrit avec la solution UUV.

Test User centric

Le nom et le rôle accessibles sont utilisés pour exprimer le cas d’utilisation dans un langage anglais simple.

2. Oublier l’utilisation du clavier

La seconde erreur courante est de négliger l’usage du clavier lors des tests. Les directives WCAG stipulent que tous les éléments interactifs doivent être accessibles via une interface clavier. Cela profite non seulement aux personnes ayant des handicaps visuels ou moteurs, mais aussi à ceux qui préfèrent utiliser le clavier pour des raisons de productivité.
Pour remplir un formulaire comme celui-ci :

Formulaire à remplir

Les utilisateurs déplacent naturellement une souris pour naviguer, car c’est l’usage par défaut qui est enseigné pour manipuler un ordinateur. Les développeurs ont donc l’habitude de reproduire ce genre de scénario lors de tests E2E, comme sur cet exemple :

Remplissage du formulaire à la souris

Pour les plus expérimentés d’entre nous, la navigation au clavier est un excellent moyen d’augmenter la productivité. Ainsi lorsque nous testons nos applications, une bonne pratique est de vérifier l’usage du clavier. Pour cet exemple, il convient donc de vérifier le remplissage du formulaire au clavier. Voici un scénario écrit avec l’outil UUV pour le faire :

Remplissage du formulaire au clavier

La première partie est identique à la navigation à la souris. Ensuite, nous plaçons le focus sur le coin gauche de l’application. Puis nous déplaçons le focus lorsque nous appuyons sur la touche tabulation et nous vérifions que le focus est sur le lien nommé Weather App's Logo. Nous reproduisons ce mécanisme avant de le soumettre.

3. Ignorer l’accessibilité (#a11y)

Contrairement à ce que l’on pourrait croire, les tests E2E sont un excellent contexte pour effectuer des vérifications d’accessibilité en utilisant des outils comme axe-core (sous MPL2) pour effectuer des contrôles de référence WCAG, ou en utilisant des bibliothèques comme uuv/a11y pour les vérifications RGAA. Il est important de garantir la non-régression de l’accessibilité lorsque l’on met à jour nos interfaces, surtout à une époque où l’intelligence artificielle prend de plus en plus de place.

Voici un exemple de scénarios effectuant des vérifications d’accessibilité :

Vérification d’accessibilité

En résumé

Commencer ou continuer à :

  • Écrire des tests centrés sur l’utilisation
  • Tester l’utilisation du clavier
  • Effectuer des vérifications d'accessibilité

En adoptant ces pratiques, nous pouvons nous assurer que nos applications web sont robustes, accessibles et prêtes pour une utilisation réelle par tous nos utilisateurs.

Mais au fait, qu’est-ce que UUV ?

Logo UUV

Pour faire simple, UUV est une solution opensource (MIT) qui facilite l’application des pratiques évoquées et de bien d’autres en matière de tests E2E.

Disponible en tant que dépendance npm, UUV offre des phrases prêtes à l’emploi user-centric pour rédiger les tests E2E. Pour les développeurs, le plugin Jetbrains et l’extension VS Code facilite l’écriture des scénarios. De plus, l’assistant UUV, une application de bureau, permet de générer des scénarios de tests comme ceux pour vérifier la navigation au clavier, les interactions avec les boutons, et bien plus encore.

Vous pouvez tester UUV directement sur vos projets ou à l'aide du Kata UUV E2E et contribuer à son développement sur GitHub.

Merci pour votre lecture, n'hésitez pas à partager votre avis en commentaire !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Perl 5.40 est sorti
    Perl est un langage généraliste créé en 1987 par Larry Wall. Il est distribué sous une double licence : Artistic Licence et GPL v1+. La plupart des modules du CPAN, dépôt de référence pour des modules tiers, sont également sous ces deux licences. Perl est inclus dans la quasi-totalité des distributions GNU/Linux. La toute dernière version de Perl, la 5.40.0, est sortie le 9 juin 2024. Vous la retrouverez bientôt dans votre distribution préférée. lien nᵒ 1 : Perl sur Wikipedialien nᵒ 2 : Guide P

Perl 5.40 est sorti

Perl est un langage généraliste créé en 1987 par Larry Wall. Il est distribué sous une double licence : Artistic Licence et GPL v1+. La plupart des modules du CPAN, dépôt de référence pour des modules tiers, sont également sous ces deux licences. Perl est inclus dans la quasi-totalité des distributions GNU/Linux.

La toute dernière version de Perl, la 5.40.0, est sortie le 9 juin 2024. Vous la retrouverez bientôt dans votre distribution préférée.

Sommaire

Améliorations notables

Nouveau mot clé __CLASS__

Lors de l’utilisation de la nouvelle fonctionnalité classe, le code à l’intérieur d’une fonction, d’un bloc ADJUST ou d’une expression d’initialisation de field peut maintenant utiliser le nouveau mot-clé __CLASS__.

use feature 'class';

class Example1 {
    field $f = __CLASS__->default_f;

    sub default_f { 10 }
}

Cela donne un nom de classe, similaire à __PACKAGE__, mais alors que celui-ci donne le paquetage de compilation dans lequel le code apparaît, le mot clé __CLASS__ donne la classe d’exécution réelle dont l’instance d’objet est membre.

class Example2 :isa(Example1) {
    sub default_f { 20 }
}

my $obj = Example2->new;
# $f aura maintenant la valeur 20

Cela le rend utile pour l’aiguillage des fonctions sur cette classe, en particulier lors des constructeurs, où l’accès à $self n’est pas autorisé.

un attribut :reader pour les variables field

Lors de l’utilisation de la fonctionnalité de classe, les variables de champ peuvent désormais prendre un attribut :reader. Ceci crée automatiquement une fonction qui renvoie simplement la valeur de la variable de champ de l’instance donnée.

field $name :reader;

est donc l’équivalent de

field $name;
method name () { return $name; }

On peut donner un nom différent à cette fonction :
field $name :reader(get_name);

Autoriser un espace dans l’option de ligne de commande -M

Lors du traitement des options de ligne de commande, Perl autorise désormais un espace entre le commutateur -M et le nom du module qui le suit.

$ perl -M Data::Dumper=Dumper -E 'say Dumper [1,2,3]'

Cela correspond au fonctionnement de l’option -I.

Restrictions d’utilisation des déclarations VERSION

Dans Perl 5.36, un avertissement de dépréciation avait été ajouté lors de la rétrogradation d’une déclaration d’utilisation VERSION d’une version supérieure à 5.11 vers une version inférieure. Ceci est désormais une erreur fatale.

De plus, c’est désormais une erreur fatale d’émettre une déclaration d’utilisation ultérieure VERSION lorsqu’une autre est dans la portée, lorsque l’une ou l’autre des versions est 5.39 ou supérieure. Un avertissement de dépréciation a également été ajouté pour toute autre déclaration d’utilisation ultérieure de VERSION inférieure à la version 5.39, pour avertir qu’elle ne sera plus autorisée dans la version Perl 5.44.

Nouvelles fonctions Builtin::inf et Builtin::nan

Deux nouvelles fonctions, inf et nan, ont été ajoutées à l’espace de noms intégré. Celles-ci agissent comme des constantes qui donnent respectivement la valeur infinie à virgule flottante et Not-a-Number.

Nouvel opérateur ^ xor logique

Perl a toujours eu trois opérateurs logiques de faible priorité and, or et xor, ainsi que trois équivalents de priorité élevée &, ^ et | traitant les opérandes bit par bit. Jusqu’à cette version, alors que les opérateurs logiques de priorité moyenne && et || étaient présents, il n’y avait pas d’équivalent xor. Cette version de Perl ajoute l’opérateur , complétant l’ensemble.
$x ^^ $y and say "L’un de x et y est vrai, mais pas les deux";

Le pragma features de 5.40 contient try / catch

Le mot-clé features active maintenant la fonctionnalité try / catch, récemment stabilisée. Comme cet ensemble de fonctionnalités est activé par l’option de ligne de commande -E, ceux-ci sont immédiatement disponibles dans les scripts lancés avec cette option.

Securité

CVE-2023-47038

Cette vulnérabilité a été remontée à l’équipe sécurité de Perl par Nathan Mills.

Une expression régulière compilée par perl 5.30.0 jusqu’à 5.38.0 peut provoquer un buffer overflow d’un octet contrôlé par l’attaquant.

CVE-2023-47039

Cette vulnérabilité a été remontée au Intel Product Security Incident Response Team (PSIRT) par l’utilisateur GitHub ycdxsb. Le PSIRT l’a ensuite remonté à l’équipe sécurité de Perl. À noter qu’elle ne concerne que Perl pour Windows.

Perl pour Windows dépend sur la variable d’environnement PATH pour trouver le shell (cmd.exe). Lorsqu’on lance un exécutable qui utilise l’interpréteur Perl, Perl essaie d’abord de trouver et utiliser cmd.exe dans le répertoire courant. Il est possible d’exploiter ce comportement pour faire exécuter du code malicieux à l’administrateur du poste.

Changements incompatibles avec les versions précédentes

reset EXPR appelle maitenant "set-magic" sur les scalaires

Précédemment, reset EXPR n’appelait pas les fonctions « magiques » lorsqu’il effaçait des variables scalaires. Cela signifiait que les changements n’étaient pas répercutés sur l’état interne des variables magiques lorsque c’était nécessaire, comme c’est le cas pour $W, et cela ne déclenchait pas d’exception lorsque la magie sous-jacente aurait dû déclencher une exception, comme pour $1.

Cela signifie que du code qui était jusqu’à présent sans effet peut, maintenant, avoir un effet, ou même déclencher une exception.

Il n’y a aucun effet pour un reset ordinaire dont le but est de réinitialiser les recherches simples appelées par m?regexp?

Avertissement lors de l’appel de la méthode import sur un paquetage inconnu

Historiquement, il était possible d’appeler la méthode import ou unimport pour n’importe quelle classe, y compris les classes qui n’ont pas été définies. Même si l’appel se faisait avec un argument, cela ne déclenchait pas d’erreur. Par exemple, le code suivant ne déclenche pas d’erreur en Perl 5.38:

Classe::qui::n::existe::pas->import("toto");

Toutefois, à partir de Perl 5.39.1, cette pratique est dépréciée et déclenche un avertissement. On peut remarquer que l’appel de ces méthodes sans argument continue à s’exécuter sans déclencher d’erreur. Par exemple

Classe::qui::n::existe::pas->import();

continue à ne pas déclencher d’erreur. C’est parce que toutes les classes dérivent implicitement de la classe UNIVERSAL, qui définit maintenant une méthode import. Dans les anciens Perl, cette méthode n’était pas définie pour UNIVERSAL. Au lieu de cela, les appels à import et à unimport étaient traités de façon spéciale de manière à ce qu’ils ne déclenchent pas d’erreur si la méthode correspondante n’était pas définie.

Ce changement a été mis en place pour faciliter la détection des fautes de frappe dans les instructions use, lorsque le programme tourne sur un système de fichiers avec des noms insensibles à la casse. Par exemple, sur Windows ou sur toute plateforme avec dse noms de fichier insensibles à la casse, avec un ancien Perl, le code suivant

use STRICT 'refs';

serait passé sans déclencher d’erreur et sans rien faire, car le module s’appelle réellement strict.pm au lieu de STRICT.pm, donc il aurait été chargé, mais sa fonction import n’aurait jamais été appelée. Cette nouveauté permet également de détecter le cas où un utilisateur ajoute un argument à la commande use pour un paquetage qui ne définit pas son propre import. C’est le cas entre autres pour la définition d’une classe « pure », qui ne définit pas de méthode « import ».

return ne permet plus de renvoyer un objet indirect

La syntaxe de l’opérateur return rejette maintenant les objets indirects. Jusqu’à présent, dans la plupart des cas, cela passait à la compilation et cela pouvait même s’exécuter, mais ce n’était pas documenté et cela pouvait produire des résultats prêtant à confusion. Par exemple :

  # Remarquez que « somme » n’a pas été défini
  sub somme_positive {
    return somme grep $_ > 0, @_;
    # interprété abusivement ainsi :
    #   return *somme, grep $_ > 0, @_;
    # avec le mot somme pris en tant que typeglob et transmis en tant qu’argument supplémentaire
  }
  say for somme_positive(-1, 2 ,3);

produisait

  *main::somme
  2
  3

Dans les appels de méthode, les noms de classe sans guillemets ne sont plus interprétés comme des handles de fichier si l’on a déclaré no feature "bareword_filehandles"

Si l’on déclare no feature "bareword_filehandles", les handles de fichier sans guillemets continuent à être acceptés dans les appels de méthode :

  open FH, "<", $somefile or die;
  no feature 'bareword_filehandles';
  FH->binmode;

Cela a été corrigé, donc maintenant la ligne

FH->binmode;

essaiera de résoudre FH en tant que classe, ce qui provoque habituellement une erreur à l’exécution.

Les handles de fichier standard tels que STDOUT continuent à être résolus en tant que handles :

no feature 'bareword_filehandles';
STDOUT->flush; # continues to work

Notez qu’une fois que Perl a résolu un nom sans guillemets en tant que classe, il continuera à le faire :

package SomeClass {
    sub somemethod{}
}
open SomeClass, "<", "somefile" or die;
# SomeClass résolu en tant que handle
SomeClass->binmode;
{
    no feature "bareword_filehandles";
    SomeClass->somemethod;
}
# SomeClass résolu en tant que classe
SomeClass->binmode;

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Claire Mathieu et les algorithmes
    Si on devait définir Claire Mathieu en mots-clés, ce serait, dans le désordre : algorithmes, Parcoursup, CNRS, pédagogie et éthique. Mais comme c’est très réducteur, ce portrait de celle qui a codé l’algorithme de Parcoursup évoquera, outre ces sujets, son parcours et son passage au Conseil présidentiel de la science. Et, si vous ne savez pas vraiment ce qu’est un algorithme, normalement, cette notion devrait vous être plus familière après la lecture de la dépêche, et qui sait, peut-être vous do

Claire Mathieu et les algorithmes

Si on devait définir Claire Mathieu en mots-clés, ce serait, dans le désordre : algorithmes, Parcoursup, CNRS, pédagogie et éthique. Mais comme c’est très réducteur, ce portrait de celle qui a codé l’algorithme de Parcoursup évoquera, outre ces sujets, son parcours et son passage au Conseil présidentiel de la science. Et, si vous ne savez pas vraiment ce qu’est un algorithme, normalement, cette notion devrait vous être plus familière après la lecture de la dépêche, et qui sait, peut-être vous donner envie de vous y mettre.

Claire Mathieu, photo Patrick Imbert

Sommaire

Parcours

Claire Mathieu est une ancienne élève de l’École normale supérieure. En 1988, elle soutient une thèse en sciences : « Comparaison de modèles combinatoires et probabilistes : deux exemples en analyse d’algorithmes » sous la direction de Claude Puech, actuel directeur scientifique de la Fondation Inria.

En 1990, elle est Chargée de recherche au CNRS en informatique. Elle obtiendra le prix « IBM Jeune chercheur » en 1991.

À partir de 1997, elle occupe des fonctions de professeure d’informatique : à l’Université Paris-Sud (devenue Paris-Saclay en 2020), puis à l’École polytechnique (de 2002 à 2004) et à l’Université de Brown (en), USA (de 2004 à 2014). De retour en France, elle devient, en 2012, Directrice de recherche au CNRS en informatique, sera professeure associée au Département d’informatique de l’École normale supérieure de 2014 à 2018. Elle occupera la chaire annuelle d’Informatique et sciences numériques au Collège de France pour l’année 2017-2018.

En 2017 elle est chargée de mission « Parcoursup ».

En 2019, elle obtient la médaille d’argent du CNRS pour l’ensemble de son œuvre. Elle est élue la même année à l’Académie des sciences. Elle est actuellement directrice de recherche au CNRS en informatique au sein de l’Institut de recherche en informatique fondamentale (IRIF).

Qu’est-ce qu’un algorithme ?

Petit rappel de ce que sont les algorithmes, une notion devenue omniprésente. Dans sa leçon inaugurale au Collège de France, le 16 novembre 2017, Claire Mathieu constate d’ailleurs que :

ce mot a envahi les médias. Autrefois, lorsqu’on allait dans une administration et qu’on n’arrivait pas à obtenir ce que l’on souhaitait, la réponse était : « Ah, Madame, vous comprenez, c’est l’informatique ! » Maintenant on entend : « Ah, c’est l’algorithme. »

Au départ selon la notice étymologique du CNRTL, l’algorithme, vers 1220-30, s’appelait « augorisme » et c’était un « procédé de calcul utilisant les chiffres arabes ». Il deviendra « algorisme » puis, enfin « algorithme ». Le mot lui-même vient du surnom du mathématicien Abdallāh Muhammad ibn Mūsā : Al Ḫuwārizmī (qui est en fait son origine géographique). Et, si vous ne savez pas si on doit mettre ou pas un « y », retenez que ça n’a strictement rien à voir avec la musique ou la danse, donc, pas d’y.

Si une bonne part du lectorat de LinuxFr sait de quoi il s’agit, notamment parce que c’est leur métier d’en fabriquer, ce n’est pas forcément le cas de tout le monde, une petite explication s’impose. Un algorithme est ainsi une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre un problème ou d’obtenir un résultat ou, pour reprendre la définition qu’en a donné Claire Mathieu dans sa leçon inaugurale : « un algorithme, c’est une méthode pour résoudre un problème de façon constructive en le décomposant en briques de base faciles à manipuler. » Elle donne l’exemple de l’apprentissage de la lecture par la méthode syllabique (découper les mots en lettres et syllabes) par rapport à la méthode globale (qui serait plus proche de l'apprentissage profond en informatique).

On peut avoir d’autres exemples simples, celui de la recette de cuisine ou encore, celui de modèles de tricot. Un algorithme reçoit des données à traiter (texte, nombres relations), les instructions peuvent être conditionnelles, passant les étapes suivies par l’algorithme vont varier, et, forcément, les résultats.

Trois sapins
Allégorie des résultats d’un algorithme avec des jeux de données différents.

Si vous voulez en savoir plus, je vous renvoie à la leçon inaugurale de Claire Mathieu au collège de France et à cet article de Jean Cardinal sur le site francophone The Conversation, vous apprendrez qu’il existe plusieurs « familles » d’algorithmes et comment cela fonctionne.

De l’importance des algorithmes

Pourquoi avoir choisi les algorithmes ?

Pourquoi avoir choisi les algorithmes ? À cette question qui lui a été posée à l’occasion de sa nomination au Conseil présidentiel de la science, en décembre 2023 par le site de l’Insmi (CNRS Mathématique), elle répond que cela date de sa formation à l’École normale supérieure de jeunes filles1.

Une question dans un projet de programmation « demandant un calcul par simulation de la profondeur moyenne des arbres 2-3 » l’avait «  plongée dans des abîmes de perplexité car la notion de “moyenne” dépendait de la distribution étudiée, qui n’était pas spécifiée : soit l’arbre est obtenu par une suite d’insertions aléatoires (facile à simuler), soit on considère la distribution uniforme sur tous les arbres 2-3 contenant n éléments » et « d’un cours montrant la borne inférieure n log n pour la complexité dans le pire cas pour tout algorithme de tri par comparaisons. L’idée qu’il était possible de montrer une borne inférieure sur tous les algorithmes imaginables de tri par comparaison, c’était magique. »

Dans la même interview, elle dira qu’elle aime l’aspect concret des algorithmes et « le fait que l’on puisse voir la solution en train de se construire. ».

Sur l’importance des algorithmes

Dans un entretien donné au magazine La Recherche en février 2020 elle explique que le rôle des algorithmes a toujours été important et ce, depuis le début de l’informatique. On se rappellera peut-être des regrets de Marion Créhange qui, dans un texte pour la revue Interstices déplorait le fait que les algorithmes conçus au départ pour économiser le temps et le volume d’informations à traiter par une machine étaient moins subtils.

Aujourd’hui, les algorithmes ne se concentrent plus seulement sur le fonctionnement des logiciels mais ce phénomène :

a pris une importance particulière en raison de la révolution numérique en cours, avec entre autres l’émergence d’algorithmes utilisant des réseaux de neurones profonds. […] Avec le passage au tout-numérique dans la société, l’utilisation des algorithmes partout et le succès des méthodes de l’intelligence artificielle, la proximité entre les algorithmes et les humains dans leur vie en société a changé.2

Et, évidemment, ce n’est pas sans conséquences, puisqu’à partir du moment où les algorithmes vont s’entremêler à la vie des êtres humains, des questions éthiques se font jour :

Cette omniprésence a fait apparaître de nouveaux critères, dont on ne se souciait pas auparavant, comme celui de vouloir que les algorithmes soient équitables et justes pour les humains. Jusqu’il y a deux ou trois ans, ce n’était pas vraiment une préoccupation des algorithmiciens. Cela a émergé d’un coup et pose de nouvelles questions : est-ce que ce sont les algorithmes qui décident et les humains qui suivent – ce qui n’est pas souhaitable – ou bien est-ce que les algorithmes sont au service de la société et des humains ? Que faire pour garantir que les humains gardent toujours le contrôle ?3

Claire Mathieu considère que les algorithmes peuvent contribuer au bien commun, pour peu qu’ils soient bien conçus et utilisés. Dans sa leçon inaugurale au Collège de France, par exemple, elle donne celui de la greffe de reins dont l’idée est d’apparier les reins des donneurs et donneuses aux malades ou encore celui du découpage électoral. Elle espère que « la perspective algorithmique fera partie de la culture des adultes de demain. »4.

Parcoursup : transcrire la loi dans le code

Parcoursup est un dispositif français concernant l’inscription dans les formations d’enseignement supérieur, notamment celles dont les capacités d’accueil sont inférieures au nombre de candidatures reçues, créé par la loi n° 2018-166 du 8 mars 2018 relative à l'orientation et à la réussite des étudiants.

Où la loi fait le code

En 2000, le juriste américain Lawrence Lessig écrit « Code is Law » pour Harvard Magazine, ce que l’on pourrait traduire par « le code est loi » ou le « code fait loi ». Il expliquait que, dans le cyberespace, c’est le code (informatique) qui fait la loi et que, dans l’exemple de l’identification, « l’architecture de certification qui se construit respecte ou non la vie privée dépend des choix de ceux qui codent. ». Il insistait sur le fait que quand l’État se retire, il laisse le champ aux intérêts privés.

Avec Parcoursup, c’est la loi qui fait le code. Laquelle loi fait partie du Code de l’éducation qu’elle a modifié, notamment dans son article D612-1.

Le principe : les lycéens, les lycéennes, les apprenti·e·s, et les étudiant·e·s en réorientation désireuses d’entrer dans l’enseignement supérieur formulent leurs vœux sur la plate-forme Parcoursup. Les capacités d’accueil des formations figurent sur le site de Parcoursup. Une commission d’examen des vœux pour chaque formation (chaque BTS, BUT, CPGE, chaque section d'école d'ingénieur, etc.) les examine et, au besoin met dans l’ordre les candidatures. Là, un algorithme va calculer l’ordre d’appel dans lequel les candidats et les candidates vont recevoir les propositions. Propositions qui évolueront à un rythme quotidien, du 30 mai au 12 juillet pour l'année 2024. Le temps de réponse accordé diminuant au cours du temps.

L’idée étant, idéalement, de faire correspondre les vœux et les capacités desdits candidats et candidates aux formations.

Quand la rédaction de la loi affaiblit les mariages stables

L’algorithme de Parcoursup fait partie de ceux qui servent d’exemple à sa leçon inaugurale au Collège de France. Elle y explique que le gouvernement voulait s’inspirer de l’algorithme des « mariages stables » de Gale et Shapley. Au départ, il n’était question que de classes péparatoires. Se sont ajoutées ensuite les formations non-sélectives avec plus de places que de candidats et candidates, puis les formations non-sélectives pour lesquelles l’offre est inférieure à la demande qui5 :

utilisent des critères géographiques (l’académie d’origine), ainsi que des critères dépendant des préférences des candidats.

Et, de facto, l’algorithme des mariages stables perd ses propriétés et la nécessité d’exprimer des choix stratégiques plutôt que des réelles préférences s’impose aux candidats et aux candidates ce qui « pénalise les candidats sincères » avec un autre effet secondaire :

malgré cela, les formations n’ont pas assez de critères pour départager les candidats et ne peuvent produire de liste ordonnée, d’où l’usage du tirage au sort. Cette extension de l’algorithme, du point de vue mathématique, était catastrophique.

Toujours, dans cette leçon inaugurale, Claire Mathieu en conclut :

C’est la loi elle-même qui dit que l’affectation peut se faire en fonction des préférences des candidats, et donc qui – indirectement – encourage la manipulation !
Ainsi, la loi a défini les contraintes. Du point de vue algorithmique, on peut dire qu’il y a eu une erreur de conception. Pour éviter ce genre d’impasse, la législation devrait peut-être être définie en concertation avec les algorithmiciens.

L’algorithme de Parcoursup est public ainsi que son explication (voir dans les liens) : « La transparence des algorithmes utilisée par le gouvernement est un moteur puissant pour une société plus démocratique. »6. Il a été primitivement publié sur un dépôt Framagit.

Quinze jours au Conseil présidentiel de la science

Le Conseil présidentiel de la science est un conseil national scientifique français créé le 7 décembre 2023 par le président de la République. Composé de douze membres, sa mission de tenir le président informé des évolutions scientifiques susceptibles d’être stratégiques. Les rapports de ce conseil ne seront pas rendus publics.

Claire Mathieu y est nommée ainsi qu’une brochette d’autres scientifiques de haut niveau. Elle en démissionne le 22 décembre en désaccord avec la loi sur l’immigration. Une loi considérée par ailleurs comme ni essentielle (les lois sur l’immigration ont été modifiées 133 fois en dix ans), ni vraiment souhaitée, dangereuse pour la politique de santé publique et votée dans des conditions démocratiques douteuses. Elle s’en explique ainsi dans un courrier adressé à Emmanuel Macron :

En effet, si au lieu de vous c’était l’extrême droite qui était au pouvoir, j’aurais refusé de participer à ce conseil. Or, la loi anti-immigration est une loi d’extrême droite, une loi xénophobe, d’exclusion et de repli sur soi.

Elle ajoutera sur X :

Maintenant déjà il est difficile à nos jeunes chercheurs étrangers de régler leurs problèmes de visas. Demain ce sera pire, et ils iront donc dans un pays plus accueillant. Cela accentuera le décrochage de la France en recherche.

Elle remarque au passage sur son compte Mastodon :

C’est drôle, il y a quinze jours j'ai reçu plein de messages de félicitations pour ma nomination au Conseil présidentiel de la science, et aujourd’hui je reçois plein de messages de félicitations pour ma démission du Conseil présidentiel de la science (y compris certains des mêmes personnes).
Je cherche le proverbe approprié pour décrire la séquence.

On suggérerait bien cette citation de Rabelais tirée de Pantagruel « Science sans conscience n’est que ruine de l’âme ».

Post-scriptum

Vous avez dans les « Liens » ceux qui m’ont servi à rédiger ce portrait. Je ne saurais que trop vous recommander d’aller y jeter un coup de souris, au moins la leçon inaugurale. Sur le site de Claire Mathieu, vous trouverez son CV ainsi que des liens vers certaines de ses publications et ses présentations. Les présentations sont d’un intérêt relativement mineur car elles sont, et c’est comme cela que ça doit être, des supports de sa parole et là uniquement pour agrémenter son discours, elles sont donc assez peu informatives pour qui ne connaît pas le domaine, tout au moins.

La leçon inaugurale a fait l’objet d’une publication papier, épuisée, et de versions epub et pdf. On doit pouvoir l’emprunter auprès d’une « institution partenaire ». Cela dit le texte intégral est en ligne.

Pour lire l’interview de Claire Mathieu dans la Recherche, il faut le payer, soit en achetant le numéro, soit en acceptant de voir une publicité (on peut se servir un café pendant qu’elle passe). Personnellement je n’avais pas le bouton sur mon Firefox, question de réglage ou d’extensions sans doute, il m’a fallu utiliser Chromium. À vous de voir.

Pourquoi un portrait, si on peut dire, à mi-chemin entre une biographie et une interview ? Parce qu’une biographie se doit d’être exhaustive, ce qui n’était pas trop l’idée ici. Et qu’une interview ça prend du temps à rédiger et que les personnes ne répondent finalement pas forcément. Quitte à travailler pour rien, autant travailler pour quelque chose. Il y en aura peut-être d’autres, ou peut-être pas (j’ai un autre nom en tête et dans Zotero). Mais j’espère que celui-ci fera au moins un heureux.

Pourquoi pas sa page Wikipédia ? D’abord parce que je ne l’ai pas lu, ce qui règle la question. Ensuite parce que, justement, j’ai privilégié les sources primaires pour avoir la parole de Claire Mathieu. Et enfin parce que je pense que le lectorat de LinuxFr est tout à fait capable de la trouver lui-même.

Et un grand merci à finss pour ses précisions.


  1. ENSJF, elle disparaît en 1986 suite à la fusion des deux ENS. 

  2. La Recherche, mensuel 556, février 2020. 

  3. La Recherche. 

  4. Leçon inaugurale, Collège de France. 

  5. Les citations qui suivent sont extraites de la leçon inaugurale 

  6. Claire Mathieu, Le Monde, blog binaire, La transparence à l’école de Parcoursup, 5 juin 2018. 

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌
❌