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
  • 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

❌
❌