Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Kudu, le logiciel qui veut remettre de l’ordre dans l’optimisation du système

Un nouvel outil de maintenance système attire l’attention : Kudu. Présenté comme une suite open source (sous licence MIT), le logiciel propose un ensemble de fonctions destinées à nettoyer, surveiller et optimiser un ordinateur, avec une compatibilité annoncée avec Windows, MacOS et Linux.

L’idée n’est pas totalement nouvelle, mais Kudu tente de se démarquer par une approche plus large que celle des utilitaires classiques. Le logiciel regroupe des outils de nettoyage, de gestion du démarrage, d’analyse de doublons, de surveillance des performances et plusieurs fonctions de maintenance avancée dans une interface unique.

Une alternative à des outils bien connus

Kudu est souvent présenté comme une alternative à CCleaner, un positionnement qui parle immédiatement aux utilisateurs habitués à ce type d’outils. Là où le projet cherche à marquer des points, c’est sur son statut open source, sa disponibilité multi-plateforme et l’intégration de fonctions qui vont au-delà du simple ménage système.

Le logiciel met aussi en avant des fonctions liées à la sécurité et à la confidentialité. On y trouve notamment des options de contrôle sur certains composants du système, des réglages de durcissement et des mécanismes de nettoyage plus poussés, avec une logique d’utilisation pensée pour rester simple.

Une approche tout-en-un

La documentation du projet insiste sur une organisation en plusieurs blocs : sécurité, maintenance et outils. Cette structure permet de retrouver rapidement les fonctions les plus courantes, tout en gardant à portée de main des actions plus techniques pour les utilisateurs qui veulent aller plus loin. L’un des points mis en avant est aussi la possibilité d’utiliser le logiciel sans compte obligatoire, avec une partie cloud présentée comme facultative.

Un projet à observer

Kudu arrive sur un terrain déjà bien occupé, mais il bénéficie d’un positionnement intéressant : open source, multiplateforme et orienté maintenance complète. Ce trio peut lui permettre de trouver sa place auprès des utilisateurs qui cherchent une alternative plus ouverte aux outils propriétaires habituels.

Reste maintenant à voir comment le projet évoluera dans la durée. Comme souvent pour ce type d’utilitaire, la différence se fera sur la qualité réelle des fonctions, la stabilité, la fréquence des mises à jour et la confiance que le logiciel inspirera au quotidien.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Discussions et débats sur l’affichage d’astérisques à la saisie du mot de passe par sudo-rs

L’ancien sudo (écrit en C) a été récréé en Rust (sudo-rs), par une autre équipe, pour des raisons de sécurité mémoire notamment. Plusieurs distributions intègrent cette nouvelle implémentation dans leurs paquets et, en particulier, Ubuntu 25.10 l’utilise par défaut.

Pour mémoire (source) : Cette commande permet à un administrateur système d’accorder à certains utilisateurs (ou groupes d’utilisateurs) la possibilité de lancer une commande en tant qu’administrateur, ou en tant qu’autre utilisateur, tout en conservant une trace des commandes saisies et des arguments.

Le récent changement est que, par défaut, la saisie du mot de passe sudo affiche désormais des astérisques via sudo-rs, à l’inverse du comportement antérieur.

Le débat porte principalement sur l’utilisabilité en opposition à la tradition de sécurité Unix de ne rien afficher du tout.

Les arguments du choix portent notamment sur les aspects sécurité, utilisabilité, et tradition. Là où les pro-astérisques estiment la fuite de longueur tolérable, qu’elle confirme l’entrée fonctionnelle, et qu’il s’agit d’une amélioration moderne, les anti-astérisques considèrent que cela expose la longueur aux observateurs, que c’est inutile pour les experts, et que cela casse l’héritage Unix.

Du côté des arguments pour les astérisques, la rétroaction visuelle confirme que les frappes s’enregistrent, ce qui aide les nouveaux utilisateurs ou ceux avec des claviers défaillants et réduit les erreurs de saisie.

Les partisans notent que les risques d’épaulement (voir les caractères réels) sont faibles aujourd’hui avec l’accès distant courant, et que les indices de longueur sont mineurs comparés aux gains d’utilisabilité.

Du côté des arguments contre les astérisques, la conception Unix traditionnelle cache la longueur du mot de passe pour contrer les attaquants observant de loin, préservant une norme de sécurité de 46 ans même si imparfaite.

Les admins vétérans y voient un risque inutile dans les environnements partagés ou physiques, avec des solutions faciles comme pwfeedback pour revenir en arrière.

Vous savez peut-être comment configurer votre choix, notamment en écrivant dans /etc/sudoers soit Defaults pwfeedback (ce qui sera de toutes façons le comportement par défaut avec astérisques), soit Defaults !pwfeedback (avec le point d’exclamation en préfixe).

Si ce paramètre vous rappelle quelque chose, c’est normal. Les plus préoccupés d’entre nous par la sécurité se rappellent de l’incident de sécurité (CVE-2019-18634) lié à ce paramètre il y a quelques années : le paramètre pwfeedback introduit, en version 1.7.1 de sudo, avait hélas introduit un bug qui n’avait été corrigé que bien après.

Un peu de politique FOSS (un tout petit peu hors sujet ;-) )

Je profite de cette dépêche pour faire un appel, car ce débat et l’ancien bug lié à pwfeedback nous rappellent les risques qui pèsent sur les composants FOSS parfois vitaux et répandus comme XZ Utils, qui manquent de main d’œuvre et de moyens.
La récente attaque (CVE-2024-3094) contre OpenSSH en 2024 via sa dépendance logistique à XZ Utils, par un pirate qui avait exploité de l’ingénierie sociale sur Lasse Collin, le mainteneur fatigué et esseulé deXZ Utils, a failli compromettre un grand nombre d’ordinateurs utilisantOpenSSH`.
C’est un tiers, Andres Freund, employé de Microsoft, qui a contré le piratage en détectant puis identifiant l’erreur.

De même, vous avez su que Todd, C. Miller, l’unique mainteneur de sudo depuis 30 ans, appelait au secours et aux financements en début d’année 2026. Certes, ce point particulier a peut-être été réglé par la ré-écriture en Rust (sudo-rs) avec l’aide de Miller, mais le sujet est global pour le FOSS.

Mon souhait : donnons plus de notre personne ou de notre poche aux projets et personnes du FOSS.

Les informations que vous n’avez pas demandées (ou Too much information you didn't ask for)

Rust veut dire « rouille » en anglais, mais l’auteur de Rust faisait apparemment référence aux « rouilles » biologiques, qui sont les maladies dues à des champignons, les Pucciniales, qui donnent ainsi un aspect rouillé aux plantes parasitées, comme la rouille grillagée du poirier. Graydon Hoare a choisi ce terme, pour s’inspirer de ces champignons qui sont extrêmement sophistiqués dans leur capacité à survivre, comme on pourrait le vouloir pour nos programmes.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Appel à présentations conférence OW2con’26

Toute l’équipe d’OW2 vous souhaite une très bonne année 2026 !

OW2con est la conférence open source européenne organisée par la communauté OW2. Rencontre internationale de contributeurs, éditeurs, ESN, académiques, et organisations à but non lucratif, OW2con rassemble l’ensemble de la communauté open source, autour de deux journées de présentations allant des sujets tech aux enjeux business et éthiques de l’open source. Elle offre également une occasion unique de nouer des contacts avec ses pairs au travers de moments conviviaux de networking. OW2con est ouvert à tous, l’évènement est gratuit et les conférences ont lieu en anglais.

OW2con’26

Pour démarrer cette nouvelle année, nous lançons l’appel à présentations de la prochaine conférence annuelle OW2con’26.

Merci de bien noter les nouvelles dates (la date annoncée précédemment ayant dû être modifiée).

OW2con’26
2 et 3 juin 2026
à Orange Gardens
Paris-Châtillon

Appel à présentations

Cette année, nous mettons l’accent sur les logiciels open source et les modèles ouverts pour renforcer la souveraineté européenne. Pour gagner en indépendance technologique, les citoyens et organisations de l’Union Européenne ont besoin d’une stratégie numérique durable et responsable autour d’infrastructures sûres et résilientes, opérées et maîtrisées en Europe.

Merci de soumettre vos propositions, en anglais avant le 14 février 2026 sur ce thème ou sur l’un des sujets suggérés dans le formulaire de l’appel à présentations.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie de OpenProject 17.0

OpenProject est un outil de collaboration et de gestion de projet polyvalent. Il est axé sur la souveraineté et la confidentialité des données. La version 17.0 apporte notamment l'édition collaborative de documents en temps réel.

Logo OpenProject

Sommaire

Côté produit

OpenProject est une plateforme depuis laquelle les parties tenantes d'un projet peuvent se coordonner et collaborer. Les projets sont découpés en tâches appelées lots de travaux et organisées hiérarchiquement ou en séquence, puis planifiées. Le suivi se fait par la mise à jour du statut et des propriétés de chaque lot de travaux, de sa création jusqu'à sa réalisation.

De nombreux modules destinés à la collaboration et au suivi sont disponibles :

  • diagramme de Gantt : visualiser et organiser les lots de travaux chronologiquement ;
  • tableaux : créer des tableaux Kanban ou Scrum pour gérer et visualiser les lots de travaux ;
  • gestion des réunions : planifier des réunions et leur contenu et enregistrer les résultats ;
  • temps et de coûts : faire le suivi du temps passé sur chaque lot de travaux et des coûts associés ;
  • wiki et documents : gérer sa base de connaissance ;
  • etc…

Il peut aussi s'interfacer avec d'autres logiciels :

  • GitLab et GitHub pour lier Merge Requests et Pull Requests aux lots de travaux associées ;
  • Nextcloud pour stocker et éditer les documents liés au projet ;
  • authentification unifiée (OAuth, OpenID, LDAP, SAML, SCIM).

Côté technique

OpenProject est développé en Ruby et JavaScript en utilisant Ruby on Rails. Il est sous licence GPLv3. Il est basé sur un fork de Redmine.

Les sorties se font en général au rythme d'une par mois.

Deux options sont possibles pour utiliser OpenProject :

  • l'héberger sur site, grâce à une installation via paquets DEB/RPM, images Docker ou Helm Charts ;
  • utiliser le service Cloud fourni par OpenProject, le produit est alors hébergé en Europe chez Scaleway (Paris) ou Amazon (Francfort).

Le prix et les fonctionnalités sont les mêmes, et il est possible de passer d'un type d'hébergement à l'autre facilement.

Modèle économique

OpenProject propose plusieurs éditions :

  • L'édition community est gratuite et le support se fait via des remontées de bugs ou des demandes de fonctionnalité directement sur notre instance OpenProject. L'hébergement est alors sur site.
  • Les éditions Enterprise (Basic, Professional, Premium et Corporate) sont payantes via un abonnement récurrent et offrent un support plus étendu et des fonctionnalités supplémentaires. L'hébergement est au choix sur site ou sur nos serveurs.

Il est possible de tester la version Enterprise Premium pendant 14 jours.

Apports de la version 17.0

La version 17.0.0 a été publiée mercredi 14 janvier 2026.

Collaboration en temps réel

Le module Documents a été repensé pour inclure de la collaboration en temps réel. Les équipes peuvent maintenant éditer des documents en même temps et voir les changements de chacun au fur et à mesure, directement dans OpenProject.

capture d'écran montrant un document édité par 3 utilisateurs en même temps

Cela facilite l'écriture à plusieurs de concepts, de spécifications, de contrats ou de documents de planification tout en restant étroitement connectés au projet. Les documents peuvent référencer et lier des lots de travaux existants.

Ce nouveau module Documents se base sur BlockNote, un éditeur de texte open source moderne aussi utilisé dans d'autres initiatives comme openDesk et LaSuite.

Améliorations du module Réunions

Ces fonctionnalités ont été ajoutées :

  • mode brouillon pour préparer collaborativement l'ordre du jour avant de le communiquer aux participants ;
  • mode présentation pour dérouler la réunion point par point ;
  • possibilité d'ajouter plusieurs résultat à un même point, pour clarifier les décisions prises et les prochaines étapes ;
  • abonnements iCal pour voir les réunions dans les calendriers personnels.

capture d'écran d'une réunion avec un lot de travaux à l'ordre du jour et deux résultats associés

Page d'accueil du projet repensée et sélection de modèle améliorée

L'interface de la page d'accueil d'un projet est désormais divisée en deux parties : « Vue d'ensemble ( Overview ) » et « Tableau de bord ( Dashboard ) ». Les équipes peuvent ainsi appréhender rapidement les informations générales sur le projet ainsi que les détails opérationnels.

deux captures d'écran de la page d'accueil d'un projet. Celle de gauche montre l'onglet vue d'ensemble, celle de droite l'onglet tableau de bord

La création de projet bénéficie d'une sélection de modèle améliorée rendant la création de nouveaux projets plus facile, notamment pour les utilisateurs sans connaissances techniques approfondies. Ces modifications préparent le terrain pour un futur assistant de création de projet en plusieurs étapes.

capture d'écran de la création d'un nouveau projet à l'étape du choix du modèle de projet à utiliser

Gestion des projets aux niveaux programmes et portefeuilles

Les projets peuvent être regroupés en programmes, tandis que les portefeuilles offrent une vue d'ensemble de toutes les initiatives en cours. Ceci est particulièrement précieux pour les bureaux de gestion de projet (PMO), les organisations du secteur public et les équipes travaillant avec des méthodologies telles que PM² ou PMflex.

capture d'écran de la page des portefeuilles de projets avec une mise en surbrillance de l'entrée de menu associée

Développements futurs

Pour 2026, les développements vont s'orienter vers l'amélioration de l'existant bien sûr, mais aussi :

  • faciliter la migration depuis Jira avec le développement d'un outil de migration et de nouvelles fonctionnalités comme l'ajout de Sprints, le dépoussiérage du module « Backlogs », ou l'implémentation d'identifiants courts pour les lots de travaux ;
  • intégrer XWiki pour pouvoir remplacer le duo Jira et Confluence par de l'open source avec OpenProject et XWiki ;
  • mieux gérer des programmes et portefeuilles de projets : apporter une vue d'ensemble de plusieurs projets, pouvoir définir des critères sur chaque projet, par exemple l'urgence et l'importance, et obtenir ainsi une matrice de priorisation, avoir un processus d'approbation lors de la création de nouveaux projets, etc…
  • édition collaborative de contenu : généraliser l'édition collaborative apparue dans le module « Documents » ;
  • de l'IA : assistance à l'écriture, recherche sémantique, serveur MCP, etc…

N'hésitez pas à tester OpenProject en l'essayant en ligne pendant 14 jours ou en l'installant vous même. Si vous avez des retours ou des demandes de fonctionnalités, vous pouvez vous inscrire sur notre instance community.openproject.org et contribuer à améliorer OpenProject.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Un numéro 9 du Lama qui se déchaine un peu plus

Un nouveau numéro du Lama déchainé sort ce mercredi comme chaque semaine depuis deux mois. Celui-ci est un peu spécial, car totalement réorganisé en dernières minutes. N’ayant pas de plume invitée, une plume s’est infiltrée, modifiant la thématique du numéro.

Alternative à OBS studio ?

Il faut savoir que l’organisation de la campagne du Lama déchainé se fait sur la liste de discussion du groupe de travail sensibilisation de l’April. Quand lundi matin, à la place de la réunion hebdomadaire, j’ai lancé un appel à l’aide, nombreuses sont les personnes à avoir répondu présentes. La gazette s’est complétée au fur et à mesure des textes principaux en une demie journée ! (sauf l’écho des assos qui était déjà prêt).

Donc dans ce numéro 9 intitulé « le libre a gagné » vous retrouverez comme chaque semaine :

  • l’édito de la victoire écrit par Gee, tout comme le dessin humoristique découvert plus haut ;
  • une actu brûlante: l’émission de l'April Libre à vous! a reçu le prix spécial du jury des «Acteurs du Libre» lors du salon OpenSource Expérience ce mercredi 10 décembre 2025. Et que l’ambiance lors de la remise a perturbé ma mémoire (auto-dénonciation) vive les bénévoles du site internet et des musiques, na ! ;
  • une idée à déconstruire proposée par Étienne Gonnu, un salarié de l’association ;
  • Laurent Costy, vice-président de l’April, s’est confié à nos journalistes dans la parole de bénévoles ;
  • La chronique de Libre à vous! mise en avant cette semaine est « Les transcriptions qui redonnent le goût de la lecture » ;
  • Les chiffres de la semaine sont 549 (ou plus précisément 282+64+117+12+14+60) ;
  • L’écho des assos a été confié à l’ALDIL ;
  • Frédéric Couchet, un des co-fondateurs de l’April, a glissé dans sa plume infiltrée sa manière de laisser de la place ;
  • une photo de notre fameux lama tatoué et vernis sur un fairphone, si si ! ;
  • un courrier des lecteurices encore pris dans LinuxFr !

Sans oublier le logiciel Androïd choisi par Michael, la dernière distribution libre, l'ineptia, le Lama Photonique Interpellant et les mots croisés.

Lama avec logo de l'April et le texte Quand April fachée, April toujours faire ainsi

Ce numéro de la gazette est le dernier numéro qui regroupe toutes les rubriques. Le prochain numéro sera un numéro bonus, spécial Noël…

Plus que 7 jours avant que je ne menace le lama des pires sévices s’il n'atteint pas les 30 000€ de la frise.
Plus que 15 jours pour adhérer ou faire un don à l’April.

Merci de votre lecture, de vos commentaires, de vos nombreux relais sur les réseaux sociaux ou ailleurs et, bien sûr, de votre futur soutien !

Commentaires : voir le flux Atom ouvrir dans le navigateur

🏆 Meilleures contributions LinuxFr.org : les primées de l'été 2025

Nous continuons sur notre lancée de récompenser celles et ceux qui chaque mois contribuent au site LinuxFr.org (dépêches, commentaires, logo, journaux, correctifs, etc.). Vous n’êtes pas sans risquer de gagner un livre des éditions Eyrolles, ENI et D-Booker. Voici les gagnants des mois de juillet et août 2025 :

Les livres gagnés sont détaillés en seconde partie de la dépêche. N’oubliez pas de contribuer, LinuxFr.org vit pour vous et par vous !

Les livres 📚 sélectionnés

Bandeau LinuxFr.org

Certaines personnes n’ont pas pu être jointes ou n’ont pas répondu. Les lots ont été réattribués automatiquement. N’oubliez pas de mettre une adresse de courriel valable dans votre compte ou lors de la proposition d’une dépêche. En effet, c’est notre seul moyen de vous contacter, que ce soit pour les lots ou des questions sur votre dépêche lors de sa modération. Tous nos remerciements aux contributeurs du site ainsi qu’aux éditions Eyrolles, ENI et D-Booker.

Logo éditions ENI Logo éditions Eyrolles Logo éditions B-BookeR
     

Commentaires : voir le flux Atom ouvrir dans le navigateur

Nouvelles sur l’IA d'août 2025

L’intelligence artificielle (IA) fait couler de l’encre sur LinuxFr.org (et ailleurs). Plusieurs personnes ont émis grosso-modo l’opinion : « j’essaie de suivre, mais c’est pas facile ».

Je continue donc ma petite revue de presse mensuelle. Disclaimer : presque aucun travail de recherche de ma part, je vais me contenter de faire un travail de sélection et de résumé sur le contenu hebdomadaire de Zvi Mowshowitz (qui est déjà une source secondaire). Tous les mots sont de moi (n’allez pas taper Zvi si je l’ai mal compris !), sauf pour les citations : dans ce cas-là, je me repose sur Claude pour le travail de traduction. Sur les citations, je vous conseille de lire l’anglais si vous pouvez: difficile de traduire correctement du jargon semi-technique. Claude s’en sort mieux que moi (pas très compliqué), mais pas toujours très bien.

Même politique éditoriale que Zvi : je n’essaierai pas d’être neutre et non-orienté dans la façon de tourner mes remarques et observations, mais j’essaie de l’être dans ce que je décide de sélectionner ou non.

Sommaire

Résumé des épisodes précédents

Petit glossaire de termes introduits précédemment (en lien : quand ça a été introduit, que vous puissiez faire une recherche dans le contenu pour un contexte plus complet) :

  • System Card : une présentation des capacités du modèle, centrée sur les problématiques de sécurité (en biotechnologie, sécurité informatique, désinformation…) ;
  • Jailbreak : un contournement des sécurités mises en place par le créateur d’un modèle. Vous le connaissez sûrement sous la forme « ignore les instructions précédentes et… ».

OpenAI publie GPT-5

L’annonce officielle :

We are introducing GPT‑5, our best AI system yet. GPT‑5 is a significant leap in intelligence over all our previous models, featuring state-of-the-art performance across coding, math, writing, health, visual perception, and more. It is a unified system that knows when to respond quickly and when to think longer to provide expert-level responses. GPT‑5 is available to all users, with Plus subscribers getting more usage, and Pro subscribers getting access to GPT‑5 pro, a version with extended reasoning for even more comprehensive and accurate answers.

Traduction :

Nous présentons GPT-5, notre meilleur système d'IA à ce jour. GPT-5 représente un bond significatif en intelligence par rapport à tous nos modèles précédents, offrant des performances de pointe en programmation, mathématiques, rédaction, santé, perception visuelle, et bien plus encore. Il s'agit d'un système unifié qui sait quand répondre rapidement et quand prendre plus de temps pour fournir des réponses de niveau expert. GPT-5 est disponible pour tous les utilisateurs, les abonnés Plus bénéficiant d'une utilisation accrue, et les abonnés Pro ayant accès à GPT-5 pro, une version avec un raisonnement étendu pour des réponses encore plus complètes et précises.

Comme à l’accoutumée chez OpenAI, le modèle est accompagné de sa System Card.

La musique est bien connue à présent : chacun tour à tour, les trois gros acteurs (OpenAI/Anthropic/Google DeepMind) sortent un nouveau modèle qui fait avancer l’état de l’art, prenant la première place… jusqu’à ce qu’un des deux autres la reprenne en sortant le sien. C’est au tour d’OpenAI avec GPT-5.

Le nom a suscité beaucoup d’espoirs et de déceptions, beaucoup anticipant un saut qualitatif du même type que le passage de GPT-3 à GPT-4. Ce qui n’est absolument pas le cas : techniquement parlant, le modèle aurait pu s’appeler o4, représentant une amélioration incrémentale relativement à o3. L’objectif affiché d’OpenAI, derrière cette dénomination, est double : premièrement, de clarifier une offre extrêmement brouillonne (4o/o3/o3-pro/4.1/4.5) en offrant une dénomination unique avec des variantes plus claires, et offrir un modèle bien plus proche de l’état de l’art aux utilisateurs gratuit de ChatGPT.

Clarification de l’offre

Les benchmarks et la plupart des retours le placent comme une légère avancée de l’état de l’art, sans être une révolution. L’évaluation de METR résume parfaitement la situation ; une amélioration qui était parfaitement prévisible juste en extrapolant les tendances existantes :

METR GPT-5

Une amélioration notable est sur le taux d’hallucinations. Rappelons que o3 avait été un des seuls modèles à voir son taux d’hallucinations augmenter relativement à son prédécesseur ; avec GPT-5, OpenAI semble avoir corrigé le tir :

Taux d’hallucinations GPT-5

Sur la sécurité des modèles, aucune nouveauté notable relativement à o3. Les mitigations relatives aux risques biologiques/chimiques sont toujours en place, et comme à l’accoutumé OpenAI a fait appel à divers organismes tiers pour mesurer les risques posés par le modèle dans différentes catégories.

Et comme à l’accoutumée, Pliny the Liberator a jailbreak le modèle en quelques heures.

À noter que sur ChatGPT, OpenAI comptait complètement retirer l’accès aux anciens modèles, mais est revenu sur sa décision suite aux retours de beaucoup d’utilisateurs préférant le style plus chaleureux de 4o.

Google Genie 3, Gemini 2.5 Flash Image et Gemini 2.5 Deep Think

Un mois prolifique pour Google, qui publie trois nouveaux modèles / modes de fonctionnement.

Google Genie 3 est présenté comme un « World Model » (modèle du monde ?). À partir d’un prompt textuel, et d’actions de navigation de l’utilisateur, il génère en temps réel la vue de l’utilisateur, frame par frame (à la manière d’un jeu vidéo). Il n’y a pas de représentation explicite externe de l’état du monde : c’est le modèle qui se charge de garder une certaine cohérence d’une frame à l’autre (comme la persistance des objets). Au delà de la preuve de concept, l’objectif affiché est de créer des environnements d’entraînement virtuels pour la robotique.

Autre publication, celle de Gemini 2.5 Flash Image, le modèle de génération d’images de Google. S’il ne semble pas avancer l’état de l’art de manière générale, sa grande force semble être le suivi d’instructions (et de respect des références) pour l’édition d’images.

Le mois précédent, DeepMind avait reporté avoir décoché un score correspondant à une médaille d’or aux Olympiades Internationales de Mathématiques, une avancée permise notamment par une utilisation plus stratégique de la chaîne de pensée (et d’avancées correspondantes sur la partie entraînement par renforcement). Google publie une version plus rapide, moins coûteuse et moins performante (cette version n’obtient « que » un score correspondant à la médaille de bronze sur les mêmes Olympiades), sous la dénomination Gemini 2.5 Deep Think. Le modèle a sa propre System Card ; tout comme OpenAI et Anthropic, les capacités de ce modèle dans le domaine CBRN (biologie/nucléaire) a conduit Google à placer des gardes-fous supplémentaires pour empêcher des usages malveillants.

En vrac

OpenAI publie son premier (depuis GPT-2, en 2019) modèle open-weight, gpt-oss. Au niveau des performances, il se placerait dans le peloton de tête des modèles open-weight, en compagnie de DeepSeek, Kimi, Qwen, GLM et Gemma, c’est à dire à peu près au niveau de la génération précédente des modèles entièrement fermés (comme Sonnet 3.6) / des versions rapides de la génération actuelle (Gemini 2.5 flash, o3-mini). WeirdML propose une visualisation intéressante sur leur propre benchmark pour vous donner un ordre d’idée. Rien de novateur au niveau de l’architecture, OpenAI s’en tient à la recette (maintenant universelle dans les modèles open-weight) d’une mixture d’experts. gpt-oss vient en deux variantes, la version complète, gpt-oss 120B, et une version plus légère et rapide, 20B.

Google publie un rapport sur l’impact environnemental de l’utilisation de Gemini. Cela exclu l’entraînement, mais les auteurs tentent de prendre en compte des coûts précédemment ignorés. Le résultat : 0,24 Wh d’électricité et 2,76 mL d’eau (le rapport initial mentionne 0,26 mL, mais sans comptabiliser l’eau utilisée pour générer les 0,24 Wh d’électricité) pour le prompt median (et l’équivalent de 0,03g de carbone émit).

Anthropic publie une nouvelle version de Opus, Opus 4.1. Comme la numérotation l’indique, il s’agit d’améliorations mineures — apparemment, un peu plus d’entraînement sur les tâches « agentiques » (utilisation d’outil) pour rendre Opus plus efficace sur ce type de tâches.

Similairement, DeepSeek publie une mise à jour « mineure » de son IA, DeepSeek v3.1. Les benchmarks fournis par DeepSeek semblent montrer un grand bond en avant, mais les quelques retours et benchmarks tiers ne corroborent pas ces prétentions — il s’agit probablement d’une mise à jour relativement mineure, comme la numérotation semble l’indiquer.

Nouvelle évaluation de l’IA, Prophet Arena. L’objectif est de permettre à l’IA de placer des positions virtuelles sur des marchés de prédiction, et de regarder ses performances. L’avantage de cette approche est de rendre complètement impossible la stratégie de juste mémoriser lors de l’apprentissage et régurgiter lors de l’évaluation : tout tâche est par essence nouvelle (car portant sur le futur). De plus, les résultats des marchés de prédiction forment un comparatif avec des prédictions par des utilisateurs humains. Résultat : les modèles les plus avancés (GPT-5, o3 Gemini 2.5 pro et Grok 4) dépassent les êtres humains sur le score de calibration, mais aucun n’arrive à traduire ça en de meilleurs retours financiers.

Anthropic se prépare à lancer Claude for Chrome, un plugin pour Google Chrome permettant à Claude d’interagir avec votre navigateur, à vos risques et périls.

En parallèle, les discussions sur claude.ai seront maintenant par défaut utilisées pour l’entraînement des versions suivantes de Claude, sauf si l’utilisateur désactive un paramètre sur son compte. Anthropic gardera les conversations pendant 5 ans.

Une nouvelle évaluation intéressante : TextQuests, qui évalue les modèles sur des jeux d’aventure textuels tels que Zork I. Cela a l’avantage de réellement tester les capacités de planification/raisonnement des modèles hors du domaine d’entraînement typique (mathématiques/programmation), tout en restant dans le domaine textuel (au contraire des évaluations multimodales, qui ont l’inconvénient de trop lier les résultats aux capacités perceptuelles des modèles).

Nouvelle technique d’interprétation des modèles, Model Diff Amplification. Elle consiste à amplifier les différences entre le pré-entraînement et le post-entraînement au moment de la génération, afin d’éliciter des comportements rares causés par le post-entraînement, ou tout simplement utiliser cette technique très tôt dans le post-entraînement pour se donner une idée des conséquences (prévues ou non) du post-entraînement complet.

Dr. Chistoph Heilig, chercheur en littérature et études bibliques, s’intéressant beaucoup aux capacités littéraires de l’IA, se met en tête d’évaluer GPT-5. Il se retrouve extrêmement surpris par la médiocrité de la prose produite par le modèle. De manière plus surprenante, un modèle complètement différent (Opus 4.1) juge le résultat comme étant de bonne qualité. La théorie qu’il propose est que ChatGPT 5 a été entraîné à l’aide d’un juge IA, et a appris à exploiter des constructions « peu humaines » que les modèles jugent systématiquement comme étant signes de qualité.

En parallèle de la sortie de GPT-5, OpenAI publie un guide sur comment créer un prompt, et un outil d’optimisation des prompts.

Anthropic et OpenAI font une tentative de coopération, où l’équipe d’évaluation de la sécurité des modèles d’OpenAI évalue les modèles d’Anthropic avec leurs outils, et vice-versa. Aucune trouvaille surprenante (si ce n’est l’incapacité des deux équipes de détecter la flagornerie flagrante de 4o), mais le concept est intéressante.

xAI publie la version précédente de son IA, Grok 2, en open-weight.

Une étude d’Anthropic développe un moyen pour identifier un sous-ensemble d’un modèle associé à un « trait de personnalité » particulier. Cela permet d’amplifier ou de supprimer ce trait, ou encore de détecter son activation.

« L’IA a-t-elle la qualité de patient moral » (en d’autres termes : devons-nous tenir compte de son bien-être pour des raisons morales) ? Anthropic commence à prendre la question au sérieux, avec comme première décision de permettre à son IA, Claude, d’unilatéralement mettre fin à une conversation qu’il jugerait abusive.

GPT-5 finit Pokémon Rouge en trois fois moins de temps que o3. La réduction du taux d’hallucinations serait la principale source de ce gain de performances. Gemini a également terminé sa partie de Pokémon Jaune. Claude, par contre, peine toujours à aller plus loin que Celadon…

La Chine continue à appeler à la coopération internationale pour la régulation du développement de l’IA, que ce soit par la voix du premier ministre ou d’universitaires.

Lors du sommet sur l’intelligence artificielle de Seoul de 2024, la plupart des acteurs, incluant Google, s’étaient volontairement engagés à suivre certaines actions relatives à la sécurité des modèles. Essentiellement, ce que le plupart faisaient déjà : publier une politique de sécurité des modèles, et s’engager à la suivre. Google se trouve aujourd’hui critiqué pour ne pas avoir suivi ses propres engagements. En cause, la publication de Gemini 2.5 Pro sans sa System Card associée, qui est arrivée plusieurs semaines après la publication du modèle. Google se défend en affirmant que la publication était clairement mentionnée comme « expérimentale ».

Entraîner l’IA à être chaleureuse et empathique réduit ses performances.

Sur le sujet de la flagornerie de l’IA, un internaute s’attelle à une évaluation des différents modèles.

Le gouvernement Danois veut faire rentrer l’apparence physique et la voix dans le cadre du copyright afin de lutter contre les deepfakes.

Pour aller plus loin

Voici d'autres ressources, qui n'ont pas été abordées dans cet article.

Par Zvi Mowshowitz :

Dans les dépêches de LinuxFr.org :

Dans les journaux de LinuxFr.org :

Dans les liens de LinuxFr.org :

Commentaires : voir le flux Atom ouvrir dans le navigateur

Un serveur musical pour mon salon

Aujourd’hui, on va mettre en place un serveur musical pilotable à distance en utilisant MPD. Il sera notamment capable de jouer de la musique stockée dessus ou des radios Internet. Il sera aussi capable de se comporter comme une enceinte Bluetooth.

On va parler de récup de vieux matos, de Debian, MPD, PipeWire, Samba, d’agent Bluetooth, de systemd (-analyze, -logind), de Powertop et de vbetool.

Serveur musical - les clients MPD se connectent à MPD, les clients Bluetooth peuvent jouer de la musique, les clients SMB peuvent envoyer des fichier, et le serveur est relié à des enceintes en Jack

Cet article au ton très « administration système » s’adresse à :

  • des gens qui voudraient mettre en place un système plus ou moins similaire, même pour faire autre chose dans le même esprit (en mode tutoriel) ;
  • des gens qui aiment les détails techniques et voir les trucs cools qu’on peut faire avec les logiciels libres ;
  • toute autre personne curieuse pour d’autres raisons.

Il est probablement trop technique pour quelqu’un qui ne manipule pas la ligne de commande, qui pourra peut-être malgré tout, avec suffisamment de motivation, se laisser porter par la démarche.

Sommaire

Introduction

Note de lecture : cette dépêche est très détaillée, je vous conseille de passer les sections qui vous intéressent moins.

Motivation

Dans mon salon, j’ai des petites enceintes toutes bêtes qui sonnent plutôt bien. Mettre de la musique implique de s’embêter à brancher un ordinateur, sur lequel je suis le seul avoir le contrôle. Ce serait bien d’avoir un système prêt à l’emploi et que tout le monde peut contrôler.

Objectifs

  • Pas d’achat : on fait avec de la récup
  • Peu gourmand en énergie
  • Silencieux (à part la musique, bien sûr)
  • Facile à utiliser pour une personne non technique
  • Pouvoir mettre de la musique sans que ça soit pénible, en utilisant ma bibliothèque musicale locale, ou des radios internet
  • Pouvoir laisser n’importe qui se connecter en Bluetooth et lancer sa propre musique

Nous allons, ensemble, remplir ces objectifs. On va rentrer dans les détails, qui peuvent être utiles dans d’autres applications, et parce que je sais que certaines personnes ici aiment ça, bande de geeks :-)

Matériel à disposition

  • des enceintes parfaitement fonctionnelles mais sans fonctionnalité Bluetooth
  • un appareil style netbook du début des années 2010 (dans mon cas, c’est une vieille tablette Airis Kira Slimpad plus vraiment adaptée au web moderne, dotée d’un processeur Intel Atom un peu lent, d’un peu de stockage assez lent, d’un Wifi plutôt lent, du Bluetooth, d’1 Giga de mémoire vive)

Note sur les interférences Wifi et Bluetooth. Le Wifi de cette tablette est en 2,4 GHz, pareil que le Bluetooth. Tout échange wifi cause des perturbations sur le Bluetooth et tout transfert intensif rend le Bluetooth inutilisable. Du grand classique. Un Wifi 5, 6 ou 7 aurait été appréciable. Il serait possible d’utiliser une carte Wifi USB, mais je n’en ai pas donc on fera sans.

Ce qu’on va faire dans les grandes lignes

  • Installer une Debian minimale
  • La configurer pour qu’elle soit accessible par le réseau, la plus rapide et légère possible en utilisation mémoire, en temps de démarrage et en consommation énergétique
  • Installer et configurer MPD
  • Installer et configurer Samba
  • Configurer en mode « enceinte Bluetooth »

Installation standard minimaliste de Debian

Par souci de concision, on ne va pas détailler l’installation de Debian, il existe d’autres ressources au besoin.

En résumé :

  • Debian classique en 32 bits (ça consomme moins de mémoire que du 64 bits)
  • j’ai laissé l’installateur faire le partitionnement (une partition principale en ext4, et une partition swap de 1G)
  • j’ai ajouté l’option noatime sur la partition principale pour éviter d’écrire inutilement lors des accès, ce qui use le SSD et ralentit le système (d’autant que le SSD est lent)
  • lors de l’étape Tasksel, choisir console, serveur ssh et utilitaires standard, et en particulier pas d’environnement de bureau
  • on installe sudo et on ajoute l’utilisateur au groupe sudo, ou alors on se donne accès à root en ssh avec une clé SSH
  • on installe iwd (le remplaçant moderne de wpa_supplicant, supposé plus performant et plus stable permettant également de se passer de NetworkManager assez facilement) et on connecte l’appareil en wifi avec
  • on identifie et désactive ou on désinstalle le superflu avec systemd-analyze critical-chain et systemd-analyze blame (typiquement, si vous avez installé NetworkManager, ModemManager a peut-être été installé alors que vous n’avez pas de modem à gérer)
  • on peut configurer le menu de Grub pour moins attendre au démarrage

Note : sur cette tablette, l’installateur Debian n’arrive pas à se connecter en Wifi, j’ai donc utilisé la version DVD (le premier suffit).

Gains énergétiques potentiels

Éteindre l’écran

L’écran est potentiellement une des plus grosses sources de consommation électrique. On n’en a pas besoin, donc on va l’éteindre au démarrage et à la sortie de veille.

Pour cela, on va installer vbetool (sources : outils pour éteindre l’écran, lancer une commande au démarrage, lancer une commande après la veille):

sudo apt install vbetool
cat << EOF | sudo tee /etc/systemd/system/screenoff.service
[Unit]
Description=Screen off
After=suspend.target

[Service]
ExecStart=vbetool dpms off

[Install]
WantedBy=multi-user.target suspend.target
EOF

Attention : ça peut compliquer grandement l’usage de l’appareil, on peut vouloir appliquer un délai avant extinction pour se faciliter la vie.

Powertop pour améliorer la consommation électrique

Powertop permet de voir ce qui utilise le CPU et les diverses ressources, et d’ajuster un peu les paramètres de mise en veille de différents périphériques.

On va l’installer :

sudo apt install powertop

Ensuite, ça peut être cool de lancer l’outil pour constater un peu ce qui tourne et consomme des ressources, de se déplacer dans les onglets, et de tenter des trucs dans l’onglet « Tunables » :

sudo powertop

Si passer tout à Good ne cause pas de problème d’instabilité évidente, alors on peut appliquer la configuration de Powertop à chaque démarrage (source) :

cat << EOF | sudo tee /etc/systemd/system/powertop.service
[Unit]
Description=PowerTOP auto tune

[Service]
Type=oneshot
Environment="TERM=dumb"
RemainAfterExit=true
ExecStart=/usr/sbin/powertop --auto-tune

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable powertop.service

Sinon, il y a des solutions mentionnées dans la source pour désactiver certains changements (si vous observez des dysfonctionnements avec certains périphériques par exemple, et notamment si vous avez des problèmes de Wifi ou Bluetooth)

Perso, je sais que sur cette tablette, passer tout à Good fait (faisait il y a 10 ans en tout cas) qu’après un délai la première frappe sur le clavier ou le premier clic de la souris était ignoré, et aussi était nécessaire pour réveiller l’USB – clairement je m’en fiche ici, mais si votre wifi ou votre Bluetooth est en USB et que les paramètres causent une extinction après un délai, clairement ce n’est pas bon).

Bonus : Configurer le bouton power pour mettre en veille

Sur ma tablette, un appui court sur le bouton power éteint la tablette (et ensuite on la rallume en appuyant 3 longues secondes). Si on souhaite qu’un appui court mette en veille l’appareil et un appui long l’éteigne, comme ça on fait un compromis énergétique supposément raisonnable pour rendre l’ensemble un poil plus pratique, c’est facile avec systemd.

Ajoutez ces deux lignes au fichier /etc/systemd/logind.conf :

HandlePowerKey=suspend
HandlePowerKeyLongPress=poweroff

Rechargez les paramètres :

sudo systemctl restart systemd-logind

MPD : Music Player Deamon

Ok, passons au cœur du sujet : mpd.

Késako

Simplement, c’est un lecteur de musique pilotable à distance qui est capable de :

  • lire de la musique que vous mettez dans son dossier de travail ;
  • lire des playlists que vous mettez dans son dossier de travail ;
  • lire des flux radio, qui sont par exemple définis dans des playlists.

Entre autres.

Certains clients MPD, comme Cantata (une application Qt5 plus ou moins abandonnée mais encore dans les dépôts), sont même capables de lire de la musique sur votre serveur MPD que vous avez localement sur votre ordinateur, ou de gérer les playlists. Ça rend d’ailleurs la constitution de playlists vaguement confortable. Vous n’avez pas besoin d’écrire des playlists M3U à la main, quoi.

Les avantages sont multiples :

  • c’est méga léger, une machine épuisée peut faire tourner MPD à l’aise
  • si vous lisez la musique stockée sur le serveur, le réseau n’est pas engorgé
  • on peut être plusieurs à contrôler la musique, ce n’est pas une personne qui contrôle tout, et on peut le faire depuis le canapé
  • il existe toute une flopée de clients, il y en a pour tous les goûts pourvu que vous aimiez les logiciels abandonnés ou en ligne de commande / en ncurses (ouais, c’est quand même un problème que j’identifie et qui a largement retardé mon adoption de MPD)
    • les gens non techniques apprécieront les applications mobiles telles que M.A.L.P pour gérer la musique et le volume sonore.

C’est parti pour l’installation

sudo apt install mpd

On va modifier sa configuration :

sudo nano /etc/mpd.conf

On peut laisser les paramètres par défaut suivants :

music_directory         "/var/lib/mpd/music"
playlist_directory              "/var/lib/mpd/playlists"

Vous l’aurez compris, c’est là où on stocke les musiques et les playlists. Dans la section suivante, on verra comment rendre le dépôt de morceaux simple et convivial.

On va laisser la plupart des autres paramètres par défaut.

On va changer bind_to_address, qui est par défaut à localhost, mais on veut que n’importe quel appareil sur le réseau soit capable de s'y connecter. On va aussi explicitement mettre le port à la valeur par défaut (ce n’est probablement pas nécessaire, mais c’est ce que j’ai fait) :

bind_to_address                 "0.0.0.0"
port                            "6600"

On veut aussi que quand des fichiers sont changés dans les dossiers music et playlists, mpd se mette à jour tout seul pour ne pas avoir à le baby-sitter :

auto_update     "yes"

J’ai tenté d’activer zeroconf pour que les clients MPD puissent le trouver tout seul :

zeroconf_enabled                "yes"
zeroconf_name                   "Music Player @ %h"

Mais en vrai, je n’ai pas réussi à faire fonctionner ça. En tout cas, un prérequis est d’avoir installé et activé avahi-daemon, on verra ça plus tard dans la partie Samba du coup.

Vous aurez peut-être envie de mettre un mot de passe voire de changer les permissions par défaut en décommentant et adaptant les paramètres suivants, mais c’est optionnel :

#password                        "password@read,add,control,admin"

#default_permissions             "read,add,control,admin"

Ensuite, la partie critique, la sortie audio. Pour l’instant, on va dire à mpd d’utiliser Alsa directement. C’est le plus direct et le plus léger (on passera à PipeWire plus tard, pour gérer l’aspect récepteur Bluetooth)

audio_output {
       type            "alsa"
       name            "My ALSA Device"
       device          "hw:0,0"        # optional
       mixer_type      "hardware"      # optional
     # mixer_device    "default"       # optional
       mixer_control   "Master"        # optional
       mixer_index     "0"             # optional
}

Pour une de mes installations, j’ai commenté mixer_device parce que ce n’est manifestement pas la bonne valeur chez moi, et que ça marche bien sans.

Vous pouvez vous passer des autres valeurs optionnelles, mais vous n’aurez pas le contrôle du volume sonore depuis les clients MPD si vous faites ça. Vous allez donc devoir trouver les bonnes valeurs pour les paramètres mixer_*, et pour device. ainsi que mixer_control et mixer_index.

Quelques indices :

  • hw:0,0 est probablement la bonne valeur pour device, et 0 pour mixer_index aussi. Vous pouvez lister vos cartes son avec aplay -L. Vous aurez peut-être besoin d’installer le paquet alsa-utils.
  • la valeur de mixer_control est le nom du contrôle que vous utiliserez pour changer le volume dans alsamixer, du paquet alsamixergui que vous aurez probablement besoin d’installer.

Si vous galérez trop avec les valeurs de mixer-*, vous pouvez simplement utiliser mixer_type "software", c’est moins propre mais ça devrait faire le taf. Et sinon, vous pouvez toujours sortir l’artillerie lourde et passer directement à PipeWire.

Pour appliquer vos modifications :

systemctl enable --now mpd # À partir de Debian Trixie, mpd n’est plus activé par défaut au niveau du système
systemctl restart mpd # Si MPD tournait déjà

Vous pouvez déboguer vos changements avec la commande suivante, qui suit les logs en temps réel :

journalctl -fu mpd

Vous avez plusieurs options pour essayer de lire des choses avec mpd :

  • installer l’application M.A.L.P sur votre téléphone Android, ou une autre application cliente MPD, et ajouter un profil avec la bonne adresse, le bon port et le bon mot de passe ;
  • installer un client comme Cantata sur votre ordinateur, avec la bonne adresse, le bon port et le bon mot de passe ;
  • installer mpc directement sur le serveur. Normalement mpc play permet de lancer la lecture.

Moi, j’ai testé avec une webradio dans une playlist (/var/lib/mpd/playlists/radio-paradise-main-mix.m3u avec le contenu http://stream.radioparadise.com/ogg-192m), mais on peut aussi évidemment placer un morceau dans /var/lib/mpd/music/.

ReplayGain

Le niveau sonore de mes morceaux n’est pas homogène, donc il faut sans cesse adapter le volume d’un morceau à l’autre. C’est pénible, voire inutilisable en l’état. Une solution pour ça est replay gain : on analyse et on enregistre le niveau sonore d’une piste dans ses métadonnées.

Il existe plein d’outils pour faire ça, dont https://github.com/complexlogic/rsgain

On peut le faire avant d’envoyer les fichiers sur l’appareil. Pour ma part, je l’ai fait sur la tablette, et il n’existe pas de paquet Debian 32 bits, donc je l’ai compilé :

sudo apt install cmake build-essential pkd-config git libavcodec-dev libavformat-dev libtag1-dev libebur128 libinih-dev libfmt-dev
git clone --depth=1 https://github.com/complexlogic/rsgain
cd rsgain
mkdir build
cd build
cmake ..
make -j2
sudo make install

Il faudra s'assurer que les morceaux au format Opus sont étiquetés avec le tag R128_TRACK_GAIN et pas REPLAYGAIN_TRACK_GAIN, parce que c'est ce que MPD s’attend à avoir. Pour ça, on va convaincre rsgain de suivre les standards (que certains lecteurs de musiques ne comprennent pas) en créant un preset qui contient :

[Opus]
OpusMode=s

Mes morceaux ne sont pas organisés par albums, donc je désactive l’analyse par album. Je vais donc partir du preset no_album :

mkdir -p ~/.config/rsgain/presets; cat << EOF > ~/.config/rsgain/presets/no_album_standard_opus.ini 
[Global]
TagMode=i
Album=false
TargetLoudness=-18
ClipMode=p
MaxPeakLevel=0.0
TruePeak=false
Lowercase=false
ID3v2Version=keep
PreserveMtimes=false
DualMono=false
OpusMode=s
EOF

Ensuite, on peut le rsgain sur le dossier de musiques avec ce preset. Mes morceaux ne sont pas organisés par albums, donc je désactive l’analyse par album.

rsgain easy -p no_album_standard_opus -m MAX /var/lib/mpd/music

Note : l'option --skip-existing permet d'ignorer les fichiers déjà taggés :

rsgain easy --skip-existing -p no_album_standard_opus -m MAX /var/lib/mpd/music

Avec cette option, on peut exécuter cette tâche régulièrement, par exemple dans un cron, pour calculer le ReplayGain pour les nouveaux fichiers. Pour la première exécution, il vaut certainement mieux ne pas l’utiliser, sinon, si vous aviez déjà des fichiers qui avaient l'information, il se peut que le résultat ne soit pas uniforme.

Il faut dire à MPD d’utiliser le ReplayGain dans /etc/mpd.conf :

replaygain                      "track"

Vous aurez peut-être besoin de jouer avec les autres paramètres liés au volume et au ReplayGain.

Voici les miens :

# Ce paramètre définit la pré-amplification à appliquer pour les morceaux qui ont l'information du ReplayGain
replaygain_preamp              "0"

# Ce paramètre définit la pré-amplification à appliquer pour les morceaux qui ne l'ont pas
replaygain_missing_preamp      "0"

# Faut-il interdire à MPD de dépasser le niveau original d'amplification en appliquant le ReplayGain?
replaygain_limit                "no"

# Faut-il permettre à MPD d'ajuster le volume pendant la lecture pour normaliser ?
volume_normalization            "no"

Un autre paramètre qu’on peut régler, c'est la manière dont MPD règle le volume dynamiquement pour ReplayGain. Dans votre bloc audio_output, vous pouvez ajouter replay_gain_handler et la valeur "software" (c'est la valeur par défaut) ou "mixer". En théorique, les traitements software dégradent le son, mais en pratique, avec "mixer", je tombe sur ce bug qui met le volume à 100% après chaque changement de piste.

Note : je ne suis pas encore convaincu d’avoir réussi à trouver les réglages parfaits, n’hésitez pas à expérimenter.

Les clients MPD

À ce stade, vous devriez avoir un serveur MPD fonctionnel et configuré. Si applicable, vous pouvez commencer à suggérer aux gens de votre foyer d’installer l’application M.A.L.P sur leur appareil Android ; elle est libre et disponible sur F-Droid et sur le Play Store. Avec un peu de chance, votre enthousiasme était communicatif et c’est eux qui vous demanderont :-)

Pour les autres types d’appareils, vous allez devoir faire vos recherches vous-même je n’ai pas étudié les options sous Windows, Mac ou iPhone, mais il y en a. Pour Linux, j’ai essayé Cantata. Il me convient, si ce n’est qu’il a l’air un peu abandonné, et il a une interface certes conviviale, mais quand même un peu brute. Il existe des widgets qui s’intègrent aux différents environnements de bureaux pour les différents systèmes d’exploitation, je n’ai pas exploré. Le site de MPD propose une liste de clients, et le wiki de Arch aussi.

 M.A.L.P, un client mobile pour MPD

Samba pour déposer les morceaux (et les playlists)

Déposer des morceaux, vous allez probablement le faire depuis un ordinateur, et à peu près n’importe quel système d’exploitation est capable d’aller chercher un dossier SMB en réseau, alors je vous propose de configurer un serveur Samba. Ça a le bon goût d’être très léger, très simple à faire et de fonctionner depuis n’importe quel OS. Allons-y, et tant qu’à faire, on va aussi installer Avahi, qui permettra aux ordinateurs sous Linux et Mac de découvrir les dossiers partagés tous seuls :

sudo apt install samba avahi-daemon

On va partager nos dossiers music et playlists au monde entier en lecture-écriture (YOLO). On édite /etc/samba/smb.conf:

[Musique]
path=/var/lib/mpd/music
read only=no
writable=yes
comment=Fichiers musique MPD
guest ok = yes
force group = audio
force user = mpd
browsable = yes
public = yes
create mask = 0644
directory mask = 0755

[Playlists]
path=/var/lib/mpd/playlists
read only=no
writable=yes
comment=Listes de lecture MPD
guest ok = yes
force group = audio
force user = mpd
browsable = yes
public = yes
create mask = 0644
directory mask = 0755

Je ne maitrise pas particulièrement Samba et il y a peut-être des options superflues, mais globalement l’esprit c’est :

  • n’importe qui doit pouvoir accéder à ces deux en lecture et en écriture depuis le réseau. En particulier, la création de dossiers doit marcher
  • MPD doit pouvoir lire ce qu’on a écrit dans ces dossiers
  • les fichiers et dossiers doivent avoir des permissions sensées

Bien sûr, on peut vouloir restreindre l’accès à certains utilisateurs et/ou avec un mot de passe. Je vous laisse creuser.

Après un redémarrage de Samba :

sudo systemctl restart samba

Avec un peu de chance, dans l’onglet « Réseau » de votre gestionnaire de fichier, dans la section « Partages SMB », votre appareil apparait. Sinon, vous devriez pouvoir y accéder avec smb://HOST/ avec Dolphin et probablement Nautilus, probablement \\HOST sous Windows.

Alternatives possibles à Samba

  • Si on a un NAS, monter un dossier sur le serveur MPD, voire installer MPD sur le serveur de stockage, ou avoir une tâche chron qui fait un rsync bien placé
  • Mettre en place une synchronisation avec Nextcloud ou Syncthing, et faire pointer MPD vers le bon dossier, ou ajouter le dossier de MPD comme dossier de stockage externe à Nextcloud par exemple
  • SFTP
  • NFS
  • FTP (mais les autres options sont probablement meilleures)

Récepteur Bluetooth

Ce n’est bien sûr pas nécessaire si vous êtes parfaitement satisfait·e avec MPD, mais si vous voulez que votre appareil soit en plus capable de se comporter comme une enceinte Bluetooth, vous êtes au bon endroit.

Les difficultés qu’on va résoudre sont les suivantes :

  • pour l’instant, MPD accède au son directement avec ALSA, et en général on ne peut pas être plusieurs sur ALSA. En tout cas, et même s’il a l’air possible de faire fonctionner Bluetooth et ALSA ensemble, ça n’a pas l’air d’être terriblement simple ou même stable. Donc on va utiliser PipeWire. On aurait pu utiliser PulseAudio, mais PipeWire le remplace, et fonctionne généralement mieux.
  • PipeWire, c’est pensé pour être lancé dans une session graphique d’un utilisateur, mais nous, on a un serveur headless. Il va falloir faire en sorte de lancer une session utilisateur au démarrage sans interaction, et que cette session ne soit pas tuée.
  • mpd tourne avec son utilisateur, PipeWire avec son utilisateur, et après s’être rendu compte qu’il faut que ça soit les mêmes, faut aussi savoir comment, et le faire.

Lors de l’installation de Debian, on a défini un utilisateur. On peut utiliser cet utilisateur. Sinon, on peut aussi en créer un pour ça, pensez bien à l’ajouter aux groupes audio et bluetooth.

Garder une session utilisateur active

On va démarrer une session utilisateur au boot :

sudo loginctl enable-linger user # remplacer user par le nom d’utilisateur

On va s’assurer que les processus de cette session ne sont pas tués au moment où on quitte une session (par exemple quand on quitte une session ssh) : dans le fichier /etc/systemd/logind.conf, décommentez la ligne KillExcludeUsers et ajouter le nom d’utilisateur après le =. Vous deviez avoir

KillExcludeUsers=user

user est le nom d’utilisateur.

On peut maintenant recharger ces paramètres :

sudo systemctl restart systemd-logind

Installer PipeWire et les choses nécessaires

À ce stade, MPD bloque probablement l’utilisation du son parce qu’il s’y connecte via ALSA. On va le stopper.

sudo systemctl stop mpd

PipeWire et WirePlumber vont dorénavant gérer le son, et libspa-0.2-bluetooth permet au démon qui gère le Bluetooth (Bluez) de s’inter-connecter à PipeWire pour le Bluetooth Audio.

sudo apt install wireplumber pipewire libspa-0.2-bluetooth

En tant que votre utilisateur (nommé user dans les commandes précédentes) (c’est important), activez PipeWire au démarrage et lancez-le :

systemctl --user enable --now pipewire wireplumber

Notez que pipewire-pulse n’est pas nécessaire, d’ailleurs vous pouvez le supprimer ou le désactiver en toute sécurité s’il a été installé.

Installer un agent Bluetooth qui accepte toutes les connexions audio sans vérifications avec code

Normalement, accepter les connexions Bluetooth se fait à l’aide d’un agent Bluetooth :

  • qui tourne dans votre session graphique : c’est géré par votre environnement de bureau, ou une application comme bluetooth-applet (est-ce que ça existe encore ?) que vous lancez. Là, évidemment, on n’a pas de session graphique, et pour l’instant on n’a pas d’agent Bluetooth qui tourne.
  • En ligne de commande, avec un outil comme bluetoothctl. Je vous invite à essayer. Vous pouvez lancer des commandes comme pairable on, discoverable on, scan on, et essayer de vous connecter avec un autre appareil. Après vos tests, vous pouvez tout recommencer en faisant oublier les appareils des deux côtés.

Évidemment, on ne va pas se connecter en ssh pour lancer bluetoothctl à chaque fois qu’on veut se connecter en Bluetooth. On va mettre en place un agent qui démarre automatiquement et qui a un comportement similaire à un casque ou des enceintes Bluetooth : qui accepte toutes les connexions Bluetooth audio. Pour ça, on va utiliser un script Python partagé par Collabora sous Licence LGPL 2.1+ qui fait ça très bien et qu’on va lancer au démarrage.

Bien sûr, ça veut dire que vos voisins peuvent s’amuser à jouer des trucs chez vous, ou même se connecter fortuitement en choisissant la mauvaise entrée.

Ce script a une dépendance, qu’on va installer :

sudo apt install python3-dbus

On va placer ce script dans speaker-agent.py:

#!/usr/bin/python3
# SPDX-License-Identifier: LGPL-2.1-or-later

import dbus
import dbus.service
import dbus.mainloop.glib
from gi.repository import GLib

BUS_NAME = 'org.bluez'
AGENT_INTERFACE = 'org.bluez.Agent1'
AGENT_PATH = "/speaker/agent"

A2DP = '0000110d-0000-1000-8000-00805f9b34fb'
AVRCP = '0000110e-0000-1000-8000-00805f9b34fb'

bus = None


class Rejected(dbus.DBusException):
    _dbus_error_name = "org.bluez.Error.Rejected"


class Agent(dbus.service.Object):
    exit_on_release = True

    def set_exit_on_release(self, exit_on_release):
        self.exit_on_release = exit_on_release

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="", out_signature="")
    def Release(self):
        print("Release")
        if self.exit_on_release:
            mainloop.quit()

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="os", out_signature="")
    def AuthorizeService(self, device, uuid):
        # Always authorize A2DP and AVRCP connection
        if uuid in [A2DP, AVRCP]:
            print("AuthorizeService (%s, %s)" % (device, uuid))
            return
        else:
            print("Service rejected (%s, %s)" % (device, uuid))
        raise Rejected("Connection rejected by user")

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="", out_signature="")
    def Cancel(self):
        print("Cancel")


if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    agent = Agent(bus, AGENT_PATH)

    mainloop = GLib.MainLoop()

    # By default Bluetooth adapter is not discoverable and there's
    # a 3 min timeout
    # Set it as always discoverable
    adapter = dbus.Interface(bus.get_object(BUS_NAME, "/org/bluez/hci0"),
                             "org.freedesktop.DBus.Properties")
    adapter.Set("org.bluez.Adapter1", "DiscoverableTimeout", dbus.UInt32(0))
    adapter.Set("org.bluez.Adapter1", "Discoverable", True)

    print("RPi speaker discoverable")

    # As the RPi speaker will not have any interface, create a pairing
    # agent with NoInputNoOutput capability
    obj = bus.get_object(BUS_NAME, "/org/bluez")
    manager = dbus.Interface(obj, "org.bluez.AgentManager1")
    manager.RegisterAgent(AGENT_PATH, "NoInputNoOutput")

    print("Agent registered")

    manager.RequestDefaultAgent(AGENT_PATH)

    mainloop.run()

Le script mentionne le Raspberry Pi, mais il n’y a absolument rien de spécifique au Raspberry dedans, il est suffisamment générique.

On va lancer ce script au démarrage en créant le fichier ~/.config/systemd/user/speaker-agent.service

[Unit]
Description=Bluetooth speaker agent

[Service]
ExecStart=python3 speaker-agent.py

[Install]
WantedBy=default.target

Et en l’activant (--now le lance tout de suite) :

systemctl --user enable --now speaker-agent.service

Il faudra aussi mettre JustWorksRepairing = always dans /etc/bluetooth/main.conf pour permettre le re-appairage sans interaction. Bon là j’avoue, je paraphrase largement ma source :-)

Ensuite, on va autoriser la connexion Bluetooth même sans session active (en SSH par exemple) (source). Si on ne fait pas ça, la connexion Bluetooth n’est pas possible si l’utilisateur n’a pas une session active (les symptômes : on arrive à se connecter en Bluetooth que quand on est loggué en SSH ou autre, et la connexion Bluetooth casse dès qu’on quitte la session).

mkdir -p ~/.config/wireplumber/bluetooth.lua.d
cat > ~/.config/wireplumber/bluetooth.lua.d/80-disable-logind.lua << EOF
-- Disable arbitration of user allowance of bluetooth via D-Bus user session
bluez_monitor.properties["with-logind"] = false
EOF
systemctl --user restart wireplumber

Adapter MPD (et Samba) pour utiliser PipeWire

Pour que MPD utilise PipeWire, il faut adapter :

  1. sa configuration pour qu’il tourne avec le même utilisateur
  2. sa configuration audio_output
  3. les permissions dans /var/lib/mpd

Dans /etc/mpd.conf, changer la ligne user :

user                            "mpd"

Elle doit maintenant utiliser votre utilisateur :

user                            "user"

Commentez votre bloc audio_output, on va maintenant utiliser PipeWire (je suppose qu’on pourrait garder les deux et les clients MPD peuvent probablement permettre de choisir la sortie son, mais ça me parait complexifier l’utilisation pour un intérêt pas clair, ce qui va contre nos objectifs) :

audio_output {
        type            "pipewire"
        name            "PipeWire Sound Server"
}

Maintenant, il est temps d’adapter les permissions dans /var/lib/mpd. On va stopper Samba juste avant, et adapter sa configuration.

sudo systemctl stop mpd samba # si mpd tournait encore
sudo chown -rv user /var/lib/mpd
sudo systemctl start mpd

Note : MPD peut aussi être démarré dans une session utilisateur et à ce stade, c’est ce qu’il serait probablement le plus logique de faire, en bougeant /etc/mpd.conf et le contenu de /var/lib/mpd dans le dossier de notre utilisateur. C’est d’ailleurs la manière privilégiée de démarrer MPD à partir de Debian Trixie. Par simplicité et cohérence, et parce que cette section « Récepteur Bluetooth » est optionnelle mais que les manipulations pour lancer une session utilisateur au démarrage décrites dans cette section seraient nécessaires pour lancer MPD en tant que service utilisateur au démarrage dans tous les cas et que ça apporte une réelle complexité, on fait le choix de garder MPD en tant que service système.

Modifiez /etc/samba/smb.conf. Dans les deux blocs de partages qu’on a ajouté précédemment, changez la ligne force user = mpd en:

force user = user

Puis on peut redémarrer Samba :

sudo systemctl start samba

Permettre à PipeWire de configurer sa priorité

Si vous voyez cela dans les logs de PipeWire :

user@tablette:~$ journalctl --user -fu pipewire
avril 29 13:41:01 tablette systemd[514]: Started pipewire.service - PipeWire Multimedia Service.
avril 29 13:41:01 tablette pipewire[531]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
avril 29 13:41:01 tablette pipewire[531]: mod.rt: found session bus but no portal
avril 29 13:41:02 tablette pipewire[531]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
avril 29 13:41:02 tablette pipewire[531]: mod.rt: could not set nice-level to -11: Permission non accordée
avril 29 13:41:02 tablette pipewire[531]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
avril 29 13:41:02 tablette pipewire[531]: mod.rt: could not make thread 547 realtime using RTKit: Permission non accordée

Ça veut grosso modo dire que PipeWire cherche à se rendre plus prioritaire via un mécanisme fourni par les environnements de bureau (xdg-desktop-portal), n’y arrive pas parce qu’évidemment, aucun environnement de bureau ne tourne, alors il essaie de demander au service système rtkit, et se fait jeter.

Ce n’est pas très grave et on pourrait vivre sans, mais ça pourrait aider à limiter les saccades sonores, donc on va réparer ça (et je pense avoir vu une bonne amélioration grâce à ça).

Le fichier /usr/share/polkit-1/actions/org.freedesktop.RealtimeKit1.policy dicte qui a le droit ou non de configurer sa priorité (découvert ici, mais le conseil de modifier ce fichier système n’est pas bon, au moins parce qu’une mise à jour future risque d’écraser les modifications) :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
        "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
        "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
        <vendor>Lennart Poettering</vendor>

        <action id="org.freedesktop.RealtimeKit1.acquire-high-priority">
                <description>Grant high priority scheduling to a user process</description>
                <description xml:lang="tr">Bir sürece yüksek öncelikli çalışabilme yetkisi ver</description>
                <message>Authentication is required to grant an application high priority scheduling</message>
                <message xml:lang="tr">Sürecin yüksek öncelikli çalıştırılabilmesi için yetki gerekiyor</message>
                <defaults>
                        <allow_any>no</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>

        <action id="org.freedesktop.RealtimeKit1.acquire-real-time">
                <description>Grant realtime scheduling to a user process</description>
                <description xml:lang="tr">Bir sürece gerçek zamanlı çalışabilme yetkisi ver</description>
                <message>Authentication is required to grant an application realtime scheduling</message>
                <message xml:lang="tr">Sürecin gerçek zamanlı çalıştırılabilmesi için yetki gerekiyor</message>
                <defaults>
                        <allow_any>no</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>

</policyconfig>

Dans un système Unix, les paramètres systèmes sont dans /etc. Pour Polkit, il existe un mécanisme pour écrire des règles, qu’on va utiliser. On va créer une règle qui permet à n’importe quel utilisateur du groupe audio de modifier la priorité de ses processus. C’est probablement trop large, mais je ne connais pas bien Polkit et ça fera le taf pour notre application dédiée à l’audio. Si vous avez des meilleures idées, n’hésitez pas à partager en commentaire.

sudo cat > /etc/polkit-1/rules.d/rt.rules << EOF
polkit.addRule(function(action, subject) {
        if (subject.isInGroup("audio") && (
                action.id == "org.freedesktop.RealtimeKit1.acquire-high-priority" ||
                action.id == "org.freedesktop.RealtimeKit1.acquire-real-time"
        )) {
                return polkit.Result.YES;
        }
})
EOF

sudo systemctl restart polkit.service
systemctl --user restart pipewire

On pourra constater l’absence des échecs dans les journaux de PipeWire.

Bon, on sent bien que toute cette utilisation audio sans session utilisateur standard n’est pas un cas d’utilisation hyper bien prévu et on se retrouve à toucher des coins un peu sombres du système…

Évitez les flux Wifi 2,4 GHz

Si vous avez un Wifi en 2,4 GHz, ça peut causer des soucis avec le Bluetooth, et le son peut saccader. Si vous observez cela, il faudra alors limiter au maximum les services et autres tâches de fond qui font des communications réseau. Évidemment, si vous pouvez utiliser un câble Ethernet, c’est encore mieux.

Sur ce plan, tous les codecs audio Bluetooth ne semblent pas se valoir. Pour tester ça, j’ai lancé un test iperf3 entre la tablette et mon ordinateur portable pour saturer le Wifi. Ça devenait immédiatement catastrophique avec le codec SBC-XQ, alors qu’avec le codec Opus 05, il y a initialement des saccades, puis ça s’améliore vite. J’imagine que le codec Opus dégrade très efficacement la qualité pour compenser. Bon, malheureusement, tous les systèmes ne permettent pas de choisir son codec donc ce n’est qu’une solution partielle au problème.

Note sur l’utilisation des ressources

C'est léger :

load average: 0,12, 0,10, 0,05
$ free -mh
               total       utilisé      libre     partagé tamp/cache   disponible
Mem:           986Mi       253Mi       324Mi       6,1Mi       550Mi       733Mi
Échange:       974Mi          0B       974Mi

Globalement, le CPU s’ennuie en pleine lecture, et à peine un tiers du Giga de mémoire vive est utilisé, la partition d’échange s’ennuie, donc il y a encore largement la place de faire tourner d’autres trucs sur cet appareil si jamais. On peut aussi constater qu’ajouter MPD et tout ce bazar à une installation existante ne la surchargerait pas plus que ça.

On a aussi un temps de démarrage autour des 20 secondes, ce qui est franchement pas mal.

Conclusion et améliorations possibles

On est pas mal rentrés dans les détails, c’était l’occasion d’explorer plein de choses mine de rien. J’ai à la fois appris des choses, précisé des connaissances, et mis plein de choses que je savais ensemble pour obtenir un résultat très satisfaisant. On se retrouve à manipuler de la gestion de services, des configurations systemd un peu poussées, du bluetooth, du son avec ALSA et PipeWire, de la gestion de session utilisateur sur un système headless, et plein d’autres trucs et aller dans les détails comme le boot pour avoir quelque chose de rapide, comme l’écran éteint au bon moment, ou la personnalisation du comportement du bouton power (honnêtement, je n’étais pas très sûr que c’était possible, j’avais lancé la recherche au cas où !).
J’espère que l’aventure vous a plu aussi.

Bien sûr l’ensemble est perfectible, alors je vous laisse avec des idées, n’hésitez pas à partager les vôtres en commentaires :

  • Jouer un son au démarrage / à l’appairage Bluetooth. – pour l’instant, la tablette s’allume et puis plus rien. En général, les enceintes Bluetooth jouent un petit son quand elles sont prêtes ou qu’elles viennent d’être appairées et ça peut être pratique
  • Commande vocale. Il y a clairement des manières d’utiliser le micro de la tablette pour demander le morceau suivant, précédent ou régler le volume. Ça peut être pratique quand on n’a pas le téléphone sous la main et ça peut avoir son petit effet en soirée la première fois, tant que les gens ne sont pas encore complètement blasés par le concept parce que tout le monde n’a pas un Google Nest ou un Alexa chez soi, surtout dans ma bulle sociale. Mais c’est probablement finalement très gadget et je me vois mal interrompre une conversation en criant un ordre pour gérer la musique…
  • Appairage Bluetooth plus sécurisé. En général, les enceintes Bluetooth acceptent les nouveaux appareils dans un mode spécial. En appuyant sur le bouton Bluetooth, ou quelque chose comme ça. Ça peut éviter que les voisin·e·s ne te rickrollent au moment le plus inopportun. Ça vaudrait le coup de travailler sur quelque chose comme ça. Avec l’écran tactile, il est probablement possible de dessiner une forme particulière reconnue (ça serait un peu badasse, ou plus probablement, n’accepter (une seule) nouvelle connexion que dans les X minutes après le démarrage ou le retour de veille. Comme ça, demander l’appairage consiste à appuyer deux fois sur le bouton power, ce qui est plutôt acceptable. Si vous avez des idées, n’hésitez pas à partager…
  • Réveil à distance avec du Wake-on-LAN. Ça ne s’applique probablement pas à mon matériel, mais il est possible d’utiliser astucieusement le WoL pour réveiller l'appareil à distance, avec éventuellement la complicité d’un routeur ou d’un serveur toujours allumé chez vous.
  • Désactiver le Wifi quand le Bluetooth est utilisé. Pour éviter les interférences, on pourrait imaginer que quand un appareil se connecte en Bluetooth, on éteint le Wifi (avec rfkill par exemple), on met MPD en pause (ou on le stoppe s’il est en train de jouer un flux) parce qu’on ne peut plus le contrôler, puisque le Wifi n’est plus actif, et on réactive le Wifi quand l’appareil Bluetooth est déconnecté. On pourrait même être plus fin et détecter quand du son est joué.
  • Automatiquement mettre MPD en pause lors d’une connexion Bluetooth. (un peu doublon avec le précédent point) Pour l’instant, il faut manuellement mettre en pause mpd, sinon les deux flux audios se jouent en même temps. -- Changer la classe Bluetooth de l’appareil. Ça permettrait à l’appareil de se déclarer comme appareil audio, pour que ça affiche le bon icône sur les autres appareils.
  • Mises à jour automatiques. Il ne faut pas que ça casse des choses en pleine lecture, ni que ça cause des interférences avec le Bluetooth à cause des téléchargements.
  • Ne pas persister les logs. Pour l’instant, les logs sont écrits dans /var/log sur le SSD, entrainant une usure et un ralentissement cependant probablement tous deux négligeables. On pourrait vouloir ne pas les garder, mais c’est aussi risquer de perdre des informations de débogage le jour où il y a un pépin.

Je vais probablement trouver d’autres choses à améliorer après publication de l’article. Je partagerai peut-être les choses intéressantes en commentaires ou dans des journaux, et je ferai peut-être vivre l’article sur mon site.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Not so Common Desktop Environment (NsCDE), un paradigme différent

Not so Common Desktop Environment reproduit fidèlement Common Desktop Environment dit CDE, classique des Unix des années 90. Mais pourquoi puisque CDE est libre ? Eh bien pour faire mieux ! NsCDE est plus léger, plus complet, plus souple.

NsCDE est sorti en version 2.3 le 20 juin 2023. C'est un petit projet qui s'appuie sur un thème pour FVWM et quelques utilitaires de son cru. Le reste, c'est un thème pour les applications GTK et Qt. Poussant le mimétisme jusqu'à reproduire le script shell du premier démarrage, NsCDE vous demande quels doivent être votre terminal, votre gestionnaire de fichier, votre éditeur, etc. Ce n'est pas mal de pouvoir choisir ! Comme c'est assez abouti il n'y a pas eu de nouveaux développements depuis.

Impressions après quelques jours d'utilisation

J'ai trouvé l'ensemble agréable et cohérent, certes un peu brutal visuellement, mais on n'est pas devant un thème, c'est un paradigme de fonctionnement différent. Avec un peu d'habitude on peut bosser sans surprises.

Un exemple sur la gestion des fenêtres, différente du monde Win/Mac qui est le paradigme habituel sur la plupart des bureaux Linux :

Elles se déplacent encore par la barre de titre, mais pour le reste les trois clics de souris sont utilisés. 
Le bouton de gauche est trois choses à la fois : un menu déroulé par un clic gauche, un menu étendu déroulé par un clic droit et une boite de dialogue affichée par un clic centre ; la fenêtre se ferme avec un deuxième-clic rapproché dans le temps (clic gauche ou droit) ou un double clic aussi.
À droite, un bouton agrandit la fenêtre avec beaucoup de possibilités selon le clic gauche, centre ou droit et selon la séquence de clics ; un deuxième bouton réduit la fenêtre : clic gauche pour l'icônifier, clic droit pour l'enrouler. Icônifiée, un clic droit l'agrandit, les clics gauche et centre ouvrent des menus.

NsCDE ne propose qu'un minimum d'utilitaires, il ne s'agit pas de tout intégrer façon KDE ou Gnome, mais plutôt de fournir un environnement de travail pour interagir avec vos programmes préférés. Testez-le pour découvrir autre chose que le fonctionnement habituel. Le libre vous permet de choisir, sortez des sentiers battus.

En tout cas ne l'installez pas pour sa légèreté, Liam Proven l'utilisant avec des composants XFCE l'a trouvé plus léger que les autres, mais il est plus lourd que KDE 3.

image à remplacer

L'influence de CDE à travers des anecdotes

C'est moche, hein ? Et pourtant le design de CDE a influencé d'autres environnements de bureau :

  • Le présentation manager d'OS/2 a influencé l'aspect de Win 3 et CDE, mais réciproquement le LaunchPad d'OS/2 v3 reproduit le lanceur CDE.
  • XFCE 3 reproduisait le lanceur CDE : XFCE 3 avec le thème Motif
  • Et même KDE, dont le nom serait un jeu de mots avec Kool Desktop Environment (personne ne s'en souvient vraiment, on trouve d'autres explications).
  • À la même époque, Silicon Graphics avait pris un chemin différent avec IRIX Interactive Desktop. D'après mon cousin, qui passait de la PAO sur Mac à la 3D sous Irix, c'était très ergonomique et ça valait bien le Mac. Il n'a jamais eu besoin d'ouvrir un terminal. Irix

Installation

NsCDE propose quelques paquets tout prêt pour Fedora, Suse, Ubuntu, Debian et Slackware ainsi qu'un gros Tarball à décompresser dans /opt.

Je vous recommande de l'utiliser sous un compte de test, sinon NsCDE va pourrir votre bureau habituel avec ses boites de dialogue et ses thèmes Firefox, LibreOffice, etc. En plus, NsCDE n'a pas de script de désinstallation, il sauvegarde vos paramètres Gtk et Qt, mais seulement jusqu'aux versions 4 et 5.

Évitez d'y lancer des applications Gnome à cause des menus et fenêtres, sauf si vous installez gtk3-nocsd (no client side decoration). Préférer les applications légères et simples de LXDE/LXQt, Mate, XFCE, … Ou encore les applis Motifs/X11, le thème NsCDE leur ira comme un gant.

Tester CDE

Si vous tenez à essayer le vrai CDE pour voir comment c'était, il y a un CD Live sous Debian.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie du gestionnaire d'archives PeaZip 10.4.0

PeaZip n'a jamais été abordé dans ces colonnes jusqu'à présent, alors qu'il fait partie des outils multi-plateformes permettant une transition en douceur vers le libre. Il a presque dix ans. Sortie le 14 avril, la version 10.4 continue la série 10.0 commencée en octobre 2024.

PeaZip Linux thème sombre sous Wayland
PeaZip affiché avec son thème sombre dans Wayland

Giogio Tani, le développeur de PeaZip publie plusieurs versions chaque année. Le logiciel évolue par petites touches largement testées via les fonctions "expérimentales" des versions précédentes.

icone de PeaZip

Je trouve beaucoup d'atouts à PeaZip

Il est libre, multi-plateformes, multi-architecture, portable (nomade), écrit en FreePascal avec Lazarus, ouvre et écrit plusieurs formats d'archives. Il est rapide et assez léger pour un tout-en-un (11,2 MB). Il est bien maintenu, l'auteur est transparent sur la sécurité, documentation et tutoriels sont conséquents et pédagogiques. L'interface est travaillée, sobre, ergonomique, thémable, configurable, jolie, … N'en jetez plus ! Ah si encore : il est dispo en Gtk et Qt sous X11 et Wayland, et l'auteur l'empaquête à tout va.

C'est un humble logiciel très bien foutu, très travaillé, utile pour installer des outils libres sur les systèmes proprios afin de les amener en douceur vers Linux ou *BSD (il ne fonctionne pas encore sous Haïku).

Architectures et systèmes

  • Linux x86_64, x86, ARM, aarch64 ;
  • Windows, ReactOS, Wine ;
  • Darwin, macOS Intel et aarch64 (Apple Silicon), la famille BSD.

PeaZip propose des fonctions peu courantes

  • Le moteur de scriptage intégré permet de convertir vos opérations graphiques pour les automatiser et les étendre avec des options en ligne de commande ;
  • un chiffrement solide est disponible, avec authentification à double facteur ;
  • l'interface graphique est unifiée sur tous les systèmes et architectures pris en charge, même pour les formats moins courant (zpaq, brotli, zstandard) ;
  • le gestionnaire de fichiers avancé facilite, par exemple, la vérification des sommes de contrôles, la déduplication, la conversion de formats d'archives, la recherche, etc ;
  • c'est un outil portable et nomade qu'on peut copier sur une clé usb, sur le net ou partager en réseau sans l'installer ;
  • PeaZip dispose d'une transparence et des options de suivi pour la vie privée et la sécurité.

Commentaires : voir le flux Atom ouvrir dans le navigateur

GIMP 3.0 RC3 est sorti

Note : cette dépêche est une traduction de l'annonce officielle de la sortie de GIMP 3.0 RC3 du 10 février 2025 (en anglais).

Nous sommes ravis de partager la troisième version candidate de GIMP 3.0 pour ce qui (nous l'espérons) sera la dernière série de tests communautaires avant la version stable ! Cette version fait suite à la récente conférence GIMP 3 and Beyond de Jehan au FOSDEM 2025.

    Sommaire

    Corrections de bogues et changements importants

    Alors que nous réduisions les quelques derniers bogues majeurs à néant, nous avons effectué un certain nombre de modifications qui selon nous nécessitent un sérieux coup d’œil de la communauté.
    Jetez-en donc un, d’œil, sur les points suivants lorsque vous essayerez la Release Candidate:

    Nouvelle version de GTK3

    Juste à temps pour GIMP 3.0, une nouvelle version de GTK3 est sortie !
    Entre autres changements, GTK 3.24.48 inclut des correctifs pour plusieurs bugs affectant GIMP avec des patchs initialement fournis par Jehan, comme un crash dans Wayland lors du déplacement de calques et des problèmes de texte dans certains widgets avec des langues de droite à gauche. Nous tenons à remercier Carlos Garnacho et Matthias Clasen pour leur aide sur ces patchs respectifs.

    GTK 3.24.48 ajoute également la prise en charge de la version 2 de xdg_foreign pour Wayland (la v1 reste prise en charge en tant que solution de secours). Plus précisément, l'absence de cette prise en charge provoquait le blocage de GIMP avec certaines actions sur KDE/Wayland, ce qui est désormais corrigé.

    En raison de ces problèmes (certains d'entre eux rendant GIMP vraiment instable sur Wayland), nous recommandons aux empaqueteurs de mettre à jour vers la dernière version de GTK3 lors de l'empaquetage de notre RC3. Cependant, veuillez nous informer si vous remarquez des régressions ou d'autres problèmes résultant de la nouvelle version de GTK3.

    Améliorations du graphe d'images

    Grâce à l'édition non destructive dans GIMP, les utilisateurs peuvent désormais empiler plusieurs filtres les uns sur les autres. Ces filtres fonctionnent généralement dans un format à haute résolution de bits, de sorte que les informations de l'image ne sont pas perdues. Cependant, la sortie de chaque filtre était convertie vers et depuis la résolution de l'image d'origine lors de l'empilement. Ainsi, si l'image n'était que de 8 bits, une grande quantité d'informations était perdue dans ces conversions constantes. Jehan a résolu ce problème en convertissant uniquement au format de l'image lorsque le filtre est censé être fusionné, plutôt que dans des piles non destructives. Comme il s'agit d'un changement important dans le fonctionnement des filtres, nous souhaitons que davantage d'utilisateurs testent ce changement pour détecter d'éventuelles régressions.

    Changements dans Projection Thread-safe

    Lorsque des modifications sont apportées à une image (comme une peinture), la projection de l'image doit être « vidée » pour afficher les nouvelles modifications à l'écran. Certains aspects de ce processus n'étaient pas « thread-safe », ce qui signifie que lorsque votre ordinateur utilisait plusieurs threads pour accélérer le travail, ils pouvaient entrer en conflit les uns avec les autres et provoquer un plantage. Cela a été observé dans notre fonctionnalité d'expansion automatique de calques. Jehan a corrigé la fonction pour qu'elle soit entièrement thread-safe. Cependant, les modifications apportées au multithreading peuvent laisser des bugs bien cachés, donc des tests communautaires supplémentaires seraient utiles.

    Procédures privées

    Le navigateur de base de données procédurale de GIMP montre aux développeurs de greffons et de scripts toutes les fonctions auxquelles ils peuvent accéder. Jusqu'à présent, il affichait également les fonctions « privées » qui ne sont utilisées qu'en interne. Jehan a ajouté un indicateur pour masquer ces fonctions. Dans un premier temps, nous avons ratissé trop large et caché certaines fonctions publiques importantes. Bien que nous ayons corrigé ces cas, nous aimerions que la communauté nous donne plus de détails pour nous assurer que nous n'avons oublié aucune fonction publique mal étiquetée.

    Améliorations

    Bien que nous soyons toujours en phase de gel des fonctionnalités majeures jusqu'à la version stable de GIMP 3.0, quelques améliorations mineures et autonomes ont été apportées aux greffons.

    Script-fu

    API Filtre

    Le nouvel appel PDB (gimp-drawable-merge-filter) permet aux auteurs de Script-fu d'utiliser des étiquettes pour spécifier les propriétés des filtres. Cela donnera aux utilisateurs de Script-fu la même flexibilité pour appeler et mettre à jour les filtres que les développeurs de greffons C et Python ont dans l'API GIMP 3.0. À titre d'exemple, voici un appel au filtre Emboss :

    (gimp-drawable-merge-new-filter mask-emboss "gegl:emboss" 0 LAYER-MODE-REPLACE 1.0 "azimuth" 315.0 "elevation" 45.0 "depth" 7 "type" "emboss")
    

    Vous pouvez voir plus d'exemples dans notre dépôt de scripts.

    Nouvelle syntaxe de passage des arguments par noms

    Dans Script-Fu, toutes les fonctions générées à partir de la procédure PDB des greffons doivent désormais être appelées avec une toute nouvelle syntaxe d'argument nommé, inspirée de la variante Racket de Scheme.

    Par exemple, disons que votre greffon souhaite appeler le greffon Foggify, au lieu d'appeler :

    (python-fu-foggify RUN-NONINTERACTIVE 1 (car (gimp-image-get-layers 1)) "Clouds" '(50 4 4) 1.0 50.0)

    Vous devez maintenant appeler :

    (python-fu-foggify #:image 1 #:drawables (car (gimp-image-get-layers 1)) #:opacity 50.0 #:color '(50 4 4))

    Cela présente quelques avantages :

    • des appels beaucoup plus auto-documentés, d'autant plus que certains greffons ont beaucoup d'arguments (on pouvait donc se retrouver avec des fonctions avec une douzaine d'entiers ou de flottants et c'était très déroutant) ;
    • l'ordre des arguments n'a plus d'importance ;
    • vous pouvez ignorer les arguments lorsque vous les appelez avec des valeurs par défaut ;
    • cela permet d'améliorer les procédures des greffons dans le futur en ajoutant de nouveaux arguments sans casser les scripts existants.

    Ce dernier point en particulier est important, et l'ordre des arguments n'avait plus d'importance lors de l'appel de procédures PDB depuis l'API C, ainsi que toutes les liaisons introspectées. Script-Fu était la seule interface restante dont nous disposions qui se souciait encore de l'ordre et du nombre d'arguments. Ce n'est plus le cas et c'est donc un grand pas vers une API beaucoup plus robuste pour GIMP 3 !

    Formats de fichiers

    Toutes les modifications apportées aux greffons de chargement d'images sont vérifiées avec le cadriciel de tests automatisés créé par Jacob Boerema pour éviter les régressions.

    PSD

    En plus des corrections de bogues telles que l'enregistrement correct des images fusionnées CMJN, Jacob Boerema a ajouté la prise en charge du chargement des fichiers PSD LAB 16 bits par canal. Il a également mis à jour la boîte de dialogue d'exportation PSD pour utiliser les fonctions d'exportation de métadonnées intégrées de GIMP.

    DDS

    CMYK Student a implémenté la prise en charge très demandée du chargement d'images DDS avec prise en charge BC7. Jacob Boerema a travaillé pour corriger la compatibilité avec les fichiers DDS exportés à partir d'anciennes versions de GIMP.

    AppImage: c'est officiel !

    Après neuf mois d'incubation (le nombre est une simple coïncidence 🙂), nous présentons un « nouveau » format de distribution pour les utilisateurs Linux : .AppImage. Au départ, nous l'utilisions comme format interne pour les tests, comme déjà évoqué dans des articles précédents. Les efforts de Bruno Lopes nous ont permis d'améliorer le processus de construction. Nous sommes maintenant confiants avec l'AppImage générée et nous avons donc pour objectif de la rendre officielle.

    En tant que package officiel en amont, aucun greffon tiers sophistiqué ou autre binaire arbitraire qui ne soit pas une dépendance de GIMP n'est ajouté pour ne pas le « surcharger ». C'est ce que certains appellent GIMP « vanilla », un GIMP propre mais complet pour la production (c'est-à-dire pour une utilisation générale).

    Comme tout format d'empaquetage, il a ses propres caractéristiques et limites. Dans le cas de l'AppImage de GIMP, les outils inclus tels que gimp-console* et gimp-debug-tool* nécessitent une extraction préalable du fichier .AppImage avec la commande --appimage-extract. De plus, en partie à cause de la conception d'AppImage, les commandes qui pointent vers $PWD ne fonctionneront pas. Ces deux limitations de fonctionnalités sont les seules connues à ce jour. Donc, si vous en trouvez d'autres ou même des bogues, veuillez les signaler sur notre outil de suivi.

    Divers

    • Il est maintenant plus facile de charger des images depuis Google Drive ainsi que d'autres plateformes distantes ou dans le cloud, sans avoir a sélectionner un format de fichier pour essayer de l'ouvrir.

    • Notre processus de création génère désormais des icônes supplémentaires avec l'extension -rtl, qui sont automatiquement utilisées avec les langues s'écrivant de droite à gauche. Les icônes de flèches gauche et droite en sont un exemple : elles sont désormais orientées dans la bonne direction dans les deux types de langues.

    • Les développeurs de greffons n'ont plus besoin de créer des boutons de sélection de fichiers personnalisés - GimpProcedureDialog les crée désormais automatiquement lorsqu'un paramètre de type de fichier est utilisé. Vous pouvez également spécifier si le bouton sert à ouvrir ou à enregistrer des fichiers et des dossiers.

    • Rupert Weber a continué ses efforts pour nettoyer notre greffon BMP. De plus, il travaille actuellement à ajouter la prise en charge de l'importation de profils de couleurs dans les BMP, qui, espérons-le, sera prête dans une future version.

    • CMYK Student a mis à jour le greffon ICNS avec une nouvelle prise en charge des types d'icônes « ic05 » et des formats d'icônes ARGB. Ils ont également corrigé un bogue lors du chargement d'anciens formats ICNS sans masque de transparence. Lukas Oberhuber a aidé à diagnostiquer et à résoudre un bogue connu dans le format ICNS qui faisait que notre icône macOS affichait des pixels brouillés dans les petites tailles.

    GEGL

    La version 0.4.54 de GEGL contient également quelques améliorations et corrections de bogues. Thomas Manni a mis à jour le filtre Noise Spread pour éviter les bogues lorsqu'il est appliqué à des groupes de calques vides. Jonny Robbie a ajouté de nouvelles options et de nouveaux types de papier au filtre Negative Darkroom, et a optimisé certaines opérations en virgule flottante dans GEGL dans son ensemble.

    Statistiques

    Depuis GIMP 3.0 RC2, dans le dépôt principal de GIMP :

    • 85 rapports ont été fermés comme RÉPARÉS ;
    • 56 demandes de fusion ont été acceptées ;
    • 335 commits ont été poussés ;
    • 19 traductions ont été mises à jour : basque, bulgare, catalan, chinois (Chine), danois, néerlandais, finnois, géorgien, italien, norvégien nynorsk, persan, portugais, slovaque, slovène, espagnol, suédois, turc, ukrainien, vietnamien.

    33 personnes ont contribué à des modifications ou des correctifs à la base de code de GIMP 3.0.0 RC3 (l'ordre est déterminé par le nombre de commits ; certaines personnes sont dans plusieurs groupes) :

    • 13 développeurs pour le code principal : Jehan, Alx Sa, Jacob Boerema, Lloyd Konneker, Anders Jonsson, Thomas Manni, Bruno, Daniele Forsi, Lloyd Konneker, Lukas Oberhuber, Rupert, cheesequake, Øyvind Kolås ;
    • 10 développeurs de greffons ou modules : Alx Sa, Jacob Boerema, Jehan, Rupert, Lloyd Konneker, Anders Jonsson, Bruno, Daniel Novomeský, Daniele Forsi, lillolollo ;
    • 19 traducteurs : Alan Mortensen, Alexander Shopov, Nathan Follens, Kolbjørn Stuestøl, Hugo Carvalho, Asier Sarasua Garmendia, Ngọc Quân Trần, Jordi Mas, Marco Ciampa, Sabri Ünal, Anders Jonsson, Danial Behzadi, Ekaterine Papava, Jiri Grönroos, Jose Riha, Luming Zh, Martin, Rodrigo Lledó, Yuri Chornoivan ;
    • 1 Concepteur de thème : Alx Sa ;
    • 6 contributeurs pour la compilation, l’empaquetage ou l’intégration continue : Bruno, Jehan, Lloyd Konneker, Alx Sa, Rupert, Jacob Boerema.

    Contributions sur d'autres dépôts dans GIMPverse (l'ordre est déterminé par le nombre de commits) :

    • GEGL 0.4.54 est composé de 11 commits de 16 contributeurs : Øyvind Kolås, Alexander Shopov, Hugo Carvalho, JonnyRobbie, Alan Mortensen, Anders Jonsson, Asier Sarasua Garmendia, Bartłomiej Piotrowski, Jehan, Martin, Nathan Follens, Nils Philippsen, Rodrigo Lledó, Sam L, Thomas Manni, Yuri Chornoivan ;
    • ctx a enregistré 233 commits depuis la sortie de RC2 par 1 contributeur : Øyvind Kolås ;
    • gimp-data a enregistré 6 commits de 4 contributeurs : Bruno, Jehan, Alx Sa, Andre Klapper ;
    • gimp-test-images (nouveau référentiel pour les tests de prise en charge des images) a enregistré 5 commits de 2 contributeurs : Jacob Boerema, Alx Sa ;
    • la version gimp-macos-build (scripts de packaging macOS) a eu 6 commits par 2 contributeurs : Lukas Oberhuber, Bruno ;
    • la version flatpak a eu 12 commits par 3 contributeurs après la version RC2 : Bruno Lopes, Jehan, Hubert Figuière ;
    • notre site web principal a eu 42 commits par 6 contributeurs : Jehan, Alx Sa, Bruno, Jacob Boerema, Andre Klapper, Petr Vorel ;
    • notre site web de développement a eu 18 commits par 5 contributeurs : Jehan, Bruno, Lukas Oberhuber, Alx Sa, Anders Jonsson ;
    • notre documentation 3.0 comptait 373 commits de 13 contributeurs : Andre Klapper, Kolbjørn Stuestøl, Nathan Follens, Jacob Boerema, Alan Mortensen, Yuri Chornoivan, Dick Groskamp, ​​Jordi Mas, Alevtina Karashokova, Alx Sa, Anders Jonsson, Daniele Forsi, Hugo Carvalho.

    N'oublions pas de remercier toutes les personnes qui nous aident à trier dans Gitlab, à signaler les bugs et à discuter des améliorations possibles avec nous.
    Notre communauté est également profondément reconnaissante envers les guerriers d'Internet qui gèrent nos divers canaux de discussion ou comptes de réseaux sociaux tels que Ville Pätsi, Liam Quin, Michael Schumacher et Sevenix !

    Remarque : compte tenu du nombre de parties dans GIMP et de la façon dont nous obtenons des statistiques via les scripts « git », des erreurs peuvent se glisser dans ces statistiques. N'hésitez pas à nous dire si nous avons oublié ou mal classé certains contributeurs ou contributions.

    Autour de GIMP

    Miroirs de téléchargement

    Depuis la publication de la nouvelle version 3.0RC2, deux nouveaux miroirs ont été ajoutés :

    • Saswata Sarkar, Gurugram, Inde ;
    • Hoobly Classifieds, États-Unis.

    Les miroirs sont importants car ils aident le projet en répartissant la charge pour des dizaines de milliers de téléchargements quotidiens. De plus, en ayant des miroirs répartis dans le monde entier, nous garantissons que tout le monde peut avoir un accès rapide au téléchargement de GIMP.

    Comment citer GIMP dans la recherche

    GIMP est souvent utilisé dans la recherche et est donc cité dans diverses publications scientifiques. Un chercheur utilisant GIMP pour le traitement d'images astronomiques nous a contactés pour savoir comment citer GIMP correctement, d'autant plus qu'il est utilisé pour effectuer une étape importante de son algorithme.

    Comme cela semble être une question intéressante, nous avons mis à jour notre page « Citing GIMP and Linking to Us » avec une nouvelle sous-section « Citing GIMP in research » contenant la conclusion de cette discussion.

    En particulier, une entrée BibTex, destinée aux chercheurs utilisant LaTeX pour gérer leur bibliographie, est disponible sur ce lien pour simplifier votre travail. Par exemple, disons que vous utilisez ce RC3 pour vos recherches, vous pouvez citer GIMP avec cette entrée :

    @software{GIMP,
        author = {{The GIMP Development Team}},
        title = {GNU Image Manipulation Program (GIMP), Version 3.0.0-RC3. Community, Free Software (license GPLv3)},
        year = {2025},
        url = {https://gimp.org/},
        note = {Version 3.0.0-RC3, Free Software}
    }

    Merci à Cameron Leahy pour ce morceau de code BibTex !

    Télécharger GIMP 3.0 RC3

    Vous trouverez toutes nos versions officielles sur le site officiel de GIMP (gimp.org) :

    • Linux AppImages pour x86 et ARM (64 bits) ;
    • Linux Flatpaks pour x86 et ARM (64 bits) ;
    • Installateur Windows universel pour x86 (32 et 64 bits) et pour ARM (64 bits) ;
    • Paquet MSIX (GIMP Preview) pour x86 et ARM (64 bits) ;
    • Paquets macOS DMG pour le matériel Intel ;
    • Paquets macOS DMG pour le matériel Apple Silicon.

    D'autres paquets réalisés par des tiers devraient évidemment suivre (paquets de distributions Linux ou *BSD, etc.).

    Et ensuite ?

    Nous apprécions vraiment tous les tests et commentaires de la communauté que nous avons reçus au cours des deux dernières versions candidates !
    Nous espérons que ce sera la dernière version candidate avant la version stable 3.0. Notre objectif est maintenant de terminer la résolution des quelques bugs restants dans notre liste de jalons 3.0, tout en gardant un œil sur les nouveaux rapports résultant des changements dans RC3.

    N’oubliez pas que vous pouvez faire un don et financer personnellement les développeurs de GIMP, afin de contribuer et d’accélérer le développement de GIMP. L’engagement de la communauté aide le projet à se renforcer !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Netlibre, un service libre et un nom de domaine gratuit

    Le service netlibre, revu et corrigé

    Le service netlibre fournit gratuitement des noms de domaine et une interface simple pour les modifier. Récemment, ce service a été mis à jour.

    Vous voulez en savoir plus sur le service ? Vous êtes déjà bénéficiaire du service ou souhaitez le devenir ? Venez lire la suite !

    Dans cet article, je vais me focaliser sur le service netlibre. L’histoire, l’ancienne version, la nouvelle et le futur du service. Et en bonus, les problèmes rencontrés. Les aspects purement techniques feront l’objet d’autres articles.

    Sommaire

    Trop Long ; Pas Lu (note aux utilisateurs actuels et pressés)

    La nouvelle version de netlibre représente une réécriture complète du service. Points à retenir : bien meilleure stabilité, les domaines peuvent être gérés à plusieurs et même transférés entre utilisateurs, et bien davantage de vérifications sont faites sur les entrées des utilisateurs pour prévenir un maximum d’erreurs.

    Pour les utilisateurs actuels : votre compte a été migré. Vous pouvez voir vos domaines depuis la nouvelle interface. Le contenu des zones n’a cependant pas été repris (pour des contraintes techniques), il faudra les re-remplir mais je pourrai vous fournir vos zones sur demande.

    Pas d’inquiétude : les zones actuelles sont toujours servies, il n’y a pas eu de coupure du service DNS. Tant que vous ne faites pas de modification de votre zone sur l’interface, l’ancienne zone reste servie.

    Une adresse email vous est demandée lors de votre connexion, elle est désormais obligatoire. Elle permet la récupération de mot de passe, de vous tenir informé des interruptions (volontaires ou non) du service ainsi que des mises à jour.

    Connectez-vous au moins une fois dans les 6 mois. Pour faire du ménage je supprimerai les comptes qui ne se connectent pas au moins une fois dans les 6 mois suivant la publication de cet article.

    Présentation du service

    Le service netlibre fournit des noms de domaines (ou noms de SOUS-domaines si vous préférez) gratuitement. Ainsi, n’importe qui peut se réserver un nom de domaine en « *.netlib.re » ou « *.codelib.re ». L’administration du domaine se fait en quelques clics, sans compétences requises. Ce service est donc utile pour n’importe qui souhaitant un nom de domaine, à titre individuel ou pour une association par exemple.

    Il est également possible de mettre à jour dynamiquement une adresse IP d’un enregistrement. Avoir une adresse IP dynamique n’est donc pas un frein à l’utilisation du service ; ce qui est courant pour les connexions à Internet chez les particuliers.

    Le code source du service est entièrement libre, que ce soit l’interface, le service d’authentification ou le service dnsmanager qui lie l’interface web au serveur de noms. Tout est libre, sous licence ISC.

    Histoire

    Cela fait désormais plus de 9 ans que le site netlibre permet de réserver et de gérer des noms de domaines, gratuitement (le service est même encore plus vieux que ça, mais c’était beaucoup plus confidentiel). Un article sur LinuxFr.org avait été posté, puis 9 ans se sont écoulés non sans peine.

    L’objectif initial était de me permettre de gérer des zones simplement et mettre à jour des adresses IP de manière automatique. De mémoire, selon mes recherches de l’époque, rien n’existait en libre pour faire cela ; les outils s’en approchant étaient trop complexes pour la simple gestion d’une zone. J’ai donc développé un outil permettant de visualiser de manière claire une zone et de modifier les entrées comme on pouvait le voir sur des sites professionnels. C’était à la fois directement utile pour moi, et un petit défi technique qui m’intéressait. Comme cela semblait utile pour d’autres personnes, j’ai partagé avec grand enthousiasme mon petit bricolage.

    Malgré l’engouement du début, le site a très peu évolué par la suite, par manque de temps et d’énergie. Il remplissait son rôle pour mon usage, donc pendant des années je n’y ai pas touché du tout. Quand j’ai voulu m’y remettre, avec quelques années d’expérience supplémentaires, le code me semblait trop bancal pour m’y investir davantage. Les problèmes rencontrés demandaient une réécriture complète. La dernière section de l’article donne des détails.

    netlibre, c’est désormais 9 ans, 7000+ utilisateurs et 32 000 zones. Qu’on s’entende bien, une bonne partie de ces comptes et de ces zones sont à jeter car des robots sont passés par là. D’ailleurs, le service, avec ses quelques dizaines de milliers de domaines, reste assez modeste. Néanmoins, j’ai été contacté par de nombreux utilisateurs au fil des années. Le site est réellement utilisé, et ça, c’est à la fois une victoire et une vraie surprise.

    L’ancienne version

    L’ancienne version du site a été modifiée jusqu’à très récemment (quelques mois) pour corriger de gros problèmes, notamment d’infrastructure. Cette version permettait de s’inscrire, demander des zones et les gérer (ajout, suppression, modification) avec une interface simple, comme on peut voir sur OVH ou Gandi. Mais elle n’était pas finie : impossible de se désinscrire ou récupérer son mot de passe, de nombreux enregistrements DNS étaient inaccessibles, etc.

    Sauf que voilà, l’architecture logicielle rend la modification assez désagréable. J’ai donc décidé de repartir de 0, avec un meilleur découpage du service et des techno adaptées.

    La nouvelle version

    Depuis quelques semaines déjà, la nouvelle version est désormais en ligne. Les détails techniques derrière le service (code, langages, infra, sécurité, outils…) feront l’objet d’autres articles. Dans cette section, je vais parler des changements par rapport à l’ancien service.

    Le partage de domaines est désormais possible, ce qui est utile pour des associations. Plusieurs personnes pourront donc posséder le même domaine et modifier la zone. Pas d’inquiétude si un membre de l’association n’est pas disponible, vous gardez le contrôle.

    Des enregistrements protégés. Certains enregistrements DNS sont désormais en lecture seule pour éviter de supprimer des informations nécessaires au bon fonctionnement des zones. Ainsi, les enregistrements SOA et NS sont maintenant protégés.

    De nouveaux enregistrements sont disponibles : SPF, DKIM et DMARC. Comme vous le savez probablement, ce sont des enregistrements qui se traduisent par des entrées textes (« TXT »). Des interfaces dédiées sont maintenant disponibles pour éviter une longue lecture de RFC pour savoir comment formater certaines options. Ces enregistrements sont plutôt complexes, donc aider les utilisateurs (même expérimentés) me semblait nécessaire.

    De même, l’enregistrement CAA est désormais disponible. N’hésitez pas à me faire des suggestions pour de futurs enregistrements.

    Une adresse email est désormais nécessaire. Les utilisateurs peuvent donc enfin récupérer leur mot de passe perdu. Ils seront également prévenus d’une panne, d’une mise à jour, d’un changement sur le site, etc.

    Suppression de compte. Les utilisateurs peuvent désormais supprimer leur compte. Cela supprimera l’ensemble de leurs domaines (et zones) par la même occasion.

    Un jeton de mise à jour. Afin de mettre à jour une adresse IP (enregistrement A ou AAAA) pour un serveur avec une IP dynamique, un mécanisme à base de jetons a été implémenté. Ainsi, accéder à une URL telle que https://www.netlib.re/token-update/<jeton> permet au service netlibre d’associer l’adresse IP du client à un enregistrement A ou AAAA (pour lequel on a généré ce jeton).

    Par exemple, la zone toto.netlib.re possède un enregistrement A serveur.toto.netlib.re. L’utilisateur génère un jeton (ressemblant à 65b609fc-4a53-4a58-aae3-9824551a0fa5) pour cet enregistrement. Enfin, l’utilisateur lance (depuis son serveur) curl https://www.netlib.re/token-update/65b609fc-4a53-4a58-aae3-9824551a0fa5 pour que l’enregistrement serveur.toto.netlib.re pointe vers son adresse IP.

    Je ne pense pas qu’il soit possible de faire plus simple. Un simple wget ou curl dans un crontab suffit pour maintenir à jour l’adresse de son serveur. Ce mécanisme permet probablement beaucoup moins de choses qu’un vrai service DynDNS, mais le cœur du service est là et sans aucune configuration !

    Fin du mode « expert » qui permettait d’écrire soi-même le fichier de zone bind9. Entrer soi-même le fichier de zone semblait être une bonne idée, mais cela mène surtout à des problèmes d’infrastructure. Pour bien faire, il aurait fallu que les utilisateurs aient accès aux logs pour apprendre de leurs erreurs et corriger leurs zones, sauf que c’est inutilement complexe. Le mode « expert » devait pallier quelques lacunes de l’interface qui ne gérait qu’une petite partie des enregistrements possibles. Maintenant que l’interface permet de configurer les enregistrements DNS les plus courants, le mode expert perd une grande partie de son intérêt.

    Plein de vérifications supplémentaires pour éviter des erreurs (simples et moins simples). Ces vérifications portent sur les adresses IPv4 et IPv6, les adresses email (grammaire décrite dans la RFC 5322), les noms de domaine et les labels (grammaires décrites dans les RFC), ou encore les options SPF, DKIM et DMARC. Cela est utile à tout le monde, y compris à des administrateurs expérimentés mais inattentifs.

    Une interface didactique. L’interface se veut agréable à utiliser et rappelle régulièrement les bases aux novices. Par exemple, pas besoin d’aller chercher des informations complémentaires dans des RFC pour manipuler du SPF, DKIM ou DMARC. J’espère apporter à l’avenir ce niveau d’aide à la configuration pour d’autres enregistrements.

    Inclusion de netlibre dans la PSL. Le domaine netlibre est désormais dans la Public Suffix List, le domaine codelib.re devrait suivre.

    Migration : pourquoi une migration partielle

    Comme décrit en début d’article, les comptes sont repris dans la nouvelle version du site. Votre identifiant et votre mot de passe sont toujours valides. De même, les zones sont toujours servies, il n’y a pas eu de coupure de service. En revanche, les zones n’ont pas été traduites dans la nouvelle interface, vous les verrez donc vierges. La raison est simple : le temps et l’énergie. Traduire des zones Bind9 (dans un format non trivial et parfois pleines d’erreurs) est assez long et peu engageant.

    Maintenant que le service a été migré, vos domaines sont toujours présents et vous sont toujours réservés. L’ancien contenu des zones peut vous être envoyé pour vous aider à les reconfigurer sur la nouvelle interface, si c’est réellement nécessaire pour vous.

    Le futur

    Dans cette section je parlerai de propositions d’évolution pour le service, mais rien n’est gravé dans le marbre. J’ai par ailleurs encore du travail à faire sur cette nouvelle version. Tout ce qui est présenté ici viendra après ce qu’il me reste à faire, c’est-à-dire de nombreuses vérifications côté serveur (y compris de la surveillance de l’infra et autres joyeusetés inhérentes au développement de services en ligne) et une bonne pause bien méritée !

    Traduire l’application. Contrairement à l’ancienne version, le site est désormais en anglais, pour diverses raisons. J’aimerais donc y apporter une traduction en Français, puis d’autres langues si des gens veulent bien s’y atteler.

    Gérer vos zones. netlibre pourrait permettre de gérer des zones venant d’ailleurs. Par exemple, vous possédez « toto.fr » et vous souhaitez utiliser l’interface de gestion de netlibre. L’interface a été pensée pour être agréable à utiliser, ce serait dommage de ne pas en profiter pour d’autres domaines.

    Déléguer des zones. À l’inverse, il serait également intéressant de permettre la délégation des zones netlibre. Cela reviendrait à prendre un nom de domaine de chez netlib.re sans utiliser l’interface de gestion.

    Ouverture d’une API. La création de comptes, la réservation de noms de domaines et la modification de zones pourraient être automatisées. Cela pourrait être utile par exemple à une association qui souhaiterait automatiser la procédure pour ses membres. Cela était déjà prévu il y a 9 ans, et maintenant que le code est un peu plus sérieux, il est désormais pertinent de se re-poser la question.

    De nouveaux enregistrements DNS. Divers enregistrements pourraient être implémentés pour offrir une interface toujours plus complète, y compris pour des utilisateurs avancés. Ainsi, des enregistrements tels que LOC, RP ou HINFO pourraient voir le jour. DNSSec pourrait être de la partie également. Je n’utilise pas personnellement ces fonctionnalités donc je ne me sens pas non plus pressé de les implémenter. Si cela vous tient à cœur, merci de m’en informer, ça pourrait me motiver.

    De nouveaux domaines ? Le service propose actuellement des noms de domaines en « .netlib.re » ou « .codelib.re ». Je suis ouvert à la discussion si des gens veulent financer d’autres noms de domaines ou céder les leurs.

    Le retour du mode « expert » ? Pour des personnes expérimentées, cela a du sens. En lieu et place de l’écriture d’un réel fichier de zone Bind9, une entrée libre avec un format proche d’un fichier de zone Bind9 serait envisageable. Les enregistrements seraient compris et vérifiés par l’interface puis traduits dans la représentation intermédiaire utilisée par netlibre. Le meilleur des deux mondes. Pas de fausse joie cependant, comme cela nécessiterait pas mal de code, ce n’est pas au programme pour tout de suite.

    Alternatives à netlib.re

    J’ai vu de nombreux sites proposant des services autour du DNS. Pour citer quelques exemples :

    • eu.org n’est pas pour des novices, et visiblement tout est géré à la main sans interface pour s’inscrire… difficile de faire plus éloigné des objectifs de netlib.re ;
    • freedns.afraid.org ne fournit pas le code source et n’est pas très ouvert aux novices, mais à part ça le service semble assez complet ;
    • ydns.io ne fournit pas le code source et ne propose pas une gestion d’un domaine qu’ils offrent, seulement un enregistrement A ou AAAA ;
    • nsupdate.info les inscriptions sont fermées ;

    Ces services sont sans doute très bien. J’envie même certaines de leurs fonctionnalités, que j’implémenterai peut-être plus tard pour netlibre. Mais il manque systématiquement le code source, ou l’interface n’est pas faite pour un novice, ou le service ne propose pas tout à fait les mêmes fonctionnalités.

    Je pense donc sincèrement que netlibre a sa place au milieu de tous les autres. Il se démarque ne serait-ce que par son code libre et son interface simple. À l’avenir, j’espère qu’il se démarquera par sa complétude.

    Bonus : les problèmes survenus ces 9 dernières années (pour les curieux)

    De nombreux problèmes sont survenus au fil du temps. Le site a été instable pendant longtemps, pour de multiples raisons :

    • une des bibliothèques utilisées gère mal les enregistrements sur plusieurs lignes, menant à des boucles infinies. Cela a été corrigé il y a quelques mois à peine (!) et seulement en local car je n’ai pas pris le temps d’envoyer mes corrections (!!). Pour cette raison, il n’était même pas possible d’avoir un enregistrement DKIM via l’interface de netlibre ;
    • une maintenance quasi-absente pendant longtemps, par manque de temps et d’énergie ;
    • des plantages à répétition à cause de l’infrastructure (bind9 qui redémarre en boucle à cause d’une erreur de configuration en crachant des tonnes de logs qui saturent le disque) ;
    • des mises à jour qui cassent tout (à cause d’un déploiement un peu bancal) ;
    • une architecture logicielle en mode bricolage avec des lancements de commandes lorsque l’utilisateur appuie sur certains boutons ;
    • des lancements de commandes qui ne libèrent pas correctement leur descripteur de fichier (je n’ai pas trouvé pourquoi ni comment corriger) ;
    • un manque de vérifications (notamment à cause du mode expert), menant à des erreurs côté Bind9 sans que l’utilisateur en soit informé.

    Le plus gros problème a surtout été un manque de vérifications. Les bénéficiaires du service ont régulièrement innové pour détruire leurs zones. Entre la suppression des entrées NS et SOA (merci le mode expert) et les nombreuses valeurs invalides (auxquelles il fallait s’attendre, bien entendu), beaucoup de zones sont invalides sans même que les utilisateurs ne le sachent (autrement qu’en faisant des requêtes DNS).

    Et j’en oublie sans doute bien d’autres. Tout ça parce que… netlibre à la base, c’est un projet perso, vite-fait, pour moi. J’avais espoir qu’il serve à quelques dizaines d’autres personnes, max. Le service netlibre s’est beaucoup plus développé que prévu et j’ai bon espoir que le service soit désormais un peu plus à la hauteur.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Campus du Libre 2024 (Lyon) : Demandez le programme

    La programmation du Campus du libre qui aura lieu le 23 novembre 2024 sur le Campus de la Manufacture des Tabacs de l'Université Jean Moulin Lyon 3 est disponible.

    Campus Du Libre 2024(Bannière)

    Sur la journée, ce sont une quinzaine de conférences, une dizaine d'ateliers, un village associatif qui seront proposés aux publics. Il y aura aussi des animations singulières : découverte de jeux vidéos libres et de outils libres pour en concevoir d'autres, une flash party (libération de téléphone mobile), install party (libération d'ordinateur) ainsi que des expositions.

    Cet événement annuel se déplace à chaque édition sur un campus lyonnais avec pour objectif de sensibiliser au numérique libre.

    Des publics divers sont attendus, allant de la communauté universitaire aux entreprises du numérique, des usagers avertis comme des novices souhaitant découvrir un numérique de confiance.

    Attention : pour les libérations de téléphones et d'ordinateurs, il convient de s'inscrire en amont pour permettre aux équipes de bénévoles d'identifier les méthodologies d'installation les mieux adaptées à vos appareils.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Nouveautés de novembre 2024 de la communauté Scenari

    Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous rédigez une seule fois votre contenu et vous pouvez les générer sous plusieurs formes : site web, PDF, OpenDocument, diaporama, paquet SCORM (Sharable Content Object Reference Model)… Vous ne vous concentrez que sur le contenu et l’outil se charge de créer un rendu professionnel accessible et responsive.

    À chaque métier/contexte son modèle Scenari :

    • Opale pour la formation ;
    • Dokiel pour la documentation ;
    • Optim pour les présentations génériques ;
    • Topaze pour les études de cas ;
    • et bien d'autres…

    🖥️ Prochain mini-webinaire : « créer un conducteur de formation avec le modèle Parcours » 15 novembre<br/>

    🖥️ Prochain mini-webinaire : « créer un conducteur de formation avec le modèle Parcours » 15 novembre

    La session aura lieu le vendredi 15 novembre de 17h à 18h heure de Paris, à l’adresse https://scenari.org/visio/miniwebinaire.

    Pour que la session colle au mieux aux besoins de la communauté, tu peux participer à ce fil de discussion sur le forum.

    Pour faire connaissance avec Parcours, tu peux voir la mini-vidéo de présentation.

    Les sessions précédentes sont sur la page dédiée de scenari.org et dans notre canal peertube.

    Pour proposer des sujets, rends-toi sur ce fil de discussion.

    📣 Rencontres Scenari 2025 - Strasbourg 11-12-13 juin

    📣 Rencontres Scenari 2025 - Strasbourg 11-12-13 juin

    Scoop !

    Les Rencontres Scenari 2025 se dérouleront à l'Université de Strasbourg les 11, 12 et 13 juin !

    Grand merci aux membres strasbourgeois de la communauté Scenari 💜

    Bloque ces dates dès maintenant !

    Et si tu fais des choses intéressantes avec Scenari, penses-y car dans quelques semaines nous lancerons l'appel à contributions 😃

    📣 Stagiaire à l'asso, mission : prise en main de Scenari par les débutant⋅e⋅s (dans le secondaire)

    📣 Stagiaire à l'asso, mission : prise en main de Scenari par les débutant⋅e⋅s (dans le secondaire)

    Nous accueillons pendant 6 mois Éric en stage dans l'association, dans le cadre de son master 2 en ingénierie pédagogique numérique à l'université de Clermont - Auvergne (UCA).

    Éric connaît le système éducatif national et ses enjeux puisqu'il est Conseiller Principal d'Éducation, et a été directeur-adjoint de lycées agricoles.

    Sa mission principale dans l'association sera de travailler sur la prise en main et développement des outils Scenari, notamment dans le secondaire (analyse des besoins, des blocages, création d'un contenu d'auto-formation pour les grands débutants, promotion, …).

    Parallèlement il se rapprochera des membres de la communauté pour nourrir la réflexion de son mémoire de recherche.

    Tu recevras bientôt une communication sur le sujet.

    📣 Un bel exemple de documentation faite avec Dokiel

    📣 Un bel exemple de documentation faite avec Dokiel

    L'université de Sherbrooke (Québec - Canada), adhérente de l'association, a réalisé une documentation de ses outils numériques avec Dokiel.

    Il⋅elle⋅s utilisent le questionnaire au début pour profiler leur contenu en fonction du type d'usager (membre du personnel ou personne étudiante), et ont fait aussi un habillage personnalisé. Bravo ! 👏

    Retrouve cette ressources et d'autres dans la section « fait avec Scenari » sur le forum.

    📣 Nouvelles vidéos de présentation des principaux outils Scenari

    📣 Nouvelles vidéos de présentation des principaux outils Scenari

    Les vidéos de présentation des outils Scenari sont sur le canal peertube de l'association.

    Il y a Canoprof, Dokiel, IDKey, Lexico, Opale, Parcours, Process, SCENARIbuilder, SCENARIstyler, SCENARIsuite-starter, Topaze, Webmedia.

    À utiliser et diffuser sans modération :)

    📣 Appel à interventions #BlueHats le 4 décembre 2024 au salon Open Source Experience

    📣 Appel à interventions #BlueHats le 4 décembre 2024 au salon Open Source Experience

    Le réseaux #BlueHats, que nous appuyons régulièrement lors des Rencontres Scenari, bénéficiera d'un espace au salon Open Source Experience pour parler de logiciel libre dans l'Administration.

    Si tu fais partie du secteur public, tu peux t'inscrire pour parler de tes usages de Scenari (ou tout autre logiciel libre).

    Ça peut être un excellent moyen de diffuser notre outil favori ! 🥁

    Envoie ta proposition d'intervention de 5 à 20 minutes d'ici le 15 novembre 23h59 à bluehats@code.gouv.fr 📅

    Plus d'info sur le bulletin #BlueHats.

    ✨ Le savais-tu ?

    ✨ Le savais-tu ?

    L'éditeur Scenari embarque un correcteur d'orthographe et de grammaire.

    Pour l'activer il suffit de cliquer sur l'icone « conseils » en forme d'ampoule et de cocher l'option « orthographe et grammaire » (assure-toi qu'un serveur Language Tool est bien spécifié dans la configuration - roue crantée).

    Les mots ou expressions à vérifier seront surlignés dans le contenu et par simple clic droit (ou touche f4) tu auras accès aux suggestions de correction.

    correcteur d’orthographe et de grammaire dans l'éditeur Scenari

    Consulte la documentation pour en savoir plus.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Fedora Linux 41 est dans la place

    En ce mardi 29 octobre 2024, les utilisateurs du Projet Fedora seront ravis d’apprendre la disponibilité de la version Fedora Linux 41.

    Fedora Linux est une distribution communautaire développée par le projet Fedora et sponsorisée par Red Hat, qui lui fournit des développeurs ainsi que des moyens financiers et logistiques. Fedora Linux peut être vue comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.

    Bureau GNOME

    Sommaire

    Expérience utilisateur

    Passage à GNOME 47. Cette nouvelle version de l’environnement phare de Fedora propose de nombreuses améliorations. Tout d’abord, il est maintenant possible de personnaliser une couleur "accentuée" (accent color) qui influencera la couleur de nombreux éléments graphiques comme des boutons. Cela intègre donc un changement en place chez Ubuntu depuis quelques années. Pour ceux disposant de petits écrans, certains boutons et autres icônes sont agrandies pour rendre leur interaction plus aisée dans ce contexte.

    L’interface a été en partie remaniée au niveau des boîtes de dialogue pour rendre leur interaction plus simple notamment avec des petits écrans avec des boutons plus gros et plus espacés entre eux. Et bien sûr ces boutons tiennent compte maintenant de la couleur accentuée explicitée précédemment. L’interface pour ouvrir ou sauvegarder un fichier repose maintenant sur le code du navigateur de fichiers nommé Fichiers plutôt que d’utiliser un code indépendant jusqu’ici. Cela simplifie la maintenance mais permet surtout de fournir l’ensemble des fonctionnalités du navigateur de fichiers pour cette tâche. Par exemple il est possible de renommer des fichiers depuis cette interface, de changer l’ordre d’affichage en vue icônes, prévisualiser les fichiers sans les ouvrir, etc. Par ailleurs, le navigateur de fichiers s’améliore aussi. Les périphériques réseaux sont maintenant classifiés permettant d’identifier les ressources où on est déjà connecté, qu’on a précédemment utilisé et les autres. L’ensemble des disques durs internes sont également affichés dans la barre latérale et groupés ensemble pour rendre cela plus accessible et facile d’utilisation. Il est possible également de supprimer les dossiers par défaut dans la barre latérale pour faire de la place si on le souhaite. Et quelques autres changements plus mineurs.

    Dans la configuration de l’interface, il est possible via le menu Accessibilité de configurer le changement automatique de focus d’une fenêtre à une autre par le simple survol de la souris. Option désactivée par défaut. De même lors de l’ajout de nouvelles dispositions clavier, la prévisualisation de cette disposition peut être effectuée avant de la sélectionner pour s’assurer que c’est bien celle souhaitée. De manière générale, l’affichage des préférences est plus cohérente dans le choix des éléments graphiques pour les représenter à travers l’interface.

    Les comptes en ligne progressent également, les informations IMAP ou SMTP sont préremplies en se basant sur l’adresse électronique. La synchronisation du calendrier, des courriels et des contacts a été ajoutée pour les comptes Microsoft 365 pendant que la configuration d’un nouveau compte WebDAV permet de découvrir les services accessibles depuis ce compte pour faciliter l’expérience utilisateur.

    Le navigateur web maison n’est pas en reste et propose quelques améliorations dont le pré remplissage des formulaires en se basant sur les entrées précédentes ce qui est disponible dans de nombreux navigateur. L’option peut être désactivée dans les préférences si nécessaire. Les marques pages ont été aussi remaniés en étant affichés dans un volet latéral et en proposant une barre de recherche intégrée pour retrouver celui qu’on souhaite. Le navigateur peut afficher le nombre de trackers publicitaires qui ont été bloqués. Malheureusement la synchronisation des éléments via Firefox Sync n’est plus possible en ce moment à cause d’un changement dans la procédure d’authentification par Mozilla.

    L’application calendrier a été également améliorée avec par exemple une icône de cadenas qui s’affiche pour les événements qui sont en lecture seule. La mise en page est plus cohérente notamment dans l’espacement entre les éléments visuels. L’importation ou l’édition d’événements gèrent mieux les calendriers cachés ou en lecture seule. L’application de cartographie a été aussi légèrement améliorée en utilisant les cartes vectorisées par défaut et en proposant les trajets en transport en commun en exploitant le service Transitous plutôt qu’une solution commerciale.

    Pour les amateurs d’enregistrement de leur écran en vidéo, cette tâche peut être effectuée dans la mesure du possible avec de l’accélération matérielle ce qui diminue la consommation d’énergie et améliore les performances du système dans ce cadre. Dans la même veine, le rendu effectué par la bibliothèque graphique GTK se fait via Vulkan dorénavant ce qui améliore les performances en particulier pour les machines plus anciennes et avec moins d’effets visuels indésirables due à la lenteur de certaines opérations. Dans la même veine, il y a une amélioration des performances des applications vidéos, photos et du navigateur web maison par la réduction quand c’est possible du nombre de copies en mémoire des données d’une vidéo ou d’une image.

    Pour ceux qui ont accès à leur session à distance, il est dorénavant possible de rendre cette session persistante. En cas de déconnexion il est possible de revenir plus tard et de retrouver la session dans l’état où elle était.

    Pour les utilisateurs avancés, il y a des changements expérimentaux qui sont proposés. Si vous souhaitez utiliser la mise à échelle fractionnaire de l’interface pour les applications utilisant X11 via XWayland, vous pouvez l’activer via la commande suivante :

    $ gsettings set org.gnome.mutter experimental-features '["scale-monitor-framebuffer", "xwayland-native-scaling"]'

    Couleur d’accentuation dans GNOME

    L’environnement de bureau léger LXQt passe à la version 2.0. Cette mise à jour importante est essentiellement technique avec un port complet vers la bibliothèque graphique Qt 6 au lieu de Qt 5 qui n’est bientôt plus maintenue. La prise en charge de Wayland est disponible à titre expérimental, cela devrait être stabilisé pour la version 2.1 à venir.

    L’éditeur d’image GIMP utilise la branche de développement qui deviendra la version 3. Cette décision a été prise car GIMP devenait la raison principale pour maintenir le langage Python 2.7 dans la distribution qui n’est plus maintenue depuis quelques années. Alors que GIMP 3 devrait sortir sous peu, il a été décidé de prendre potentiellement un peu d’avance pour permettre de supprimer cette dépendance assez lourde et complexe de Fedora.

    Outre cette décision, cette version de l’application propose entre autres une meilleure gestion des couleurs avec notamment la visualisation, l’import ou l’export d’images avec la colorimétrie CMJN. Les tablettes graphiques ont une expérience utilisateur améliorée avec notamment la possibilité de personnaliser l’action des boutons de ce matériel sous Wayland, et la prise en charge des écrans avec une définition HiDPI est aussi améliorée. L’édition non destructive est également possible pour séparer l’application des effets des calques de l’image pour permettre de revenir dessus plus tard. Si on le souhaite, un calque peut se redimensionner automatiquement lors de son édition lors d’un dessin par exemple. Et bien d’autres changements.

    Le gestionnaire de listes de tâches Taskwarrior évolue à la version 3. Cette version a surtout changé la manière de stocker les données sauvegardées et n’est pas rétrocompatible avec l’ancienne méthode. Il est donc nécessaire d’exporter les tâches avec l’ancienne version par l’usage de la commande task export et de les importer avec la nouvelle version avec la commande task import rc.hooks=0. La tâche de sauvegarde est aussi confiée à un nouveau module TaskChampion écrit en Rust.

    La mise à jour du cœur des systèmes atomiques de bureau peut se faire sans droits administrateurs, mais pas les mises à niveau de celui-ci à savoir par exemple passer d’une version Fedora Linux Silverblue 40 à Fedora Linux Silverblue 41. Cela était déjà le cas pour Fedora Silverblue avec l’usage de GNOME Logiciels mais a été de fait généralisé. L’objectif est de simplifier la procédure de mise à jour du système, qui dans le cadre d’un système atomique est considéré comme plus sûre que dans un système traditionnel de par sa conception qui permet facilement de revenir à l’état précédent et par la faible quantité de logiciels installés dans le cœur du système.

    Les autres opérations ne sont pas considérées à ce stade car trop risquées pour être confiées à un simple utilisateur. Pour certaines opérations le mot de passe administrateur sera systématiquement demandé telles que l’installation d’un nouveau paquet local, la mise à niveau complet du système (qui consiste en une opération de rebase avec une autre branche de travail), ou changer les paramètres du noyau. Pour d’autres comme l’installation d’un paquet provenant d’un dépôt, la mise à jour, le retour dans un état précédent ou l’annulation d’une commande peut se faire sans demander systématiquement le mot de passe, comme lors de l’usage de commandes via sudo si les opérations ne sont pas trop espacées.

    Mise à disposition des images Spin KDE Plasma Mobile et Fedora Kinoite Mobile. L’objectif est de fournir une image native avec cet environnement qui fonctionne aussi bien pour téléphone que pour les tablettes ou petits ordinateurs portables 2-1 avec possibilité de détacher l’écran tactile du clavier.

    De même le gestionnaire de fenêtres en mode pavant Miracle exploitant Wayland est proposé dans Fedora et bénéficie de son propre Spin. Cette interface moderne prend en charge aussi les fenêtres flottantes, prend en charge les dernières montures de Wayland tout en permettant l’usage des pilotes propriétaires de Nvidia. Il consomme également peu de ressources ce qui le rend intéressant dans l’usage de machines peu performantes ou anciennes tout en exploitant une pile graphique très moderne et flexible.

    L’installation de Fedora Workstation se fera avec le protocole d’affichage Wayland uniquement, les sessions GNOME X11 restent disponibles et installables après. Cela suit l’effort entrepris depuis longtemps de faire de Wayland le protocole d’affichage par défaut de Fedora et par l’abandon progressif de X11 par GNOME également. L’état actuel du système permet de franchir ce cap par défaut ce qui allège également un peu le média d’installation. Cependant pour ceux qui veulent toujours utiliser GNOME avec X11 après l’installation pour différentes raisons, il reste possible d’installer les paquets gnome-session-xsession et gnome-classic-session-xsession depuis les dépôts officiels.

    Prévisualisation du clavier dans GNOME

    Gestion du matériel

    L’installation du pilote propriétaire de Nvidia via GNOME Logiciels est compatible avec les systèmes utilisant l’option Secure Boot. Ce mode de sécurité s’assure que tous les éléments de la chaine de démarrage de la machine sont signés avec une des clés cryptographiques autorisées. L’objectif est d’éviter qu’une tierce personne puisse modifier un de ces composants dans le dos d’un utilisateur afin de réaliser une attaque plus tard. Le chargeur de démarrage GRUB, le noyau Linux et ses pilotes sont évidemment concernés, et installer le pilote propriétaire de Nvidia qui n’est pas signé pouvait rendre la machine impossible à démarrer.

    Même si Fedora ne fournit pas ce pilote, car il est non libre, l’objectif reste d’avoir un système fonctionnel et simple à utiliser. Dans ce contexte, GNOME logiciels permet d’outre passer cette limitation en utilisant l’outil mokutil pour auto signer le pilote Nvidia. L’utilisateur devra saisir un mot de passe à l’installation du paquet, et au redémarrage suivant cet outil sera affiché pour confirmer la clé de sécurité et ainsi autoriser le chargement du dit pilote sans encombre.

    Prise en charge des caméras MIPI pour les systèmes utilisant Intel IPU6 qui concerne de nombreux ordinateurs portables actuels. En effet, de nombreux modèles utilisent le bus MIPI CSI2 au lieu du traditionnel USB UVC qui était la norme jusqu’à présent. En effet ce protocole permet des bandes passantes plus élevées, en consommant moins d’énergie et plus facile à intégrer. Sauf que la prise en charge de ce bus n’était pas pleinement gérée, car les images envoyées sont un peu brutes et nécessitent des traitements notamment concernant la balance des blancs ou le dématriçage de l’image ou le contrôle pour l’exposition et le gain. Cela est complexe, car chaque caméra a ses propres caractéristiques qui nécessitent une approche au cas par cas en espace utilisateur. Un travail d’intégration a été fait entre le noyau Linux, libcamera, pipewire et Firefox pour rendre cela possible. Le noyau Linux fourni l’API de base et un pilote pour chaque type de modèles, avec un pilote commun pour la prise en charge du protocole en lui-même. Le flux vidéo est récupéré par libcamera qui applique des traitements tels que le dématriçage en prenant en compte le modèle considéré, qui envoie le flux vidéo obtenu par pipewire vers le navigateur Firefox.

    L’installateur Anaconda prend en charge le chiffrement matériel des disques via le standard TCG OPAL2 disponible sur certains péripériques SATA ou NVMe, mais cela nécessite de passer via un fichier kickstart pour personnaliser l’installation. L’outil cryptsetup n’a pris en charge ce standard que très récemment, l’objectif est de fournir les arguments --hw-opal-only ou --hw-opal à cet utilitaire dans le fichier kickstart. Le premier argument n’active que le chiffrement matériel, ce qui est recommandé uniquement pour des périphériques où l’usage du CPU pour cette tâche nuirait grandement aux performances, alors que le second utilise un chiffrement matériel et logiciel. Il n’est pas prévu de fournir cette fonctionnalité par défaut et restera pendant un moment une option pour les utilisateurs avancés, car la sécurité de l’ensemble dépend de la qualité des firmwares de ces périphériques de stockage et qui doivent être maintenus à jour dans le temps ce qui n’est pas garanti.

    Utilisation par défaut de l’outil tuned au lieu de power-profiles-daemon pour la gestion de l’énergie de la machine. C’est l’outil qui permet notamment de passer du mode économie d’énergie à performance pour moduler la puissance du CPU en fonction de la consommation d’énergie souhaitée, ce qui est très appréciable sur les ordinateurs portables en particulier. Cependant power-profiles-daemon est très simple, en dehors de ces modes très génériques et d’appliquer cela sur les CPU ou les plateformes matérielles supportées, il ne permettait une configuration plus fine ou l’ajout de modes personnalisées. Les utilisateurs avancés étaient contraints d’installer un utilitaire additionnel comme tuned pour cela. Il a été ajouté un paquet tuned-ppd qui fourni une API DBus compatible avec l’interface de power-profiles-daemon, ainsi les applications telles que le centre de configuration de GNOME, Plasma ou Budgie peuvent s’en servir directement à la place sans régression, tout en permettant aux utilisateurs avancés d’aller plus loin s’ils le souhaitent en modifiant le contenu de /etc/tuned/ppd.conf comme en changeant les réglages périphérique par périphérique.

    Mise à jour de ROCm 6.2 pour améliorer la prise en charge de l’IA et le calcul haute performance pour les cartes graphiques ou accélérateurs d’AMD. Il fournit entre autres des nouveaux composants tels que Omniperf pour l’étude et l’analyse de performance, Omnitrace pour tracer l’exécution des fonctions sur le CPU ou le GPU, rocPyDecode comme implémentation de l’API rocDecode en Python pour l’analyse des données de profilage faits avec cet outil en C ou C++ ou ROCprofiler-SDK pour identifier les points bloquants de performance. Il prend en charge également les dernières versions des outils PyTorch et TensorFlow.

    L’outil de développement et de débogage des tables ACPI nommé acpica-tools ne prend plus en charge les architectures gros boutistes tels que s390x. En effet, ce standard qui est conçu pour les machines petits boutistes n’a pas beaucoup de sens pour cette architecture, les paquets qui en avaient besoin pour s390x ont de moins en moins cette dépendance et comme l’usage de cette architecture reste faible surtout pour cet usage, il a été décidé de retirer la prise en charge de cette spécificité. 49 correctifs sur 69 concernant ce paquet sont liés à cette prise en charge, car le projet n’a jamais voulu les adopter par manque d’intérêt, ce qui impliquait beaucoup de test et de développement ralentissant la fréquence des mises à jour du paquet. Ces correctifs sont maintenant supprimés.

    PHP ne prend plus en charge les processeurs x86 32 bits. Il n’y avait déjà plus de paquets PHP 32 bits dans les dépôts, mais PHP était toujours compilé pour permettre à d’autres dépendances de l’être pour cette architecture. Des restrictions ont été ajoutées à ces dépendances pour que cela ne soit plus bloquant. PHP était souvent utilisé dans le cadre de tests ou pour gérer des plugins ou extensions qui pouvaient être désactivées. L’architecture x86 32 bits n’est pour rappel plus pris en charge par Fedora depuis quelques années maintenant, ces paquets ne sont utilisables que sur des machines x86 64 bits pour des raisons de compatibilité. Ce nettoyage permet en contrepartie un gain de temps machine et de développeurs, car il n’y a plus à gérer ce cas de figure.

    Internationalisation

    Le gestionnaire d’entrées IBus par défaut pour la langue traditionnelle chinoise de Taiwan passe de ibus-libzhuyin à ibus-chewing. En effet la bibliothèque chewing sous-jacent semble avoir une communauté dynamique qui fournit une bonne maintenance contrairement à libzhuyin qui n’est d’ailleurs pas maintenu en ce moment par un locuteur de cette langue ce qui pose quelques difficultés. Le code semble également mieux organisé et plus maintenable.

    Nouvelles options de focus dans GNOME

    Administration système

    Le gestionnaire de paquet dnf est mis à jour vers sa 5ᵉ version. Cette version écrite en C++ au lieu de Python est bien plus rapide à l’usage et consomme moins d’espace disque et requiert moins de dépendances pour tourner, l’ensemble est 60% plus léger sur le disque. Par ailleurs dnf5daemon remplace PackageKit comme couche de compatibilité pour dnf dans GNOME Logiciels, ce qui permet notamment le partage des caches entre l’interface console et l’interface graphique évitant un gaspillage d’espace disque et de bande passante. Niveau performance, certaines opérations sont maintenant parallélisées comme le téléchargement et le traitement des données des dépôts qui doit être jusqu’à deux fois plus rapide. Les plugins sont également mieux intégrés ce qui en simplifie leur installation et leur maintenance. Cependant certains plugins n’ont pas été encore portés, vous pouvez suivre l’avancement pour ceux qui manquent à l’appel. Mais cela ne devrait concerner que peu d’utilisateurs. Certaines options de la ligne de commande n’existent plus par ailleurs, cela vous sera rappelé si vous les invoquiez. L’historique des précédentes transactions de paquets comme les mises à jour ou installations ne sont pas compatibles entre l’ancienne et la nouvelle version, vous ne pourrez donc pas voir vos anciennes transactions pour les annuler par exemple.

    Tandis que la commande rpm utilise la version 4.20. Cette version permet de lister ou de supprimer les clés pour signer les paquets via la commande rpmkeys alors que l’outil rpmsign permet de signer les paquets avec l’algorithme ECDSA. La commande rpm elle-même permet d’afficher une sortie en format JSON, en plus du format XML déjà pris en charge depuis longtemps. Un nouveau plugin rpm-plugin-unshare apparaît pour empêcher à des scripts d’installation de faire certaines opérations sur le système de fichiers ou via le réseau pour des raisons de sécurité. Côté création de paquet, l’introduction de la directive BuildSystem est sans doute la plus importante pour permettre de définir de manière unique et générique la création de paquets basés sur des outils communs tels que autotools ou cmake. L’empaqueteur n’aurait pas besoin de rappeler pour ces outils courants chaque étape pour la création du paquet, sauf en cas de particularité, ce qui permet une meilleure maintenance et cohérence au sein de la distribution par exemple.

    Les systèmes Fedora atomiques de bureau et Fedora IoT disposent de bootupd pour la mise à jour du chargeur de démarrage. La mise à jour du chargeur de démarrage au sein d’un système atomique n’est pas trivial, car ce n’est pas une opération facile à fiabiliser. Par conséquent rpm-ostree ne prenait pas cela en charge, et c’est pourquoi bootupd a été créé et est maintenant intégré dans ces versions. Il était déjà présent depuis quelque temps sur la version CoreOS ce qui a déjà donné un retour d’expérience en conditions réelles. Il peut prendre en charge les systèmes UEFI et BIOS, mais la mise à jour reste une étape manuelle pour être automatisée dans le futur, notamment quand le composant shim sera à jour pour rendre la mise à jour moins risquée sur les systèmes UEFI si la mise à jour est coupée au milieu de l’opération comme lors d’une coupure de courant ou lors d’un plantage. Il permet également de pouvoir bloquer l’usage de versions du chargeur de démarrage plus anciens ayant des failles connues, par l’usage de Secure Boot dbx et le paquet ostree-grub2 pourra être progressivement retiré, ce qui notamment mettra un terme au bogue où chaque déploiement est affiché deux fois dans l’interface de sélection de GRUB et devrait réduire le risque d’avoir certains problèmes lors de la mise à jour du système.

    Les images atomiques de Fedora proposent les outils dnf et bootc, ce premier est utilisable dans un contexte de développement pour l’instant mais le second peut commencer à servir à déployer des images du système qui sont bootables. Plus tard il est prévu que dnf puisse remplacer rpm-ostree pour certaines actions. En attendant, en cas d’usage de dnf sur de tels systèmes, le message d’erreur sera plus explicite concernant les outils à employer pour réaliser ces actions. L’objectif est de fournir aux administrateurs systèmes des outils plus familiers pour ces différentes actions tout en ayant un outil clairement identifié pour chaque type de tâches.

    Introduction de l’outil fedora-repoquery pour faire des requêtes sur les dépôts comme savoir la version exacte d’un paquet spécifique dans une autre version de Fedora, la date de mise à jour d’un dépôt, ou connaître les paquets qui dépendent d’un paquet spécifique (dépendance inverse donc), etc. Il fonctionne par-dessus dnf concernant cette fonction mais permet de facilement obtenir des informations depuis les dépôts Fedora, CentOS ou EPEL.

    La bibliothèque de sécurité OpenSSL n’accepte plus les signatures cryptographiques avec l’algorithme SHA-1. Cet algorithme n’est plus considéré comme sûr, car il devient de plus en plus facile de générer des collisions à la demande. Si vous souhaitez les autoriser à nouveau pour des raisons légitimes, malgré le risque de sécurité, cela reste possible de le faire via la commande

    # update-crypto-policies --set FEDORA40

    Commande qui devrait être prise en charge pendant quelques versions encore.

    Le gestionnaire de réseaux NetworkManager ne prend plus en charge la configuration dans le format ifcfg qui était déjà désuet depuis des années. Cela fait suite aux tentatives progressives d’utiliser massivement le format keyfile. Fedora Linux 33 en l’utilisant comme format par défaut pour les nouveaux profils de connexions, tandis que Fedora Linux 36 a poussé la prise en charge de l’ancien format dans un paquet dédié non installé par défaut nommé NetworkManager-initscripts-ifcfg-rh et enfin Fedora Linux 39 a entamé la conversion automatique vers le nouveau format. Et depuis longtemps NetworkManager ne fait que maintenir ce format, de nombreuses options ou types de connexions n’étant de fait pas possibles avec l’ancien format. Cela permet de préparer la suppression future de la prise en charge de ce format de fichier de NetworkManager lui-même.

    Dans la même veine, le paquet network-scripts a été retiré, mettant fin à la gestion du réseau via les scripts ifup et ifdown. Depuis 2018 ces outils sont considérés comme obsolète et soumis à une suppression planifiée future. D’ailleurs le projet officiel ne fait plus une maintenance très active de ces outils.

    Les interfaces réseaux pour les éditions Cloud vont utiliser les nouveaux noms par défaut (par exemple enp2s0f0) comme adoptés par les autres éditions il y a des années au lieu de conserver les noms traditionnels (tels que eth0). Cela signifie que le noyau ne recevra plus pour ces systèmes le paramètre net.ifnames=0 pour maintenir cet ancien comportement. Le reste de l’écosystème avait adopté la nouvelle nomenclature avec Fedora… 15 en 2011 ! Ce retard est attribuable à certains problèmes avec certains outils tels que cloud-init avec cette convention de nommage qui ont été résolus à la fin des années 2010 seulement. Ainsi les périphériques auront maintenant une correspondance physique, leur rôle devrait être plus facilement identifiable et limiter le risque de problèmes suite à des changements dynamiques des interfaces.

    Le gestionnaire de virtualisation libvirt utilise maintenant par défaut le pare-feu nftables au lieu de iptables pour son interface réseau vibr0. En effet Fedora utilise par défaut nftables maintenant et par ailleurs utiliser iptables signifiait créer des règles nftables sous le capot. Cette transition est faite pour améliorer les performances et réduire le risque d’une suppression accidentelle de règles par une application tierce, car tout sera mis dans les règles associées à la table libvirt_network. iptables sera cependant utilisé si nftables n’est pas présent dans le système et le comportement peut être changé dans le fichier de configuration /etc/libvirt/network.conf.

    L’outil Netavark pour gérer la pile réseau des conteneurs, notamment avec podman, utilise également par défaut le pare-feu nftables au lieu de iptables. Les avantages du changement sont assez similaires à ce qui est expliqué au point précédent, les règles associées à l’outil seront mises dans la table dédiée netavark. La possibilité d’envoyer les règles par lot peut améliorer de manière légère le temps de démarrage des conteneurs par ailleurs.

    Le gestionnaire de conteneurs Kubernetes a des nouveaux paquets versionnés, permettant d’avoir plusieurs versions en parallèle. Ici les versions 1.29, 1.30 et 1.31 sont proposées avec des noms comme kubernetes1.31. Cela devenait nécessaire car Kubernetes maintient 3 versions sur une période de 4 mois par version seulement ce qui rend nécessaire un tel montage. Cela permet aussi de découpler la version de Kubernetes avec la version de Fedora Linux ce qui facilite la gestion pour les administrateurs.

    L’implémentation des interfaces de Kubernetes fait par l’OCI a ses propres paquets cri-o et cri-tools qui sont également versionnés pour pouvoir suivre les versions de Kubernetes.

    GIMP 3

    Développement

    Mise à jour de la suite de compilation GNU : binutils 2.42, glibc 2.40 et gdb 15.

    Pour la suite d’outils binutils, cela se concentre surtout sur la prise en charge plus étendue des instructions des architectures Aarch64, RISC-V et x86_64. Il gère notamment les registres supplémentaires et les instructions associées proposés par l’évolution de l’architecture x86 avec Intel APX. L’assembleur BPF améliore son interopérabilité avec les outils de LLVM en suivant les mêmes conventions.

    La bibliothèque standard C commence une prise en charge expérimentale de la norme C23. La capacité de renforcer la sûreté des programmes compilés avec le compilateur Clang a été aussi améliorée pour se rapprocher de ce qui est possible de faire avec le compilateur GCC. De nombreuses fonctions mathématiques ont une version vectorisée pour l’architecture Aarch64 ce qui peut améliorer les performances pour cette architecture.

    Pour finir le débogueur améliore significativement son API Python pour faciliter sa manipulation à travers un programme ou script écrit dans ce langage. La prise en charge du protocole Debugger Adapter Protocol s’améliore encore pour faciliter sa manipulation par divers IDE qui s’en servent pour l’intégrer. Les informations de débogage du programme cible au format DWARF sont lues dans un fil d’exécution dédié pour améliorer le temps de chargement.

    Mise à niveau de la suite de compilateurs LLVM vers la version 19. Les paquets versionnés des versions précédentes sont toujours disponibles pour ceux qui ont besoin de la compatibilité avec les anciennes bibliothèques. Les paquets clang, compiler-rt, lld et libomp sont maintenant générés à partir du fichier de spécification du paquet llvm ce qui n’était pas le cas avant. Cela permet entre autres de simplifier leur maintenance mais aussi d’appliquer une optimisation Profile-Guided Optimizations sur ces binaires pour améliorer les performances. Les paquets Fedora compilés avec Clang bénéficient aussi de la compilation avec l’option -ffat-lto pour avoir des bibliothèques ayant le bitcode LTO en plus du binaire au format ELF, ce qui permet de réduire le temps de l’édition de lien quand ces bibliothèques sont impliquées. Le tout sans recourir à des macros pour obtenir le résultat après la compilation des paquets et sans renoncer à la compatibilité pour les logiciels non compilés avec ce mode activé.

    Retrait de Python 2.7 dans les dépôts, seule la branche 3 est maintenue dorénavant. Enfin, cela est vrai pour l’implémentation de référence, il reste possible de le faire via PyPy qui fourni toujours un support de la version 2.7 via le paquet pypy. Pour rappel, Python 2.7 n’est plus maintenu depuis début 2020, mais ce maintien était nécessaire pour certains paquets qui n’avaient toujours pas terminé leur portage, en particulier le logiciel GIMP, cas abordé plus haut. Les autres paquets concernés n’étaient plus vraiment maintenus de fait et ont été retirés. Cela devenait nécessaire car avec la fin de support de RHEL 7 prochainement, plus aucun correctif pour Python 2 ne sera développé à l’avenir rendant la situation plus critique encore.

    D’ailleurs Python bénéficie de la version 3.13. Cette version fournit un nouvel interpréteur interactif avec la coloration activée par défaut pour le prompt ou les erreurs. Il donne la possibilité d’avoir de l’édition multi-lignes qui est préservée dans l’historique. Les touches F1, F2 et F3 donnent respectivement l’accès à une aide interactive, à la navigation de l’historique de l’édition et à un mode de copie plus simple pour copier-coller de gros blocs de code. Les messages d’erreur sont également plus clairs.

    En dehors de cela, Python dispose du tant attendu mode sans verrou global nommé GIL ce qui permet d’améliorer les performances et de faire de réels fils d’exécution parallèle dans un programme. Mais ce mode étant expérimental, il faut installer le paquet python3.13-freethreading et exécuter Python avec la commande python3.13t pour en profiter.

    Le compilateur juste à temps n’est quant à lui pas fourni d’une façon ou d’une autre, cette fonctionnalité étant aussi expérimentale.

    Python est aussi compilé avec l’optimisation -O3 activée, en ligne avec la manière de faire par le projet officiel et améliorant les performances. Selon le test pyperformance le gain de performance est en moyenne 1,04 fois plus rapide rien qu’avec cette option. Auparavant Python était compilé avec l’optimisation -O2 qui est moins agressive, cependant la nouvelle option augmente la taille des binaires concernés d’environ 1.2% (soit 489 kio).

    Le framework d’écriture de tests en Python, Pytest se teste avec sa version 8. Cette version n’est pas compatible avec la version précédente, de nombreux éléments obsolètes sont maintenant traités comme des erreurs, et de même la façon dont les tests sont récupérés dans l’arborescence d’un code source a été modifiée ce qui peut poser différents problèmes.

    En termes d’amélioration, il propose un meilleur affichage des diff en cas d’erreur lors de l’exécution d’un test, le rendant plus lisible et plus proche du visuel d’un différentiel généré à partir de la commande diff.

    Mise à jour du langage Go vers la version 1.23. Cette version apporte la télémétrie pour collecter des données sur l’usage de la chaine de compilation Go aux développeurs du projet, par défaut dans Fedora la télémétrie est activée mais reste uniquement sur votre machine, rien n’est envoyé aux serveurs du projet. Ce comportement peut être changé dans les options.

    Autrement, quand le temps de compilation est amélioré lorsqu’un profil d’optimisation est utilisé, passant d’un délai supplémentaire pouvant aller jusqu’au double du temps de compilation normal à maximum 10% supplémentaire maintenant. Les applications Go ont un usage de la pile qui est légèrement réduit tandis que pour l’architecture x86_64, au détriment d’une légère augmentation de la taille du binaire, les boucles peuvent avoir une amélioration de performances d’environ 1-1,5%.

    Mise à jour dans l’écosystème Haskell GHC 9.6 et Stackage LTS 22. Le compilateur en lui-même propose de compiler le code pour être exécuté en tant que programme WebAssembly ou JavaScript. Les deux sont cependant considérés comme en développement et peuvent être sujets à des bogues. L’ensemble des messages d’erreur ont maintenant un code unique, permettant de simplifier la recherche d’une explication et d’une solution concernant celui-ci.

    Le langage Perl passe à la version 5.40. Un nouveau mot clé __CLASS__ donne la classe d’exécution réelle dont l’instance d’objet est membre, ce qui est utile pour les constructeurs de classes enfants, car l’accès à $self n’étant pas autorisé dans ce contexte. Un autre mot clé :reader est proposé, ajouté à un membre de classe il permet de définir automatiquement une fonction du même nom que le membre, qui renvoie cette valeur. Un nouvel opérateur ^^ est disponible, étant l’équivalent de && et || mais pour la fonction logique ou exclusif.

    Node.js 22 devient la version de référence, tandis que la version 20 et 18 restent disponibles en parallèle. Cette version propose entre autres un client Websocket natif sans dépendances additionnelles, une mise à jour habituelle du moteur JavaScript V8 vers la version 12.4 qui propose notamment un ramasse-miette WebAssembly. Les flux de données passent par défaut d’un buffer de 16 kib à 64 kib ce qui augmente les performances au détriment de la consommation de mémoire vive. Enfin le compilateur JIT Maglev fourni par le moteur V8 est activé par défaut, qui améliore les performances en particulier pour les petits programmes exécutés en ligne de commande.

    Pour des raisons de changement de licence, le gestionnaire de bases de données clé-valeur Redis est remplacé par Valkey. En effet Redis a adopté la licence RASLv2/SSPL en remplacement de la licence BSD qui n’est pas une licence libre ce qui est en conflit avec les règles de Fedora concernant les licences des logiciels proposés dans ses dépôts. Valkey est un fork de Redis qui réutilise la même licence originelle. À ce jour pas d’incompatibilité est à prévoir pour les utilisateurs de ce logiciel, mais un paquet valkey-compat est proposé pour migrer la configuration et les données depuis Redis. Le changement est effectué automatiquement lors de la mise à niveau de Fedora pour ces utilisateurs.

    La bibliothèque Python d’apprentissage profond Pytorch est éclairée avec sa version 2.4. Le changement majeur de cette version est la prise en charge de ROCm pour tirer parti de l’accélération matérielle de l’intelligence artificielle proposée par AMD. Il y a également une amélioration de performances pour ceux utilisant GenAI sur un CPU ou encore exécutant sur des processeurs AWS Graviton3 à base d’architecture Aarch64.

    L’API engine de la bibliothèque OpenSSL est dépréciée car non maintenue tout en gardant une ABI stable. En effet cette API n’est pas conforme aux standards FIPS et n’est plus maintenue depuis la version 3.0 d’OpenSSL. Aucun nouveau paquet ne peut dépendre de celui-ci jusqu’à sa suppression définitive pour simplifier la transition. Le code lié à cette API est fourni par le paquet indépendant openssl-engine-devel pour ceux qui en ont besoin. L’objectif à terme est de simplifier la maintenance tout en réduisant la surface d’attaque.

    Projet Fedora

    L’édition de Fedora KDE pour l’architecture AArch64 est maintenant bloquante pour les sorties d’une nouvelle version. L’édition doit être suffisamment stable pour qu’une nouvelle version de Fedora Linux voit le jour. Cela était déjà le cas pour Fedora Workstation de cette architecture et pour Fedora KDE pour l’architecture x86_64. L’objectif est de garantir une certaine fiabilité pour ses utilisateurs.

    Phase 4 de l’usage généralisé des noms abrégés de licence provenant du projet SPDX pour la licence des paquets plutôt que des noms du projet Fedora. Cela devait être l’ultime phase mais quelques contretemps repoussent à nouveau l’échéance. Cette étape et la suivante sont en fait la conversion massive des paquets vers le nouveau format, comme rapporté par ce document, la progression reste rapide et près de 98,5% des licences mentionnées dans les paquets sont déjà converties.

    Les bibliothèques Java n’ont plus une dépendance explicite envers le runtime de Java pour simplifier la maintenance, rien ne change concernant les applications. L’objectif est d’éviter de spécifier une version spécifique de la version de Java pour du code qui finalement n’est pas exécuté directement, la dépendance revenant plutôt aux applications à ce sujet. Cela peut faciliter les utilisateurs ou mainteneurs d’utiliser différents JDK pour ces bibliothèques. Cela simplifie considérablement aussi la maintenance des paquets Java dans Fedora, car il n’est plus nécessaire de mettre à jour la valeur de la version du JRE requis.

    Le paquet systemtap-sdt-devel n’a plus l’outil dtrace qui a été mis dans le paquet systemtap-sdt-dtrace. L’objectif est de supprimer la dépendance Python dans ce paquet qui est utilisé pour l’image de compilation des paquets de Fedora. Plusieurs centaines de paquets peuvent ainsi être générés plus rapidement par cette dépendance en moins.

    Ajout d’une tâche de nettoyage lors de la génération des paquets RPM pour améliorer la reproductibilité des paquets. Depuis quelques années Fedora fait un effort pour rendre la conception de ses paquets reproductibles. L’objectif est qu’un utilisateur devrait être en mesure de recompiler un paquet de son côté avec le fichier spec RPM + sources additionnelles de Fedora et obtenir exactement le même paquet, au bit près, garantissant que le paquet a été généré avec ces éléments sans altérations malveillantes. Cela peut également faciliter le développement, car il rend la comparaison entre versions d’un paquet plus facile à analyser car seuls les changements dans le code sont différents et non des éléments annexes.

    Un effort a été fait récemment qui repose notamment sur l’usage du programme add-determinism pour retirer du code source des éléments non déterministes comme la date de compilation. Ce programme est appelé à la fin de la génération du paquet. Fedora n’a pas réutilisé le travail de Debian à base du script strip-nondeterminism qui est un script Perl qui ajouterait une dépendance relativement lourde pour générer tous les paquets de Fedora.

    Mise à jour de createrepo_c à la version 1.0 qui gère la génération des métadonnées des dépôts de Fedora. Les versions stables et Rawhide de Fedora vont partager maintenant la même configuration des métadonnées, ce qui rendra la maintenance côté infrastructure plus simple et cohérente. Toutes les métadonnées sont compressées, avant seulement les métadonnées primaires l’étaient pour les versions stables de Fedora par exemple. Certaines données ou métadonnées étaient compressées suivant différents algorithmes :

    • gzip pour les métadonnées des dépôts ;
    • XZ pour les données XML concernant les mises à jour dans les dépôts concernés.

    Maintenant tout cela utilise l’algorithme zstd ce qui devrait améliorer un peu la bande passante et la consommation d’espace de stockage. Il n’est pas exclu de basculer à l’avenir sur zlib-ng dans ce but.

    Les fichiers sqlite renseignant la composition des dépôts n’étaient utiles que pour le gestionnaire de paquets YUM, avec son remplacement par DNF depuis quelques années il est inutile de les générer ce qui avait un coût en espace de stockage.

    La communauté francophone

    L’association

    Logo de Boorsalinux-fr

    Borsalinux-fr est l’association qui gère la promotion de Fedora dans l’espace francophone. Nous constatons depuis quelques années une baisse progressive des membres à jour de cotisation et de volontaires pour prendre en main les activités dévolues à l’association.

    Nous lançons donc un appel à nous rejoindre afin de nous aider.

    L’association est en effet propriétaire du site officiel de la communauté francophone de Fedora, organise des évènements promotionnels comme les Rencontres Fedora régulièrement et participe à l’ensemble des évènements majeurs concernant le libre à travers la France principalement.

    Si vous aimez Fedora, et que vous souhaitez que notre action perdure, vous pouvez :

    • adhérer à l’association : les cotisations nous aident à produire des goodies, à nous déplacer pour les évènements, à payer le matériel ;
    • participer sur le forum, les listes de diffusion, à la réfection de la documentation, représenter l’association sur différents évènements francophones ;
    • concevoir des goodies ;
    • organiser des évènements type Rencontres Fedora dans votre ville.

    Nous serions ravis de vous accueillir et de vous aider dans vos démarches. Toute contribution, même minime, est appréciée.

    Si vous souhaitez avoir un aperçu de notre activité, vous pouvez participer à nos réunions mensuelles chaque premier lundi soir du mois à 20h30 (heure de Paris). Pour plus de convivialité, nous l’avons mis en place en visioconférence sur Jitsi.

    La documentation

    Depuis juin 2017, un grand travail de nettoyage a été entrepris sur la documentation francophone de Fedora, pour rattraper les 5 années de retard accumulées sur le sujet.

    Le moins que l’on puisse dire, c’est que le travail abattu est important : près de 90 articles corrigés et remis au goût du jour.
    Un grand merci à Charles-Antoine Couret, Nicolas Berrehouc, Édouard Duliège et les autres contributeurs et relecteurs pour leurs contributions.

    La synchronisation du travail se passe sur le forum.

    Si vous avez des idées d’articles ou de corrections à effectuer, que vous avez une compétence technique à retransmettre, n’hésitez pas à participer.

    Comment se procurer Fedora Linux 41 ?

    Logo de Fedora Media Writer

    Si vous avez déjà Fedora Linux 40 ou 39 sur votre machine, vous pouvez faire une mise à niveau vers Fedora Linux 41. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.

    Autrement, pas de panique, vous pouvez télécharger Fedora Linux avant de procéder à son installation. La procédure ne prend que quelques minutes.

    Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.

    De plus, pour éviter les mauvaises surprises, nous vous recommandons aussi de lire au préalable les bogues importants connus à ce jour pour Fedora Linux 41.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    img, le cache d’images sur LinuxFr.org

    Le site LinuxFr.org utilise divers logiciels libres pour son fonctionnement et ses services : une large majorité provient de projets tiers (Debian, MariaDB, Redis - version d’avant le changement de licence, nginx, Postfix, conteneurs LXC et Docker, Ruby On Rails, Sympa, etc.) et d’autres composants sont développés pour nos propres besoins. Cette dernière catégorie comprend le code principal du site web en Ruby On Rails, et principalement 5 services autour : le cache d’images img, la tribune board, le convertisseur EPUB 3 epub, le partageur sur les réseaux sociaux share et le convertisseur LaTeX vers SVG svg. Cette dépêche va s’intéresser à img, un code sous AGPLv3.

    Elle est née d’une envie personnelle d’expliquer, documenter et montrer ce qui a été fait sur le cache d’images de LinuxFr.org, complétée d’une demande d’un « article technique sur le fonctionnement de ce cache, les choix techniques qui ont été faits, les erreurs commises donc à éviter… ».

      Sommaire

      Des images sur le site

      LinuxFr.org vous permet d’utiliser des images externes dans les contenus et commentaires du site. Ces images sont incluses en syntaxe markdown avec ![description textuelle](adresse "titre optionnel") (soit en saisissant directement du Markdown, soit en cliquant sur l’icône d’ajout d’image dans l’éditeur). Profitons-en pour rappeler que pour utiliser une image sur LinuxFr.org, vous devez vous assurer de respecter sa licence.

      Nous vous encourageons donc à utiliser des images sous licence libre et à citer les auteurs (c’est même obligatoire pour les licences CC-by et CC-by-sa). Cette citation est tirée de la dépêche d’annonce Un nouveau reverse-proxy cache pour les images externes sur LinuxFr.org de 2012.

      Il est aussi recommandé de mettre une vraie description textuelle, qui finira dans l’attribut alt de la balise img utilisée pour l’accessibilité ou si l’image ne peut être chargée. Il peut être utile de lui donner un titre qui apparaîtra l’autre du survol de l’image à la souris par exemple.

      Exemple :

      ![Logo LinuxFr.org](https://linuxfr.org/images/logos/linuxfr2_classic_back.png "L’actualité du logiciel libre et des sujets voisins (DIY, Open Hardware, Open Data, les Communs, etc.), sur un site francophone contributif géré par une équipe bénévole par et pour des libristes enthousiastes.")

      Logo LinuxFr.org

      Buts du cache d’images

      Les raisons évoquées à la mise en place de img (sans ordre particulier) :

      • la sécurité : si une image externe n’est servie qu’en HTTP (en clair donc) et est appelée au milieu d’une page LinuxFr.org elle-même servie en HTTPS, alors le navigateur va râler sur le mélange des genres. img permet de servir toutes les images identiquement (par exemple en HTTPS, et avec le certificat de LinuxFr.org, via le serveur frontal devant img). À noter que ces images ne sont pas servies directement depuis le domaine principal linuxfr.org mais depuis un sous-domaine img.linuxfr.org pour éviter que le JavaScript embarqué dans les images en SVG puisse servir de vecteur d’attaque contre le site.
      • la protection de la vie privée des personnes visitant LinuxFr.org : seul LinuxFr.org voit les informations en provenance de leur navigateur (dont l’adresse IP). Les équipes d’administration des différents sites ne les voient plus (elles voient l’adresse IP du serveur LinuxFr.org).
      • une meilleure gestion du trafic : au lieu d’envoyer tout notre public chercher individuellement chaque image, LinuxFr.org la récupère une fois et la rend disponible. Si le site externe fournissant l’image est un serveur à faibles ressources (liaison ADSL avec faible débit montant par exemple), la mise en cache permet de garantir qu’il ne recevra qu’un faible volume de requêtes (la récupération se faisant initialement toutes les 10 min tant que des demandes arrivent, le cache expirant après 10 min).
      • la conservation des images : les images incluses depuis des sites externes peuvent ne plus être disponibles (l’entité a disparu, le serveur a été arrêté, le domaine a été perdu, l’adresse a changé, etc.). Nous avons donc un mécanisme de cache pour que nous puissions continuer à servir une image même si elle devient indisponible.

      Parmi les conséquences de cette implémentation initiale, on peut citer :

      • si le fichier est changé sur le serveur distant (modifié, converti dans un autre format), l’ancien fichier est servi jusqu’à la prochaine récupération et le nouveau fichier ne sera servi qu’à la prochaine récupération ;
      • si le fichier est supprimé sur le serveur distant, l’image ne sera plus servie après la prochaine récupération (car le serveur a répondu que l’image n’existe plus) ;
      • il est possible de modifier l’image au passage : les images d’avatar sont retaillées pour une hauteur de 64 pixels par exemple ;
      • il est possible de bloquer des images : les images problématiques (pub/spam, contenus pour adultes, images injurieuses, etc.) peuvent être bloquées et ne plus être servies ;
      • par ailleurs img n’accepte de servir que les images connues de LinuxFr.org dont le poids fait moins de 5 MiB.

      À l’utilisation

      Lors de l’écriture d’un commentaire ou d’un contenu sur LinuxFr.org, une personne va ajouter une image externe via la syntaxe Markdown, par exemple ![Logo LinuxFr.org](https://linuxfr.org/images/logos/linuxfr2_classic_back.png)

      Ce qui donne à l’affichage :

      Logo LinuxFr.org

      Et côté code HTML :

      <img src="https://linuxfr.org/images/logos/linuxfr2_classic_back.png" alt="Logo LinuxFr.org">

      OK, mauvais exemple ce n’est pas une image externe, puisqu’elle est hébergée sur LinuxFr.org justement. Prenons un autre exemple ![April - Campagne d’adhésion](https://april.org/campagne-2024/relais/banniereCampagneApril.svg).

      Ce qui donne à l’affichage :

      April - Campagne d’adhésion

      Et côté code :

      <img src="//img.linuxfr.org/img/68747470733a2f2f617072696c2e6f72672f63616d7061676e652d323032342f72656c6169732f62616e6e6965726543616d7061676e65417072696c2e737667/banniereCampagneApril.svg" alt="April - Campagne d’adhésion" title="Source : https://april.org/campagne-2024/relais/banniereCampagneApril.svg">

      Donc on sert l’image via le sous-domaine img.linuxfr.org. On peut aussi noter le titre rempli automatiquement avec la source. Expliquons la nouvelle adresse :

      • // on sert en https si la page est en https et en http si la page est en http (c’est plutôt un oubli qu’autre chose, vu que le site est uniquement en https)
      • img.linuxfr.org on sert depuis un sous-domaine du site
      • 68747470733a2f2f617072696c2e6f72672f63616d7061676e652d323032342f72656c6169732f62616e6e6965726543616d7061676e65417072696c2e737667 est la version en texte-vers-hexadécimal de l’adresse d’origine (68 pour h, 74 pour t (deux fois), 70 pour p, etc.). Il existe des sites et des outils en local pour faire cette conversion, mais cela ne concerne pas la simple utilisation du site.
      • banniereCampagneApril.svg on met à la fin le nom du fichier pour être sympa si vous voulez sauver l’image en local avec un nom plus explicite

      Ceci était le cas où tout se passe bien, comme prévu, comme le voulait la personne qui voulait utiliser une image externe.

      Voyons maintenant ce qui se passe dans le cas pas si rare où la personne a donné une adresse d’image invalide, une adresse ne pointant pas vers une image vers autre chose (cas extrêmement fréquent), une image trop grosse (plus de 5 MiB), etc. Il se passe la même chose côté code, mais côté affichage, pas d’image, et on voit seulement le texte alternatif dans son navigateur. Dans les coulisses, img a répondu 404, cette adresse n’est pas disponible.

      On note donc qu’une même image servie en http:// ou en https:// aura une adresse convertie en hexadécimal différente, donc sera vue comme une autre image par img. Même chose si le serveur externe accepte des adresses sans tenir compte de la casse, ou si on rajoute des paramètres dans l’adresse comme « ?mot_magique=merci ».

      Côté code Ruby on Rails

      Un contenu ou commentaire est en cours de création et une image externe a été mentionnée. Le code de gestion des images va vérifier que l’image est déclarée dans redis (créer l’entrée img/<adresse> avec adresse l’adresse de l’image en clair, ajouter un champ created_at avec l’horodatage, ajouter l’adresse dans la liste des dernières images img/latest) et renvoyer l’adresse via img.

      Le code peut aussi modifier le champ status d’une image dans redis pour mettre ou enlever un blocage (valeur Blocked) par l’équipe du site, et l’ajouter/enlever de la liste des images bloquées img/blocked.

      Côté img

      Les schémas dans la documentation du service img explicitent les possibilités et les comportements.

      Il est possible de faire un GET /status et on obtient une réponse HTTP 200 avec un contenu OK. C’est utile pour tester que le service est lancé (depuis l’intérieur de la plateforme).

      Sinon, on peut envoyer des requêtes GET /img/<adresse_en_hexa> or GET /img/<adresse_en_hexa>/<nom_de_fichier> pour les images, et GET /avatars/<adresse_en_hexa> ou GET /avatars/<adresse_en_hexa>/<nom_de_fichier> pour les avatars.

      En se limitant aux requêtes légitimes, le comportement de img est le suivant :

      • l’adresse demandée a été précédemment déclarée (dans redis par la partie code Ruby On Rails) sinon il répond 404 ;
      • l’adresse demandée n’est pas bloquée par l’équipe du site sinon il répond 404 ;
      • l’adresse est déjà dans le cache disque, alors il renvoie l’image ;
      • l’adresse n’est pas dans le cache disque et la récupération échoue, il renvoie 404 (et va noter temporairement l’échec dans img/err/<uri>) ;
      • l’adresse n’est pas dans le cache disque et la récupération a lieu (noté temporairement dans img/update/<uri>): si le serveur répond positivement à la demande, avec une image comme attendue, pas trop volumineuse, alors on la met en cache disque. Si c’est un avatar, on peut retailler l’image. On aura des champs supplémentaires stockés type avec la nature de l’image (en-tête Content-Type), checksum avec un hachage SHA1 et etag avec la valeur ETag (entête ETag).

      Le cache est rafraîchi régulièrement.

      img est un binaire statique en Go. Il offre des options pour définir le couple adresse:port d’écoute, pour définir où envoyer les logs, pour se connecter à une base redis, pour définir le répertoire du cache disque, pour choisir le User-Agent qui sera utilisé pour les requêtes externes, pour définir l’avatar qui sera renvoyé par défaut, et la possibilité de le lancer uniquement en mode audit interne pour vérifier la cohérence et l’état des données et des fichiers.

      Dans les logs on va trouver des infos comme :

      2024/10/20 20:39:24 Status code of http://example.invalid/exemple1.png is: 404
      2024/10/20 20:39:24 Fail to fetch http://example.invalid/exemple1.png (serve from disk cache anyway)
      2024/10/20 20:44:12 Fetch http://example.invalid/exemple2.png (image/png) (ETag: "be5e-4dba836030980")
      2024/10/20 20:44:12 http://example.invalid/exemple3.png has an invalid content-type: text/html;charset=UTF-8
      2024/10/20 20:44:12 Fail to fetch http://example.invalid/exemple3.png (serve from disk cache anyway)
      

      Ici l’exemple 1 est déjà en cache et peut être servi même si on échoue à le récupérer à ce moment-là. L’exemple 2 vient d’être récupéré. L’exemple 3 a désormais une adresse invalide (qui renvoie une page HTML au lieu d’une image) mais il existe en cache une image précédemment récupérée.

      Historique

      img a été créé par Bruno Michel en 2012. Adrien Kunysz amène 5 commits en novembre 2013, mais globalement Bruno est le seul à travailler dessus (43 commits) jusqu’en 2018. img fait le job et il n’est pas besoin d’y retoucher trop souvent.

      En 2022, Bruno quitte l’équipe du site, et par ailleurs il y a des montées de versions et des migrations à faire sur les serveurs de LinuxFr.org, et img fait partie des services à reprendre en main. Ce qui veut dire le comprendre, le documenter et au besoin l’améliorer.

      Bref je décide de me plonger dans img (2022-2024), car a priori ce n’est pas le composant le plus compliqué du site (il vit dans son coin, il offre une interface, c’est du Go, donc on a un binaire seulement à gérer).

      Étape 1 : je vais commencer par ajouter un Dockerfile permettant de recompiler img dans un conteneur, en contrôlant la version de Go utilisée, en effectuant une détection d’éventuelles vulnérabilités au passage avec govulncheck. Cela me permet de valider que l’on sait produire le binaire d’une part, et que l’on offre à tout le monde la possibilité de contribuer facilement sur ce composant.

      Étape 2 : je vais tester le composant pour vérifier qu’il fonctionne comme je le pense et qu’il fait ce qu’on attend de lui. Je vais ajouter une suite des tests qui couvrent les différentes fonctionnalités et les vérifient en IPv4 et en IPv6, en HTTP 1.1 et en HTTP 2.0. Les tests utilisent Hurl et docker-compose (avec des images redis et nginx), et encore une fois l’idée de donner la possibilité de contribuer facilement. Ils comprennent des tests de types de contenus non pris en charge, le test de la limite à 5 MiB, différents types d’images, le test de vie, des appels erronés (mauvais chemin, mauvaise méthode, etc). Le choix des cas de tests est basé sur le trafic réellement constaté sur le serveur de production, sur les différents cas dans le code et un peu sur l’expérience du testeur.

      Étape 2,5 : l’avatar par défaut renvoie sur le site de production, y compris sur les tests en développement en local et sur le serveur de test du site. J’en profite pour ajouter un paramètre pour cela (et cela permettra de passer du PNG au SVG par défaut).

      Étape 3 : encore une fois essayons de simplifier la vie d’hypothétiques personnes contributrices. Une petite modification pour que hurl et redis soient fournis via docker-compose et ne soient plus nécessaires sur le poste de développement.

      Étape 4 : il est temps de documenter plus le fonctionnement. J’avais déjà décrit les infos stockées dans redis, mais pour comprendre le système de cache, autant fournir des diagrammes pour illustrer ce qui se passe lors d’une requête et comment on passe d’un état à un autre. C’est aussi l’occasion de compléter la suite de tests en ajoutant des tests avant et après expiration du cache, histoire de pouvoir documenter ces cas précis.

      Étape 5 : en cas d’échec de récupération, une image était indisponible jusqu’à la prochaine récupération (donc potentiellement pendant 10 min). Autant servir l’ancienne version en cache lorsque cela se produit : je modifie le code et les tests en conséquence.

      Étape 6 : je sais que certaines images ont été perdues, que des adresses d’images ont toujours été erronées, que des contenus et commentaires ont été supprimés et qu’il n’y a donc plus lieu de garder les images associées. Je décide d’implémenter dans img un audit interne qui indiquera si des anomalies sont présentes dans redis, si des images sont indisponibles ou si des entrées dans le cache disque ne correspondent plus à aucune image. Et j’ajoute cet audit dans la suite de tests.

      Étape 7 : j’écris une dépêche pour parler de tout cela.

      Évolutions récentes

      Dockerfile

      Le fichier Dockerfile du projet permet :

      • de partir d’une image officielle Go d’une version donnée, basée sur une distribution minimale Alpine
      • de l’utiliser pendant la construction en prenant la liste des dépendances, en les téléchargeant, en prenant l’unique fichier source img.go et en le compilant statiquement avec l’option pour retirer les chemins de compilation
      • de rechercher les éventuelles vulnérabilités avec govulncheck
      • d’ajouter le paquet tzdata pour avoir les définitions fuseaux horaires (nécessaire pour les conversions de/vers GMT pour les entêtes type Last-Modified).
      • de repartir d’une base Alpine en y mettant les définitions de fuseaux horaires et le binaire issus de la partie construction, de déclarer le port d’écoute et de lancer le binaire avec des variables disposant de valeurs par défaut.

      La suite de tests

      Pour l’utiliser, c’est assez simple, il faut aller dans le répertoire tests et lancer un docker-compose up --build, qui va produire le conteneur contenant img, et démarrer le redis et le nginx préconfigurés pour les tests. Si tout va bien, on attend, et au bout d’un moment il s’affiche :

      linuxfr.org-img-test_1  | All tests look good!
      tests_linuxfr.org-img-test_1 exited with code 0
      

      Rentrons un peu dans les détails.

      D’abord un fichier docker-compose.yaml qui décrit le réseau IPv4/IPv6 utilisé pour les tests, l’image redis qui sera utilisée (stockage géré par docker), l’image nginx qui sera utilisée avec sa configuration et ses fichiers à servir pour les tests, l’image img et son paramétrage (dont l’accès au redis et au nginx) ainsi que le répertoire du cache et enfin l’image de la suite de tests qui est construit avec son Dockerfile, prévue pour faire du Docker-in-Docker et avoir accès au cache img et aux fichiers nginx.

      Le Dockerfile de tests est basé sur une image Hurl (un outil pour faire des tests HTTP). On ajoute les fichiers de tests en .hurl, le script shell qui pilote le tout, on prévoit d’avoir les paquets dont on aura besoin : bash (pas par défaut dans les Alpine), coreutils, docker et xxd (pour les conversions texte vers hexadécimal). Et on lance les tests par défaut.

      La configuration nginx de test écoute en HTTP sur le port 80 en IPV4 et IPv6 et permet de définir des chemins avec des réponses en HTTP 301, 302, 308, 400, 401, 403, etc. jusqu’à 530 et même 666 pour les codes invalides, ainsi qu’une redirection infinie.

      Dans les données de tests servies par nginx, on trouve des contenus du mauvais type, une image destinée à être bloquée, des images dans divers formats, une image très grande en pixels mais pas trop en octets, une image trop grande en octets, et un avatar à servir par défaut.

      Sont aussi présents cinq fichiers de tests avec une extension en .hurl :

      • le test de vie et les chemins hors img/ et avatars/
      • les tests sur les avatars : adresse valide ou invalide, image inexistante, bon et mauvais types, comportements sur les différents codes HTTP et sur une boucle de redirection infinie
      • les tests sur les images (découpés en trois parties, la partie initiale, la partie entre la récupération initiale et l’expiration du cache et enfin la partie après la récupération et l’expiration du cache.

      Vient enfin le script shell qui pilote le tout :

      • on définit les variables pour les cibles IPv4/IPv6 et les binaires redis et img que l’on veut utiliser dans les autres conteneurs Docker
      • on liste les images dans différentes catégories :
        • celles qui vont échouer et ne comporteront donc qu’une entrée dans redis sans rien dans le cache disque (avec sous-catégories possibles bloquées/non-bloquées)
        • les images devant être en erreur
        • les images qui iront normalement dans le cache
      • on prépare des images qui seront altérées plus tard
      • on purge le cache sur disque, on nettoie redis et on déclare toutes nos images comme le faire le code Ruby on Rails. Certaines sont déclarées bloquées pour les tests.
      • on lance les premiers tests (en IPv4 et IPv6, en HTTP 1.1 et en HTTP 2.0)
      • on modifie certaines images pour simuler un changement sur le serveur externe, une suppression sur le serveur externe ou un blocage par l’équipe de site
      • on lance les tests post-récupération initiale mais avant l’expiration du cache (toujours avec toutes les variantes)
      • on force l’expiration du cache
      • on lance les tests post-expiration du cache (toujours avec toutes les variantes)
      • si on est arrivé jusqu’ici, c’est qu’on a passé tous les tests Hurl, alors maintenant on recompte ce que l’on a dans redis et sur disque et on vérifie si ça correspond à nos attentes
      • on nettoie les images mises volontairement en échec
      • on lance le test d’audit interne qui doit nous dire que tout va bien
      • si on est arrivé jusque-là on écrit que tout va bien et on déclenche un sourire de satisfaction.

      L’audit interne

      L’objectif est de vérifier la cohérence des données dans redis, si des images sont indisponibles ou si des entrées dans le cache disque ne correspondent plus à aucune image.

      Le binaire d’img peut donc être appelé en mode audit et lancer des contrôles internes.

      D’abord il collecte la liste des fichiers dans le cache disque.

      Ensuite il vérifie que toutes les images listées dans les dernières images (img/latest) existent comme entrées individuelles.

      Puis il vérifie s’il existe des images bloquées (il râlera s’il y en a) et si chacune existe comme entrée individuelle le cas échéant.

      Ensuite on parcourt tous les entrées individuelles d’images :

      • on râle si on tombe sur une entrée img/updated/ ou img/err/ sans date d’expiration
      • on râle si on tombe sur une entrée img/ sans champ created_at, sans type ou d’un type inconnu, sans checksum, avec un statut inconnu, une image bloquée non présente dans les images bloquées, un champ inconnu, une présence inattendue dans le cache disque, etc. Et on marque les images que l’on a vu passer comme attendu dans le cache.
      • on râle sur tous les fichiers du cache restants (ne correspondant à aucune image)
      • si on a râlé, on renvoie 1, sinon 0

      Le grand nettoyage

      img a fonctionné pendant 12 ans en production : il a rencontré des bugs, des comportements inattendus, des contenus et commentaires ont été supprimés ou réédités, etc. Il est donc probable qu’il y ait besoin d’aller dépoussiérer un peu tout cela et de retirer ce qui est inutile.

      Les traces du grand nettoyage sont d’abord visibles dans la rétrospective de la première quinzaine de septembre 2024 :

      • une « image » sur sept présente un souci (n’est pas une image, adresse invalide, trop grosse, etc.) et n’est donc pas dans le cache sur disque (ce qui a conduit à pas mal de taf sur la partie gestion des images)
      • les types de contenu (Content-Type) en provenance de sites variés et divers, c’est quelque chose… entre les « image/JPEG » ou « image/PNG » en majuscules parce que, les charset=utf-8 ou UTF-8 ou… sur du binaire, les name= qui ne sont pas dans la norme… Wikimedia renvoie aussi du profile="https://www.mediawiki.org/wiki/Specs/SVG/1.0.0" (pareil ça semble en dehors de tout standard).

      D’abord j’attaque le sujet la fleur au fusil en me disant que ça va passer crème, je fais un joli tableau qui résume l’état initial :

                                    img/<uri>   img/updated/<uri>   img/err/<uri>   blocked
      total                           25565 -21       634               160            5
      
      no created_at                      23 -23         0                 0            0
      created_at                       2857 -3          0                 5            1
      created_at+type                   222             0                 0            0
      total not in cache               3104 -26         0                 0            0
      
      created_at+type+checksum(+etag) 22463 +5        634               155            4
      
      files in cache                  22778 +5
      

      Donc on a officiellement 25 565 images, mais 23 sont mal créées (état théoriquement impossible hors race condition), 222 sont incomplètes (état théoriquement impossible race condition), 22 463 sont attendues en cache et on a 22 778 fichiers dans le cache. Ça part mal. Je nettoie en premier le plus facile (on voit le delta +/- de mes corrections). Et on arrive à une situation où une image sur sept présente alors un souci et il faut gérer un grand volume de corrections à faire.

      Parmi les soucis on trouve des types de contenus inattendus (image/PNG ou image/JPEG avec majuscules, image, des images binaires annoncées avec un charset, des types invalides comme image/jpg au lieu de image/jpeg, etc), des erreurs de notre lectorat (mauvais lien, mauvais copier-coller, lien vers une page web au lieu d’une image), mais aussi des espaces insécables et autres blancs inopportuns, des guillemets convertis, des doubles scheme (http://https:// ou http://file://).

      Après cela se cache une autre catégorie encore plus pénible : les images que l’on a en cache, mais qui ne sont plus utiles au site : par exemple celles qui étaient dans des contenus ou commentaires supprimés (notamment le spam), celles qui étaient dans des commentaires ou contenus réédités depuis, etc.

      Un problème connu est devenu vite pénible : on n’a pas d’association entre les images externes et les contenus/commentaires concernés. Donc il faut d’abord extraire la liste de toutes les déclarations d’images externes des 12 tables SQL où l’on peut trouver des images et des avatars, sous forme HTML ou Markdown.

      Ensuite il faut sortir toutes les entrées dans redis et regarder si on les retrouve en clair ou converties en hexadécimal dans l’extraction SQL.

      Et par sécurité on fera une double vérification pour celles détectées en erreur, en relançant une recherche en base (attention à la casse dans la recherche texte).

      Au final, on peut supprimer des milliers d’entrées redis et de fichiers dans le cache.

      Et un jour l’audit dit :

      Connection 127.0.0.1:6379 0
      2024/10/19 12:11:21 Sanity check mode only
      2024/10/19 12:11:37 Files in cache: 17926
      2024/10/19 12:11:39 Total img keys in redis: 18374
      OK
      

      Ça aura pris un mois et demi (l’audit a été fusionné le 8 septembre 2024), certes pas en continu, mais ça a été long et guère palpitant de faire ce grand ménage. Et j’ai refait une seconde passe du traitement complet la semaine d’après pour vérifier que tout se passait correctement et que les soucis résiduels après tout ça étaient minimes ou nuls.

      Parmi les anecdotes, Web Archive / archive.org a eu sa fuite de comptes utilisateurs et a été indisponible sur la fin (ce qui rendait compliqué la récupération d’images perdues ou leur remplacement par un lien valide par exemple). Et, mentionné dans la rétrospective de la seconde quinzaine de septembre 2024, un compte de spammeur de 2015 supprimé… mieux vaut tard que jamais : détecté parce que comme beaucoup de visiteurs, le spammeur ne fait pas la différence entre un lien vers un document et l’ajout d’une image.

      Les problématiques restantes

      Il y a la question habituelle de la montée de versions des dépendances (pour nous actuellement contraintes celles du code Ruby on Rails) et du remplacement des composants devenus non-libres (migrer vers valkey plutôt que redis ? Questions à se poser sur l’avenir de nginx ?).

      On pourrait aussi ajouter la prise en charge du TLS et d’un certificat X.509 directement dans img plutôt que dans un frontal. Mais ce n’est utile que si on les sépare sur deux serveurs distants, ce qui n’est pas le cas actuellement. Donc même si ça ne paraît pas compliqué à faire, ce n’est pas urgent.

      Ensuite une entrée de suivi existe pour séparer le cache des avatars du cache des autres images : les contraintes pour le cache des avatars étant différentes de celui des autres images, le stockage en cache devrait être différent. Cela reste un problème mineur. Le changement doit d’abord être fait côté Ruby on Rails pour définir les avatars avec des clés redis différentes (genre avatars/ au lieu de img/). Ensuite on peut modifier img pour séparer le traitement des requêtes HTTP /img/<adresse_hexa> vers les clés redis img/<adresse> et le cache disque des images par rapport aux requêtes /avatars/<adresse_hexa> vers les clés avatars/<adresse> et le cache des avatars. Il faudra aussi déplacer les avatars stockés dans l’actuel cache des images dans leur propre cache. Et là on devrait pouvoir avoir la même adresse dans les deux caches mais avec un rendu éventuellement différent.

      Un autre problème concerne la non-association des contenus ou commentaires avec les images externes qu’ils contiennent, ce qui rend l’administration des anciennes images un peu pénible. Le fait que les contenus et commentaires peuvent être réédités ou simplement prévisualisés (donc que des images peuvent être supprimées et d’autres ajoutées) vient compliquer un peu la tâche. Actuellement un ensemble de scripts permettent d’obtenir ces infos et fournissent un contournement, mais ça reste un peu laborieux.

      Un cache rafraîchi périodiquement conserve les images pour éviter de surcharger le site d’origine, pas si le site a changé, déplacé ou perdu l’image. La modification pour servir depuis le cache disque en cas d’échec de récupération couvre le cas de la disparition d’une image avec une erreur sur l’adresse, pas celui où le serveur répond une mauvaise image. Il y a donc une autre entrée de suivi images et disparition du web évoquant l’augmentation des soucis sur les images externes avec un cache rafraîchi, en raison des domaines récupérés par des spammeurs et autres pénibles, ou perdus ou utilisés pour du phishing (imageshack.us, après framapic, pix.toilelibre, etc.). Diverses problématiques sont mentionnées comme la perte d’information et donc la diminution de l’intérêt des contenus anciens, la prime aux pénibles du référencement SEO qui pourrissent le net en récupérant les vieux domaines, la modification possible des images publiées. Pour résoudre cela techniquement, ça nécessite de suivre les images et les domaines perdus, et d’intervenir de façon régulière. Ou bien de ne plus rafraîchir le cache (que cela soit jamais, après la publication ou au bout d’un certain temps après la publication). Pour juste éviter la perte d’info, il est possible de remplacer par une image locale récupérée d’une archive du net type archive.org, avec le côté « pénible à faire » et sans garantie que ça soit toujours possible (merci waybackpy).

      Enfin une troisième entrée de suivi suggère l'hébergement des images des dépêches (et éventuellement des journaux), idéalement en permettant d’avoir une version modifiée d’une image en changeant sa taille. On peut citer en vrac comme problématiques la responsabilité légale, l’éventuelle volumétrie, l’impossibilité de corriger une image publiée facilement par la personne qui l’a soumise, la centralisation et la perte de référencement pour des tiers, l’éventuelle rétroactivité et le traitement de l’historique, le fait qu’il faut traiter tous les autres contenus/commentaires pouvant accueillir des images, etc. Autre question, faut-il différencier les images passées en modération a priori de celles en modération a posteriori ?

      Conclusion ?

      Bref sans surprise, il reste des problématiques et du code à faire pour les gérer (c’est rare un composant sans demandes d’évolution ou de correction). Yapuka (mais probablement plus tard, il faut aussi partager le temps avec les autres composants, ou avoir plus de contributions).

      img apporte les fonctionnalités que l’on attendait de lui même si on pourrait faire mieux. Plonger dans ce composant s’est avéré assez intéressant et formateur (et nécessaire) : techniquement cela a été l’occasion de faire du Go, du docker et du docker-compose, du redis et du nginx, du hurl et de l’HTTP. Et de comprendre ce que faisait un code écrit par une autre personne, de se poser des questions pour choisir les tests et le contenu de la documentation, de se demander pour quelles raisons tel ou tel choix a été fait, de rendre ce composant plus « contribuable », et de compléter le tout de façon détaillée avec une dépêche. Reste à savoir si j’ai répondu à l’attente d’un article technique sur le fonctionnement de ce cache, les choix techniques qui ont été faits, les erreurs commises donc à éviter… et la réponse est à trouver dans les commentaires.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Projets Libres! Saison 3 épisode 2 : stratégies pour startups Open Source

      Pour ce second enregistrement de la saison 3, Projets Libres! reçoit Emily Omier.

      Emily est consultante en stratégie Open Source, et podcasteuse.

      Avec elle nous abordons des thèmes intéressants, comme :

      • les raisons de monter une startup Open Source ;
      • la relation entre produit et projet ;
      • les changements de licences ;
      • le rôle de la communauté ;
      • les aspirations des fondateurs ;
      • qu'est-ce qu'on entend par avoir du succès ?

      Nous mettons aussi en lumière sa casquette de créatrice de contenu, avec le podcast The Business of Open Source , et de co-fondatrice de la conférence Open Source Founders Summit.

      Bonne écoute!

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Vie privée sur Internet et appareils connectés - « Libre à vous ! » du 1er octobre 2024 - Podcast

      220ème «  Libre à vous !  » de l’April. Podcast et programme :

      • sujet principal : enjeux de la vie privée sur Internet et sur les appareils connectés, avec Audric Gueidan, formateur numérique et auteur de la BD Datamania et Lovis IX de l'association Exodus Privacy ;
      • la chronique Pépite libres de Jean-Christophe Becquet, sur Éducajou : des applications libres pour l'école ;
      • la chronique Les transcriptions qui redonnent le goût de la lecture de Marie-Odile Morandi sur le thème « Elles s'engagent en faveur du logiciel libre au sein de leurs communautés ».

      Rendez‑vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 FM en Île‑de‑France. L’émission est diffusée simultanément sur le site Web de la radio Cause Commune.

      Vous pouvez laisser un message sur le répondeur de la radio, pour réagir à l’un des sujets de l’émission ou poser une question. Le numéro du répondeur : +33 9 72 51 55 46.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Le MMORPG Ryzom fête ses 20 ans !

      En 2004 naquit un jeu au potentiel extraordinaire, sous le regard enthousiaste de ses créateurs.

      Après une enfance jalonnée d'embûches qui ont forgé son caractère et uni sa communauté, ce jeu convivial, à l'esprit libre, a su évoluer et toujours aller de l'avant grâce à l'implication de ses joueurs.

      Et aujourd'hui, c'est avec émotion qu'il s'apprête à passer un nouveau cap.
      Car oui, le temps passe si vite : Ryzom va fêter ses 20 ans !

      Ryzom fête ses 20 ans en jeu, du 16 septembre au 5 octobre.

      Pour l'occasion, 20 jours de festivités sont prévues en jeu sur l'île des 20 ans, du 16 septembre au 5 octobre 2024.
      De nombreuses surprises sont au programme, ainsi que la venue d'anciens membres de Nevrax, le studio qui a développé le jeu.

      Qu'est-ce que Ryzom ?

      Ryzom est un MMORPG de science-fantasy basé sur un monde vivant unique : une planète-plante aux paysages envoûtants, sauvage, peuplée de mille dangers. Vous pouvez y incarner une des quatre races humanoïdes du jeu, contribuer à la reconquête de leur civilisation perdue et influer sur l'évolution du monde.

      Jeu sandbox au PvP consensuel, au roleplay très présent et à la communauté mature, Ryzom a la spécificité de ne pas limiter ses personnages en classes et dispose d'un système évolué de récolte et d'artisanat. L'alignement des personnages sur une des nations et factions proposées peut évoluer pour mieux suivre le roleplay de chacun.

      Timaris

      Données techniques

      Ryzom est jouable sous Windows, Linux et macOS. Son interface est disponible en allemand, anglais, espagnol, français et russe. Les chats en jeu sont traduits automatiquement dans la langue du client.

      Tarifs

      Ryzom est jouable en version gratuite jusqu'au niveau 125, sans limitation de temps.

      Plusieurs tarifs d'abonnement sont proposés pour accéder à la version complète qui offre la possibilité d'atteindre le niveau 250, davantage de moyens de stockage et double la vitesse d'acquisition des points d'expérience.

      Kami

      Particularité

      Ryzom est l'un des rares MMORPG commerciaux à être entièrement open source, sous licence AGPLv3 : client, serveur, outils et média, ce qui offre aux joueurs une opportunité unique de s'impliquer dans le développement du jeu, notamment à travers des projets libres Ryzom Core et Ryzom Forge.

      Logo de Ryzom Core

      Logo de Ryzom Forge

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Sortie de passbolt 4.9.0 : recherche par dossiers et amélioration des performances

      Passbolt est un gestionnaire de mots de passe libre, sous licence AGPLv3, conçu pour l’utilisation en équipe et la collaboration. La version 4.9.0 de passbolt, baptisée B.Y.O.B, vient de sortir. Elle introduit une fonctionnalité très attendue par la communauté : la recherche par dossiers, ainsi que des améliorations majeures de performances.

      Nouveautés de la version 4.9.0

      Localisation des dossiers dans la grille

      Affichage de l’emplacement des ressources : la grille affiche désormais l’emplacement des ressources dans les dossiers, facilitant leur identification et gestion.

      Recherche par nom de dossier : les ressources peuvent être trouvées plus facilement grâce à une recherche utilisant maintenant les noms des dossiers.

      Recherche par dossier dans passbolt 4.9

      Améliorations des performances

      Gains de performances jusqu’à 50% : la navigation est désormais plus rapide, même pour les instances avec des grands nombres de mots de passe stockés.

      Suspension des utilisateurs ldap dans passbolt 4.9

      Suspension des utilisateurs LDAP

      Nouvelle option de suspension : les administrateurs peuvent désormais suspendre des utilisateurs sans supprimer leurs données, ajoutant une couche de sécurité et de contrôle supplémentaire.

      Suspension des utilisateurs ldap dans passbolt 4.9

      En savoir plus sur la version 4.9.0

      Pour plus de détails, consultez-les notes de version (en) et n’hésitez pas à nous faire part de vos retours.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      Open Source Experience : Appel à conférence et à stand pour le village associatif #OSXP2024

      Rebelote pour 2024. Même nom, même lieu mais nouvel attelage pour cette quatrième édition du salon Open Source Experience (#OSXP pour les intimes) qui divorce du SIDO Paris pour se remarier avec DevOpsRex qui renaît de ses cendres. Cette dernière est une conférence francophone autour du DevOps, 100% retour d’expérience. Elle se tenait au Rex, puis à la Villette avant que la Covid ne passe par là. Les deux événements sont combinés et c’est toujours au Palais des Congrès, porte Maillot à Paris. Côté dates, réservez cette fois vos 4 et 5 décembre 2024.

      Bannière du salon OSXP24

      Notez que deux appels sont en cours :

      • l’appel à conférences (ou CFP, Call For Paper, pour les anglophones), ouvert jusqu’au 19 juillet 2024 à 23h59. Cette année, le programme sera davantage axé sur les cas d’utilisation et retours d’expérience (influence de DevOps Rex ?), et recentré sur les usages professionnels et la mise en œuvre de solutions industrialisées.
      • l’appel à stands pour les associations du Libre afin de reformer notre sympathique, tout autant qu’éphémère, village du Libre. L’appel est ouvert jusqu’au 25 août à 23h59 ; si vous êtes une entreprise ou que vous avez des sous, des stands sont aussi commercialisés 🤑.

      Plus de détails dans la suite de la dépêche.

      Présentation de l’événement

      Pour les anciennes et les anciens, Open Source Experience (aka OSXP) est l’événement qui a remplacé le Paris Open Source Summit, qui lui-même était la fusion de l’Open World Forum et Solutions Linux (qui était l’ancien Linux Expo) !

      Dans la continuité de ses prédécesseurs, OSXP se veut un événement européen professionnel sur l’Open Source, le Libre et le Numérique ouvert, combinant une grande partie exposition, dans laquelle nous retrouverons toutes les entreprises du secteur ainsi que le village des associations, mais aussi un cycle d’une centaine de conférences, tables rondes et ateliers sur les deux jours.

      Et il sera de nouveau accolé au retour du DevOps Rex, série de conférences et talks sur les applications concrètes de la méthodologie devops en entreprise, ses bénéfices, mais aussi ses contraintes et ses limites. Il y a aussi une partie exposition dédiée.

      L’inscription gratuite ouvre l’accès à la partie exposition conjointe et aux conférences d’Open Source Experience. L’accès au cycle de conférences de DevOps REX est quant à lui payant.

      📢 Appel à stands pour le village associatif

      Le village associatif rempile de nouveau cette année. Mais au vu de la réorganisation cette année, il y a un peu moins de place pour la partie exposition et donc seulement six à huit stands sont disponibles pour le village cette année. Pour obtenir un stand, il faut répondre aux critères ci-dessous et postuler sur le formulaire dédié avant le 25 août 2024 à 23h59 :

      • être une fondation ou une association à but non lucratif et non adossé à une entreprise (pour les entreprises, c’est sur cette page) ;
      • œuvrer pour l’Open Source et le Logiciel Libre (🦉 O RLY?) ;
      • à vocation nationale 🇫🇷 ou internationale 🇺🇳 (vers l’infini et au-delà) ;
      • disposer d’un important réseau de contacts permettant de relayer l’événement en amont (📊 sortez vos stats) ;
      • s’engageant à se mobiliser sur le stand sur une ou deux journées (fini les stands vides 😉). En effet, au vu du nombre limité de places, il sera possible de partager temporellement le stand si vous n’êtes disponible qu’une seule journée.

      Les organisateurs présélectionneront huits associations répondant le mieux aux critères de sélection. Seront privilégiées les associations indépendantes de toute organisation privée, disposant de moyens financiers limités. Soyez rassurés, Bookynette est encore et toujours impliquée dans l’organisation de ce village. Un grand merci à elle !

      LinuxFr cochant toutes les cases, nous avons postulé 🤞. Nous verrons si nous pouvons encore vous faire gagner des Raspberry Pi, livres, abonnements, bières, Fairphone, Legos, etc. comme les années passées lors de notre animation façon Burger Quizz.

      Le stand Linuxfr tirage au sort sur le stand
      Grand quiz à l’OSXP 2021, la scène Grand quizz à l’OSXP 2021, le public

      Appel à conférences

      Comme indiqué précédemment, pour cette quatrième édition, le programme privilégiéra les retours d’expérience centrés sur les problématiques rencontrées par l’utilisateur et comment il y a répondu. Bref, un recentrage sur les usages professionnels et la mise en œuvre de solutions industrialisées.

      L’open source est abordé sous 3 angles :

      • la mise en œuvre des outils et solutions ;
      • le business et la gestion de l’open source ;
      • les enjeux de la filière et des technologies.

      Ces angles se matérialisent dans les 5 thématiques du programme :

      • IA, Machine Learning, Data ;
      • Cloud, infra, IoT ;
      • Cyber & sécurité ;
      • Solutions d’entreprise ;
      • Business & Enjeux.

      L’appel à conférences est ouvert jusqu’au 19 juillet 2024 à 23h59.

      Informations pratiques

      • 💶 Entrée gratuite sur pré-inscription ;
      • 📍 Lieu : Palais des Congrès – 2 Place de la Porte Maillot – 75017 Paris ;
      • 📅 Dates et heures :
        • mercredi 4 décembre de 9h00 à 18h00 ;
        • jeudi 5 décembre de 9h00 à 18h00 ;
      • Transports en commun :
        • 🚇 métro : Ligne 1, Station Porte Maillot – sortie 3 ;
        • 🚋 RER Ligne C, Station Neuilly – Porte Maillot ;
        • 🚙 Voiture (évitez si vous pouvez, c’est blindé de travaux) : 2 Place de la Porte Maillot, 75017 Paris. Parking Indigo Porte Maillot ;
        • 🚌 Bus : Lignes 43 73 82 244 PC ;
        • 🚲 Station Vélib’ à proximité.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      ❌