Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierinformatique général
  • ✇LinuxFr.org : les dépêches
  • Mageia 10 : cycle de publication alpha, bêta, rc
    Si vous avez envie de regarder sous le capot et vous impliquer dans le développement d’une distribution Linux c’est le moment de participer aux tests. Mageia a publié une première version alpha en décembre 2025, la version bêta est désormais disponible et une version candidate est envisagée pour mars/avril 2026 pour publication de Mageia 10 « quand ce sera prêt », l’occasion de revenir sur les différentes étapes et l’implication possible. Pour l’apparence de la distribution, un concours artisti

Mageia 10 : cycle de publication alpha, bêta, rc

Si vous avez envie de regarder sous le capot et vous impliquer dans le développement d’une distribution Linux c’est le moment de participer aux tests.
Mageia a publié une première version alpha en décembre 2025, la version bêta est désormais disponible et une version candidate est envisagée pour mars/avril 2026 pour publication de Mageia 10 « quand ce sera prêt », l’occasion de revenir sur les différentes étapes et l’implication possible.

Pour l’apparence de la distribution, un concours artistique a été lancé du 29 janvier au 25 février 2026, la participation des plus graphistes d’entre vous est la bienvenue ! Le choix pour la Mageia 10 va bientôt être fait, il reste toujours quelques points à améliorer par la suite ;-)

Bref, une version 10 de Mageia qui s’inscrit dans la continuité de la stabilité de Mageia 9 : le cycle de publication est là pour l’avérer, il y aura des pleurs, des cris et de grandes joies à réussir à faire fonctionner au mieux vos logiciels de prédilection.

Sommaire

Pour cette dépêche, le parti pris est de privilégier les annonces en français. Pour autant, le suivi effectif est à faire en anglais (ensuite décliné au besoin en français).

Quelques sujets pris en compte pour Mageia 10 :

  • choix du noyau Linux 6.18.x qui est une version LTS
  • live ISO 64 bits en 3 versions : KDE, GNOME et XFCE
  • conservation d’une version 32 bits (i686 et non plus i586), nécessitant des tests et une définition du périmètre, un live ISO basé sur XFCE
  • Wayland par défaut pour GNOME, éventuellement (à tester) pour Plasma KDE et autres environnements le proposant, marquant la résorption de Xorg lorsque possible ; plusieurs compositeurs Wayland pour LXQt sont intégrés (Labwc, niri, hyprland, sway)
  • bon fonctionnement de l’infrastructure de mise à jour via URPMI, basé sur RPM ou DNF
  • Peaufinement de l’intégration des pilotes libres de GPU pour Intel et AMD ; pour les pilotes nVidia ça va être plus compliqué :/
  • des mises à jour de vos logiciels préférés (n’hésitez pas à les préciser en commentaire)

Voici les différents cycles et les choix envisageables restant à chaque étape.

Cycle alpha : reprise de publication

Objectif : stabilisation du périmètre envisagé, identification des montées de version de logiciels restant à faire lors du cycle de publication.

Cela permet d’avoir des premiers ISO installables, et de revoir les plannings respectifs de ce qui est à intégrer : des langages (Rust, Ruby…), des logiciels (FreeCAD 1.1 en février donc plutôt lors de la bêta…).

Premières personnes à tester généralement issues de Cauldron—la version de développement en rolling-release—dont l’installation a pour objectif d’avérer la cohérence de l’installation et d'identifier sur le bugzilla les bogues bloquants ce qui en permet le suivi lors de chacun des cycles. Une version plus jolie des bogues bloquants est disponible, même s’ils restent à corriger ;-)

Les arborescences de dépôt 10 sont créées sur les miroirs, pour permettre de gérer l’ajout de nouveaux miroirs au fur et à mesure. Pendant tout le cycle de publication, le fonctionnement est similaire à ce qui se passe en cauldron : l’arborescence release/ reçoit les mises à jour de paquets, rien dans updates/.
Le changement des dépôts de cauldron à 10 est nécessaire pour ne pas rester avec la version de développement une fois Mageia 10 officiellement publiée ; une réinstallation reste préconisée pour ne pas avoir de reliquat des bogues corrigés lors du cycle de publication (même si enlever les différentes versions de noyaux et de bibliothèques permet de faire un 1er ménage, il peut y avoir des reliquats de configuration intermédiaire qui perdurent).

Cycle bêta : consolidation des tests et des choix pour la version à publier

Objectif : stabilisation des versions de logiciels envisagées, identification des correctifs à l’installeur.

Lancement du concours de visuels pour fonds d’écrans de Mageia 10, icônes et économiseurs : du 30 janvier 2026 au 25 février 2026. C’est la bêta2 qui vous fera découvrir la nouvelle apparence retenue pour Mageia 10.

Les pilotes nvidia posant des problèmes récurrents, il est envisagé de ne pas proposer leur intégration aux ISO (ils seraient à installer par la suite). Les tests sont les bienvenus. La version nvidia470 peut encore être configurée après installation initiale : elle est conservée pour les anciennes cartes graphiques—même si elle n’est plus maintenue tandis que la version 390 est obsolète et ne fonctionne plus avec les nouveaux noyaux Linux—et les versions nvidia580 et nvidia590 sont proposées (paquets nvidia-current_all et nvidia-newfeature-all permettant l’ajout des modules dkms), ainsi que le pilote ne fonctionnant qu’à partir des versions de cartes RTX. C’est le pilote nouveau qui est utilisé par défaut lors de l’installation initiale.

Les pilotes graphiques libres de AMD et Intel ont bien sûr aussi été mis à jour, ils sont disponibles directement dans les ISO live d’installation.

Les tests pour Plasma KDE avec la gestion par Wayland permettront d’identifier l’opportunité de proposer Wayland par défaut, le choix alternatif de Xorg restant disponible.

L’utilisation de clé USB persistante (fonctionnalité apparue avec Mageia 7) pourrait permettre d’avoir sur soi une clé d’installation live à jour et bénéficiant des derniers correctifs : démarrage avec clé USB live sur PC à installer, premiers diagnostics de bon fonctionnement du matériel sans installation—utilisation de la partition persistante pour prendre des notes—  afin de lancer l’installation dans les meilleures conditions, bénéficiant des correctifs de l’installeur notamment.

Par exemple, selon la date de publication de FreeCAD 1.1—prévue initialement courant février 2026—il pourrait être disponible dans les dépôts de paquet de Mageia 10 (pas sur les ISO, il n’y a déjà plus beaucoup de place :D).

Cycle version candidate : finalisation

Objectif : pré-version de la version finale, à publier « quand c’est prêt »

C’est l’occasion de finaliser les différentes documentations de Mageia 10.
Les errata ne conservent que ce qui n’a pas pu être corrigé avant publication et nécessitant une intervention manuelle, ils seront tenus à jour après publication pour les cas spécifiques découverts après coup lors d’une utilisation plus large de la distribution.
Les Notes de version ne vont plus évoluer beaucoup, permettant de stabiliser les traductions dans d’autres langues que l’anglais qui reste la référence.

Version finale

Les miroirs pour les paquets peuvent être mis à jour avec la version 10 : l’arborescence release/ ne va plus évoluer et les mises à jour de paquets arrivent dans updates/.

Peaufinement des visuels retenus pour la version 10.

La notification pour proposer de monter automatiquement de version de distribution à partir de Mageia 9 interviendra un peu de temps après la sortie de la version finale : le temps de finir de les mises à jour pour clore les bogues non encore corrigés pour la version finale.

Différences de fonctionnement entre version stable et le cycle de publication.

Le cycle de publication s’appuie sur Cauldron, la version en développement continu ou rolling-release :

  • il n’y a pas d’updates/ : les paquets sont directement remplacés dans release/
  • un corollaire est que lors d’une mise à jour d’un ensemble de paquets (correction), les miroirs ne seront pas forcément complètement à jour, ce qui peut demander une relance de urpmi --auto-update pour mise à jour complète : en cas d’échec temporaire, une relance plus tard est nécessaire
  • ce genre de désynchronisation arrive peu souvent en version stable, un peu plus souvent en Cauldron—ce qui est normal (cela se fait particulièrement sentir lors d’une reconstruction en masse) ;-)

S’impliquer pour Mageia 10

À vous de décider ce que vous souhaitez faire ;-) En comprenant que c’est une version en évolution—certaines choses ne fonctionneront pas—et certaines pourront être corrigées pour la version finale (ou peu après :D). De quoi se mettre le pied à l’étrier pour la version suivante : nouveaux logiciels à (faire) empaqueter, nouvelles versions à prendre en compte…
C’est l’occasion de s’astreindre à lancer certaines applications à partir d’un terminal pour récupérer le maximum de logs possibles, ou d’apprendre à diagnostiquer une configuration spécifique causant des soucis—idéalement pour travailler en amont (upstream) pour faire prendre en compte des correctifs et améliorations.

Vous pouvez vous coordonner en français auprès de nos collègues de MLO pour effectuer au mieux vos remontées d’information.

Rien que les tests permettent de bénéficier de versions actualisées par rapport à Mageia 9 et remonter des bugs restant dans l’intégration de vos logiciels de prédilection à l’environnement de bureau de votre choix. Il y a aussi beaucoup de traductions à effectuer.

C’est l’opportunité de (re-)lire les documentations et les actualiser, notamment les nouvelles fonctionnalités.

Exemples d’utilisations

Je vous laisse ajouter des cas d’utilisation qui vous seraient spécifiques en commentaires.
J’ai la chance de participer à un fablab qui me donne accès à divers matériels pour tester :

  • EeePC ne fonctionnant pas en x86_64 (donc i686 maintenant), netbooks hybrides (tablette tactile + clavier détachable) limités à 2 Go de RAM et un UEFI 32 bits exotique même quand le processeur gère le x86_64
  • (très) vieux portables et ordis—pour la plupart des gens, vieux = plus de 5 ans—là, c’est plutôt (l’ami de Mickey<) de la période 2008-2014 : des MacBook Pro, des iMac, plein de core2duo / Athlon (ça c’est du x86_64 au moins) ou cartes nvidia déclarées obsolètes (des quadro à l’époque réputées de qualité professionnelle, on voit ce que ça veut dire pour nvidia… :/)
  • (très) vieux périphériques : gamepad Sidewinder, volant MT Logic wheel pour supertuxkart avec connectique broche DA-15 jaune (si vous avez d’autres périphériques—préférentiellement en USB—je suis preneur _o/ et, oui, c’est pas loin de Paris…)
  • quelques Raspberry Pi et assimilés—donc architecture ARM—mais ce n’est pas l’axe principalement retenu pour Mageia 10 :/ et pour le coup, Debian reste une valeur sûre pour la diversité des logiciels disponibles, même si des travaux communs avec le projet Fedora permettent de se tenir à niveau ;-)

Et bien sûr, des logiciels classiques dans un fablab qui fonctionnent bien (plutôt en flatpak) : Cura et Bambustudio pour l’impression 3D, IDE Scratch pour robots Thymio… et Inkscape / FreeCAD / KiCAD sur du matériel un peu plus récent et moins contraint en ressources ;-)

Si vous utilisez des window managers spécifiques, cela m’intéresse d’avoir des retours aussi (enlightenment, LXQt, WindowMaker… autres ?), Mageia proposant des installations cohérentes (intégration environnement, logiciels…) via les méta-paquets task- qui permettent d’installer un ensemble de dépendances automatiquement.

Bons tests _o/

Commentaires : voir le flux Atom ouvrir dans le navigateur

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

J'ai mis un proxy entre claude et Internet

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

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

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

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

Sommaire

Cher journal,

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

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

Le constat

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

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

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

Greywall et greyproxy

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

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

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

Concrètement, ça donne :

greywall -- claude

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

Ce que j'ai observé

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

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

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

Pourquoi ça compte

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

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

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

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

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

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

Et après : vers un proxy sémantique

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

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

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

Pour essayer

Installation rapide :

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

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

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

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

La question

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

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

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

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Physiocab : un logiciel libre de gestion pour kinésithérapeutes
    Physiocab est un logiciel libre de gestion de cabinet de kinésithérapie, développé sous licence Affero GPL 3.0 et hébergé sur Codeberg. Le projet est porté par la société Allium SAS, dans le cadre de la plateforme communautaire Kalinka, dédiée aux kinésithérapeutes francophones. Le projet vient de passer en beta publique (v0.9) et cherche des testeurs et contributeurs. Pourquoi un logiciel libre pour les kinés ? Le secteur de la santé libérale souffre d'une offre logicielle dominée par des sol

Physiocab : un logiciel libre de gestion pour kinésithérapeutes

Physiocab est un logiciel libre de gestion de cabinet de kinésithérapie, développé sous licence Affero GPL 3.0 et hébergé sur Codeberg. Le projet est porté par la société Allium SAS, dans le cadre de la plateforme communautaire Kalinka, dédiée aux kinésithérapeutes francophones.

Le projet vient de passer en beta publique (v0.9) et cherche des testeurs et contributeurs.

Pourquoi un logiciel libre pour les kinés ? Le secteur de la santé libérale souffre d'une offre logicielle dominée par des solutions propriétaires onéreuses, souvent opaques sur le traitement des données de santé. Physiocab propose une alternative : un code auditable, des données stockées localement sous la responsabilité du praticien.

Fonctionnalités

La beta couvre déjà un large périmètre fonctionnel :

  • Planning hebdomadaire en drag & drop, avec export PDF et gestion des semaines exceptionnelles, particulièrement orienté vers les kinés intervenant en multi-établissements.
  • Bilans Diagnostiques Kinésithérapiques (BDK) avec tests standardisés (TUG, Tinetti, Handgrip, EVA, évaluation du risque de chute…), export de PDF et historique comparatif.
  • Suivi des séances avec de multiples exercices structurés (équilibre, force, endurance, mobilisation), chronométrage automatique et calcul de progression.
  • Application tablette en PWA : fonctionne hors connexion grâce à un Service Worker, s'installe sans passer par un store, interface optimisée tactile.

Stack technique

Backend : Python 3.10+
Base de données : PostgreSQL 12+
Frontend tablette : PWA (Progressive Web App)

L'application est multi-plateforme côté client (Windows, macOS, Linux, iOS, Android). La communication entre l'appli de bureau et l'appli PWA se fait de manière directe via PeerJs. Cette méthode ne nécessite pas de préparation contraignante comme l'ouverture de ports.

Les données sont stockées localement, ce qui implique que le praticien reste maître de ses sauvegardes et de sa conformité RGPD.

Le logiciel a été testé par un kinésithérapeute en situation réelle plusieurs jours d'affilée.

Modèle économique

L'utilisation est gratuite, sans limite dans le temps et sans frais cachés, la licence Affero GPL 3.0 en étant la garantie. Un support payant sur devis est proposé pour les praticiens souhaitant une installation assistée, une formation à distance, des développements sur mesure ou un audit de sécurité.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Dernier numéro de la gazette de l'April, le Lama déchaîné
    Voilà c'est fini… Aujourd'hui est paru le dernier numéro du Lama déchainé, la gazette hebdomadaire de l'April. Comme promis, vous y trouverez plusieurs cadeaux, le chiffre 42, un secret de polichinelle, et, comme d'habitude, un super dessin de Gee et des mots croisés. Ce numéro bonus est centré sur l'April, car il reste moins d'une semaine pour (enfin) adhérer ou faire un don pour soutenir cette association indispensable à l'écosystème du Libre. Comme annoncé, notre Lama déchaîné risque gros

Dernier numéro de la gazette de l'April, le Lama déchaîné

25 décembre 2025 à 09:42

Voilà c'est fini… Aujourd'hui est paru le dernier numéro du Lama déchainé, la gazette hebdomadaire de l'April. Comme promis, vous y trouverez plusieurs cadeaux, le chiffre 42, un secret de polichinelle, et, comme d'habitude, un super dessin de Gee et des mots croisés.

Ce numéro bonus est centré sur l'April, car il reste moins d'une semaine pour (enfin) adhérer ou faire un don pour soutenir cette association indispensable à l'écosystème du Libre.

Lama de Noël

Comme annoncé, notre Lama déchaîné risque gros si les 30 000€ ne sont pas atteints, vous retrouverez dans ce numéro les pires "sévices" qui lui sont réservés. Nous vous laissons découvrir la liste fournie. Et si vous avez des idées…

Notre édito est consacré à ce que nous avons l'intention de faire en 2026, et y a du boulot!

Parlez-en autour de vous, relayez la campagne, faites adhérer ou donner vos proches.

Plus que sept jours pour passer à l'action. Tic tac tic tac.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Rencontres Educalibre à Bruxelles les 4, 5, 6, 7 et 8 juillet 2026 à Bruxelles
    Educalibre est une conférence consacrée aux biens communs, aux ressources pédagogiques libres, à l’autonomie stratégique et au logiciel libre principalement à l’école et dans le secteur public, mais bien sûr aussi dans toutes sociétés. Elle se profile dans l’exacte suite des RMLL, les Rencontres mondiales des logiciels libres, dont l’édition bruxelloise s’est tenue dans les locaux de l’Université libre de Bruxelles et de Educode, la conférence sur la technologie dans l’éducation tenue fin 2018

Rencontres Educalibre à Bruxelles les 4, 5, 6, 7 et 8 juillet 2026 à Bruxelles

Educalibre est une conférence consacrée aux biens communs, aux ressources pédagogiques libres, à l’autonomie stratégique et au logiciel libre principalement à l’école et dans le secteur public, mais bien sûr aussi dans toutes sociétés.

Elle se profile dans l’exacte suite des RMLL, les Rencontres mondiales des logiciels libres, dont l’édition bruxelloise s’est tenue dans les locaux de l’Université libre de Bruxelles et de Educode, la conférence sur la technologie dans l’éducation tenue fin 2018 à Bozar, les samedi 4, dimanche 5 et lundi 6 juillet 2026.

Cette conférence, d’abord communautaire et festive, est gratuite pour toutes les personnes impliquées dans l’enseignement (sauf les vendeurs de manuels, contenus et applications qui ne sont pas libres ou proposés des associations sans but lucratif).

Elle se veut une occasion de se retrouver dans un cadre humain festif à la fin de l’année scolaire, juste avant d’entamer des vacances bien méritées, et ce pour tous les développeurs de logiciels qui pourraient être utilisés à l’école ou dans un cadre de formation, pour tous les enseignants, ou pour toute autre personne intéressée par ces sujets.

Bien sûr chacun doit payer ses logements, repas et le cocktail dînatoire lundi 6 juillet 2026 à 19h dans les superbes salles gothique et de mariage de l'hôtel de ville sur la superbe Grand-Place de Bruxelles

Un préprogramme et des thèmes ainsi que les moyens de participer à l’organisation sont indiqués dans le wiki qu’est educalibre.eu. Nous vous y convions et vous y attendons.

Nous avons déjà la confirmation de la réservation des locaux du cocktail, offerts par la Ville de Bruxelles, et une option pour les locaux bien connus de tous ceux qui fréquentent le FOSDEM, la plus importante conférence des développeurs de logiciels libres en Europe, qui se tient à l’ULB tous les premiers weekends de février depuis 2000.

Cette conférence sera vraisemblablement aussi en partie organisée au Parlement européen ou à la Fondation universitaire proche.

Elle traitera aussi de la difficile question de l’autonomie stratégique, un vocable proposé par Tristan Nitot pour parler de souveraineté numérique, dans toutes ses formes et questions, et des moyens de la préserver, en montrant aussi concrètement comment procéder, avec des expositions de solutions concrètes par des prestataires.

Le cocktail dînatoire aura lundi 6 juillet à 19h, donc à la fin de educalibre. Pour la participation, limitée à 300 personnes ce sera « premier inscrit premier servi ». Mais bien sûr, les participants auront amplement l’occasion de se rencontrer entre eux et avec leurs clients/utilisateurs/clients potentiels lors des pauses café et repas qui seront très bien aussi.

Ces conférences sont initiées par Nicolas Pettiaux et François Pellegrini, deux figures bien connues du monde du libre francophone et européen depuis 2000. Elles sont dès maintenant coorganisées avec Jean-Yves Jeannas, Georges Khaznadar et Serge Smeesters. François est l’initiateur des RMLL à Bordeaux, Georges est un professeur de chimie et de physique très impliqué dans Debian et les RMLL depuis toujours, Jean-Yves est enseignant à l’Université de Lille, très impliqué dans les communs numériques, les standards ouverts et l’AFUL, Serge est un auteur régulier sur Linuxfr et un enseignant avec des logiciels libres qu’il contribue à développer, et Nicolas a participé dès le début à l’organisation du Osdem devenu Fosdem. Nicolas et François sont associés à des universités, respectivement l’Université libre de Bruxelles et l’Université de Bordeaux, et sont aussi actifs dans de nombreuses associations.

Educalibre est organisée par l’association belge Educode avec le soutien actif de l'Université libre de Bruxelles

Toute personne intéressée par l’organisation (je fais ici directement appel à toutes celles et ceux qui ont participé en leurs temps aux RMLL) ou le soutien à de telles conférences est priée de se manifester en écrivant à educalibre@educode.be en mentionnant son attachement professionnel, s’il y en a un, la raison de son intérêt et sa motivation ainsi que ses compétences.

Nous vous remercions déjà pour toutes vos idées et suggestions pour ces deux conférences.

La participation à educalibre sera gratuite comme elle l’était aux RMLL, et les participants seront invités à soutenir financièrement comme ils peuvent, comme pour le FOSDEM, et à acheter des goodies pour la soutenir.

Ils pourront acheter à prix coûtant les repas organisés (petits-déjeuners, déjeuners et repas du soir) organisés dans les lieux de la conférence pour favoriser les rencontres.

Les entreprises et institutions sont invitées à soutenir financièrement la conférence par exemple par des dons ou l’achat de stands et espaces de sponsoring comme pour les rencontres de la Linux Foundation.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Interminable liste de terminaux
    Ah, la ligne de pêche Maginot commande ! Que ce soit pour gérer ses fichiers, récupérer des commits, lancer une compilation, se connecter à un serveur, redémarrer un service, consulter les logs, voire contrôler la musique, afficher des images, cette interface reste en 2025 exceptionnellement boomer rapide et même parfois confortable. Sans compter que le terminal est l'endroit où lancer des applications dédiées, pour lire ses mails ou un million d'autres choses. Bref rappel avant se lancer dans

Interminable liste de terminaux

Ah, la ligne de pêche Maginot commande ! Que ce soit pour gérer ses fichiers, récupérer des commits, lancer une compilation, se connecter à un serveur, redémarrer un service, consulter les logs, voire contrôler la musique, afficher des images, cette interface reste en 2025 exceptionnellement boomer rapide et même parfois confortable.

Sans compter que le terminal est l'endroit où lancer des applications dédiées, pour lire ses mails ou un million d'autres choses.

Bref rappel avant se lancer dans de longues comparaisons

  • TTY vient de teletypewriter. Si vous tapez (Xorg comme Wayland) Control + Alt + F3 par exemple, vous vous retrouverez devant une invite de commande.
  • pts/pty : quand vous ouvrez un terminal

L'invite de commande pourra bénéficier d'un shell personnalisé. Le bureau permettra l'usage d'un terminal.

    Sommaire

    Le jeu de les shells

    Le shell est un interpréteur de commande. On peut simplement lancer une commande pour consulter l'état du système (top, ps), déplacer un fichier (mv), … Ou combiner des commandes, écrire des scripts basés sur des conditions et des variables, … Donc comme l'explicite le manuel GNU, un shell unix est la fois un interpréteur de commande et un langage de programmation.

    La plupart des distributions utilisent par défaut "Bash", mais il est possible de changer de shell, par exemple interactivement en utilisant la commande chsh ("change shell"), ou en modifiant les paramètres d'un terminal en particulier, ou d'un multiplexeur, ou encore plus globalement en modifiant le shell par défaut d'un user (faites un peu attention dans ce cas — les shells ne sont pas tous compatibles, ne tombez pas !).

    Les shells tombent

    Les scripts précisent aussi quel shell invoquer… Si je prends un tuto sur un shell au hasard, voici ce que je vais trouver

    #!/bin/bash
    # This script will take an animated GIF and delete every other frame
    # Accepts two parameters: input file and output file
    # Usage: ./<scriptfilename> input.gif output.gif

    Attention : ce script référence explicitement /bin . Pas 100% sûr que bash y soit installé. Une solution peut être d'utiliser env.

    #!/usr/bin/env bash

    Hormis interpréter les commandes tapées, le shell affiche également un prompt invitant à taper une commande. Quelque chose comme cela :

    [goat@arch:~]$ 
    

    Pour la partie prompt, certains shells vont autoriser un peu de paramétrage, ou l'on peut même installer des plugins pour enrichir les possibilités, comme avec powerline ou même le liquid prompt présenté ici même par son auteur Dolmden.

    On peut aussi trouver un prompt comme starship qui est utilisable avec les différents shells.

    De la préhistoire au Bash

    Pour l'histoire, le premier shell Unix date de 1971, puis le Bourne Shell (sh), du nom de son auteur, apparait en 1977. Beaucoup de fonctionnalités sont déjà présentes : il est scriptable (on peut définir un script avec des conditions dont la si laide esac, définir des boucles, …), les processus peuvent être contrôlés, il est possible de définir des alias, …

    Bourne Shell implémente la norme POSIX que d'autres shells respectent. La licence du Bourne Shell est débatue (avec une certaine vigueur sur Wikipédia!) , en tout cas son code est ici.

    KORN shell n'était, au départ, pas open source - le code n'est libéré que dans les années 2000. Korn Shell implémente les fonctionnalités du Bourne Shell mais ajoutera d'autres éléments, comme des raccourcis vi/emacs, ou comme les tableaux

    $ typeset -A age
    $ age[bob]=42
    $ age[alice]=31
    $ print ${age[bob]}
    42
    

    GNU BASH : /bin/bash

    GNU Bash

    B.A.S.H. = Bourne Again Shell (superbe jeu de mots avec Born Again Shell). Bash implémente la norme POSIX… et un peu plus.

    GNU bash connait une première release en 1989. Il reprendra à son compte des fonctionnalités trouvées jusqu'ici dans de précédents shells, y compris Korn Shell. Bash reste le shell interactif par défaut sur de nombreuses distributions. Il fut le shell sous MacOS.

    Anecdote - quel est le plus gros programme bash que vous connaissiez ? nb, qui propose de gérer vos notes en mode texte (org, markdown, etc), est principalement composé d'un script .sh de … 26736 lignes. Je vous laisse partager vos trouvailles en commentaire !

    DASH : le Debian Almquist shell est renommé ainsi en 1997. Debian l'adopte par défaut pour les scripts, tandis que le shell interactif des utilisateurs reste bash. Ubuntu y passe par défaut sur la 6.10. Dash est léger et performant. Moins de dépendances égal plus de sécurité.

    ZSH

    ZSH ZSH sort en 1990. Toujours compatible avec la norme POSIX, Zsh va améliorer de bien pratiques fonctionnalités d'auto-complétion : appuyez sur <TAB> et Zsh complète pour vous.

    Mais bien plus largement, Zsh va atteindre le paroxysme en terme de fonctionnalités. Tout existe dans Zsh.

    Zsh est connu pour proposer de très nombreuses possibilités de configuration. Ses plugins se comptent par centaine — y compris plusieurs gestionnaires de plugins… Mais un outil très utilisé pour le configurer sort du lot : Oh my zsh, qui permet de gérer plus de 300 plugins ainsi que de nombreux thèmes.

    FISH

    Fish

    Fish pour "Friendly Interactive Shell", date de 2005. C'est un shell non POSIX - certaines fonctionnalités ne seront pas compatibles. Un script bash ne marchera pas forcément.

    Ce shell se veut demander peu de configuration - il est prêt à l'emploi. Choix appréciable quand on peut déjà passer tant de temps à configurer d'autres choses (distro, bureaux, nano, terminaux..)  !

    Il suffit de l'installer pour avoir

    • une coloration syntaxique indiquant quelle commande est valide
    • suggestions : en tapant, on obtient des candidats que l'on peut auto-compléter

    Fish est également scriptable et se veut proposer un syntaxe plus saine. À vous de tester (mais vous ne codez qu'en Rust, n'est-ce pas ?)

    Le gros point de Fish à mon sens, c'est de proposer une configuration par défaut déjà utilisable, comme le fait de se baser sur les pages man ainsi que sur l'historique pour proposer l'auto-complétion. Oubliez les heures passées à configurer - je ne sais pas si Fish a le plus de chevaux dans le moteur, mais avec lui vous êtes déjà prêts à partir.

    Petite fonctionnalité sympa, taper fish_config ouvre une page ouaibe. On peut alors prévisualiser les thèmes, personnaliser le prompt, visualiser les fonctions et variables, consulter l'historique et les raccourcis claviers. Fish a un mode vi.

    Fish a été réécrit en Rust entre 2022 et 2024.

    Ravissant multiplex, 200 mètres carrés

    Gnu Screen

    Ok donc nous avons un shell à choisir, y compris le prompt et il faudra le lancer dans un terminal, mais avant ça, si on avait un gestionnaire de fenêtre dans le gestionnaire de fenêtre ? C'est bien comme cela qu'est présenté GNU Screen, qui gère des fenêtres, typiquement de terminaux. C'est un multiplexeur, en français : la possibilité d'ouvrir plusieurs terminaux dans un seul terminal. GNU Screen sait lister les terminaux ouverts, passer de l'un à l'autre, en tuer… Comme souvent, le wiki arch détaille bien notre affaire concernant screen. Mais GNU Screen est un vieux de la vieille, qui date de 1987.

    Tmux

    Plus souvent cité de nos jours, Tmux (2007) propose des raccourcis à la Emacs ou à la Vim, un menu graphique, des splits verticaux ou horizontaux.

    Zellij

    Il existe d'autres multiplexeurs. On peut citer par ex. Zellij, orienté développeurs, qui affiche une barre de statut, peut afficher les raccourcis claviers…

    Envolez-vous vers un nouveau terminal

    Le choix d'un terminal pourra définir l'apparence de votre interface, comment vous gérez le multi-fenêtre et/ou multi-onglet, la capacité à rechercher, copier-coller, les raccourcis clavier, peut être même comment accéder aux emplacements, vous connecter en ssh.

    Certains terminaux proposent un mode inspiré de Guake (première release 2007), lui même inspiré du terminal dans Quake : le terminal est toujours ouvert et dispo, mais caché et l'appui d'un raccourci clavier le fera apparaître. Le temps de taper trois commandes et le même raccourci le fera disparaître. À voir ce qui se fait encore sous Wayland, je vois par ex. qu'il y a encore une extension GNOME.

    La console sur le bureau

    Première piste : tout simplement utiliser la terminal qui vient avec son bureau, si l'on en utilise un. Évidemment le premier avantage sera une bonne intégration, mais en pratique ?

    Nous verrons aussi plus bas certains terminaux qui sont le terminal par défaut de gestionnaires de fenêtre, mais il s'agit simplement d'un choix par défaut et pas d'une affiliation ni d'une intégration particulière, donc pas de raison de les mentionner ici.

    Console (GNOME)

    Le terminal par défaut a changé sous GNOME 42 (euh bah oui c'était y'a un moment), pour devenir GNOME Console (anciennement Kings Cross Station d'où kgx — j'ai cherché l’exécutable un moment…). Assez peu de fonctions particulières mais : devient rouge lorsqu'on est connecté en root ou violet en ssh, envoie une notif quand une longue commande se termine, sympa. Un bouton de recherche un peu étonnant peut s'avérer pratique. Clairement la logique est d'afficher peu de boutons, peu de choix, et d'investir sur des options par défaut qui fonctionnent. Je ne vais pas retenir Console pour mon usage mais je trouve qu'effectivement c'est un terminal élégant.

    Pour changer le shell de Console, il faudra passer par l'éditeur dconf et modifier l'option org.gnome.Console.shell.

    Certaines distributions ont préféré maintenir gnome-terminal, plus complet, mais gnome-terminal est resté Gtk3 (alors que kgx est bien Gtk4).

    Petite note sur kgx et gnome-terminal : ces terminaux sont basés sur la libvte dont dépendent d'autres terminaux GTK. Voici quelques exemple cités par une page du wiki gnome :

    On pourrait y ajouter Lxterminal (merci à Impromptux).

    Konsole

    Konsole

    Le choix logique pour le bureau KDE. En termes de fonctionnalités, c'est l'artillerie lourde. Multi-profils, signets, multiplexeur, prévisualisation d'images. Konsole est intégrée dans plusieurs applications KDE.

    Pour changer le shell de Konsole, vous pouvez passer par le menu Settings > Configure Konsole > Profiles .

    C'est le moment de mentionner Qtermwidget : ce widget fut originellement basé sur Konsole et servit à développer Qterminal.

    xfce-terminal

    Terminal par défaut du bureau Xfce. Il dépend et hérite de libvte. Il est en Gtk3.

    • Permet plusieurs onglets
    • Intégration avec un gestionnaire de fichiers (ouverture dans le répertoire courant du terminal)
    • Prévention de collage dangereux : quand ça contient un retour chariot, ouvre une popup qui permet d’inspecter et modifier le contenu dangereux.
    • Permet d’envoyer un signal au processus en cours
    • Permet d’avoir une console rapide à la Guake
    • Permet de colorer les onglets manuellement.

    Il est possible de changer le shell dans les préférences.

    Terminology

    Terminology

    Ce terminal sort en 2013, il fait partie du bureau Enlightenment Je pense que c'est le premier terminal à pouvoir afficher des images. Il est possible d'avoir des informations en survolant une URL. Une barre de progression s'affiche durant l’exécution de commandes. Les performances sont au rendez-vous. (Subjectif - serait-ce tout simplement la meilleure appli e17?)

    Emacs et (Neo)Vim

    Mais plutôt que d'utiliser le terminal intégré à son environnement de bureau, pourquoi ne pas utiliser directement celui intégré à son éditeur de texte? Un bon éditeur de texte en effet a forcément son bon terminal. Même Vim? Et oui. C'est donc une solution de lancer le terminal depuis l'éditeur de texte, par exemple pour reproduire les fonctionnalité d'une IME vivre sa vie entière en mode texte.

    Emacs

    Démarrons tout de même par Emacs, où la prise en charge du terminal est plus ancienne.

    Emacs a… 4 terminaux, pourquoi faire simple. 4 terminaux ? Non pas vraiment : 2 shell et 2 terminaux. Il peut y en avoir plus.
    En fait, puisqu'on peut, malgré la rumeur, bel et bien éditer du texte dans emacs, pourquoi ne pas gérer ses commandes au même endroit ? On peut même s'amuser à gérer ses fichiers dans dired, ses processus, finalement un peu tout l'aspect système.

    Mastering Emacs le développe mieux que moi mais vous aurez donc plusieurs possibilités sous Emacs :

    2 SHELLS

    • eshell, le plus emacsien des 2 : un shell 100% implémenté en elisp (!!!). On peut faire beaucoup de emacs dedans , mais tout ne fonctionnera pas. Ne lancez pas journalctl dedans ^^
    • shell. Même chose, ne lancez pas journalctl

    2 TERMINAUX

    • term / ansi-term. Cette fois c'est vraiment un terminal, mais… lent.
    • vterm. Ok cette fois c'est vraiment un terminal, et ça utilise une bibliothèque en C derrière, donc ouf un vrai terminal Emacs existe bel et bien. Attention vterm a besoin d'une bibliothèque.

    Oui je pense qu'il y a vraiment des utilisateurs du terminal sous Emacs. Et il est possible de trouver de petits benchmarks sur les réseaux comme par exemple reddit.

    Vim

    Qui a dit que vim n'était pas bloated et ne pouvait pas gérer cela? (À sa défense vim ne gère pas encore l'email.. ) Vim prend en charge le terminal depuis la version 8.1. Pour changer le shell dans vim, ajouter cette commande dans le fichier de config

    :set shell=/usr/bin/zsh
    

    Les indies

    Pourquoi utiliser le terminal de son bureau, ou de son éditeur de texte, alors que l'on peut utiliser un million d'autres ? Bienvenue dans la jungle. Ne m'en voulez pas si votre petit favori n'est pas listé ici, mais rajoutez sa description en commentaire - il a existé de bien trop nombreux concurrents, et même en se limitant aux projets actifs la liste est bien trop longue. La liste ici pourrait compléter cette dépêche.

    Je rappelle que sont listés ici les terminaux qui sont proposés par défaut sous certains gestionnaires de fenêtre, le parti pris étant que dans ce cas il n'y ait pas d'intégration particulière, contrairement par exemple au terminal KDE.

    Enfin la liste se veut à moitié lister les terminaux populaires actuels, à moitié lister quelques terminaux plus pour un intérêt historique, mais cette dépêche n'étant pas une thèse cette volonté sera assez peu rigoureuse.

    Blackbox

    Blackbox terminal n'est pas affilié à GNOME ni un terminal officiel mais est développé avec cet environnement en tête. Il utilise Gtk4.

    Ptyxis

    Là c'est un cas à part : pour reprendre sans recul le readme.md :

    A modern terminal emulator built for the container era.
    Seamlessly navigate between your host system and local containers like Podman,
    Toolbox, and Distrobox with intelligent detection and a beautiful, responsive
    GNOME interface.

    L'intérêt est donc d'intégrer les conteneurs de toutes sortes pour y accéder rapidement (et les définir rapidement).

    Ptyxis

    Il semblerait qu'il puisse devenir le terminal par défaut sous Ubuntu (25.10?).

    St

    La philosophie de st, dont la première release, 0.1, est de 2017, c'est de rester simple et léger - le point que son site discute, c'est le nombre de lignes de codes limité que devrait avoir un terminal. Son auteur serait fainéant ? Ce terminal sous licence MIT/X Consortium s'apparente à mon sens à un reliquat du passé : il tourne sur X et uniquement sur X (oui, oui je sais pour Xwayland). Néanmoins il m'a paru logique de le citer ici.

    Kitty

    Kitty a une place importante car il a légué quelque chose aux successeurs… Il implémente en effet des extensions venant étendre le protocole historique.

    Ce terminal tourne sous Python et requiert OpenGL. Malgré son âge (première release 2017), c'est le choix par défaut pour Hyprland.

    Kitty offre une tonne de raccourcis claviers, gère les onglets/fenêtres, peut afficher des images, sait afficher des notifications et bien d'autres choses. En terme de philosophie, il se veut orienté power-user.

    Alacritty

    Alacritty se veut un terminal simple et est écrit en Rust. Il est sortit en 2017. Alacritty respecte XDG en cherchant en priorité un fichier de config $XDG_CONFIG_HOME/alacritty/alacritty.toml.

    C'est le terminal par défaut pour au moins deux gestionnaires de fenêtre Wayland très différents l'un de l'autre : Wayfire et Niri.

    • vi mode : appuyez sur control + shift + space et vous passez dans le mode "normal" de vi (par opposition au mode insertion). Les touches au lieu de permettre de taper du texte, permettront alors de se déplacer, sélectionner du texte, le copier…
    • ctrl shift o pour afficher des "hint" sur les URL, ce qui permet de les activer en 1 touche
    • recherche normal (ctrl shift f ) , recherche vi
    • multi fenêtre (spawn new instance)
    • theme https://github.com/alacritty/alacritty-theme

    Pas d'onglet, pas de split — utiliser un multiplexeur au besoin.

    Foot

    Ce serait un peu le successeur de St, au sens où il est codé en C et les premières fonctionnalités mises en avant sont la légèreté et la performance, mais en natif Wayland. Pour autant Foot n'est pas avare sur certaines fonctionnalité. Sa première release est de 2019. C'est le terminal par défaut pour Sway, Dwl.

    Il faudra le configurer à l'aide d'un fichier texte, et foot respectant XDG, ce sera ici $XDG_CONFIG_HOME/foot/foot.ini. Foot propose pas mal de raccourcis claviers, dont le même Hint mode que Alacritty : taper Ctrl Shift O .

    Au cas où il ne serait pas assez léger, Foot propose un mode serveur.

    Wezterm

    De nouveau un terminal en Rust. Wezterm se veut complet, et cross-platform. Il affiche des images, gère les hyperliens, la connexion en SSH avec un client intégré, fait office de multiplexeur.

    Il se configure en Lua.

    Ghostty

    Ghostty

    Ghostty est sous licence MIT. LWN l'a présenté. Il s'agit d'une application récente, début en 2022, v1.0 fin 2024.

    Une barre gtk4 permet d'afficher les onglets, d'en créer un nouveau. Sympatique fonction, ghostty +list-keybinds --default montre toutes les options (et un raccourci permet d'éditer le fichier de config). On peut aussi lister les thèmes avec ghostty +list-themes.

    Peut afficher des gifs, comme Kitty.

    Ghostty se veut un compromis entre la vitesse, les fonctionnalités, l'interface, et cross-platform. Il se veut agréable sans avoir besoin de modifier le paramétrage par défaut. Et il est petit, le paquet Debian par exemple fait 113 Ko.

    Vous pouvez changer le shell sous Ghostty :

    ~/.config/ghostty/config:
    command = /usr/local/bin/fish --login --interactive
    
    

    De plus Ghostty intègre des fonctionnalités "Shell-integration".

    Rio

    (2022)
    https://github.com/raphamorim/rio
    vi mode, hyperlinks, images,

    Le shell peut être modifié dans la config, plusieurs exemples sont fournis

    [shell]
    program = "pwsh"
    args = ["-l"]

    Warp

    Alors là on bascule du côté obscur de l'IA !… et du proprio. Warp est d'abord une entreprise, qui a souhaité réimaginer un outil des développeurs - le terminal. Ce terminal, écrit en Rust, ne sera pas open source : https://github.com/warpdotdev/Warp/discussions/400

    À la première ouverture, Warp suggère d'ouvrir un compte « pour bénéficier de toutes les fonctionnalités ». Ensuite, on ne se trouve pas directement dans une console mais Warp propose plutôt d'ouvrir / cloner un projet. Un raccourci permet cependant de lancer une session normale…
    … Si ce n'est qu'outre des commandes, on peut taper des phrases ! En passant par Claude pour les interpréter… L'IA peut également suggérer des commandes en se basant sur votre historique. Tout ceci peut être désactivé dans les paramètres. Les fonctionnalités IA requièrent une connexion Internet.

    J'ai par exemple testé "Install Wave term from the internet". Warp a commencé par vérifier s'il y avait une commande de disponible "yay", mais cette commande n'était pas dispo sur mon système. Il a alors intelligemment testé d'autres gestionnaires de AUR et a trouvé que paru était installé. De là, il a découvert waveterm dans les dépôts AUR et m'a suggéré d'utiliser paru -S waveterm-bin (control+entrée pour valider, et gogogo). Une fois ces folies passées, on revient à une expérience normale où la commande se déroule (pensez à lire les AUR avant d'installer aveuglément !)

    Quand vous parcourez un projet, Warp peut indexer ces projets pour améliorer les suggestions.

    Au lieu d'utiliser votre clavier pour taper, Warp peut reconnaître votre voix. Outre des commandes ou des phrases, il est possible de commencer par un "/" pour taper une "slash command".

    Il y a également des fonctionnalités d'équipe, notamment une fonctionnalité de collaboration en temps réel. Certaines fonctionnalités sont payantes.

    Warp propose un certain nombre de fonctionnalités classiques : personnalisation du prompt, apparence, raccourcis claviers, …

    L'entreprise fournit un benchmark où Warp s'en sortirait aussi bien que Kitty ou Alacritty sur vtebench

    WaveTerm

    Waveterm est un peu la réponse open source à Warp (Apache 2.0).

    Quand on l'ouvre la première fois, c'est la foire ! à gauche, le panneau invite de commande qui occupe un tiers de l'écran.
    Tiers du milieu : en haut la consommation du CPU (hein?). Au milieu, un bout de page internet (hein?). En bas, un explorateur de projet. Tiers à droite : en haut, des raccourcis clavier qui s'affichent. Au milieu, un bout de doc sur Wave. En bas, une invite pour Wave IA. Bien sûr il s'agit d'une démo et il sera possible de personnaliser ce qui est visible au démarrage. Il est également possible lorsqu'on utilise un des "blocs" de le passer en mode "pleine fenêtre" puis le réduire par la suite.

    Bon, testons l'invite IA en demandant d'installer… Warp! Il commence par m'expliquer les différentes méthodes d'install en fonction de l'OS (ah ! il n'a pas détecté…). J'explique que j'utilise Arch et il me dit d'utiliser un AUR helper ou de cloner le dépôt du AUR. Mais il ne détecte pas si j'ai paru ou yay ou autre.

    On peut utiliser d'autres modules IA. Wave inclut également un explorateur de fichiers.
    Les paramètres se gèrent bloc par bloc - on paramètre d'un côté les blocs que l'on souhaite au démarrage, de l'autre pour un bloc donnée, par exemple les préférences.

    3. Liens

    Norme POSIX sur le shell

    https://linuxfr.org/news/gameshell-apprendre-les-rudiments-du-shell-en-s-amusant

    Bref cours sur le shell

    Cours plus complet sur le Bourne Shell

    Revue de fish :

    Autre revue de Fish

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    • ✇LinuxFr.org : les dépêches
    • Sortie du noyau Linux 6.17
      Nous vous avons entendu. Les dépêches noyaux me manquent aussi. Et entre Google qui veut les attraper tous, sudo qui n’est plus sudo sûr que ça, des pays qui sortent d’Internet, les chats qu’on veut surveiller parce qu’ils ne miaulent pas droit et le rythme de travail pour bien vivre, il est temps de revenir aux fondamentaux. Alors sans plus attendre, quoi de neuf dans la 6.17 ? D’après Linus Torvalds lui-même, It's not exciting — ce n’est pas intéressant. Ce qui, pour lui, est un gage de qua

    Sortie du noyau Linux 6.17

    Nous vous avons entendu. Les dépêches noyaux me manquent aussi. Et entre Google qui veut les attraper tous, sudo qui n’est plus sudo sûr que ça, des pays qui sortent d’Internet, les chats qu’on veut surveiller parce qu’ils ne miaulent pas droit et le rythme de travail pour bien vivre, il est temps de revenir aux fondamentaux.

    Alors sans plus attendre, quoi de neuf dans la 6.17 ? D’après Linus Torvalds lui-même, It's not exciting — ce n’est pas intéressant. Ce qui, pour lui, est un gage de qualité. Le noyau Linux 6.17 a été officiellement publié le 28 septembre, après la RC7.

    Points marquants de la version

    • Des corrections de sécurité et de stabilité dans la pile Bluetooth (beaucoup de bugs de type use-after-free).
    • Des corrections pour les pilotes GPU et réseau (beaucoup de petites corrections).
    • Prise en charge de patch à la volée (live patching) sur ARM 64 bits.
    • Meilleur contrôle sur les atténuations de Spectre/x86.
    • Suppression officielle de la gestion des architectures monoprocesseur, (nous y reviendrons).
    • Introduction de nouveaux syscalls file_getattr() et file_setattr(), permettant la manipulation directe des attributs d’inodes via l’espace utilisateur.
    • Gestion du protocole DualPI2 pour la gestion de congestion TCP.

    Sommaire

    Architecture

    Résumé

    • Intégration et mise à jour de la prise en charge de nombreux SoC ARM, Intel, AMD et RISC-V, dont :
    • Ajout de nouveaux contrôleurs mémoire, avec prise en charge étendue de divers matériels industriels.
    • Pilotes GPU : beaucoup de patchs pour amdgpu, i915/xe (options de debug et prise en charge de nouveaux formats colorimétrique).
    • Les cartes Realtek 8851BU/8852BU sont désormais prises en compte sur le bus USB.
    • Suppression officielle de la gestion des architectures monoprocesseur.

    En détails

    La suppression de la gestion spécifique des architectures monoprocesseur dans Linux 6.17 concerne toutes les architectures (x86, ARM, RISC-V, MIPS, etc.) où le noyau pouvait jusqu’ici être compilé et exécuté en mode UP (pour Uni Processor), opposé au mode SMP (Symmetric MultiProcessing).

    Désormais, même les machines avec un seul cœur ou un seul processeur utiliseront des noyaux compilés avec gestion SMP activée. Cette modernisation simplifie le code de l’ordonnanceur (scheduler) et d’autres sous-systèmes internes du noyau, qui peuvent désormais partir du postulat que le système est au moins SMP, même si physiquement un seul cœur est présent. Cela permet un énorme nettoyage du code spécifique à cette fonctionnalité, et donc, à terme, une meilleure maintenance et une plus grande cohérence.

    Néanmoins, l’impact, même très léger et invisible sur beaucoup de systèmes modernes, est réel. Le coût mémoire et processeur (dû à la gestion des locks) va augmenter légèrement, et impactera plus fortement les systèmes embarqués très contraints.

    Pour les chiffres (et des explications), les tests effectués sur des systèmes monoprocesseurs avec un noyau SMP ont montré une baisse de performance de 5 %, et une augmentation de 0,3 % de la taille. Ingo Molnar, à l’initiative de ce changement, avait pointé le fait qu’il y avait, dans l’ordonnanceur actuel, 175 #ifdef dépendant de #CONFIG_SMP qui ont pu être nettoyés, et avec, plus de 1000 lignes de code supprimées.

    Systèmes de fichiers et stockage

    Résumé

    • Btrfs : la gestion de large folios est ajoutée (expérimental), tout comme des options étendues pour la défragmentation et la compression intelligente des extents. Les premiers tests de performance montrent un gain de 20 % pour la création de fichiers et diverses améliorations…
    • Ext4 : introduction du flag RWF_DONTCACHE permettant la purge automatique des données du cache après écriture, ce qui améliore certains workloads orientés I/O.
    • NFS : prise en charge des délégations d’écriture même en mode write-only, accélérant des cas d’usage précis.
    • Introduction de nouveaux syscalls file_getattr() et file_setattr(), permettant la manipulation directe des attributs d’inodes via l’espace utilisateur.
    • Bcachefs : Les relations entre le développeur de ce système de fichiers (Kent Overstreet) et les autres mainteneurs du noyau se sont largement dégradées. Plusieurs mainteneurs ont fait part de leur refus de travailler à l’avenir avec Kent ce qui a conduit Linus a ne plus accepter les demandes de mises à jour (pull requests). Bcachefs est donc figé dans cette version 6.17 du noyau (et il a été complètement retiré de la future version 6.18). Un module DKMS externe est maintenant disponible pour les utilisateurs voulant continuer à utiliser ce système de fichiers.

    En détails

    Pour ceux qui s’intéressent aux performances et comparatifs des différents systèmes de fichiers avec le kernel, Phoronix a testé ces FS sur ce noyau 6.17. Pas de comparatif avec les précédents noyaux, mais un comparatif entre les FS.

    Le flag RWF_DONTCACHE permet des opérations de lecture ou d’écriture passant par le cache mais où les données lues ou écrites ne sont pas conservées dans ce cache une fois l’opération terminée. Autrement dit, les données ne « polluent » pas le cache mémoire, ce qui est utile pour certains types d’I/O où l’on ne veut pas fatiguer le cache avec des données temporaires ou volumineuses qui ne seront pas réutilisées rapidement. Ce flag est une option pour les appels systèmes preadv2() et pwritev2()

        ret = pwritev2(fd, &iov, 1, 0, RWF_DONTCACHE);

    En ce qui concerne les délégations d’écriture, cela permet de réduire les appels réseaux (jusqu’à 90 % dans certains cas d’usages — rapport)

    Les syscalls file_getattr() et file_setattr() introduits dans Linux 6.16/6.17 permettent la manipulation directe des attributs d’inode depuis l’espace utilisateur, avec une interface plus simple et plus complète que les méthodes existantes.

    Réseau et connectivité

    Résumé

    • Plusieurs nouveaux flags et options : SO_INQ pour AF_UNIX, extension de la gestion de MSG_MORE pour les paquets TCP volumineux et application plus stricte de la fenêtre TCP.
    • Introduction de la prise en charge du protocole de congestion DualPI2 (RFC 9332) pour TCP/IP, notamment sur IPv6.
    • Nouveau sysctl force_forwarding sur IPv6 permettant l’activation du mode forwarding.
    • Remplacement progressif de la gestion des pages réseau par des descripteurs spécialisés (struct netmem_desc), préparant l’évolution vers les folios.

    En détails

    Le nouveau sysctl force_forwarding permet de forcer l’activation du forwarding indépendamment d’autres configurations potentiellement conflictuelles. (En particulier sur des profils limitatifs ou locaux)

        sudo sysctl -w net.ipv6.conf.all.force_forwarding=1

    Petits rappels sur les folios (aussi utilisés dans ce noyau pour Btrfs). Historiquement, le noyau Linux gère la mémoire en unités appelées « pages » (généralement 4K octets). Un folio est un regroupement logique de pages (souvent 2^N pages, comme 16 pages de 4K pour former un folio de 64K). Les folios permettent une gestion mémoire plus efficace, évitent les appels redondants liés aux pages individuelles et optimisent les copies. netmem_desc sert d’abstraction générique pour la mémoire réseau, et utilisant les folios, remplace progressivement le struct page d’origine.

    L’algorithme DualPI2 est un exemple d’algorithme de gestion active de file d’attente à double file couplée (AQM) spécifié dans la RFC 9332. Il sert de composant de base AQM au sein du cadre DualQ Coupled AQM conçu pour gérer deux files d’attente : une file « Classique » pour les contrôles de congestion compatibles Reno et une file « L4S » pour les contrôles de congestion Scalables. Vous trouverez plus de détails dans l'article en lien, avec, page 6 un ensemble de tests de performance en ce qui concerne DualPI2.

    Virtualisation

    Résumé

    • Gestion de GSO (Generic Segmentation Offload) sur tunnel UDP dans virtio
    • KVM : Unicité des enregistrements irqfd
    • vhost-net : Prise en charge de VIRTIO_F_IN_ORDER
    • vsock : Introduction de la prise en charge ioctl SIOCINQ
    • iommu : Révision complète de la prise en charge des IRQs postées
    • vfio/qat : Prise en charge des function virutelle Intel QAT 6xxx

    En détails

    La prise en charge des GSO permet d’améliorer les performances des machines virtuelles en réduisant la charge CPU liée au traitement des paquets UDP.

    L’irqfd (interrupt request fd) a été modifié pour être globalement unique, ce qui améliore la gestion des interruptions virtuelles et évite des collisions ou conflits dans la gestion des événements d’interruption, renforçant la stabilité et sécurité des VM.

    VIRTIO_F_IN_ORDER permet de gérer un ordre strict pour les paquets pour les cartes réseaux virtuelles.

    vfio, qui expose des périphériques aux machines virtuelles, ajoute la prise en charge des fonctions virtuelles des accélérateurs Intel QAT 6xxx (QuickAssist Technology), améliorant ainsi les capacités de calcul cryptographique et compression dans les environnements virtualisés.

    Sécurité et cryptographie

    Résumé

    • AppArmor peut désormais contrôler l’accès aux sockets AF_UNIX.
    • Ajout de nouvelles fonctions pour SHA-1, SHA-256 et SHA-512 dans la bibliothèque crypto.
    • Optimisation de CRC32c sur les CPU récents (AVX-512).
    • La gestion de la profondeur de pile via GCC/Clang permet désormais l’effacement automatisé de la stack (voir SafeStack pour plus de détails).
    • Meilleur contrôle sur les atténuations (mitigations) de Spectre/x86.
    • Ajout d’un délai de 5 secondes sur /sys/fs/selinux/user.
    • Introduction des types neversaudit dans le contexte SELinux.

    En détails

    Pour rappel, AF_UNIX est une classe de socket Unix permettant la communication interprocessus. Avant cet ajout, AppArmor ne gérait pas la sécurité avec ce niveau de finesse pour ces sockets. Désormais, il est possible de restreindre dans les profils AppArmor, la communication via ces sockets, entre deux applications.

    Phoronix a testé les améliorations sur CRC32C sur différentes architectures récentes, qui sont résumées dans le graphique ci-dessous.
    Performances CRC32C

    Le noyau 6.17 introduit un meilleur contrôle sur les atténuations Spectre, grâce à un mécanisme appelé Attack Vector Controls (AVC). Le principe est simple, plutôt que d’activer ou désactiver des dizaines de protections individuelles contre les bugs d’exécution spéculative (Spectre, variantes de Meltdown, etc.), il est désormais possible de les piloter par groupes, selon la portée des attaques. Le noyau classe les atténuations en cinq catégories :

    • attaques utilisateur-vers-noyau (user-to-kernel)
    • attaques utilisateur-vers-utilisateur (user-to-user)
    • attaques invité-vers-hôte (guest-to-host)
    • attaques invité-vers-invité (guest-to-guest)
    • attaques inter-threads (cross-thread)

    Avec un seul paramètre de démarrage mitigations=, il devient possible d’exclure une catégorie entière d’attaques (par exemple, désactiver toutes les protections invité-vers-invité si aucune VM non fiable n’est utilisée) et ainsi récupérer des performances.

    Example: disable user-to-kernel attack mitigations, keep others at auto defaults
    GRUB_CMDLINE_LINUX="... mitigations=auto,no_user_kernel ..."
    

    Cette page liste l’ensemble des vulnérabilités CPU, et est une bonne source d’informations à ce propos.

    Changements internes et outils

    Résumé

    • L'ordonnanceur ajoute le cgroup v2 cpu.max pour gérer de manière plus fine l’utilisation du CPU.
    • Ajout de DAMON_STAT pour le monitoring.
    • Le montage automatique de tracefs sur /sys/kernel/debug/tracing est devenu obsolète au profit de /sys/kernel/tracing.
    • La migration vers des outils plus modernes : l’outil gconfig bascule sur GTK3.
    • Toujours plus de Rust avec de nouvelles abstractions pour la gestion du matériel et des propriétés firmware.

    En détails

    cpu.max est plus précis et global que les précédentes méthodes (utilisant cpu.cfs_quota_us et cpu.cfs_period_us ou cpu.shares), en s’appuyant sur l’extension CFS Bandwidth Control de CFS (Completely Fair Scheduler)

    # Limite de 50ms d’utilisation CPU toutes les 100ms (50%)
    echo "50000 100000" > /sys/fs/cgroup/cpu.max

    DAMON_STAT est un module noyau statique de surveillance de l’espace d’adressage mémoire beaucoup plus léger que les précédentes méthodes

        # Si DAMON_STAT est compilé en module
        $ sudo modprobe damon_stat
    
        # Activation du monitoring 
        $ echo 1 | sudo tee /sys/kernel/mm/damon/stat/enable
    
        # lecture des informations
        $ cat /sys/kernel/mm/damon/stat/statistics
        damon_latency_avg: 23 ms
        damon_bandwidth_bytes_per_sec: 5242880
        damon_coldness_percentile_75: 40%
        # Désactivation
        echo 0 | sudo tee /sys/kernel/mm/damon/stat/enable

    Le bilan en chiffres

    Statistiquement, ce n’est certes pas le noyau le plus calme de la série 6.x, comme nous pouvons le voir sur les graphiques ci-dessous, néanmoins, il reste plutôt tranquille, avec du nettoyage et peu d’ajouts.

    Statistique des noyaux 6.x

    Statistique des RC du noyau 6.17

    Statistique des noyaux 6.x

    Statistique des noyaux 6.x

    Appel à volontaires

    Cette dépêche est rédigée par plusieurs contributeurs dont voici la répartition :

    Mainteneur Contributeur(s)
    Architecture Aucun
    Développeurs Aucun
    Systèmes de fichiers Aucun patrick_g
    Réseau Aucun
    Virtualisation Aucun
    Sécurité Aucun
    Changements internes Aucun
    Édition générale Aucun BAud - vmagnin - orfenor

    Un peu de vocabulaire :

    • le mainteneur d’une section de la dépêche est responsable de l’organisation et du contenu de sa partie, il s’engage également à l’être dans le temps jusqu’à ce qu’il accepte de se faire remplacer ;
    • un contributeur est une personne qui a participé à la rédaction d’une partie d’une section de la dépêche, sans aucune forme d’engagement pour le futur.

    Nous sommes particulièrement à la recherche de mainteneurs pour toutes les parties.

    Si vous aimez ces dépêches et suivez tout ou partie de l’évolution technique du noyau, vous pouvez contribuer dans votre domaine d’expertise. C’est un travail important et très gratifiant qui permet aussi de s’améliorer. Il n’est pas nécessaire d’écrire du texte pour aider, simplement lister les commits intéressants dans une section aide déjà les rédacteurs à ne pas passer à côté des nouveautés. Essayons d’augmenter la couverture sur les modifications du noyau !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    • ✇LinuxFr.org : les dépêches
    • Première sortie du décodeur JPEG-XL en Rust
      En 2022, le format JPEG-XL (JXL) a fait naitre beaucoup d’espoirs sur Internet : un taux de compression et une qualité très supérieurs à tout ce qui existe dans nos navigateurs web, plus une rétro-compatibilité avec JPEG. Les décodeurs sont arrivés dans Chromium, Firefox et Safari, on était tout excité, et puis… Google supprime le décodeur. Mozilla le cantonne à la version développeurs, derrière une option. Apple le… tiens non, Apple le garde et le porte même sur iOS. Pendant que ça hurle et te

    Première sortie du décodeur JPEG-XL en Rust

    En 2022, le format JPEG-XL (JXL) a fait naitre beaucoup d’espoirs sur Internet : un taux de compression et une qualité très supérieurs à tout ce qui existe dans nos navigateurs web, plus une rétro-compatibilité avec JPEG. Les décodeurs sont arrivés dans Chromium, Firefox et Safari, on était tout excité, et puis… Google supprime le décodeur. Mozilla le cantonne à la version développeurs, derrière une option. Apple le… tiens non, Apple le garde et le porte même sur iOS.
    Pendant que ça hurle et tempête Mozilla s’explique : l’implémentation actuelle c’est 100 000 lignes de C++ probablement dangereuses, tandis que du Rust plus compact serait avantageux.
    Célébrons la rentrée 2025, les développeurs du labo Google (principal sponsor de JXL) nous proposent de tester une première version habillée de rouille ! Ne déshabillez pas la source trop vite, appréciez les préliminaires lents, c’est une fragile version 0.1.1.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    • ✇LinuxFr.org : les dépêches
    • Sortie de la version 2 de Bénévalibre
      Bénévalibre est un logiciel libre qui a pour objet de faciliter la valorisation du bénévolat dans les associations. Ce projet porté depuis sa naissance officielle en septembre 2019 par le CRAJEP (Comité Régional des Associations de Jeunesse et d'Éducation Populaire) de Bourgogne-Franche-Comté, fête ses 6 ans. Le développement initial a été appuyé financièrement par le Conseil régional de Bourgogne-Franche-Comté et la fondation du Crédit Coopératif. Les années suivantes, le Crajep a choisi d'enga

    Sortie de la version 2 de Bénévalibre

    Bénévalibre est un logiciel libre qui a pour objet de faciliter la valorisation du bénévolat dans les associations. Ce projet porté depuis sa naissance officielle en septembre 2019 par le CRAJEP (Comité Régional des Associations de Jeunesse et d'Éducation Populaire) de Bourgogne-Franche-Comté, fête ses 6 ans. Le développement initial a été appuyé financièrement par le Conseil régional de Bourgogne-Franche-Comté et la fondation du Crédit Coopératif. Les années suivantes, le Crajep a choisi d'engager ses fonds propres pour la maintenance mais a aussi chercher des financements pour la formation des associations, avec l'appui du Mouvement Associatif régional. À l'écoute de sa communauté (qui reste encore à développer plus encore), des fonctionnalités ont pu être ajoutées grâce au choix du comité de pilotage et à l'appui de Framasoft ayant exprimé par exemple, le besoin de pouvoir transférer facilement les données d'une instance à une autre. Récemment, dans le cadre de l'appel à commun de France Tiers Lieux, Bénévalibre a obtenu un soutien financier suite à l'intérêt marqué par plusieurs Tiers Lieux.

    Titre de l'image

    En 6 ans, Bénévalibre a montré son utilité au delà de la région Bourgogne-France-Comté : le CNAJEP (échelon national des Crajep) et le Mouvement Associatif ont relayé l'initiative sur l'ensemble du territoire. Le nombre croissant d'associations qui s'inscrivent, de bénévoles qui y déclarent leurs actions et le nombre d'actions en augmentation constante, montrent une certaine utilité pour ne pas dire une utilité certaine. On peut noter aussi le déploiement de plusieurs instances au sein de réseaux associatifs au delà de celle mise en place initialement.

    Il était donc temps, pour le Crajep de Bourgogne-Franche-Comté, de solliciter CLISS XXI (la SCIC, Société Coopérative d'intérêt collectif qui a développé la version 1), de passer à la version 2 en intégrant les fonctionnalités qui attendaient sagement les financements nécessaires.

    Le collectif est donc heureux de vous présenter les améliorations qui ont été apportées à cette nouvelle version V2, mise en production officiellement ce 1er septembre 2025 .

    Quelques éléments notables de cette version 2 (V2)

    Sur le plan technique, entre autre pour ne citer que cela.

    • Affinage de l'interface d'utilisation, l'ajout d'une barre latérale pour la gestion de l'association et son administration et l'ajout d'un thème clair
    • Ré-écriture des vues qui amène l'ajout de filtres sur les vues en liste
    • Amélioration de l'export avec une unification et amélioration des vues génériques.
    • Mise à jour de toutes les dépendances

    Une liste plus détaillée des évolutions et des outils libres utilisés est à retrouver dans l'annonce faite sur le forum de Bénévalibre.

    Une ouverture souhaitée de la documentation pour favoriser les contributions

    Pour permettre à terme à d'autres personnes, notamment sans bagages techniques, de contribuer à la documentation, le contenu qui existait a été "sorti" du logiciel. Elle devient donc désormais commune pour tout le monde sur doc.benevalibre.org.

    Pour conclure ce billet…

    …parce que Bénévalibre contribue à donner à voir une autre manière de faire société et met en évidence des engagements plus nombreux qu'on se l'imagine généralement, n'hésitez pas à le promouvoir autour de vous.

    Jérôme, pour CLISS XXI,
    Laurent, pour le copil du CRAJEP de Bourgogne-Franche-Comté

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    • ✇LinuxFr.org : les dépêches
    • AWStats 8.0 est sorti
      Après une longue absence sur LinuxFr.org, il est temps pour moi de vous annoncer la sortie de la dernière version 8.0 d’AWStats Log Analyzer. AWStats est un outil de reporting de statistiques sur la fréquentation d'un site web qui s'appuie sur les logs du serveur (donc sans traqueur intégré sur le site, sans cookie, sans service Tiers, etc…) Le projet a été initié en 2000 et a connu son apogée en 2008 (avec 20 à 30% de part de marché, qui a décliné depuis au profit des outils d'analyses statist

    AWStats 8.0 est sorti

    Après une longue absence sur LinuxFr.org, il est temps pour moi de vous annoncer la sortie de la dernière version 8.0 d’AWStats Log Analyzer.
    AWStats est un outil de reporting de statistiques sur la fréquentation d'un site web qui s'appuie sur les logs du serveur (donc sans traqueur intégré sur le site, sans cookie, sans service Tiers, etc…)

    Le projet a été initié en 2000 et a connu son apogée en 2008 (avec 20 à 30% de part de marché, qui a décliné depuis au profit des outils d'analyses statistiques basés sur la pose de tags JavasScript. Il reste encore utilisé à ce jour par beaucoup d'administrateurs système.

    Le package de la v8 peut être téléchargé sur le site du projet AWStats : https://awstats.org

    Les changements de cette version sont les suivants:

    • Amélioration du CSS
    • Mise à jour de robots.pm
    • Corrections du bug n° 248
    • Mise à jour de la traduction en chinois traditionnel et migration vers UTF-8
    • Arbre de tri : Vérification de l'existence de la clé. Ne tient pas compte de sa valeur.
    • Autorisation des journaux de traitement en JSON
    • Correction de la configuration par défaut de NotPageList
    • Ajout d'un rapport sur le temps de requête
    • Correction d'un lien incorrect dans la documentation
    • Suppression des agents utilisateurs natifs des navigateurs Android et iOS/OSX de robots.pm
    • Identification incorrecte de GPTBot en raison d'une erreur dans robots.pm
    • Encodage incorrect pour la traduction en ukrainien

    Voir le portail officiel sur https://www.awstats.org

    ATTENTION: Comme je l'avais annoncé dans le podcast projets-libres sur Matomo et AWstats, ceci est la dernière version que je publierais. La maintenance du projet AWStats s'arrêtant avec cette version 8.0.
    Je vais pouvoir me consacrer entièrement à mes 2 autres projets: https://dolibarr.org et https://sellyoursaas.org.
    Je ne doute pas que la communauté saura réaliser les forks, bienvenus, au projet si nécessaire.

    Si vous désirez basculer sur un projet avec une maintenance plus active, je vous invite à basculer sur Matomo ou d'autres outils également libres…

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    • ✇LinuxFr.org : les dépêches
    • L’architecture d’entreprise dans l’anthropocène : Le logiciel libre pour améliorer sa résilience
      Cet article fait suite à : “L’architecture d’entreprise dans l’anthropocène : une stratégie numérique soutenable”. Le but de cette suite d’articles est d’essayer d’éclairer l’évolution du domaine métier de l’architecture d’entreprise sous le prisme de l’anthropocène. En effet, au delà de la question de la soutenabilité, l’un des enjeux importants dans l’anthropocène, et peut-être le plus important, est la résilience de l’organisation. Certaines entreprises ont déjà lancé des changements profonds

    L’architecture d’entreprise dans l’anthropocène : Le logiciel libre pour améliorer sa résilience

    Cet article fait suite à : “L’architecture d’entreprise dans l’anthropocène : une stratégie numérique soutenable”. Le but de cette suite d’articles est d’essayer d’éclairer l’évolution du domaine métier de l’architecture d’entreprise sous le prisme de l’anthropocène.
    En effet, au delà de la question de la soutenabilité, l’un des enjeux importants dans l’anthropocène, et peut-être le plus important, est la résilience de l’organisation.
    Certaines entreprises ont déjà lancé des changements profonds avec le support du CEC (Convention des Entreprises pour le Climat) tandis que d’autres se lancent dans un exercice de propective pour définir la direction à suivre. A ce propos, le cabinet “Sinon Virgule” a d’ailleurs produit une excellente étude à la demande de la MACIF, La MAIF et la Caisse des dépôts sur le devenir de leur métier : “Peut-on assurer un monde qui s’effondre ?”.

      Sommaire

      Pourquoi le logiciel libre afin d’améliorer sa résilience numérique ?

      La résilience d’un système numérique va bien au delà de la redondance matérielle et logicielle de ses systèmes.
      En effet, dans le contexte géo-politique instable actuel, comme nous avons pu le voir pour la guerre en Ukraine avec l’explosion des coûts de l’énergie ou aujourd’hui avec l’augmentation du protectionnisme aux USA entraînant l’augmentation des taxes douanières, cette résilience implique un meilleur contrôle de ses infrastructures, ses technologies et ses données afin de s’assurer une certaine autonomie et indépendance vis à vis de ces évolutions géo-politiques.
      Sur ce sujet de l’impact géo-politique, le CIGREF a d’ailleurs écrit une note intéressante très récemment : Géopolitique et stratégie numérique.

      Au-delà des contraintes géopolitiques, l’usage du logiciel libre permet de lutter contre l’infobésité des géants de la tech pour soutenir votre stratégie de soutenabilité numérique mais aussi des impacts financiers de l’ajout de technologie comme l’IA générative qui ne vous apporteront peu ou pas de valeur métier mais juste à supporter la croissance des gafam dans le développement d’une technologie qui n’est pas encore mature (voir Gartner hype cycle).

      Les raisons de passer aux logiciels libres sont vastes : géopolitique, souveraineté, autonomie numérique, … Et les exemples aussi :

      C'est Quoi le logiciel libre ?

      Le logiciel libre ne se présente plus après plus de 40 ans d’existence. C’est devenu, en entreprise, un commun. Tout le monde s’y est mis même Microsoft qui luttait contre lui au début de son existence.
      Regardons néanmoins, quelques grandes dates de l’écosystème du libre depuis les années 1970. Attention ce chronogramme n’est pas exhaustif. Pour avoir une vue complète, je vous invite à vous connecter au portail du logiciel libre sur Wikipédia :
      Chronogramme

      Le logiciel libre s’est développé non grâce à une organisation type entreprise (cathédrale) mais par la coopération entre individus sans contre-partie financière hormis la reconnaissance de ses pairs : La cathédrale et le bazar.
      En 40 ans, ce modèle d’intelligence collective a fournit des logiciels d’une telle qualité que ceux-ci sont devenus un standards dans un bon nombre de domaines.

      Définition du logiciel libre :

      Selon la Free Software Foundation, un logiciel est considéré comme « libre » s’il donne à l’utilisateur quatre libertés fondamentales :

      • La liberté d’utiliser le logiciel à n’importe quelle fin
      • De l’étudier et de modifier le code source
      • De redistribuer des copies du logiciel
      • D’améliorer le logiciel et de partager ces améliorations avec la communauté.

      L’essence du logiciel libre est donc une question d’éthique et de liberté des utilisateurs. Le logiciel libre tend à renforcer les droits de l’utilisateur.

      L’Open Source Initiative (OSI) définit un logiciel open source comme un logiciel dont la licence respecte certains critères, principalement la libre redistribution du logiciel, l’accès au code source, la possibilité de créer des travaux dérivés et l’intégrité du code de l’auteur.

      Quelques chiffres aujourd’hui :
      Chiffres

      Comment développer son usage dans une organisation ?

      Fondé en 2014, le groupement TODO propose un cadre pour construire un département dédier à l’open source dans une organisation, nommé OSPO : Open Source Programmme Office. TODO est une communauté de practiciens qui visent à créer les meilleures pratiques et outils pour opérer des OSPO dans les organisations.

      Pour les moyennes et grandes organisations, une approche OSPO est intéressante. Un OSPO agit comme le point centralisé des activités open source d'une organisation, coordonnant les politiques d'utilisation, les stratégies de contribution, les procédures de conformité et les initiatives d'engagement communautaire.

      Le mindmap proposé par TODO synthétise bien les capacités que l’OSPO peut porter :

      Mindmap

      Un programme d'opérations peut aider de nombreuses organisations à obtenir de meilleurs résultats grâce à l'open source comme le font déjà :

      Avec quoi ?

      La liste des logiciels libre est longue, voici quelques bibliothèques répertoriant ceux-ci :

      Pour donner une exemple concret, prenons 2 building blocks qui se retrouvent généralement dans les organisations : le poste de travail et l’ERP ou plutôt le PGI (progiciel de gestion intégré) en français.

      Le poste de travail type bureautique avec des logiciels libres :
      Les solutions sont nombreuses. On peut s’appuyer sur une solution pré-packagée comme openDesk mais qui nécessite une infrastructure kubernetes pour être exploitée. Une approche plus simple sera privilégiée pour les petites et moyennes organisations.
      La suite openDesk, à ne pas confondre avec les meubles de bureau opendesk, a été financé par le Ministére fédéral Allemand de l’intérieur et du territoire afin de réduire la dépendance de l’administration publique des fournisseurs de logiciels propriétaires.
      Cette suite comprend le socle de logiciels libres suivants :

      OpenDesk

      Une solution plus légère pourrait se limiter à Cryptpad pour la partie Office et Nextcloud pour la partie workplace. Avec bien sûr un poste de travail tournant sur une distribution gnu-Linux comme Ubuntu avec Mozilla Firefox et Thunderbird en client lourd :

      Poste de travail bureautique

      L'ERP avec les logiciels libres :
      L’Enterprise Ressource Planning ou PGI, la solution est plus simple et plus complexe à la fois. Plus simple en terme de définition de la solution car une seule application embarquera l’ensemble des fonctionnalités et plus complexe à la fois car ces applications type ERP embarquent beaucoup de fonctionnalités et donc sont complexes à gérer.

      L’organisation de grande taille préférera un ERP de type SAP ou Oracle E-busines suite, tandis que pour une petite ou moyenne structure le logiciel libre apporte de nombreuses solutions comme : ERPNext, Triton, Dolibarr, OpenConcerto, ….

      Si nous prenons l’exemple de Dolibarr, les fonctionnalités couvertes sont les suivantes :

      Mindmap

      En conclusion

      Dans l’anthropocène le logiciel libre est une excellente voie pour asseoir ou améliorer la résilience de son système d’information dans ce contexte géopolitique incertain et qui ne devrait pas s’améliorer (cf Tellus institute).

      Les logiciels libres ne pourront certes pas supplanter toutes les applications de votre patrimoine applicatif mais pour ce qui existe pourquoi ne pas en profiter ? Regardez, même Microsoft est passé de “linux est un cancer” en 2001 à “Nous aimons linux” en 2014.

      Les logiciels sont des logiciels d’excellente qualité comme ils l’ont déjà démontré. Le problème est peut être que les logiciels libres souffrent d’une image trop “tech”.

      Au delà de cela, il existe aussi des applications métiers qui permettront de libérer une partie de votre SI :

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      • ✇LinuxFr.org : les dépêches
      • Haiku a 24 ans - nouvelles de l'été 2025
        Haiku est un système d’exploitation pensé pour les ordinateurs de bureau. Il est basé sur BeOS mais propose aujourd’hui une implémentation modernisée, performante, et qui conserve les idées qui rendaient BeOS intéressant: une interface intuitive mais permettant une utilisation avancée, une API unifiée et cohérente, et une priorisation de l’interface graphique par rapport à la ligne de commande pour l’administration du système. Le projet est actuellement (depuis 2021) en phase de beta test. La p

      Haiku a 24 ans - nouvelles de l'été 2025

      Haiku est un système d’exploitation pensé pour les ordinateurs de bureau. Il est basé sur BeOS mais propose aujourd’hui une implémentation modernisée, performante, et qui conserve les idées qui rendaient BeOS intéressant: une interface intuitive mais permettant une utilisation avancée, une API unifiée et cohérente, et une priorisation de l’interface graphique par rapport à la ligne de commande pour l’administration du système.

      Le projet est actuellement (depuis 2021) en phase de beta test. La plupart des fonctionnalités sont implémentées et l’attention des développeurs se porte sur la correction de bugs, l’amélioration de la stabilité et des performances, et plus généralement, les finitions et petits détails. Une autre part du travail est le suivi de l’évolution de l’environnement technologique: nouveaux pilotes de périphériques, suivi des derniers standards du web, etc.

      Les trois derniers mois ont été un peu plus calmes que d’habitude pour Haiku, mais cela est largement compensé par une très forte activité du côté de Haikuports. Cela révèle que le système lui-même devient plus mature et qu’il devient de plus en plus facile de développer ou de porter une application sans tomber sur des problèmes du système qui doivent être corrigés au préalable.

      Sommaire

      Applications

      Tracker

      Tracker est le navigateur de fichiers de Haiku. Le code est hérité directement de BeOS (cette partie avait été publiée sous licence libre lors de l’abandon de BeOS par Be) et fait l’objet depuis de nombreuses années d’un gros travail de nettoyage et de modernisation.

      Pas de grosses nouveautés ces derniers mois, mais des corrections pour plusieurs régressions suites à du nettoyage effectué précédemment. Par exemple, les icônes des disques montés sont à nouveaux affichés sur le bureau dans les dialogues d’ouverture et d’enregistrement de fichiers. L’annulation du filtrage du contenu d’un dossier en tapant un nom de fichier partiel est correctement annulé si on appuie sur échap.

      Enfin, des problèmes de synchronisation de l’icône de la poubelle, qui apparaissait pleine alors qu’elle était vide, ont été corrigés. Ces problèmes étaient déjà présents dans BeOS.

      Terminal

      Le terminal permet de lancer des applications en ligne de commande.

      Un chantier en cours consiste à rendre le terminal utilisable comme un “replicant”, c’est-à-dire de pouvoir l’intégrer dans d’autres applications telles que l’IDE Genio. Cette approche demande de restructurer beaucoup de choses, et pour l’instant, il est plus simple pour les développeurs de Genio de recopier une partie des sources du Terminal dans leur projet et de les intégrer de façon plus statique. Les problèmes sont corrigés petit à petit.

      Une autre correction mérite d’être mentionnée: le terminal se plaçait lui-même dans le dossier de travail du shell lancé lors de l’ouverture d’un nouvel onglet. Si ce dossier se trouve dans un disque qu’on essaie par la suite de démonter, le démontage échoue (même si l’application lancée dans le terminal a elle-même changé de dossier entretemps). Désormais le terminal ne modifie pas son dossier actif et ne bloque plus le démontage des disques.

      Mail

      L’application Mail permet de lire et d’envoyer du courrier électronique. Elle est composée d’un serveur de synchronisation et d’une interface graphique indépendante. Entre les deux, les mails sont stockés sous forme de fichiers augmentés d’attributs étendus, ce qui permet d’utiliser Tracker et les requêtes BFS comme outil principal pour traiter les messages.

      Les changements listés ici concernent l’application de lecture et rédaction de messages:

      • Correction du comportement du menu « Fermer et marquer comme… » lorsqu’il est appliqué à plusieurs messages.

        • Modifications pour éviter de montrer des informations vides, en double, ou absentes dans les détails des adresses mail (nom d’expéditeur, de destinataire, etc).

      HaikuDepot

      HaikuDepot est à la fois le gestionnaire de paquets et le magasin d’applications de Haiku. Ce double rôle conduit pour l’instant à une interface qui prête un peu à confusion, et l’interface devrait être repensée pour un fonctionnement plus intuitif. En attendant, quelques petites améliorations ont tout de même été faites pour rendre les problèmes moins gênants.

      Lorsqu’une recherche dans la vue « paquets mis en avant » ne donne aucun résultat, il y a affichage d’un lien permettant de poursuivre la recherche dans la liste complète des paquets. En effet, de nombreux utilisateurs se sont plaints de ne pas trouver certains logiciels en effectuant une recherche, sans se rendre compte qu’ils faisaient une recherche dans une liste de quelques dizaines de paquets et pas dans tout ce qui est disponible.

      TextSearch

      TextSearch est un outil de recherche dans le contenu des fichiers par expressions régulières (une version graphique de grep).

      Il reçoit ce trimestre une fonction pour filtrer les fichiers à rechercher, équivalent à l’option grep --include.

      Debug Analyzer

      Debug Analyzer est un outil de profiling et d’analyse de traces d’exécution.

      Correction d’un problème de compilation suite à des changements dans l’API de BObjectList (cet outil n’est pas compilé par défaut, il avait donc été oublié lors du changement d’API au trimestre précédent).

      Préférences d’apparence

      Dans la configuration des couleurs du système, renommage de la couleur « barre d’état » en « barre de progression ». Le nom « barre d’état » (status bar en anglais) correspond à la classe BStatusBar utilisée par BeOS et Haiku, mais tout le monde appelle ça une barre de progression. On peut au moins éviter la confusion pour les utilisateurs, à défaut de pouvoir le faire pour les développeurs d’applications en renommant la classe elle-même (ce qui causerait des problèmes de compatibilité d’API et d’ABI).

      Utilisation de IconMenuItem

      Ce changement concerne l’application ShowImage (visualiseur d’images) ainsi que FileTypes (les préférences d’association de types fichiers avec des applications). Ces deux applications utilisent un menu pour sélectionner une application (pour ouvrir une image dans un éditeur, ou pour associer un type de fichier à une application, respectivement).

      Les applications pour Haiku utilisant des icônes colorées et facilement identifiables, c’est beaucoup mieux qu’une liste de noms pour s’y retrouver rapidement. Ces deux applications utilisent donc maintenant des IconMenuItem dans ces menus, pour afficher les applications avec leur icône respective.

      Adaptation aux écrans à très haute réolution

      Un travail en cours sur les applications concerne l’adaptation aux écrans à très haute résolution.

      Presque toutes les applications pour Haiku utilisent un système de mise en page dynamique, et toutes les ressources (police de caractères, icônes…) sont vectorielles. Cela permet en théorie d’afficher l’interface avec un niveau de zoom arbitraire. Cependant, une partie du code a été écrit avec des tailles en pixels « en dur » et ne s’adapte pas comme il faudrait (la bonne façon de faire est de se baser par exemple sur la taille de la police de caractères sélectionnée par l’utilisateur).

      Ce trimestre, on trouve des évolutions à ce sujet dans plusieurs applications:

      • Expander (décompression d’archives)
      • SerialConnect (communication par port série)
      • Mise à l’échelle de la barre de défilement
      • Préférences d’imprimantes
      • Mise à l’échelle des icônes

      Outils en ligne de commande

      Remote Desktop

      L’outil de connexion au bureau à distance n’est pas vraiment une application en ligne de commande. Cependant, il nécessite pour l’instant un lancement depuis un terminal avec les bonnes options, et selon les cas, la mise en place d’un tunnel SSH. Une interface grapique plus simple d’uitlisation sera probablement ajoutée plus tard.

      • Amélioration du parsing de la ligne de commande et en particulier de l’option pour choisir un port SSH
      • Activation de l’option SO_REUSEADDR permettant de plus facilement relancer l’outil s’il plante, sans attendre un timeout de la connexion précédente qui n’a pas été fermée proprement

      Time

      Le panneau de préférences de date et heure peut être lancé en ligne de commande avec une option spécifique pour forcer une synchronisation NTP. Cette fonctionnalité n’est pas vraiment documentée, à l’origine il s’agit plutôt d’une astuce interne au système. L’application reconnaît maintenant l’option --help standardisée et affiche un message d’aide qui documente cette fonctionnalité.

      Il peut être utile de relancer cette commande manuellement si jamais la synchronisation au démarrage n’a pas fonctionné (par exemple si le réseau n’était pas disponible à ce moment-là). En particulier, cela peut être utilisé dans des scripts d’automatisation et pour des machines où l’interface graphique n’est pas facilement accessible (serveurs de build par exemple).

      pkgman

      pkgman est une commande permettant d’installer, mettre à jour et rechercher des paquets logiciels.

      Ajout d’une option --no-refresh pour ne pas retélécharger la base de données des paquets.

      Cette base de données contient non seulement les noms des paquets, mais aussi leur description courte et la liste des “provides” (par exemple: commandes et bibliothèques fournies par chaque paquet). pkgman vérifié déjà si une nouvelle version de la base de données est disponible, mais cette dernière peut être mise à jour plusieurs fois par jour par l’intégration continue.

      Le nombre de paquets augmentant, la taille de la base de données devient non négligeable (plusieurs méga-octets), ce qui pose problème en particulier pour les utilisateurs et développeurs ne disposant pas d’un accès internet illimité.

      su

      La commande su est peu utilisée puisque l’utilisateur par défaut a déjà tous les droits. Son implémentation était donc un peu incomplète. Elle peut toutefois être utile pour avoir des utilisateurs supplémentaires restraints, par exemple pour un accès à distance par ssh.

      • La commande su ne demande pas de mot de passe si l’utilisateur dispose déjà de l’accès root
      • Toutes les commandes liées à la gestion des utilisateurs (su, login…) configurent les groupes actifs lors du changement d’utilisateur

      listarea

      listarea est une commande de debug permettant de lister les zones mémoire allouées à différentes applications. Elle affiche maintenant le verrouillage et les protections de ces zones (swappable ou non, exécutabele ou non, accessible en écriture ou non).

      fdinfo

      fdinfo permet d’examiner les descripteurs de fichiers ouverts (un peu comme lsof). Cette commande peut maintenant afficher en plus le dossier courant de chaque application (ce qui aurait été bien utile pour identifier le problème avec le dossier courant du Terminal ci-dessus).

      install-wifi-firmwares

      Ce script permet d’installer les firmwares pour certaines très anciennes cartes Wifi. Les firmwares publiés à l’époque sont disponibles avec des licenses n’autorisant pas la redistribution ou les modifications de packaging, ce qui empêche l’intégration dans le système de paquets habituel. Le problème a été corrigé depuis longtemps par les fabricants de cartes Wifi, mais les anciens firmwares n’ont jamais été republiés avec des licenses mises à jour.

      Le script a été mis à jour pour récupérer certains firmwares depuis un nouveau serveur, l’ancien emplacement utilisé n’étant plus disponible.

      Kits

      La bibliothèque de fonctions de Haiku est découpée en kits qui regroupent des ensembles de fonctions et de classes par thématique (stockage sur disque, interface graphique…). Dans certains cas il s’agit principalement d’une méthode d’organisation du code source et de la documentation (les kits pouvent être très interdépendants). Certains kits sont toutefois fournis sous forme de bibliothèques séparées.

      Support kit

      Ce kit contient diverses fonctions utilitaires et basiques du système.

      Changement d’API pour la classe BUrl. Dans l’ancienne version de cette classe, il était possible de construire un objet BUrl représentant une URL encodée ou non-encodée (échappement des caractères réservés). Cela rendait trop facile d’oublier d’encoder une URL avant de l’utiliser, ou bien d’encoder plusieurs fois une URL et de se retrouver avec un lien invalide.

      La nouvelle API impose d’indiquer dès la création d’un objet BUrl si la chaîne de caractères servant de base est déjà encodée ou non. L’objet BUrl construit représentera toujours une URL déjà encodée, qui peut éventuellement être décodée pour affichage si nécessaire.

      Interface kit

      Ce kit contient tout ce qui se rapporte à l’interface graphique: fenêtres, vues, contrôles, mise en page…

      Retour en arrière sur une modification des raccourcis claviers de BTextView pour naviguer vers les mots suivant et précédent. Les nouveaux raccourcis entrent en conflit avec des raccourcis déjà utilisés par plusieurs applications, et n’apportaient pas grand-chose.

      Correction de problèmes de compatibilité dans le format des données stockées par la classe BPicture (il s’agit d’un enregistrement de commandes envoyées au serveur graphique, qui peuvent être rejouées plus tard). Le format des données stockées était différent de celui de BeOS. Certaines applications utilisant un objet BPicture enregistré dans une ressource de l’application, ne s’affichaient pas correctement.

      Amélioration de la gestion des sous-menus, en particulier cela corrige un crash si un sous-menu est fermé en utilisant la touche échap.

      Remise à plat de tous les calculs accumulés au cours des années pour générer les couleurs de l’interface graphique en fonction des couleurs choisies par l’utilisateur. Chaque morceau de code concernait faisait ses propres calculs pour générer de jolis dégradés, des variantes plus sombres et plus claires, etc. Cela fonctionnait bien avec le thème par défaut, mais pas forcément avec des choix de couleurs qui en sont très éloignés. Le nouveau code est plus simple, plus prédictible, et permet de rassembler ces calculs dans la classe « control look », qui peut être remplacée par un add-on pour fournir une apparence complètement différente.

      Cela peut nécessiter d’ajuster un peu les couleurs dans les préférences d’apparence si vous les avez personnalisées.

      Storage kit

      Ce kit regroupe tout ce qui concerne le stockage de masse et la gestion des fichiers.

      Harmonisation de la nouvelle fonction BQuery::SetFlags avec d’autres fonctions similaires, et ajout d’une page de documentation pour cette fonction.

      Correction d’un crash lorsqu’on enregistre un type MIME alors que le type parent n’existe pas (par exemple si on enregistre image/gif alors que le type image n’existe pas).

      Ajout d’une constante pour identifier les systèmes de fichiers FAT16 parmi la liste des systèmes de fichiers connus.

      Shared kit

      Le shared kit contient des fonctions expérimentales en cours de développement mais déjà utilisées par plusieurs applications.

      Contrairement aux autres kits, il est fourni sous forme d’une bibliothèque statique, ainsi chaque application peut en utiliser une version différente (choisie au moment de la compilation) et il n’y a pas de contraintes pour conserver une stabilité d’API ou d’ABI. Les fonctions développées dans le shared kit peuvent ensuite être migrées vers les autres kits une fois qu’elles sont finalisées.

      La classe « color list » (utilisée par exemple dans les préférences d’apparence) accepte maintenant le glisser-déposer de couleurs.

      Serveurs

      Les serveurs sont des applications lancées au démarrage du système. Ils sont similaires aux services systemd. Ils fournissent des services utiles à l’implémentation de la bibliothèque standard, car tout ne peut pas être fait dans une bibliothèque partagée.

      app_server

      app_server regroupe le serveur graphique de Haiku (utilisé au travers de l’interface kit) ainsi que la gestion des applications en lien avec l’application kit.

      Correction d’un problème d’initialisation de variables indiquant dans quels workspaces (bureaux virtuels) une fenêtre doit être présente. Cela se manifestait par l’apparition de morceaux incomplets de la fenêtre si on change de bureau virtuel pendant son apparition. Le bug existait depuis 15 ans mais n’avait jusque-là pas pu être identifié.

      Les curseurs de souris ne sont plus générés en bitmap à la compilation à partir des sources vectorielles. C’est maintenant fait lors de l’initialisation du serveur graphique, ce qui permet d’avoir un plus gros curseur sur les écrans à très haute résolution.

      input_server

      input_server se charge des périphériques d’entrée utilisateurs (claviers, souris et autres périphériques de saisie et de pointage).

      Correction de la keymap espagnole latino-américaine dans laquelle plusieurs combinaisons de touches ne fonctionnaient pas comme sur les autres systèmes.

      Pilotes

      ACPI, gestion d’énergie, système

      Mise à jour de ACPICA pour la prise en charge de ACPI avec la dernière version disponible.

      Correction de problèmes dans le pilote poke (permettant l’accès direct à la mémoire pour écrire certains pilotes en espace utilisateur) pour mieux valider les paramètres des ioctl et éviter de pouvoir facilement déclencher un kernel panic suite à une mauvaise utilisation du pilote.

      Réseau

      Correction d’un problème dans la pile TCP ou les retransmissions de paquets lors de l’établissement de la connexion n’étaient pas faits, si le premier paquet était perdu, la connexion ne s’établissait jamais.

      Lorsque IP_HDRINCL est activé (une application demande à envoyer et recevoir elle-même les en-têtes IP des paquets reçus), la pile réseau s’assure tout de même que les en-têtes générés ont bien un checksum valide. Cela permet à traceroute de fonctionner correctement par exemple.

      Mise en place de l’infrastructure pour la découverte de MTU deu chemin. Cela permet de déterminer la taille maximale des paquets qu’on peut envoyer vers un serveur, sans que de la fragmentation IP soit mise en jeu en cours de route (ce qui, au mieux dégraderait les performances, au pire empêcherait la connexion de fonctionner correctement):

      • Ajout de l’option IP_DONTFRAG pour demander aux routeurs de ne pas redécouper certains paquets,
      • Remontée de l’information ICMP FRAGMENTATION_NEEDED pour détecter qu’on a essayé d’envoyer un paquet trop gros.

      Cela permet déjà de détecter les problèmes de MTU, mais pas encore de les corriger automatiquement. La suite du code est encore en cours de test.

      Remplacement du pilote iprowifi3945 par la version mise à jour disponible dans OpenBSD (pilote “wpi”) à la place de celle de FreeBSD qui est actuellement moins bien maintenue.

      Interface homme-machine

      Ajout de la tablette Intuos 4 dans le pilote pour les tablettes Wacom, ainsi que du support de la molette présente sur certaines tablettes.

      Systèmes de fichiers

      NFS4

      NFS est un système de fichier en réseau. Une machine serveur se charge réellement du stockage des fichiers, et d’autres machines peuvent monter ce disque et accéder aux fichiers partagés. Plusieurs machines peuvent accéder au même serveur en même temps et modifier les fichiers, ce qui nécessite une attention particulière lors de l’implémentation d’un système de fichier client.

      Le travail sur le pilote NFSv4 se poursuit pour le stabiliser et améliorer sa compatibilité avec les serveurs NFS existants.

      Correction de problèmes de gestion du cache et de libération anticipée d’inodes`, points sur lesquels NFS est un peu inhabituel par rapport à d’autres systèmes de fichiers puisque des évènements peuvent arriver du serveur NFS concernant un fichier qui a été supprimé localement, par exemple.

      Correction d’un problème qui pouvait conduire un fichier nouvellement redimensionné à contenir des données non initialisées au lieu d’octets à 0.

      Cela permet de corriger des problèmes détectés par des tests NFSv4 existants pour d’autres systèmes.

      EXT4

      Le pilote ext4 permet de monter, en lecture et en écriture, les systèmes de fichiers ext2, ext3 et ext4 développés pour Linux.

      Implémentation et activation de la fonctionnalité « metadata_csum_seed » qui est activée par défaut pour les systèmes de fichiers nouvellement créés sous Linux.

      Corrections dans le « tree splitting » qui n’était pas implémenté correctement, empêchant d’accéder à des dossiers contenant un trop grand nombre de fichiers.

      RAMFS

      RAMFS est un système de fichiers non persistant, stockant les fichiers uniquement dans la RAM. Il est plus rapide qu’un système de fichier traditionnel.

      Correction de crashs lors de la création de gros fichiers et lors du remplacement d’un hardlink par un autre fichier.

      FAT

      FAT est un système de fichiers développé par Microsoft pour DOS et les anciennes versions de Windows. Il est assez répandu et sert un peu de format d’échange standard en particulier pour les supports de stockage externes (clés USB, cartes SD, disquettes…).

      Ajout d’assertions et de vérifications d’intégrité supplémentaires. Le pilote FAT utilisé actuellement provient de FreeBSD, dont les développeurs nous ont assuré qu’il était bien testé et maintenu. Mais, de façon similaire aux pilotes Wifi, on se rend compte que les bases d’utilisateurs de Haiku et de BSD ne sont pas du tout les mêmes, et nous sommes face à beaucoup de systèmes de fichiers FAT corrompus ou inhabituels, ce qui se produit peut-être moins souvent dans les utilisations de FreeBSD sur un serveur par exemple.

      libroot

      La libroot contient l’équivalent de la libc, libdl, libpthread et libm d’un système UNIX standard, ainsi que des fonctions bas niveau spécifiques à BeOS.

      Les extensions GNU et BSD sont déportées dans des bibliothèques séparées (libgnu et libbsd), ce qui permet de respecter au mieux la spécification POSIX sans avoir à utiliser des astuces telles que des « weak symbols ».

      Mise à jour de la libio

      La bibliothèque standard de Haiku est à l’origine un fork de la glibc, utilisant exactement la même version que BeOS afin de garantir une compatibilité d’ABI optimale avec ce dernier. Cependant, cette version ancienne et obsolète ne répond pas aux besoins des applications modernes.

      Petit à petit, des parties de la bibliothèque C sont donc remplacées par des composants venant de FreeBSD, NetBSD, OpenBSD ou plus récemment de musl. Certaines choses sont très bien standardisées et ne posent pas de problèmes, pour d’autres parties, des symboles internes de la bibliothèque sont exposés et parfois exploités par des applications (directement par des développeurs applicatifs pour contourner un bug, ou alors parce que les développeurs de la glibc ont mal isolé les choses et ont exposé des détails internes).

      Ce trimestre, la partie libio (gestion des flux d’entrée-sortie) a été mise à jour avec la dernière version de la glibc. Il n’est pas possible d’utiliser une autre bibliothèque C pour cette partie sans casser l’ABI, mais la mise à jour est possible.

      Correction de multiples problèmes dans les fonctions standard C et les extensions BSD:

      • Ajout d’une vérification de la locale passée à setlocale pour retourner une erreur si la locale demandée est invalide.

      • L’ouverture d’un chemin se finissant par un / avec open() échoue si le fichier n’est pas un dossier (par exemple open("/home/user/foo.txt/")).

      • Validation du paramètre “how” de la fonction shutdown() et retour d’une erreur si le paramètre n’est pas une valeur connue.

      • Les queues d’évènement créées par kqueue ne sont pas conservées lors d’un fork (même comportement que les BSD).

      • Un socket sur lequel il n’y a jamais eu d’appel à listen() ou connect() ne doit pas déclencher les erreurs EPIPE ni ENOTCONN.

      • La fonction socket() retourne maintenant les bons codes d’erreurs détaillés si elle ne peut pas créer le socket: EPROTOTYPE si le type de protocole est inconnu, EPROTONOSUPPORT s’il est connu mais pas disponible, EAFNOSUPPORT si la famille d’adresse n’est pas disponible. Auparavant, tous ces cas renvoyaient EAFNOSUPPORT.

      • Amélioration de la gestion des erreurs dans accept()

      • Gestion de cas particuliers pour bind() en UDP

      • Ajout de l’option RTLD_GROUP pour dlopen(). Il s’agit d’une extension développée par Solaris qui permet d’avoir plusieurs espaces de noms pour la résolution de symboles lors du chargement de bibliothèques partagées. En particulier, dosemu l’utilise pour fournir aux programmes DOS une bibliothèque C indépendante de celle de l’hôte (fournissant donc des fonctions memcpy, memset… qui entreraient en conflit avec celles de l’hôte). L’implémentation est triviale, car le même comportement était déjà en place pour la gestion des add-ons de BeOS; il n’était simplement pas accessible au travers de l’API POSIX dlopen(). Linux implémente ce flag sous un autre nom, cependant, la documentation de la glibc n’est pas correcte, et FreeBSD a implémenté ce qui est documenté pour la glibc avec le même nom. C’est pourquoi le nom utilisé par Solaris, qui n’est pas ambigu, est utilisé pour l’instant, en espérant que la méprise entre Linux et FreeBSD pourra être corrigée.

      • sethostname() retourne une erreur si le hostname proposé est trop long (auparavant il était simplement tronqué).

      Intégration des changements de POSIX-2024

      La spécification POSIX a été mise à jour en 2024. Cette mise à jour est assez importante grâce à un changement de la méthode de travail de l’Austin Group qui maintient la spéficication. Le groupe de travail a ouvert un bug tracker sur lequel il est possible de remonter des problèmes et de proposer des améliorations (à conditions que ces dernières soient déjà implémentées sous forme d’extensions sur un assez grand nombre de systèmes).

      Cela a permis à plus de monde de prendre part à la spécification et de standardiser beaucoup de nouvelles choses. Haiku intègre ces changements petits à petits, parfois par anticipation, parfois parce que l’extension correspondante était déjà disponible, et parfois parce que le portage d’un logiciel le nécessite.

      • Ajout de O_CLOFORK, MSG_CMSG_CLOEXEC, et MSG_CMSG_CLOFORK pour fermer des descripteurs de fichiers lors d’un fork (équivalent de O_CLOEXEC qui ferme lors d’un exec, typiquement après un fork). Au passage, ajout dans la libbsd de closefrom() et closerange(), ces deux fonctions permettant de lancer des tests développés pour BSD pour ces nouveaux drapeaux.
      • Ajout de fdatasync(), une fonction qui s’assure que le contenu d’un fichier est bien enregistré sur disque et pas seulement dans le cache.

      Améliorations sur la gestion de la mémoire

      La gestion de la mémoire est un sujet central pour un système POSIX. L’API proposée (malloc, realloc, calloc et free) est à la fois très simple d’utilisation et très générique. Elle a donc tendance à être très sollicitée par les applications, ce qui en fait un composant critique de l’optilisation des performances du système. De plus, les applications sont de plus en plus consommatrices de mémoire et le matériel a tendance à en contenir de plus en plus.

      L’allocateur mémoire a été remplacé il y a quelques mois, l’ancien allocateur hoard2 ne permettant pas d’agrandir dynamiquement l’espace alloué à une application. Après plusieurs essais, c’est pour l’instant l’allocateur d’OpenBSD qui a été retenu. En effet, beaucoup d’allocateurs plus modernes supposent un espace d’adressage 64 bit et sont peu économes en termes de réservation d’espace mémoire.

      Cependant, même l’allocateur d’OpenBSD montrait ses limites sur les systèmes 32 bit. Son paramétrage a été amélioré, et d’autres modifications ont également été faites pour réduire la fragmentation de l’espace mémoire. Cela corrige des problèmes ou GCC ne parvient pas à allouer assez de mémoire lors de la compilation de très gros fichiers (par exemple lors de la compilation de clang ou de webkit). Il reste recommandé de désactiver l’ASLR (randomization de l’espace d’adressage) dans les cas où on a besoin de beaucoup de mémoire pour une application 32 bits.

      Noyau

      Le noyau de Haiku est un noyau monolithique tout à fait classique pour un système UNIX. Il permet le chargement dynamique de modules, et fournit une API relativement stable pour ces derniers, ce qui permet de maintenir des pilotes facilement en dehors du dépôt de sources de Haiku.

      Correction de problèmes causant le kernel panic « failed to acquire spinlock for a long time » lorsque l’affichage à l’écran des logs du noyau est activé.

      Ajout d’assertions supplémentaires dans le code de gestion de la mémoire virtuelle pour essayer de détecter des problèmes au plus tôt et avant de risquer de corrompre des données importantes.

      Correction de l’affichage des paramètres des appels systèmes dans strace sur x86.

      Correction de problèmes dans la gestion des permissions pour write_stat (modification des informations sur un fichier comme la date de modification) dans le noyau ainsi que dans les systèmes de fichiers RAMFS, BFS et EXT4. Cela corrige des comportements étranges observés lors de l’utilisation de rsync.

      Ajout d’un test vérifiant le bon fonctionnement des exceptions remontées par le FPU lors de calculs en virgule flottante (ces exceptions sont un peu difficiles à traiter dans un système multitâche, et en particulier dans Haiku où le code du noyau peut lui-même utiliser le FPU alors que ce n’est pas le cas pour d’autres systèmes).

      Correction de problèmes liés au découpage et au redimensionnement des areas (zones de mémoires allouées par les APIs prévues à cet effet de BeOS, ou indirectement par mmap et d’autres fonctions permettant de manipuler l’espace mémoire). Cela corrige des problèmes pour RAMFS ainsi qu’un kernel panic observé lors du lancement de dosemu.

      Correction de problèmes avec les areas en lecture seule, qui pouvaient aboutir dans certains cas à une sous-évaluation de la mémoire utilisée, aboutissant à un kernel panic, car il n’y a plus de mémoire disponible à un moment où le noyau ne s’y attend pas. Cela a été mis en évidence en particulier avec l’utilisation mémoire de certains navigateurs web, qui ont tendance à gérer la mémoire directement sans passer par l’allocateur standard du système, pour des raisons de performance.

      Remise en route de guarded_heap (un allocateur mémoire qui détecte les dépassements de buffers, au prix d’une consommation mémoire fortement augmentée). Correction de problèmes mis en évidence par cet allocateur dans quelques pilotes.

      Dans la structure mcontext/ucontext passée aux fonctions de traitement de signaux, ajout de plusieurs registres manquants (registres de segments, addresse de faute…). Cela est utilisé par le JIT de dosemu et va probablement permettre d’utiliser le JIT dans d’autres applications également. En effet, une approche possible pour le JIT est de déclencher volontairement un signal, afin d’intercepter l’état des registres, éventuellement de le manipuler, puis de reprendre l’exécution là où elle s’était arrêtée.

      Ajout de vérification de permissions manquantes dans l’appel système get_extended_team_info.

      Correction d’une possible fuite d’un descripteur de fichier dans le VFS.

      Bootloader

      Mise à 0 de tous les registres non utilisés lors de l’appel de fonctions du BIOS, afin d’aider à investiguer des problèmes avec certains BIOS capricieux.

      Amélioration des messages d’erreurs lorsque le bootloader ne parvient pas à charger le fichier ELF du noyau. Le chargeur de fichiers ELF du noyau est volontairement incomplet pour simplifier les choses (après tout, il a besoin seulement de charger le noyau), mais cela pose problème lors de mises à jour de GCC ou lors du portage sur de nouvelles architectures, si l’organisation du fichier ELF du noyau se trouve modifiée.

      Correction de problèmes de compilation lorsque des logs de debug optionels sont activés.

      Documentation

      La documentation de Haiku se découpe principalement en trois parties:

      • Un guide de l’utilisateur,
      • Une documentation d’API pour les développeurs d’applications,
      • Une documentation d’implémentation pour les développeurs du système lui-même.

      API (Haiku book)

      Documentation de la classe BControl (classe abstraite qui fournit l’API standard de la plupart des contrôles utilisables dans l’interface graphique, les rendant interchangeables dans une certaine mesure).

      Documentation de AdoptSystemColors et HasSystemColors pour la classe BButton.

      Ajout de documentation pour les extensions à dlfcn.h par rapport à ce qui est déjà spécifié par POSIX.

      Environnement de compilation

      Haiku est écrit en C++ et utilise jam (un concurrent de make) comme outil principal de compilation. Cet outil a été retenu, car il permet de définir des règles de compilation génériques et réutilisables pour faire toutes sortes de choses. La compilation de Haiku pouvant mettre en jeu trois compilateurs différents (un pour le système hôte, un pour le système Haiku cible, et un troisième pour la couche de compatibilité avec BeOS), la plupart des autres outils ne répondent pas bien aux besoins.

      Suppression de règles Jam redondantes. Jam repose sur des règles nommées pour savoir quelles actions sont nécessaires pour générer une cible à partir de sources. Les règles “Application”, “Server”, “Preferences” et “Executable” étaient toutes identiques, elles ont donc toutes été remplacées par “Application” pour simplifier le système de build.

      Correction de “warnings” du compilateur pour des variables inutilisées et suppression de code mort (dans le cadre du maintien d’un code propre et lisible, une tâche plus ou moins continue pour suivre l’évolution des bonnes pratiques, la disponibilité de nouveaux outils d’analyse, et absorber la dette technique qui peut s’accumuler au cours d’un projet aussi ancien).

      Début de support pour GCC 15: il est ajouté dans la liste des versions du compilateur reconnues pour le système hôte, ce qui permet de compiler Haiku depuis un système Linux très récent. L’intégration en tant que compilateur cible viendra plus tard.

      Remplacement de la commande which utilisée dans certains scripts de build par l’équivalent command -v, ce qui évite une dépendance à une commande non standard qui n’est pas forcément installée par défaut partout.

      Dans le makefile engine (un template de makefile proposé pour développer facilement des applications pour Haiku), ajout de documentation et d’exemples pour les variables INSTALL_DIR et TARGET_DIR.

      Portage de Haiku sur d’autres CPUs

      RISC-V

      Correction d’un problème dans un script de link qui empêchait le démarrage du noyau.

      Mise à jour de paquets utilisés pour compiler le système de base.

      Mise en place d’un serveur de compilation de paquets pour RISC-V, ce qui permet de remplir le dépôt de paquets pour cette architecture et d’envisager une version officielle de Haiku pour RISC-V lors de la prochaine version bêta. L’architecture RISC-V s’ajoutera ainsi au x86 (32 et 64 bit) déjà supporté.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      • ✇LinuxFr.org : les dépêches
      • S'informer sur la licence pro CoLibre (Communication et Logiciels Libres) - visio et plus
        La licence professionnelle « CoLibre » (Métiers de la communication, conduite de projets et logiciels libres) ouvre sa seconde session de candidature jusqu’au 25 août 2025. Pour mieux connaître ce parcours de formation, pour y candidater, pour proposer des alternances ou des projets tuteurés, des visios sont organisées pendant l’été. Elles auront lieu le 24 juillet et le 18 août à 18h. lien nᵒ 1 : Infos sur la visiolien nᵒ 2 : En savoir plus sur la licencelien nᵒ 3 : Actus de la licencelien nᵒ

      S'informer sur la licence pro CoLibre (Communication et Logiciels Libres) - visio et plus

      La licence professionnelle « CoLibre » (Métiers de la communication, conduite de projets et logiciels libres) ouvre sa seconde session de candidature jusqu’au 25 août 2025.

      Pour mieux connaître ce parcours de formation, pour y candidater, pour proposer des alternances ou des projets tuteurés, des visios sont organisées pendant l’été.

      Elles auront lieu le 24 juillet et le 18 août à 18h.

      La licence pro forme en un an au métier de chef·f de projets en communication à l’ICOM (Université Lyon2) pour des personnes ayant acquis un bac+2 quelque qu’il soit.

      Pendant une année, la formation organise un parcours varié pour acquérir et affirmer des compétences professionnelles dans les domaines de la communication, de la conduite de projet et les pratiques numériques.

      Au fil du parcours, les étudiants et étudiantes vont aussi approfondir au choix une spécialisation : création numérique (PAO, infographie, audio-visuel, multimédia…), organisation (ressources humaines, pratique du changement, didactique, comptabilité…), développement (programmation, développement web, administration système…), événementiel (mercatique, planification, réseaux sociaux, gestion événement…).

      Chaque fois que l’on utilise des logiciels ou des applications, elles sont systématiquement libres pour ajouter une connaissance approfondie et choisie du numérique en plus d’une approche éthique et inclusive.

      Ce parcours est ouvert à toute personne ayant un bac+2 et elle peut être suivi en alternance, en formation continue ou en parcours classique.

      À l’issue de la formation, les étudiantes et étudiants sont diplômés à Bac+3.

      Attention la formation est réalisée en présentiel à l’Université Lyon2.

      Annonce visios ouvertes

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      • ✇LinuxFr.org : les dépêches
      • Agenda du Libre pour la semaine 30 de l'année 2025
        Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 13 événements (France: 12, Internet : 1) est en seconde partie de dépêche. lien nᵒ 1 : Aprillien nᵒ 2 : Agenda du Librelien nᵒ 3 : Carte des événementslien nᵒ 4 : Proposer un événementlien nᵒ 5 : Annuaire des organisationslien nᵒ 6 : Agenda de la semaine précédentelien nᵒ 7 : Agend

      Agenda du Libre pour la semaine 30 de l'année 2025

      19 juillet 2025 à 19:35

      Calendrier Web, regroupant des événements liés au Libre (logiciel, salon, atelier, install party, conférence), annoncés par leurs organisateurs. Voici un récapitulatif de la semaine à venir. Le détail de chacun de ces 13 événements (France: 12, Internet : 1) est en seconde partie de dépêche.

      Sommaire

      [FR Grenoble] TupperVim - Le lundi 21 juillet 2025 de 19h00 à 23h00.

      TupperVim à Grenoble ⛰️

      Les TupperVim sont des réunions informelles d’utilisateurs et utilisatrices des éditeurs de texte libres Vim et neovim (débutant·es ou avancé·es) durant lesquelles chacun des participant·es échange des trucs et astuces.

      La famille des éditeurs Vim étant très riche et hautement paramétrable, ces sessions sont l’occasion de s’initier à leurs utilisations, d’approfondir ses connaissances, d’échanger ses vimrc respectifs, ou encore de découvrir des greffons pour aller plus loin.

      Toute personne, quel que soit son niveau, est la bienvenue.

      Pour profiter au mieux de l’atelier, il est vivement conseillé aux débutant·es complets de faire le tutoriel Vim avant de venir (vimtutor).

      On encourage les utilisateur·ices avancé·es qui le souhaitent à proposer une petite présentation rapide (~ 10 min) d’une fonctionnalité ou d’un plugin. Un support n’est pas obligatoire, une présentation en direct depuis Vim est tout aussi efficace.

      Aussi, vous pouvez venir dès dix-neuf heures (19 h) pour avoir une séance d’initiation à Vim (prévoir une heure).

      Vous pouvez annoncer une présentation sur l’Etherpad (lien en bas de message).

      Traditionnellement, ces ateliers sont aussi l’occasion de découvrir des outils qui ne sont pas directement liés à Vim, mais qui s’inscrivent dans la même philosophie : ergonomie, minimalisme, efficacité.

      Programme

      La recette reste immuable depuis des temps immémoriaux :

      • 19 h à 22 h, grignotte : chacun·e amène quelque chose ;
      • 19 h à 20 h, initiation pour les débutant·es & apéro pour les initié·es, grâce à une technologie de parallélisation des tâches que le monde entier nous envie depuis toujours ;
      • 20 h à 22 h, enlarge your productivity : atelier participatif, chacun·e propose des sujets ou pose des questions techniques ;
      • 22 h à 23 h, on finit au bar 🍻

      Important

      • Merci de vous inscrire sur meetup afin d’aider les organisateurs de l’événement.
      • Si vous avez des questions, des suggestions de contenu à présenter, et pour vous coordonner le contenu de l’apéro, tout cela est possible sur l’etherpad de l’événement.

      • La Turbine.coop, La Turbine.coop, 5 esplanade Andry Farcy, Grenoble, Auvergne-Rhône-Alpes, France

      • https://tuppervim.org

      • tuppervim, vim, atelier, initiation, séance, neovim, libre, réunion

      [FR Chaumont] Permanence associative - Le mardi 22 juillet 2025 de 18h00 à 20h00.

      Permanence associative du Schmilblik Numérique.

      L'occasion de s'entraider dans nos usages des solutions libres au sein du Schmilblik, tiers-lieu dédié à la culture et la création artistique, à Chaumont.

      Des boissons chaudes, de la bienveillance et beaucoup de convivialité.

      Tous les niveaux techniques sont les bienvenus, de parfait·e débutant·e à expert·e chevronné·e.

      [FR Le Mans] Permanence du mercredi - Le mercredi 23 juillet 2025 de 12h30 à 17h00.

      Assistance technique et démonstration concernant les logiciels libres.

      Il est préférable de réserver votre place à contact (at) linuxmaine (point) org 

      Planning des réservations consultable ici.

      [FR Le Blanc] Ateliers "Libres" de Linux - Le mercredi 23 juillet 2025 de 14h00 à 17h00.

      Installer ou configurer Linux, diagnostiquer mon ordinateur,
      installer ou configurer un logiciel libre,
      échanger sur GNU/Linux et les Logiciels Libres,
      trouver des réponses à mes questions

      [FR Agen] Permanence d’aGeNUx - Le mercredi 23 juillet 2025 de 17h30 à 19h30.

      Pour l’année 2025 notre association aGeNUx tiendra ses permanences tous les mercredis après-midi de 17h30 à 19h30 sauf les jours fériés et pendant les vacances d’été.

      Elles ont lieu au Campus Numérique 47 à la salle Barjavel.

      Ces permanences sont ouvertes à tous et à toutes, membres de l’association ou non. On peut s’y informer sur les logiciels libres, en tester, poser des questions ou tout simplement venir rencontrer d’autres utilisateurs de logiciels libres.

      [FR Quimper] Redistribution gratuite d’ordinateurs de bureau sous Debian - Le jeudi 24 juillet 2025 de 09h30 à 10h30.

      La distribution gratuite d’ordinateurs de bureau sous Debian au Centre social des Abeilles de Quimper continue tout l’été 2025 et même après…:-)

      Le Centre des Abeilles, avec l’aide technique de Linux Quimper, récupère depuis 2009 des ordinateurs déclassées par des administrations et des entreprises. Ces ordinateurs sont reconditionnés avec des logiciels libres autour de Linux qui est un système équivalent à Windows et MacOs mais libre et gratuit. Ils sont utilisables immédiatement, gratuitement et en toute légalité dans tous les domaines de l’informatique comme la bureautique, internet, le graphisme, l’audio-vidéo, etc… Plus de 5500 ont été donnés depuis 2009 à des personnes et associations. Si cette action de solidarité vise à réduire la fracture numérique en permettant l’accès à l’informatique aux personnes et associations qui en sont écartées pour des raisons financières, elle a aussi pour but  de diffuser largement les logiciels libres et en particulier Linux. Elle a aussi pour objectif de limiter le gaspillage du matériel informatique, réduire les déchets et ainsi de participer à la limitation du changement climatique à notre petite échelle…

      Ces dons sont ouverts aux adhérent·e·s du Centre des Abeilles. L’adhésion (13€) peut se faire au moment du don.

      La distribution a lieu en général tout les jeudis matin mais les bénévoles du Centre des Abeilles peuvent s’adapter aux disponibilités des personnes désirant bénéficier de ce don.

      ATTENTION: Cette proposition ne s’adresse qu’aux personnes habitant le Sud-Finistère.

      Inscription préalable au 07 44 61 10 61.

      [internet] Découverte de Scenari (en visio) - Le jeudi 24 juillet 2025 de 16h00 à 17h00.

      🤔 Vous avez  des questions sur Scenari avant de tester ?

      🧙‍♂️ Vous voudriez une petite démo ?

      🚀 Vous commencer à utiliser Scenari et vous avez besoin d'un peu de soutien ?

      Cette visio est faite pour vous 🤩

      [FR Beauvais] Stand d'information sur Paheko, logiciel de gestion d'association (membres et compta) - Le jeudi 24 juillet 2025 de 18h00 à 20h00.

      L'association Oisux est invitée par le Service de la Vie Associative de la Ville de Beauvais pour informer les visiteurs sur l'emploi du logiciel Paheko, qui permet de gérer l'activité d'une association:

      "Paheko (mot de la langue Māori qui signifie « coopérer », illustrant le but du logiciel: améliorer ensemble le quotidien de la gestion d'une association) est un logiciel de gestion associative.
      Il est l'outil de prédilection pour gérer une association, un club sportif, une ONG, etc.
      Il est conçu pour répondre aux besoins d'une structure de petite à moyenne taille: gestion des adhérents, comptabilité, site web, prise de notes en réunion, archivage et partage des documents de fonctionnement de l'association, discussion entre adhérents." Source https://paheko.cloud/

      [FR Vallauris - Sophia Antipolis] Rencontre Accès Libre - Le vendredi 25 juillet 2025 de 18h00 à 21h00.

      Rencontres Accès Libre

      Certains les appellent «install party», d’autres encore «Soirées Linux», mais les Rencontres Accès Libre sont tout cela en même temps, et bien plus encore…

      Entre autres, c'est l’occasion de:

      • discuter, échanger, expliquer;
      • installer des logiciels libres;
      • et, toute autre idée coopérative de solidarité à but non lucratif!

      C'est un évènement organisé conjointement par Linux Azur et le SHL.

      [FR Nantes] Repair Café + Install Party - Le samedi 26 juillet 2025 de 09h30 à 12h00.

      Un ordinateur qui rame ou qui refuse de démarrer, venez le réparer en notre compagnie.

      Marre de Windows et envie d'un peu de liberté, venez le libérer!

      Un ordinateur qui rame ou qui refuse de démarrer, venez le réparer en notre compagnie.

      Marre de Windows et envie d'un peu de liberté, venez le libérer!

      [FR Ploulec'h] Stand infothema avec Emmaüs - Le samedi 26 juillet 2025 de 10h00 à 18h00.

      Le 26 juillet 2025 de 10h00 à 18h00, lors d'une vente exceptionnelle d'ordinateurs sous GNU/Linux par Emmaüs Lannion-Ploulec'h, l'association informatique bégarroise INFOTHEMA tiendra un stand de présentation de ses activités axées GNU/Linux et les logiciels libres.

      Merci à la structure Emmaüs pour son accueil et sa bonne ambiance

      Vive le Logiciel Libre !

      [FR Ramonville Saint-Agne] Les ateliers du CULTe - Le samedi 26 juillet 2025 de 14h00 à 18h00.

      Le CULTe est le "Club des utilisateurs de logiciels libres et de gnu/linux de Toulouse et des environs".

      Le samedi après-midi tous les quinze jours, le CULTe organise un atelier d'informatique "libre", de 14h à 18h.

      La séance est consacrée à l'information du public, à l'entraide entre membres et/ou visiteurs pour notamment installer et configurer des logiciels libres, système d'exploitation ("Linux") ou "applications" (programmes informatiques).

      L'entraide peut également concerner le matériel afin d'aider le membre ou le visiteur a faire évoluer son ordinateur (ajout de mémoire, changement de disque dur…), étant précisé que si des avis peuvent être bien entendu émis pour de tels achats, le CULTe quand à lui n'a aucune activité commerciale, directe ou indirecte.

      Chacun peut amener son ordinateur pour la séance. S'il s'agit d'une "Unité Centrale" (Ordinateur de bureau) il est inutile d'amener également écran clavier et souris, qui peuvent être prêtés sur place. Au besoin nous pourrons aussi vous prêter une machine pour la séance.

      Afin de préparer votre venue, nous vous recommandons vivement de nous prévenir par courrier électronique en expliquant succintement votre projet ou votre besoin à l'adresse suivante:

      president@o2.culte.org

      L'adhésion au CULTe n'est en aucun cas obligatoire pour participer à nos activités.

      NB: Les personnes qui souhaitent adhérer ou faire un don peuvent bénéficier d'un reçu fiscal en vue d'une réduction d'impôt (66% en 2022) notre association étant reconnue "Organisme d'Intérêt Général" éligible au mécénat. (Rescrit fiscal 2021/228)

      PS: Notre club met à la disposition de tous une liste de discussion dédiée à l'informatique "libre": "linux-31@o2.culte.org". Vous pouvez sans attendre demander à y être inscrit pour, le cas échéant, y exposer une difficulté et bénéficier de l'aide et de conseils d'une centaine de participants. Il vous suffit de vous rendre à cette adresse et d'y formuler votre demande d'inscription:

      https://sympa.culte.org/sympa/subscribe/linux-31?previous_action=info

      [FR Quimper] Permanence Linux Quimper - Le samedi 26 juillet 2025 de 16h00 à 18h00.

      Tous les samedis de 16h à 18h, Linux Quimper vous donne rendez-vous au centre social des Abeilles, 4 rue Sergent Le Flao (quartier de la Terre Noire) Quimper.

      Nous vous proposons lors de ces rencontres d’échanger autour du Libre et de Linux en particulier

      Vous pouvez venir pour vous faire aider, ou aider, à installer et paramétrer une distribution GNU/Linux de votre choix ou des logiciels libres sur votre ordinateur.

      Recommandations:

      • Sauvegardez vos données avant de venir.
      • Pour une installation de Linux si vous voulez conserver Windows, libérez de la place sur le disque dur (20 Go minimum) et défragmentez Windows.
      • Nous prévenir, éventuellement, de votre passage via le forum.

      Vous pouvez aussi venir pour une première prise d’informations et de contacts.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      • ✇LinuxFr.org : les dépêches
      • Cryptographie embarquée : briques de base et communication avec serialguard
        Il était une fois un petit ESP32, installé dans une cave, qui voulait communiquer avec son copain sur le toit pour envoyer des données par 4G. Il parlait peu, donc il pouvait utiliser la norme radio LoRa. Elle est à bas débit, mais permet une portée bien plus grande qu’une modulation classique. Le problème, c’est qu’il parlait en clair, et que n’importe qui pouvait écouter ou pire : injecter de fausses données, voire corrompre le serveur distant. Le protocole de communication à la mode est celu

      Cryptographie embarquée : briques de base et communication avec serialguard

      Il était une fois un petit ESP32, installé dans une cave, qui voulait communiquer avec son copain sur le toit pour envoyer des données par 4G. Il parlait peu, donc il pouvait utiliser la norme radio LoRa. Elle est à bas débit, mais permet une portée bien plus grande qu’une modulation classique. Le problème, c’est qu’il parlait en clair, et que n’importe qui pouvait écouter ou pire : injecter de fausses données, voire corrompre le serveur distant.

      Le protocole de communication à la mode est celui de Signal, utilisé aussi par WhatsApp et Messenger. Un autre protocole en vogue est WireGuard, dont l’objectif est d’offrir un VPN léger pour Linux, en s’appuyant sur un ensemble restreint de briques cryptographiques modernes et fortement recommandées, qui ne sont plus laissées au choix de l’utilisateur.

      L’idée était donc de trouver une implémentation de ce type pour l’embarqué. Eh bien, je n’ai presque rien trouvé.

      Sommaire

      Briques de base

      TLS est la référence absolue pour tous les algos, mais c’est à vous de faire votre choix. Libsodium est une implémentation des derniers algos recommandés et fait le choix pour vous. Ces deux bibliothèques sont énormes et sont optimisées pour PC. Un professeur de cryptographie a écrit une série de tweets qui contient une petite lib qui reprend les algorithmes de libsodium en version auditable (https://tweetnacl.cr.yp.to/). Mais elle est lente.

      Une autre personne écrit ce que je cherche : Monocypher. C’est un fichier .c avec les algo principaux de libsodium et qui compile en pur C sans dépendance ! C’est parfait pour mon besoin.

      Cette bibliothèque fournit uniquement les briques de base, on est très loin d’un protocole Signal. Quand on parle de cryptographie, on pense à AES pour le chiffrement symétrique, à RSA pour le chiffrement à clef publique et la signature, aux hashs SHA1 ou SHA512 pour un hash de qualité cryptographique. Les propriétés nécessaires sont fascinantes mais cela ne dit pas comment bien les utiliser ensuite.

      Le chiffrement symétrique

      Il s’agit de chiffrer un bloc avec une clé de taille fixe. Le représentant le plus connu est AES, avec des clés de 128 ou 256 bits. On a un bloc, on a une clé, et on obtient un bloc plus ou moins aléatoire. AES utilise des modes (GCM, XTS, …) pour renforcer le mélange et garantir la sécurité selon différents contextes.

      Ici, l’algorithme recommandé est ChaCha20. Pas besoin de mode externe : tout est prévu dans l’algorithme de base.

      Au déchiffrement, la brique ne se pose pas de question : si la donnée a été altérée, le résultat le sera aussi.Il faut donc ajouter un protocole d’authentification, qui utilise la même clé et un hash pour vérifier l’intégrité. Les algorithmes classiques sont MAC, HMAC, mais il est facile de faire une erreur dans leur utilisation.

      Monocypher utilise Poly1305 pour authentifier le message (AEAD – Authenticated Encryption with Associated Data). Son API combine XChaCha20 et Poly1305, ce qui évite de se poser des questions : en cas de modification du message chiffré, la fonction de déchiffrement renvoie une erreur explicite.

      Cette fonction nécessite un NONCE ("Number used once"), qui doit être différent à chaque appel.

      Le hash

      Un hash prend un bloc de données, fait une grosse salade et rend un chiffre de taille fixe avec de bonnes propriétés crypto. Le but est d’avoir une empreinte de taille fixe pour un bloc de données, et qu’il soit impossible de forger un hash identique en modifiant un peu les données d’origine. En gros.

      Le hash recommandé est BLAKE2b : “as secure as SHA-3 and as fast as MD5”. Il fait 256 ou 512 bits.

      “Password hashing” ou la création de clef à partir de mot de passe

      Lorsqu’un mot de passe est saisi, il n’est jamais utilisé tel quel : il est d’abord transformé en une valeur de taille fixe via une fonction de hachage. Pour contrer les attaques par force brute, on a commencé par appliquer des centaines d’itérations de SHA1, avant d’adopter des fonctions de hachage volontairement lentes, comme bcrypt ou scrypt. Le but étant justement d’éviter qu’elles soient rapides, contrairement aux fonctions de hachage classiques.

      Aujourd’hui, Argon2 est recommandé.

      Chiffrement à clef publique

      L’image est souvent celle d’un cadenas ouvert : n’importe qui peut fermer le cadenas, mais seul le possesseur de la clef peut l’ouvrir. RSA a été le premier algorithme inventé avec cette propriété. Aujourd’hui, la mode est aux courbes elliptiques avec X25519.

      La fonction principale est basée sur l’échange Diffie-Hellman (DH). C’est le truc magique de la crypto asymétrique.

      DH(Clef publique de A, Clé privée de B) = DH(Clef publique de B, Clé privée de A) = N

      Sans une clef privée, il est cryptographiquement impossible de retrouver N.

      Comment créer une clef privée ? C’est simplement 32 octets très aléatoires. Toute la sécurité dépend de cela. On se rappelle de la faille Debian utilisant un générateur prévisible en 2008.

      Générateur d’aléatoire

      Pour faire de la cryptographie sérieusement, il faut un vrai générateur aléatoire de qualité cryptographique. Monocypher, par exemple, n’en fournit pas, car cela dépend trop du matériel utilisé. C’est donc à vous d'en fournir un correct.

      Ne surtout pas utiliser random() ou rand() : ces fonctions ne sont pas prévues pour la sécurité. Elles offrent souvent à peine 32 bits d’entropie, ce qui signifie qu’elles peuvent générer des valeurs qui tournent en boucle après seulement 4 milliards de cas, ce qui est trivial à explorer pour un attaquant moderne.

      Un bon générateur s’appuie sur des sources d’entropie, autrement dit, des phénomènes imprévisibles : le bruit du système, les délais entre événements, la température, etc. Ensuite, ces sources sont mélangées (souvent via un gros hash) pour produire des nombres avec des propriétés statistiques solides.

      Par exemple, Linux collecte plein de métriques internes (activité réseau, mouvements de la souris, etc.) pour alimenter son générateur aléatoire /dev/urandom.

      Côté matériel, certaines plateformes proposent un vrai générateur physique : il peut mesurer le bruit électrique à travers une diode via un convertisseur analogique-numérique (ADC), ou encore exploiter les légères variations de vitesse d’oscillateurs internes (anneaux d’inverseurs), qui sont ensuite mélangées avec des circuits comme des LFSR combinés via XOR.

      Utilisez le générateur cryptographique fourni par votre plateforme (par exemple getrandom(), arc4random(), ou un TRNG matériel si vous êtes en embarqué).

      Il ne faut pas se créer son propre générateur sans savoir exactement ce que l’on fait. Le pire étant de réutiliser des données (des clefs par exemple) pour générer d’autres nombres. On crée ainsi une énorme dépendance entre eux, qui n’ont plus rien d’aléatoire.

      Les dernières failles des imprimantes Brother proviennent du fait que les mots de passe d’administration sont dérivés de leur numéro de série (!).

      Signature

      On a un bloc de données, on signe avec une clef privée, on vérifie la signature avec la clef publique.

      Monocypher propose EdDSA.

      Serial Guard, le protocole de communication

      Il ne faut pas créer sa propre cryptographie, c’est trop facile de se tromper. C’est pourtant exactement ce que j’ai fait. La suite peut donc contenir des erreurs. L’idée est de créer un protocole léger de communication. Si des experts passent par là et voient une horreur, qu’ils n’hésitent pas à crier.

      On a maintenant les blocs de base. Et il faut maintenant les agencer comme il faut. On veut que A communique avec B (Alice et Bob), sans que E puisse comprendre les messages, insérer des messages, modifier des messages, rejouer des messages, récupérer les messages dans le futur s’il a tout enregistré et récupérer les clefs privées.

      Dans le monde de l’embarqué « simple », on communique avec des read et des write sur lien série. L’idéal est d’avoir à peu près la même API.

      Il faut réduire au minimum l’échange d’informations préalable pour être le plus léger possible.

      Je laisse de coté le "framing", c'est à dire la mise en paquet pour être envoyé sur un lien physique. Un lien série envoie des octets, serialguard fonctionne par paquets d'octet. Il faut reconstituer un paquet avant de l'envoyer dans la bibliothèque.

      La base est d’avoir une clef privée chacun, à longue durée de vie. Cela permet de s’authentifier selon le principe : si c’est toujours la même clef depuis l’installation, c’est toujours le même pair : TOFU.

      Si on a besoin de faire mieux, il faudrait qu’une « clef de confiance » signe cette clef. Mais on entre dans les méandres complexes d’une public key infrastructure, des certificats ou des web of trust type GPG.

      Pour pouvoir tout de même changer une clef privée à long terme, tout en ayant de la sécurité pour éviter les man-in-the-middle, il faut garder un secret partagé dans tous les pairs. Cela peut être très compliqué sur un réseau de serveurs, mais ici, chaque boîtier est programmé au même endroit.

      Il s’agit simplement d’un nombre de 32 octets aléatoire partagé par tous. C’est nommé pompeusement pre-shared key (PSK).

      Il faudra éviter de la laisser traîner dans le code source.

      Une clef de session est une clef temporaire, renouvelable. L’idée est d’utiliser la cryptographie asymétrique pour se mettre d’accord sur une clef symétrique.

      Si on utilise le nombre généré par Diffie-Hellman (DH) directement, il est unique par pair de clefs privées : ce n’est pas top. On pourrait échanger des nombres aléatoires pour se mettre d’accord sur une clef symétrique, mais je veux limiter les échanges au minimum.

      Pour cela, je vais utiliser une clef de session asymétrique, qui est l’invention du protocole Signal. Une fois la clef symétrique générée, la clef privée éphémère est jetée. Il sera impossible ensuite de déchiffrer la session, même dans le futur.

      On commence donc par un échange de 2 clefs publiques : l’une à durée de vie longue et l’autre éphémère.
      On croise les 8 clefs (2 publiques et 2 privées de chaque côté) dans 3 échanges DH, on trie les nombres pour avoir le même ordre des 2 côtés, et le résultat est donné à la fonction de hachage avec la PSK.

      On a ainsi notre clef de session symétrique.

      Le rejeu

      Tant que la session est active, l’envoi d’un message précédent reste valide. Pour éviter cela, un NONCE est utilisé dans le chiffrement symétrique. C’est un nombre fourni quelconque mais qui ne doit jamais être identique d’un paquet à l’autre. Il peut être transmis avec le paquet, mais cela prend de la place.

      J’ai choisi d’utiliser un simple compteur, cela évite de devoir se rappeler les NONCE passés pour éviter le rejeu.

      Les liaisons n’étant pas fiables, un paquet peut être corrompu : il faut pouvoir décoder le paquet suivant. J’ai simplement choisi de tester les 10 nombres successifs en cas d’erreurs, avant d’échouer.

      Durée de session

      Une session doit être limitée en temps ou en quantité d’informations transmises. Il faut trouver un événement symétrique des 2 côtés pour redéclencher un handshake. J’ai laissé ce point à l’application. Cela pourrait être inclus dans le protocole réseau de plus haut niveau.

      Schéma

      Envoi d’un seul message

      Ce schéma ne couvre pas le cas d’envoi d’un seul message.

      Dans l’Internet des objets, on pousse un message dans MQTT et on ne s’attend pas à une réponse. Cela serait bien plus pratique de pouvoir le faire. Il faut pouvoir faire l’envoi sans handshake préalable. Mais il faut tout de même envoyer les clefs publiques, ce qui prend de la place.

      Le système a besoin de la clef publique du serveur et du PSK, et tout le reste est fourni en plus du chiffré (NONCE, clef publique, et clef publique éphémère) dans le message envoyé.

      La différence est qu’il n’y a que 2 DH, et pas de clef éphémère du côté serveur.

      Travail en cours

      C’est encore un travail en cours. Il manque des tests sur le terrain et l’évaluation des performances sur plusieurs plateformes.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      20 ans de Fedora-fr : dernier entretien avec Aurélien membre de l'équipe infrastructure de Fedora

      Dans le cadre des 20 ans de Fedora-fr (et du Projet Fedora en lui-même), Charles-Antoine Couret (Renault) et Nicolas Berrehouc (Nicosss) avons souhaité poser des questions à des contributeurs francophones du projet Fedora et de Fedora-fr.

      Grâce à la diversité des profils, cela permet de voir le fonctionnement du projet Fedora sous différents angles pour voir le projet au-delà de la distribution mais aussi comment il est organisé et conçu. Notons que sur certains points, certaines remarques restent d’application pour d’autres distributions.

      N’oublions pas que le projet Fedora reste un projet mondial et un travail d’équipe, ce que ces entretiens ne permettent pas forcément de refléter. Mais la communauté francophone a de la chance d’avoir suffisamment de contributeurs et de contributrices de qualité pour permettre d’avoir un aperçu de beaucoup de sous projets de la distribution.

      Chaque semaine un nouvel entretien sera publié sur le forum Fedora-fr.org, LinuxFr.org et le blog de Renault.

      L’entretien du jour concerne Aurélien Bompard (pseudo abompard), développeur au sein du projet Fedora et employé Red Hat affecté au projet Fedora en particulier dans l’équipe infrastructure.

        Sommaire

        Bonjour Aurélien, peux-tu présenter brièvement ton parcours ?

        Je m’appelle Aurélien, je suis informaticien, et c’est pendant mon école d’ingé que j’ai découvert le logiciel libre, par le biais d’une association étudiante. J’ai vite accroché et j’ai décidé de travailler autant que possible là-dedans quand j’en suis sorti (en 2003).
        J’ai commencé avec Mandrake Linux à l’époque, alors que KDE venait de sortir en version 2.0 (et le kernel en 2.4). Malgré tous les efforts de Mandrakesoft, ce n’était quand même pas évident de tourner sous Linux à l’époque. J’ai mis 2 semaines à faire fonctionner ma carte son (une SoundBlaster pourtant !), il fallait régler les fréquences de rafraîchissement de l’écran soi-même dans le fichier de conf de XFree86, et je n’avais qu’un seul ordinateur ! (et pas de smartphone, lol). Le dual boot et son partitionnement m’a donné quelques sueurs froides, et tout le temps passé sous Linux était du temps coupé du réseau des élèves. Fallait quand même être un peu motivé :-)
        Mais j’ai tenu bon, et j’ai installé des applications libres sous Windows aussi : Phoenix (maintenant Firefox), StarOffice (maintenant LibreOffice), etc. Parce que ce qui m’a attiré c’est la philosophie du logiciel libre, et pas seulement la technicité de Linux.

        En 2003, j’ai fait mon stage de fin d’études chez Mandrakesoft, mais la société était en redressement judiciaire à l’époque, et ça n’offrait pas des perspectives d’embauche intéressantes.
        Après quelques candidatures j’ai été pris à la fin de l’été 2003 dans une SSII en logiciel libre en tant qu’administrateur système pour installer des serveurs Linux chez des PME.
        Le contrat qui avait donné lieu à mon embauche s’est arrêté prématurément, et la société ayant aussi une activité de développement autour de Zope/CPS, on m’a proposé de me former à Python (version 2.2 à l’époque si je me souviens bien). J’ai accepté et suis devenu développeur. C’est à cette époque que j’ai quitté Mandrake Linux pour passer sur Red Hat 9, en me disant que c’était plus pertinent de monter en compétences dessus pour le travail. À l’époque il y avait une petite communauté de packageurs qui publiait des RPM supplémentaires pour Red Hat 9, autour du domaine fedora.us.
        Début 2004, Red Hat a décidé qu’il y avait trop de confusion entre leurs offres commerciales à destination des entreprises et leur distribution Linux gratuite, et ont décidé de scinder leur distribution en Red Hat Enterprise Linux d’un côté, et une distribution Linux communautaire de l’autre. Ils ont embauché le fondateur de fedora.us, rassemblé les contributeurs et lancé la distribution Fedora Linux.

        La communauté a mis pas mal de temps à se former, et c’était passionnant de voir ça en direct. On avait :

        • les contributeurs qui disaient « regarde on n’a jamais été aussi libres de faire ce qu’on veut, c’est bien mieux qu’avant avec RH9 qui était poussée hors des murs de Red Hat sans qu’on puisse rien y faire » ;
        • les utilisateurs des « autres distribs » (kof kof Debian kof kof) qui disaient « vous êtes exploités par une société, ce sera jamais vraiment communautaire, Red Hat se transforme en Microsoft » ;
        • les commerciaux de Red Hat qui disaient « Fedora c’est une version bêta, c’est pas stable, faut surtout pas l’utiliser en entreprise, achetez plutôt RHEL » ;
        • la communication Red Hat qui disait "Si si c'est communautaire j'vous assure" Si vous ne l'avez pas lue et que vous lisez l'anglais, cette fausse conversation IRC a fait rire jaune beaucoup de monde à l'époque.

        Enfin bref, la communauté a fini par grossir significativement, Fedora Core et Fedora Extras on fusionné, etc. Ma dispo pour contribuer au projet a été assez variable au fil des années, mais j'ai toujours utilisé Fedora.
        En 2012, un poste s'est ouvert chez Red Hat dans l'équipe qui s'occupe de l'infrastructure Fedora, j'ai postulé, et j'ai été pris.

        Peux-tu présenter brièvement tes contributions au projet Fedora ?

        Au début j'empaquetais les logiciels que j'avais à dispo dans Mandrake Linux mais qui n'existaient pas dans Fedora Extras, et tous les logiciels sympas que je voyais passer. J'ai aussi fait beaucoup de revues de fichiers .spec pour leur inclusion dans la distrib.
        Après avoir été embauché par Red Hat, j'ai travaillé sur HyperKitty, le logiciel d'archivage / visualisation de Mailman 3. Puis j'ai travaillé sur plein d'autres trucs au sein de l'équipe Fedora Infra, les dernières étant Fedora Messaging, Noggin/FASJSON et FMN. Je suis aujourd'hui responsable technique côté Fedora dans l'équipe (par opposition au côté CentOS) et je travaille surtout sur les applications en tant que dev, beaucoup moins sur la partie sysadmin.

        Qu'est-ce qui fait que tu es venu sur Fedora et que tu y es resté ?

        J'y suis venu parce que monter en compétences sur une distribution Red Hat me semblait pertinent pour mon métier, en tant que sysadmin Linux.
        J'y suis resté parce que Fedora est pour moi le parfait équilibre entre nouveauté et stabilité, tout en étant très ancré dans la défense du logiciel libre, même au prix de quelques complications (le MP3, les pilotes Nvidia, etc.).

        Pourquoi contribuer à Fedora en particulier ?

        Parce que je l'utilise. Je crois que c'est une constante dans ma vie, c'est rare que je reste uniquement utilisateur/consommateur, je suis souvent amené à contribuer à ce que j'utilise ou aux associations dont je fais partie.

        Contribues-tu à d'autres Logiciels Libres ? Si oui, lesquels et comment ?

        J'ai été amené à développer sur mon temps libre quelques logiciels pour des associations auxquelles je participe, et c'est toujours en logiciel libre. Le dernier en date c'est Speaking List (licence AGPL).

        Est-ce que tes contributions dans Fedora se font entièrement dans le cadre de ton travail ? Si non, pourquoi ?

        Avant non, parce que je packageais des outils que j'utilisais personnellement (Grisbi, Amarok, etc.). Maintenant oui :-)

        Est-ce que être employé Red Hat te donne d'autres droits ou opportunités au sein du projet Fedora ?

        Oui, j'aimerais que ce ne soit pas le cas mais c'est sûr que je suis plus près des prises de décisions, j'ai des accès plus directs aux personnes influentes et aux évolutions. Ce n'est pas un "droit" au sens strict, qui me serait attribué non pas sur la base de mes contributions mais sur celle de mon employeur, heureusement. Mais disons que je baigne toute la journée dedans, je pense que ça ouvre plus d'opportunités que quand j'étais contributeur "externe".

        Tu as été membre de Fedora Infrastructure, peux-tu nous expliquer sur l'importance de cette équipe pour la distribution ? Quels services maintenais-tu ?

        Cette équipe est totalement indispensable. Il y a en permanence des problèmes qui apparaissent dans la distrib, des choses qui tombent en panne, de nouveaux services à intégrer, d'anciennes applis qui ne marchent plus sur les nouvelles distributions ou les nouveaux services et qu'il faut porter, etc.
        J'ai commencé sur Mailman / HyperKitty mais je me suis diversifié depuis, je dirais qu'aujourd'hui je me concentre sur l'aspect applicatif : maintenance de nos applis, portages, adaptations, évolutions, etc. Les dernières applis sur lesquelles j'ai travaillé sont Fedora Messaging, Noggin/IPA (authentification), Datanommer/Datagrepper, FMN (notifications), MirrorManager, et plus récemment Badges.

        Tu as notamment beaucoup contribué à mailman et hypperkitty pour les listes de diffusion du projet. Qu'est-ce que tu as fait ? La migration a-t-elle été difficile ? Quelle importance ont encore les listes de diffusion aujourd'hui au sein du projet Fedora ?

        C'était mon premier travail lorsque j'ai été embauché par Red Hat, oui. J'ai fait le développement de HyperKitty, en suivant les travaux de conception d'interface réalisés par Mo Duffy. J'ai travaillé aussi sur Mailman 3 lui-même quand c'était son développement qui me bloquait pour HyperKitty ou pour le déploiement du tout. J'ai écrit un script de migration qui a pas trop mal marché je pense, quand on prend en compte la longue historique des listes de diffusion du projet. Il fait partie de HyperKitty et va maintenant être utilisé pour la migration des listes de CentOS.

        Le sujet des listes de diffusion a presque toujours été assez conflictuel chez Fedora. Il y a une quinzaine d'années, avant que je sois embauché pour travailler sur HyperKitty, notre communauté était déjà fractionnée entre les contributeurs plutôt réguliers qui utilisaient les listes, et les utilisateurs et contributeurs occasionnels qui étaient plutôt sur des forums web. En effet, utiliser une liste de diffusion est plus engageant qu'un forum, il faut s'y abonner, mettre en place des filtres dans sa messagerie, gérer l'espace de son compte mail en conséquence, c'est impossible de répondre à un message envoyé avant qu'on s'y abonne, on ne peut pas éditer ses messages, etc. Quand on veut juste poser une question rapidement ou répondre rapidement à quelque chose, les forums peuvent être plus pratiques et plus intuitifs. L'utilisation des listes de diffusion peut être intimidant et contre-intuitif : combien de personnes ont envoyé "unsubscribe" à une liste en voulant se désinscrire ?

        La promesse d'HyperKitty était d'offrir une interface de type forum aux listes de diffusion, pour faire le pont entre les deux communautés, et permettre plus facilement la conversion d'utilisateurs en contributeurs tout en permettant aux contributeurs d'être plus facilement confrontés aux problèmes rencontrés par les utilisateurs. Ça n'a pas bien fonctionné, mais c'est un sujet qui reste d'actualité aujourd'hui avec l'intégration de Discourse dans le projet. Je crois que le projet essaie de migrer de plus en plus de processus depuis les listes de diffusion vers Discourse, pour que ça atteigne le maximum d'utilisateurs et de contributeurs.

        Puis également sur le compte unique au sein du projet Fedora (nommé FAS), quelle est l'importance de ce projet et ce que tu y as fait ?

        C'est un projet qu'on a gardé longtemps dans les cartons, peut-être trop longtemps même. L'idée était de remplacer FAS (Fedora Account System), une base de donnée des utilisateurs avec une API maison, par FreeIPA, une intégration de LDAP et Kerberos pour gérer les comptes utilisateurs en entreprise. On utilisait en fait déjà IPA pour la partie Kerberos dans l'infra, mais la base de référence des comptes était FAS. Or, FAS n'était plus maintenu, et sa ré-écriture par un membre de la communauté (un français ! petit clin d'œil à Xavier au passage) prenait un peu trop de temps. FAS tournait sur EL6 et la fin de vie approchait.
        Migrer la base de comptes sur IPA a été assez complexe parce que beaucoup d'applications s'intégraient avec, il a donc fallu tout convertir vers le nouveau système. IPA étant prévu pour des entreprises à la base, il n'y a pas de système d'auto-enregistrement et de gestion avancée de son propre compte. Nous avons donc dû développer cette interface, qui s'appelle Noggin. Nous avons aussi écrit une API REST pour IPA, appelée FASJSON. Enfin, il a fallu personnaliser IPA pour qu'il stocke les données dont nous avions besoin dans l'annuaire LDAP.
        J'ai été développeur et responsable technique sur ce projet, donc je me suis surtout concentré sur la conception et les points d'implémentation délicats.

        Tu fais parti des gros contributeurs du composant Bodhi et même l'infrastructure de la compilation des paquets en général, là encore quel a été ton rôle là dedans et en quoi ces composants sont importants pour le projet ?

        Bodhi est vraiment au cœur du cycle de vie d'un paquet RPM dans Fedora. C'est aussi une des seules applications de l'infra qui soit significativement maintenue par un membre de la communauté qui n'est pas un employé de Red Hat (Mattia). Elle permet de proposer une mise à jour des paquets, s'intègre avec les composants de tests de paquets, et permet de commenter une mise à jour.
        J'ai travaillé dessus de manière sommaire seulement, depuis le départ de Randy (bowlofeggs) qui la maintenait auparavant. J'ai converti le système d'authentification version OIDC, j'ai écrit les tests d'intégration, j'ai travaillé un peu sur l'intégration continue, mais c'est tout.

        Peux-tu expliquer rapidement l'architecture derrière cette mécanique ?

        Et bien, disons qu'en résumé quand un packageur veut proposer une mise à jour, il met à jour son fichier spec dans son dépôt, lance une construction du paquet avec fedpkg dans Koji, et doit ensuite déclarer et donner les détails de sa mise à jour dans Bodhi. C'est là que les tests d'intégration des paquets se déclenchent, et au bout d'un certain temps (ou d'un certain nombre de commentaires positifs) la mise à jour arrive sur les miroirs.

        Tu as aussi beaucoup travaillé sur Fedora-Hubs, peux-tu revenir sur les ambitions de ce projet ? Pourquoi il n'a finalement pas été adopté et concrétisé comme prévu ?

        L'objectif de Fedora Hubs était de centraliser l'information venant de différentes applications Fedora sur une même page, avec une interface qui explique clairement ce que ça veut dire et quelles sont les étapes suivantes. Une sorte de tableau de bord pour contributeur, et pas seulement pour packageur, un peu dans l'esprit de ce que fait aujourd'hui https://packager-dashboard.fedoraproject.org/.
        Malheureusement la proposition a été faite à un moment où il y avait d'autres priorités plus urgentes, et vu que c'était quand même pas mal de boulot on a laissé tomber pour s'occuper du reste.

        Est-ce qu'il y a des collaborations concernant l'infrastructure entre les projets RHEL, CentOS et Fedora ou même d'autres entités externes ?

        Oui, on essaye de partager le maximum ! Le système d'authentification est commun entre CentOS et Fedora, par exemple. On essaie d'échanger sur nos rôles Ansible, sur la surveillance de l'infra, etc.

        Si tu avais la possibilité de changer quelque chose dans la distribution Fedora ou dans sa manière de fonctionner, qu'est-ce que ce serait ?

        J'adorerais qu'il y ait plus de contributeurs qui participent aussi à l'infrastructure, et notamment à nos applications. À vrai dire je cherche en ce moment des moyens de motiver les gens à venir y mettre les mains. C'est super intéressant, et vous pouvez directement affecter la vie des milliers de contributeurs au projet ! Je suis même prêt à mettre de l'énergie là-dedans si besoin, sous forme de présentations, ateliers, questions/réponses, etc. Et je pose donc la question à tout le monde : si Fedora vous intéresse, si le développement vous intéresse, qu'est-ce qui vous freine pour contribuer aux applis de l'infra ?

        À l'inverse, est-ce qu'il y a quelque chose que tu souhaiterais conserver à tout prix dans la distribution ou le projet en lui même ?

        Je crois que c'est notre capacité à innover, à proposer les dernières nouveautés du logiciel libre :-)

        Que penses-tu de la communauté Fedora-fr que ce soit son évolution et sa situation actuelle ? Qu'est-ce que tu améliorerais si tu en avais la possibilité ?

        À vrai dire je n'ai pas suivi de près les évolutions de la communauté française. Mon boulot m'amène à communiquer quasi-exclusivement en anglais, donc j'interagis plus avec la communauté anglophone.

        Quelque chose à ajouter ?

        Non, rien de spécial, à part revenir sur ma question : si vous avez eu envie d'améliorer l'infra et/ou les applis de l'infra de Fedora, qu'est-ce qui vous a freiné ? Qu'est-ce qui vous freine aujourd'hui ? N'hésitez pas à me contacter sur Matrix (abompard@fedora.im) et sur Discourse.

        Merci pour ta contribution !

        Merci à vous, et joyeux anniversaire à Fedora-Fr !

        Conclusion

        Nous espérons que cet entretien vous a permis d'en découvrir un peu plus sur l'infrastructure du projet Fedora.

        Si vous avez des questions ou que vous souhaitez participer au projet Fedora ou Fedora-fr, ou simplement l'utiliser et l'installer sur votre machine, n'hésitez pas à en discuter avec nous en commentaire ou sur le forum Fedora-fr.

        Et ainsi s'achève notre série d'entretiens. On espère que cela vous aura plus et peut être à dans quelques années pour savoir ce qui a changé. :)

        Commentaires : voir le flux Atom ouvrir dans le navigateur

        • ✇LinuxFr.org : les dépêches
        • muttum, un nouveau jeu de devinette de mots pour Linux
          muttum est un jeu libre dont le but est de retrouver un mot en quelques essais. La première lettre est fixe pour avoir des plateaux différents à chaque fois. Une première version de muttum est publiée sur Flathub depuis le début de l’été. lien nᵒ 1 : site du projetlien nᵒ 2 : muttum sur Flathublien nᵒ 3 : code sourceSommaire Histoire Fonctionnalités Limitations Développements futurs Histoire Le projet muttum est né suite à la découverte des jeux Wordle et Sutom qui proposent également de de

        muttum, un nouveau jeu de devinette de mots pour Linux

        muttum est un jeu libre dont le but est de retrouver un mot en quelques essais. La première lettre est fixe pour avoir des plateaux différents à chaque fois. Une première version de muttum est publiée sur Flathub depuis le début de l’été.

        Sommaire

        Histoire

        plateau de jeu

        Le projet muttum est né suite à la découverte des jeux Wordle et Sutom qui proposent également de deviner un mot une fois par jour dans le dictionnaire anglais pour le premier et français pour le second.

        J’ai décidé de me lancer dans l’aventure de développer muttum sur mon temps libre pour proposer le jeu de devinette sans avoir besoin d’Internet et pour pouvoir essayer plusieurs mots dans la même journée sans limitation artificielle.

        Une autre de mes motivations était d’apprendre à créer une application avec les bibliothèques GTK et GObject. J’avais déjà joué avec GTK quelques fois, mais je n’avais pas utilisé le concept des objets proposé par GObject et il me semblait que GObject pouvait simplifier l’utilisation des composant GTK complexes. Par exemple, après avoir implémenté la vue en table des budgets HomeBank, j’ai eu l’impression que ça aurait été plus facile de créer la table GTK si les données à afficher avait déjà été mises en forme avec GObject.

        Je voulais également essayer également d’utiliser le langage C directement, le langage utilisé par GTK, pour ne pas avoir besoin de dépendre des introspections (interfaces de GTK avec les autres langages de programmation, comme Python, C++…).

        C’est ainsi que le développement a commencé en février 2022 sous le nom temporaire LeBonMot avec une structure assez simple qui mélangeait le moteur logique du jeu et l’interface graphique dans un seul et même code source.

        Après quelques semaines de développement, j’ai trouvé le nom muttum et j’ai débuté la location du nom de domaine muttum.org en avril 2022 :

        $ rdap muttum.org
        Domain:
        Domain Name: muttum.org
        Domain Name (Unicode): > muttum.org
        […]
        Event:
        Action: registration
        Date: 2022-04-12T08:46:16.285Z

        muttum serait, d’après le Wiktionnaire, un nom commun latin qui signifie bruit, grognement et dont la dérivation en français a formé le nom commun mot. Cette information m’a bien plu puisque justement le but du jeu est de retrouver le bon mot et que, en plus, c’est un palindrome.

        Durant la même période, j’ai commencé une réorganisation du code pour séparer la partie moteur de calcul de la partie graphique, ce qui permettra dans le futur de développer plusieurs styles d’interface graphique. Pour l’instant muttum ne propose qu’une interface développée pour la plateforme GNOME, car elle dépend de la bibliothèque libadwaita.

        Quand je décide de faire cette séparation, j’ai deux idées d’interfaces  : une qui serait multi-plateforme en n’utilisant que GTK (sans libadwaita) et une interface web en utilisant WebAssembly pour utiliser le moteur de muttum. Pour l’instant, aucune de ces 2 interfaces n’a été développée. La version multiplateforme sera assez rapide à implémenter (il faut enlever libadwaita des dépendances) et la version web ne sera peut-être jamais utile finalement : depuis 2025 GTK propose un portage expérimental pour la plateforme Android.

        Gagné !

        Vers septembre 2022, je décide de séparer le code source dans deux répertoires différents: muttum ne contiendra que l’interface graphique et libmuttum ne contiendra que le moteur du jeu. Le travail est donc continué sur libmuttum jusqu’à fin janvier 2023 (séparation du moteur, ajout de tests pour le moteur…).

        Le projet est en pause complète jusqu’en novembre 2024, je ne sais plus pourquoi, mais certainement parce que les rénovations de ma maison ont débuté en 2023 et que je n’avais plus la tête à coder sur mon temps libre.

        En novembre 2024, le premier commit de la reprise indique que je reprends le code du moteur avec le langage Rust et ce pour plusieurs raisons :

        1. je souhaitais apprendre Rust et le code de ce moteur était un bon bac à sable pour apprendre un nouveau langage. Il m’avait d’ailleurs déjà permis d’apprendre à utiliser C et GObject ;
        2. je ne retrouve plus la référence exacte, mais un des développeurs principaux de GTK conseillait d’utiliser Rust pour débuter de nouvelles applications (c’était probablement l’article On Vala d’Emmanuele Bassi) ;
        3. les éditions ENI m’ont offert le livre Rust, Développez des programmes robustes et sécurisés pour une de mes contributions à LinuxFr.

        Enfin, en juin 2025, la première version publique a été publiée sur Flathub.

        Fonctionnalités

        muttum fonctionne avec des dictionnaires : ce sont des fichiers textes qui contiennent un mot connu par ligne et qui sont encodés en UTF-8. Les dictionnaires distribués avec la version Flathub proviennent des projets:

        • wfrench pour le français
        • scowl pour les dictionnaires anglais
        • igerman98 pour les dictionnaires allemands

        muttum permet aux distributeurs de définir n’importe quel dictionnaire avec un fichier de configuration. Ceci permet aux empaqueteurs d’utiliser les paquets déjà existant pour les dictionnaires et de donner le chemin à charger pour chaque langue. Ce fichier de configuration est également utilisé dans le dialogue À propos des dictionnaires pour créditer les projets qui ont créé les dictionnaires.

        À propos des dictionnaires

        muttum sait gérer l’alphabet latin, mais il est architecturé pour définir d’autres alphabets. Pour ce faire, il faut définir les caractères de base. muttum utilise cette liste pour filtrer les caractères entrés par l’utilisateur et pour filtrer les mots valides.

        À mesure que l’utilisateur essaie des mots différents, muttum met à jour l’alphabet affiché en dessous du plateau pour indiquer si toutes les occurrences d’une lettre ont été trouvées (couleur verte), si des occurrences ont été trouvées et qu’il pourrait en exister plus (couleur orange) ou si une lettre n’existe pas dans le mot (couleur grise).

        Limitations

        muttum nécessite un clavier pour saisir les caractères, il n’y a pour l’instant pas de possibilité de saisir les caractères avec un écran tactile. L’écran doit aussi être assez grand pour pouvoir afficher le plateau complètement, donc pour l’instant il n’est pas utilisable sur les smartphones.

        muttum n’applique pas de filtres sur les mots des dictionnaires, il contrôle uniquement qu’un mot est valide selon l’alphabet défini. Par exemple, il est conseillé qu’un dictionnaire contienne les conjugaisons complètes des verbes et donc un mot à deviner peut être n’importe quelle forme du verbe.

        Développements futurs

        Pour l’instant, je vais faire une pause dans le développement de ce jeu, parce que je souhaite travailler sur d’autres projets.

        Néanmoins, j’ai déjà quelques idées pour la suite de ce projet :

        1. ajouter un dialogue pour expliquer comment jouer (utilisation du clavier), la signification des couleurs et la mise à jour de l’alphabet sous le plateau
        2. ajouter un chronomètre en sous-titre de la fenêtre et afficher le temps pour terminer le plateau dans le dialogue de fin de jeu
        3. dans le dialogue de fin, j’aimerai ajouter un bouton de partage comme le fait Sutom. Pour que ce soit intéressant, il faudra que j’ajoute un lien pour que les amis puissent essayer le même plateau. Donc il faut que muttum gère le schéma d’application muttum:// et il faudrait mettre le mot à trouver encodé en base64 et les paramètres du plateau dans le lien
        4. vers la fin du projet, j’ai appris l’existence de l’option pedantic pour le linter clippy et je voudrais corriger les points qu’il remonte pour avoir un meilleur style de code.
        5. la bibliothèque icu a sorti une nouvelle version majeur, il faudrait mettre à jour le code de muttum pour celle-ci.
        6. rendre l’application compatible avec les smartphones. Ça passera sûrement par l’utilisation d’entrées textes à la place des labels dans le plateau, cacher l’alphabet par défaut et rendre le plateau défilable.

        Commentaires : voir le flux Atom ouvrir dans le navigateur

        • ✇LinuxFr.org : les dépêches
        • Incident du 26 juin 2025 ayant touché les serveurs de production et de développement
          Ayant simultanément ressenti un trouble dans la force, vos administrateurs des serveurs LinuxFr.org ont noté un souci sur le site hier matin. Et d'autres personnes de l'équipe ont aussi signalé le problème (supervision efficace et réactive par le lectorat). Le serveur hébergeant les conteneurs de production et de développement a redémarré (hors de toute opération planifiée) à 06h15 Paris le 26 juin 2025, et contrairement aux redémarrages habituels pour les mises à jour, cela a entraîné un chang

        Incident du 26 juin 2025 ayant touché les serveurs de production et de développement

        Ayant simultanément ressenti un trouble dans la force, vos administrateurs des serveurs LinuxFr.org ont noté un souci sur le site hier matin. Et d'autres personnes de l'équipe ont aussi signalé le problème (supervision efficace et réactive par le lectorat).

        Le serveur hébergeant les conteneurs de production et de développement a redémarré (hors de toute opération planifiée) à 06h15 Paris le 26 juin 2025, et contrairement aux redémarrages habituels pour les mises à jour, cela a entraîné un changement des adresses IP internes des conteneurs de production et de développement, après redémarrage (06h18). Tous les services avaient bien redémarré, mais les accès aux sites web n'étaient plus possibles : le serveur web frontal ne pouvait plus joindre les adresses prévues, aboutissant à des réponses techniques 502 Bad Gateway.

        La correction sur les adresses IP a été faite à 08h08 pour la production et 08h16 pour le développement.

        Les deux autres serveurs hébergés au même endroit n'ont pas été affectés.

          Changement d'adresses IP

          Les conteneurs de production et de développement sont configurés en DHCP et gardent normalement les mêmes adresses sur les redémarrages.

          Exemple de redémarrage propre pour des mises à jours de sécurité :

          mai 24 10:06:08 oups dnsmasq-dhcp[1256]: DHCPREQUEST(lxc0) 192.168.0.2 aa:aa:aa:aa:aa:aa
          mai 24 10:06:08 oups dnsmasq-dhcp[1256]: DHCPACK(lxc0) 192.168.0.2 aa:aa:aa:aa:aa:aa prod
          mai 24 10:06:22 oups dnsmasq-dhcp[1256]: DHCPRELEASE(lxc0) 192.168.0.2 aa:aa:aa:aa:aa:aa
          ---redémarrage---
          mai 24 10:08:57 oups dnsmasq-dhcp[1228]: DHCPDISCOVER(lxc0) 192.168.0.2 bb:bb:bb:bb:bb:bb
          mai 24 10:08:57 oups dnsmasq-dhcp[1228]: DHCPOFFER(lxc0) 192.168.0.2 bb:bb:bb:bb:bb:bb
          mai 24 10:08:57 oups dnsmasq-dhcp[1228]: DHCPREQUEST(lxc0) 192.168.0.2 bb:bb:bb:bb:bb:bb
          mai 24 10:08:57 oups dnsmasq-dhcp[1228]: DHCPACK(lxc0) 192.168.0.2 bb:bb:bb:bb:bb:bb prod
          

          (les IP, MAC et interfaces ont été changées)
          On a demande et attribution de l'IP pour une adresse MAC donnée, puis elle est relâchée à l'arrêt de la machine, puis réattribuée au démarrage.

          Incident :

          juin 26 03:57:46 oups dnsmasq-dhcp[951195]: DHCPREQUEST(lxc0) 192.168.0.2 cc:cc:cc:cc:cc:cc
          juin 26 03:57:46 oups dnsmasq-dhcp[951195]: DHCPACK(lxc0) 192.168.0.2 cc:cc:cc:cc:cc:cc prod
          ---redémarrage---
          juin 26 04:18:42 oups dnsmasq-dhcp[1222]: DHCPREQUEST(lxc0) 192.168.0.2 dd:dd:dd:dd:dd:dd
          juin 26 04:18:42 oups dnsmasq-dhcp[1222]: DHCPNAK(lxc0) 192.168.0.2 dd:dd:dd:dd:dd:dd address in use
          juin 26 04:18:46 oups dnsmasq-dhcp[1222]: DHCPDISCOVER(lxc0) dd:dd:dd:dd:dd:dd
          juin 26 04:18:46 oups dnsmasq-dhcp[1222]: DHCPOFFER(lxc0) 192.168.0.100 dd:dd:dd:dd:dd:dd
          juin 26 04:18:46 oups dnsmasq-dhcp[1222]: DHCPREQUEST(lxc0) 192.168.0.100 dd:dd:dd:dd:dd:dd
          juin 26 04:18:46 oups dnsmasq-dhcp[1222]: DHCPACK(lxc0) 192.168.0.100 dd:dd:dd:dd:dd:dd prod
          

          On a demande et attribution de l'IP pour une adresse MAC donnée. Elle n'est pas relâchée à l'arrêt de la machine, n'est pas disponible au redémarrage, et une autre est alors attribuée.

          Nature du redémarrage

          Le redémarrage a été brutal, sans arrêt propre des services. Il ne s'agit donc pas d'un arrêt logiciel propre depuis le serveur.

          La cause possible peut donc être un souci d'instabilité électrique, l'arrêt/extinction physique sur le serveur, un bug ou une faille logicielle, ou encore le redémarrage électrique via la carte d'administration. Cette cause n'est actuellement pas connue.

          Mesures préventives et correctives

          Il pourrait être utile de figer les IP internes et/ou d'assurer la synchronisation/reconfiguration du frontal web.

          Il n'est pas prévu d'avoir de la redondance sur la production à court/moyen terme, donc un souci sur le conteneur de production continuera à avoir un effet visible.

          La supervision peut certainement être améliorée (et l'état des services rendu visible depuis un simple navigateur web).

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • Elpe, un compromis entre NixOS et Ubuntu
            Je travaille depuis quelque temps sur Elpe, un projet qui vise à obtenir les bonnes propriétés de Nix/NixOS (les mises à jour atomiques, la reproductibilité), mais avec des paquets Ubuntu. Le code : https://nest.pijul.com/pmeunier/elpe L'idée est de définir des recettes de compilation en OCaml et de les envoyer à un backend Rust, qui se charge de les exécuter dans un conteneur sans réseau, en exposant uniquement le contexte nécessaire à la bonne exécution de la compilation. Les produits du bui

          Elpe, un compromis entre NixOS et Ubuntu

          Je travaille depuis quelque temps sur Elpe, un projet qui vise à obtenir les bonnes propriétés de Nix/NixOS (les mises à jour atomiques, la reproductibilité), mais avec des paquets Ubuntu.

          Le code : https://nest.pijul.com/pmeunier/elpe

          L'idée est de définir des recettes de compilation en OCaml et de les envoyer à un backend Rust, qui se charge de les exécuter dans un conteneur sans réseau, en exposant uniquement le contexte nécessaire à la bonne exécution de la compilation. Les produits du build sont indexés par le contenu de la recette du build, et indexés une deuxième fois par le résultat : c'est ce deuxième hash qui est utilisé dans les dépendants du paquet, ce qui permet de construire un arbre de Merkle du système complet (et non seulement de ses sources), qui rend toute modification ultérieure facilement détectable.

          De plus, le système de base provient des dépôts de paquet Debian ou Ubuntu. Cependant, tous les chemins sont hard-codés (comme dans Nix), ce qui permet de garantir la reproductibilité, au détriment toutefois du coût de mise à jour en termes d'espace et opérations disque.

          Si le choix de Rust devient relativement consensuel par les temps qui courent, OCaml est plus surprenant. Après divers essais avec plusieurs langages, je l'ai choisi parce que c'est le seul langage avec à la fois :

          • Une bonne approximation du système de types dont j'avais besoin: typage nominal et aussi structurel, entre autres.
          • Un système de types relativement simple (pas de typeclasses ni de monades comme en Haskell, de borrow checkers comme en Rust ni de types dépendants comme en TypeScript).
          • Du late binding, nécessaire pour exprimer des "overrides" et des "hooks", courants quand on veut compiler des choses (autoconf et make ont plein d'options de ce type, par exemple).
          • Un compilateur ultra-rapide.
          • Un bytecode, pour (dans le futur) contrôler aussi l'isolation du code de build de façon très légère.

          La simplicité et l'expressivité d'OCaml sont bien adaptés à ce projet: les fonctions simples à concevoir y sont relativement claires à énoncer.


          Pourquoi pas NixOS, me direz-vous ? En tant qu'utilisateur et contributeur depuis environ 10 ans, un certain nombre de problèmes plus ou moins récents m'ont motivé à explorer une alternative:

          • En termes de gouvernance, la communauté a traversé dans la dernière année plusieurs crises de différentes tailles (Anduril, Devenv…). On pourrait y voir un signe de maturation ou au moins de croissance du projet, mais plusieurs éléments me permettent d'en douter, dont les réactions répétées de la fondation Nix, qui semble avoir beaucoup de mal à comprendre les messages pourtant clairs des contributeurs.

          • Je vois aussi les choix de design imposés par les fondateurs du projet depuis quelques années comme un bien mauvais signe: les flakes (en 2020) étaient une première incarnation de cette tendance, et plus récemment la "distribution propriétaire" de Nix est clairement une mauvaise idée, alors que la qualité de code de Nix n'est pas au niveau où on l'attendrait et que le gros du projet repose depuis plusieurs années sur le travail pharaonique des contributeurs de Nixpkgs.

          • On pourrait parler longtemps de la sécurité de Nix, qui me fait de plus en plus peur y compris pour mon usage personnel. Les process de gestion des rapports ne me conviennent pas, de même que l'opacité de certains choix techniques (les flags de compilation désactivés sur certaines plateformes, entre autres), souvent bien cachés dans les entrailles de Nixpkgs.

          • Enfin, le langage trop complexe à utiliser (principalement par manque de typage statique et de messages d'erreurs pertinents) rend Nix difficile à utiliser au sein d'une organisation d'une taille importante, et encourage les comportements peu inclusifs (éviter d'écrire de la doc, inventer des casse-têtes pour faire des choses simples…). Je suis bien sûr conscient que des entreprises (comme Anduril) et des ONGs (comme Médecins Sans Frontières) l'utilisent, mais je ne pense pas que ce soit généralisable aux situations où j'aimerais voir ce genre de projet utilisé.

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • 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. Cet article au ton très « administration système » s’adresse à : des gens qui voudraient mettre

          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

          • ✇LinuxFr.org : les dépêches
          • QEMU 10.0
            Comme tous les ans, Qemu sort une nouvelle version majeure. Le numéro n'implique donc pas de grands bouleversements. Il s'agit plutôt d'une base stable qui va être maintenue et améliorée pendant quelques années. Ainsi, les versions 7, 8 et 9 ont eu des mises à jour en mars 2025. Comme d'habitude, les architectures ARM et Risc-V se taillent la part du lion et sont enrichies de nouvelles architectures. Les accès aux stockages sont partout plus rapides, et l'espace utilisateur accède toujours mieu

          QEMU 10.0

          Comme tous les ans, Qemu sort une nouvelle version majeure. Le numéro n'implique donc pas de grands bouleversements. Il s'agit plutôt d'une base stable qui va être maintenue et améliorée pendant quelques années. Ainsi, les versions 7, 8 et 9 ont eu des mises à jour en mars 2025.

          Comme d'habitude, les architectures ARM et Risc-V se taillent la part du lion et sont enrichies de nouvelles architectures. Les accès aux stockages sont partout plus rapides, et l'espace utilisateur accède toujours mieux au matériel.

          Qemu est devenu une pièce importante dans le monde des serveurs et des développeurs. En tant qu'émulateur il permet de développer, compiler ou lancer un programme sur un processeur ou une machine différente. Couplé à KVM, XEN ou VMWare, il permet une virtualisation performante.

          Quoi de neuf ?

          L'article de Next résume bien les changements sur ARM et Risc-V. C'est technique, n'étant pas connaisseur je vous y renvoie.

          x86 bénéficie de changements globaux à toutes les architectures avec quelques ajouts spécifiques pour des processeurs Intel. Mon petit doigt impatient de tester me souffle que ça sera plus rapide avec des accès "multithread1" aux périphériques de stockage (virtio-scsi et virtio-blk). L'accès direct au matériel en espace utlisateur continue de s'améliorer (VFIO, fonctions virtuelles d'entrées-sorties).

          Les autres changements concernent l'émulation des architectures HPPA et S390.

          Attention aux trucs enlevés

          À chaque version ou presque, des morceaux sont enlevés. Si vous faites dans l'exotique, ne vous précipitez pas sur la dernière version sans consulter la liste des Removed features.

          Documentation d'introduction pour QEMU et la virtualisation

          En guise de conclusion, voici quelques pistes pour ceux et celles qui débutent avec la virtualisation sous Linux et/ou QEMU. Différentes distributions Linux ont de la documentation sous licence libre. Loin d'être exhaustif, voici quelques choix :


          1. Qu'on me pardonne ce mot, je simplifie pour faire court! 

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • Kivy : un cadriciel graphique unique en Python
            Kivy est un cadriciel (framework) graphique, permettant de développer des interfaces tactiles (ou utilisable à la souris) sur toutes les plateformes, y compris mobiles. Il s'accompagne d'une suite de logiciels très pratiques que nous allons présenter ici. lien nᵒ 1 : site officiellien nᵒ 2 : Kivy Garden (extensions)lien nᵒ 3 : KivyMDlien nᵒ 4 : Un très bon point d'entrée en français (merci chyek)Sommaire Kivy : boîte à outils graphique multi-plateformes kv : interface graphique en déclaratif

          Kivy : un cadriciel graphique unique en Python

          Kivy est un cadriciel (framework) graphique, permettant de développer des interfaces tactiles (ou utilisable à la souris) sur toutes les plateformes, y compris mobiles. Il s'accompagne d'une suite de logiciels très pratiques que nous allons présenter ici.

          logo Kivy

          Sommaire

          Kivy : boîte à outils graphique multi-plateformes

          Kivy permet de créer des interfaces graphiques naturellement adaptées aux écrans tactiles (mais qui restent utilisables sur un environnement de bureau traditionnel, à la souris et sans écran tactile). Il est écrit principalement en Python mais les parties critiques sont écrites en Cython, ce qui lui permet d’avoir de bonnes performances.

          Une interface Kivy peut s’écrire de deux façons (ou, plus couramment, par une combinaison de ces deux façons) : en Python directement, ou via kv, une syntaxe déclarative dont nous parlons plus bas.

          Pour vous donner une idée, voici un exemple de hello world repris du site officiel de Kivy :

          from kivy.app import App
          from kivy.uix.button import Button
          
          class TestApp(App):
              def build(self):
                  return Button(text='Hello World')
          
          TestApp().run()

          Ce qui donnera :
          capture d’écran du hello world

          Une interface est composée de « widgets » agencés via des « layouts ». Certains widgets permettent de facilement mettre en place des composants communs de nos jours, comme par exemple le widget Carousel :
          capture d’un widget Carousel

          D’autre part, Kivy fournit des outils qui simplifient la vie du développeur ou de la développeuse, en particulier un système de propriétés (à ne pas confondre avec les propriétés Python) qui permet de mettre automatiquement l’interface à jour quand elles sont modifiées, ou de facilement attacher une fonction de rappel (« callback »), voir plus bas pour un exemple simple. On peut aussi citer un mécanisme d’animations très pratique et efficace.

          kv : interface graphique en déclaratif

          kv est un langage permettant de décrire des interfaces, il met à profit les propriétés mentionnées plus haut et l’interface va se mettre à jour automatiquement quand des propriétés utilisées dans kv sont modifiées.

          Reprenons le hello world vu plus haut, et faisons-le avec kv:

          Widget:
              Button:
                  text: "Hello World"
          

          Plutôt simple non ?
          Le code kv est généralement mis dans des fichiers séparés avec l’extension .kv.

          Les propriétés

          Kivy a donc un concept de propriété, qui permettent la liaison de données bidirectionnelles (two-way data binding), ou en d’autres termes de facilement avoir l’état mis à jour entre le code python et l’interface décrite dans le fichier kv. C’est à l’usage très pratique et facile.

          Un exemple va sans doute aider à comprendre.

          Commençons par faire un environnement virtuel Python avec Kivy:

          $ mkdir demo
          
          $ cd demo
          
          $ python -m venv env
          
          $ source env/bin/activate
          
          $ pip install kivy

          Ensuite créez le fichier demo.py suivant :

          from kivy.app import App
          from kivy.uix.boxlayout import BoxLayout
          from kivy.properties import NumericProperty
          
          class CompteurWidget(BoxLayout):
              compteur = NumericProperty(0)
          
              def increment(self):
                  self.compteur += 1
          
          class DemoApp(App):
              def build(self):
                  return CompteurWidget()
          
          DemoApp().run()

          Et maintenant, dans le même répertoire, ajoutez le fichier demo.kv suivant, ce dernier sera automatiquement découvert par Kivy parce qu’il s’appelle comme notre application (DemoApp) sans le suffixe App et en minuscule :

          
          <CompteurWidget>:
              orientation: 'vertical'
              padding: 20
          
              Label:
                  text: str(root.compteur)
                  font_size: 30
          
              Button:
                  text: "Incrémenter"
                  on_press: root.increment()
          

          Il ne nous reste plus qu’à lancer le programme :

          python demo.py

          Et à admirer :

          capture d’écran du programme de démo

          Le label se met automatiquement à jour quand le compteur compteur est incrémenté.

          La lectrice ou le lecteur assidu de DLFP pourra faire un TapTempo en exercice.

          Note: Ne vous arrêtez pas au fait que l’UI est un peu "moche" par défaut, il y a des extensions beaucoup plus attractives (cf. KivyMD plus bas), et il est très facile de personnaliser l’interface et d’en faire une très belle en modifiant un peu ses fichiers .kv.

          Plyer : accéder facilement aux fonctionnalités matérielles de votre appareil

          Plyer est une bibliothèque permettant d’accéder à nombre de fonctions utiles de manière indépendante de la plateforme. Ainsi vous avez une API commune pour afficher une notification, demander l’état de la batterie, faire vibrer l’appareil, faire de la synthèse vocale de texte (« text-to-speech »), ouvrir un fichier avec le dialogue natif de la plateforme, etc.

          Bien que développé par la même équipe que Kivy, ce paquet est utilisable indépendamment et est donc particulièrement utile pour n’importe quel projet multi-plateformes. Référez-vous à la page du projet pour avoir un tableau des fonctionnalités supportées selon les plateformes, et à la documentation pour plus de détails.

          Python For Android : utiliser Python… sur Android

          Si vous souhaitez distribuer votre application sur Android, vous allez devoir avoir une version de Python compilée pour cette plateforme, ainsi que de tous les paquets nécessitant une compilation.

          C’est le rôle de Python pour Android, qui est une collection d’outils qui s’appuient sur l’Android SDK pour permettre d’utiliser Kivy ou d’autre paquets Python sur Android, et ainsi faire votre propre distribution Python.

          Si vous utilisez un paquet qui n’est pas en pur Python (c’est-à-dire qu’il y a des parties à compiler) et qui n’est pas encore disponible ou qui l’est mais dans une version trop ancienne, vous pouvez écrire ou mettre à jour des « recettes » (recipes en anglais) qui indiquent comment compiler. Référez-vous à la documentation pour voir comment faire.

          Notez toutefois qu’il y a une pénalité à utiliser du Python par rapport à une application dans un langage compilé : il faut charger l’interprète au démarrage, et au tout premier lancement de votre application (et uniquement au premier) il y a aura une phase de décompression de vos fichiers. En dehors de ces petits inconvénients, ça fonctionne très bien.

          Là encore, le projet est indépendant de Kivy et peut être utilisé avec un autre cadriciel.

          Kivy for iOS : déployez sur les appareils Apple

          À l’instar d’Android, l’équipe de Kivy fournit les outils pour faire votre distribution Python pour iOS.

          Il vous faudra posséder une machine Apple pour les utiliser, à cause des restrictions imposées par cette plateforme (ceci n’est pas spécifique à Kivy pour iOS, mais s’applique à tous les outils pour développer sur iOS).

          Ainsi avec une seule base de code (et après avoir passé un peu de temps pour configurer correctement les outils de compilation), vous pouvez déployer votre application Kivy/Python sur toutes les plateformes majeures (hormis le web, pour lequel il existe d’autres options comme Brython, Pyodide ou PyScript, mais c’est un sujet pour une autre dépêche).

          Pyjnius : utiliser l’API Java Android depuis Python

          Parfois l’utilisation de Plyer mentionné plus haut et de la bibliothèque standard Python ne suffisent pas, et vous avez besoin d’accéder à l’API d’Android, mais cette dernière est faite pour être utilisée avec Java ou Kotlin.

          Pour pouvoir utiliser l’API d’Android depuis Python, PyJNIus est disponible. Ce paquet permet d’accéder aux classes Java comme à des classes Python en utilisant JNI (« Java Native Interface » ou « Interface Native de Java »).

          Ce paquet fournit une méthode autoclass qui convertit automatiquement une classe Java en Python, c’est très facile à utiliser et souvent suffisant pour les cas simples.

          KivyMD, des widgets Material Design

          KivyMD n’est pas un projet officiel de l’équipe Kivy, mais un projet tiers dédié à la création d’un ensemble de Widgets thémables adoptant Material Design.

          Image d’exemple de KivyMD issue de la documentation

          L'image ci-dessus est issue de la documentation de KivyMD, vous trouverez également des démos vidéo sur le dépôt du projet.

          Quelques limitations

          Une petite note sur mon expérience personnelle (Goffi). Kivy est un excellent cadriciel, et l’équipe est accueillante et réactive : c’est un projet que je recommanderais en général. Ceci dit, dans mon cas particulier (un client XMPP ayant de nombreuses fonctionnalités), j’ai quelques limitations qui me poussent actuellement à chercher des alternatives, notamment basées sur Qt (PyQt et PySide) :

          • l’accessibilité est un problème majeur. L’équipe y travaille, mais aujourd’hui les applications Kivy ne sont pas accessibles. C’est notamment dû au fait que l’interface utilisateur est entièrement gérée par Kivy, au lieu d’utiliser des composants natifs, et c’est un point complètement bloquant pour moi.
          • il n’y a pas de webview ou de rendu HTML natif, ce qui est bloquant parce que je fais du rendu de blogs.
          • le rendu de texte est incomplet, notamment sur les plateformes mobiles. C’est compliqué de faire un rendu riche avec des émojis, par exemple, un gros problème pour une application de messagerie de nos jours.
          • le support des portails Freedesktop est inexistant : il faut faire l’implémentation à la main, alors qu’il est natif sur des cadriciels majeurs comme GTK ou Qt. Je pense par exemple à l’ouverture ou l’enregistrement de fichier. Les portails sont particulièrement nécessaires si on veut voir son application sur Flatpak. Plus de détails sur ce ticket.
          • le support Wayland existe, mais lors de mes tests sur des distributions GNU/Linux sur Pinephone, il n’a pas fonctionné et je n’ai pas pu afficher l’application.
          • le chargement de l’interprète Python prend un certain temps, ce qui rend le lancement de l’application sur plateformes mobiles telle qu’Android et probablement iOS (que je n’ai pas testé) un peu lent. Sachant que sur ces plateformes l’application peut être tuée à n’importe quel moment auquel cas il faut tout relancer, cela peut mener à une mauvaise expérience utilisateur. Ceci dit, avec une distribution optimisée (en enlevant les paquets non utilisés), et sur les téléphones actuels qui sont très puissants, le problème est sans doute moindre.

          Notez que je n’ai pas eu l’occasion de travailler avec Kivy récemment, peut-être que ces remarques ne sont plus à jour. Merci d’indiquer en commentaires s’il y a eu de l’évolution sur ces points.

          Aussi, mon cas d’utilisation est très demandant (rendu HTML, affichage de texte performant, etc). Dans la plupart des cas, Kivy remplit sans problème toutes les cases (sauf l’accessibilité, qui reste son problème le plus important à mon sens).

          Conclusion

          Comme vous pouvez le voir, un travail considérable a été effectué sur Kivy et son écosystème, et il en sort un cadriciel performant, pratique, et qui peut potentiellement fonctionner sur la plupart des plateformes. Kivy est agréable à utiliser, et dispose d’une communauté très active et disponible.

          Ce cadriciel mérite de s’y attarder, et est une option sérieuse si vous voulez développer un projet rapidement pour une ou plusieurs plateformes.

          Une note d’histoire

          Cette dépêche a été commencée le 04 octobre 2018 à 14:19 (au premier jour de la Pycon FR 2018, à Lille, où une partie de l’équipe de Kivy était présente). Je crois que c’est haut la main la dépêche qui est restée le plus longtemps dans l’espace de rédaction. Comme quoi, tout vient à point à qui sait attendre, comme dirait l’autre.

          Merci à toutes les personnes qui ont participé à la correction de la dépêche.

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • WoPiX, un serveur WOPI libre, indépendant, simple et léger
            Un serveur WOPI (Web application Open Platform Interface) permet à un logiciel client de modifier un fichier stocké sur un serveur. C'est la couche indispensable pour qu'OnlyOffice, LibreOffice (Collabora Online) et d'autres suites bureautiques puissent être utilisés sur le web. Ainsi, lorsque vous réclamez l'ouverture d'un document depuis votre navigateur web, vous vous connectez à la suite bureautique en ligne avec une URL particulière, contenant, entre autres, le nom du fichier à ouvrir. La s

          WoPiX, un serveur WOPI libre, indépendant, simple et léger

          Un serveur WOPI (Web application Open Platform Interface) permet à un logiciel client de modifier un fichier stocké sur un serveur. C'est la couche indispensable pour qu'OnlyOffice, LibreOffice (Collabora Online) et d'autres suites bureautiques puissent être utilisés sur le web. Ainsi, lorsque vous réclamez l'ouverture d'un document depuis votre navigateur web, vous vous connectez à la suite bureautique en ligne avec une URL particulière, contenant, entre autres, le nom du fichier à ouvrir. La suite bureautique peut alors discuter avec le serveur WOPI pour récupérer le document. Les lectures, écritures et modifications d'un document sont gérées par le serveur WOPI, à la demande de la suite bureautique. Le protocole a été créé par Microsoft en 2012, la révision 14.5 de WOPI est sortie le 18 février 2025.

          Les serveurs WOPI libres de Nextcloud, Seafile, Tracim… ne sont pas indépendants. Comme je voulais utiliser Collabora Online sans déployer un NextCloud complet, j'ai écrit un serveur WOPI très simple. Il est utilisé depuis plus d'un an sans problème et il est libre. Il est écrit en Java.

          J'ai commencé ce développement car je travaille sur deux lieux privés différents avec un ordinateur à chaque endroit, un NAS dans l'un d'eux et je communique entre les deux machines à l'aide d'un dépôt git sur le NAS. Ça fonctionne relativement bien pour des fichiers qui n'ont pas vocation à rester ouverts dans des applications, mais pour des fichiers ODS ou ODT qui restent ouverts, c'est plus compliqué car je me retrouve souvent avec des versions concurrentes sur les deux machines. J'ai donc regardé du côté des suites de collaboration en ligne.

          À une époque , je me servais d'Etherpad et de son équivalent tableur Ethercalc. Mais ces logiciels manquent de fonctionnalités, surtout le tableur. Problème supplémentaire : j'ai déjà beaucoup de fichiers aux formats LibreOffice.

          Ça tombe bien, il y a la suite LibreOffice online, éditée par Collabora Online (CODE). Le problème — comme souligné par une dépêche — c'est qu'une fois CODE installé, tu te retrouves à poil avec rien qui marche : il faut un serveur utilisant le protocole WOPI.

          Pour éviter d'installer tout un NextCloud, j'ai écrit un petit serveur WOPI. C'est du Java avec Spring Boot. Le serveur est très simple, sur le principe que plus un système est simple, moins il a de chances de tomber en panne.

          Par exemple, il n'y pas de droits d'accès et on ne peut pas avoir plusieurs utilisateurs simultanés. Il faudrait mettre en œuvre le système de verrous et le système de droits d'accès (faire reposer les droits d'accès sur les droits du système de fichier, implique d'avoir un utilisateur sur la machine pour chaque utilisateur du logiciel). Cela n'a pas été implanté parce que je suis le seul utilisateur sur ma machine. Mais ce ne serait pas long à développer.

          Le serveur une fois lancé expose des services REST, accessibles par la suite bureautique, mais aussi un service https qui permet d'afficher la liste des fichiers. Cette liste de fichier est cliquable et permet de se connecter à Libre Office avec la bonne URL. C'est la raison des paramètres proxyHost et code URL de l'application : être en mesure de générer la bonne URL.

          Liste des fichiers

          Le code est prévu pour avoir plusieurs backends à l'aide d'une interface. Le seul mis en œuvre pour l'instant c'est un stockage sur disque local (avec auto discovery : on lui donne un répertoire et il expose tout les documents du répertoire).

          Il consomme peu de ressources, la charge dépendra plus de Collabora Online ou d'OnlyOffice. Le serveur WOPI se contente de lire un fichier à l'ouverture et de l'écrire de temps en temps (comme lors des enregistrements automatiques).

          Il n'est pas testé avec OnlyOffice. En principe WOPI est une norme et ça devrait fonctionner.

          On peut le lancer avec java -jar. C'est du Spring Boot. On pourrait utiliser systemd. De mon côté, je l'ai mis dans un container docker qui lance la commande suivante

          java -Dlogging.level.root=INFO \
               -Dlogging.level.org.wopiserver=INFO \
               -Dserver.port=8880 \
               -jar /opt/app/app.jar \
               --baseDir /mnt/docs \
               --disableTLSCheck \
               --codeURL https://172.17.0.8:9980 \
               --proxyHost 192.168.124.252

          Le code de WoPiX est dispo sur github et je suis ouvert à toute requête :-)

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • La version 2.2 de LDAP Synchronization Connector est là !
            LDAP Synchronization Connector (LSC) est un outil de synchronisation de données entre référentiels d'identités (annuaires LDAP, bases de données, API REST, …) disponible sous licence BSD. Ce logiciel a été créé il y a plus de 20 ans et est déployé dans de très nombreuses organisations qui l'utilisent le plus souvent pour alimenter les comptes et groupes dans leur annuaire d'entreprise depuis leur outil RH, ou bien pour synchroniser les données entre OpenLDAP et Active Directory. La version 2

          La version 2.2 de LDAP Synchronization Connector est là !

          LDAP Synchronization Connector (LSC) est un outil de synchronisation de données entre référentiels d'identités (annuaires LDAP, bases de données, API REST, …) disponible sous licence BSD.

          Logo LSC

          Ce logiciel a été créé il y a plus de 20 ans et est déployé dans de très nombreuses organisations qui l'utilisent le plus souvent pour alimenter les comptes et groupes dans leur annuaire d'entreprise depuis leur outil RH, ou bien pour synchroniser les données entre OpenLDAP et Active Directory.

          La version 2.2, en préparation depuis plusieurs années, a enfin vu le jour en ce mois d'avril 2025, grâce au travail de la société Worteks et à l'aide du programme NGI Commons de NLnet.

          Configuration par variables d'environnement

          La configuration de LSC se fait dans un fichier XML. Il est désormais possible d'y mettre des variables d'environnement pour par exemple passer facilement d'un environnement à un autre ou récupérer des secrets à la volée.

          Voir la documentation

          Hooks

          Il existait déjà un plugin LSC nommé Executable qui lançait des scripts pour les ajouts/suppressions/modifications/renommages, rendant le logiciel compatible avec tous les référentiels si tant est qu'on puisse exécuter une commande pour s'y connecter.

          Mais le nouveau système de hook est différent : cette fois-ci les opérations sont bien réalisées avec le connecteur natif (mais aussi pourquoi pas avec le plugin Executable) et en cas de succès, pour chaque opération et entrée, une commande est lancée.

          Un cas d'usage bien connu est l'envoi d'un mail lors de la création d'un compte.

          Voir la documentation

          Transformation de pivot

          Le pivot est la valeur qui relie une entrée en source avec une entrée en destination. Si ces deux entrées ont la même valeur de pivot, alors LSC considère que c'est la même et applique les modifications. Sinon les entrées sont créées ou supprimées.

          Cependant il arrive que la valeur soit un peu différente entre la source et la destination (majuscules, minuscules, préfixe, suffixe, …), il faut donc transformer cette valeur dans un sens, puis dans l'autre.

          Voir la documentation

          Version de Java

          LSC 2.1 était bloqué à la version 8 de Java, ce qui devenait problématique. LSC 2.2 est désormais compatible avec Java 21.

          GraalVM

          Les JavaScripts utilisés pour transformer les valeurs peuvent désormais être exécuté dans GraalVM, en utilisant le préfixe "gjs:"

          Voir la documentation

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • Gestion simple de tournois sportif PyTournois
            Sportifs du dimanche, on a souvent besoin de gérer des tournois très simples du type « tout le monde rencontre tout le monde » avec quelques contraintes: nombre de terrains limité ; temps d’attente minimal entre deux matchs ; règles variées sur la gestion des scores. Depuis une vingtaine d’années, je développe différents sites en Python/Django. Du coup j’ai fabriqué un début de site :). lien nᵒ 1 : Code de PyTournoislien nᵒ 2 : Documentationlien nᵒ 3 : DémonstrationCode Libriste depuis touj

          Gestion simple de tournois sportif PyTournois

          Sportifs du dimanche, on a souvent besoin de gérer des tournois très simples du type « tout le monde rencontre tout le monde » avec quelques contraintes:

          • nombre de terrains limité ;
          • temps d’attente minimal entre deux matchs ;
          • règles variées sur la gestion des scores.

          Depuis une vingtaine d’années, je développe différents sites en Python/Django. Du coup j’ai fabriqué un début de site :).

          Code

          Libriste depuis toujours, le code du projet est sous licence GPL. Actuellement très simple, le site permet de gérer uniquement le mode « toutes les équipes se rencontrent ». Plus tard, suivant les retours, les utilisations et mon temps libre, j’ajouterai d’autres modes (par exemple pour gérer des groupes de placements).

          Pour éviter les calculs inutiles, l’affectation des rencontres utilise des grilles de placement. Ces grilles sont calculées une fois pour toutes et contenues dans le projet. L’avantage est d’être efficace et rapide sur la génération de toutes les rencontres. L’inconvénient est que seules quelques combinaisons sont actuellement disponibles :)

          Fonctionnement

          Le fonctionnement est très simple, le principe de base est que toutes les informations sont visibles sans connexion. Il y a quatre grands rôles utilisateurs:

          • administrateur: sert surtout pour créer des comptes utilisateurs ;
          • organisateur: peut créer des équipes et réinitialiser un tournoi ;
          • arbitre: peut enregistrer/modifier les résultats des matchs ;
          • anonyme: accès à la liste des matchs et au classement.

          Les règles de classement sont affichées. On peut également définir un message d’accueil. Si on veut sauvegarder les résultats d’un tournoi, il y a un export au format CSV.

          Démonstration

          Il y a évidemment un site de démonstration du projet. Le lien se trouve ci-dessous. Les ressources nécessaires pour faire tourner le site sont extrêmement limitées. Si les fonctionnalités du site vous conviennent et que vous voulez l’utiliser pour un club/tournois, n’hésitez pas à me contacter. Je pourrais mettre en ligne une version dédiée gratuitement.

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • yahi un agrégateur de statistiques dans l'esprit d'awstats
            J’ai la nostalgie d’awstats : la possibilité de faire des statistiques web sans déployer des tonnes d’infrastructure (genre Grafana). Pour cela, j’ai codé Yahi, un module Python qui agrège dans sa forme basique les statistiques web en format usuel (nginx, apache, lighthttpd, varnish) pour les présenter dans une page web « tout en un ». Il se décompose pour sa partie utilitaire en deux scripts: - un d'agrégation des statistique de journaux de serveurs webs dont l'écriture d'une version personna

          yahi un agrégateur de statistiques dans l'esprit d'awstats

          J’ai la nostalgie d’awstats : la possibilité de faire des statistiques web sans déployer des tonnes d’infrastructure (genre Grafana).

          Pour cela, j’ai codé Yahi, un module Python qui agrège dans sa forme basique les statistiques web en format usuel (nginx, apache, lighthttpd, varnish) pour les présenter dans une page web « tout en un ».

          Il se décompose pour sa partie utilitaire en deux scripts:
          - un d'agrégation des statistique de journaux de serveurs webs dont l'écriture d'une version personnalisée ici celle que j'utilise pour faire des démos sans IP ou URLs est relativement simple;
          - un de génération d'une page de visualisation HTML avec les données.

          Certes cette page requiert du JavaScript pour fonctionner, mais elle requiert zéro dépendance vers des liens externes et inclut autant toutes les visualisations que les données dans une seule page (données, CSS, visualisations). Cela permet de l’avoir en marque-page grâce à quelques ruses de javascript, et cela rend son hébergement aisé pour les sysadmins. (NdM: goaccess (MIT en C) sait faire aussi).

          Son API permet en outre de faire des agrégations plus compliquées.

          Et, je recherche des bétas testeurs pour en faire un produit fini.

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          Sortie de Fedora Linux 42, la réponse à la grande question sur le Libre, Linux et tout le reste ?

          En ce mardi 15 avril, les utilisateurs du Projet Fedora seront ravis d'apprendre la disponibilité de la version Fedora Linux 42.

          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.

          GNOME Shell nature

          Sommaire

          Expérience utilisateur

          L'environnement de bureau GNOME est proposé dans sa version 48. Cette version apporte comme toujours son petit lot de nouveautés.
          Tout d'abord les notifications sont regroupées par application par défaut ce qui permet d'éviter de rapidement saturer la liste dans le menu idoine. Il reste possible de les déplier manuellement si on souhaite voir le détail pour une application en particulier.

          Au sein de l'interface, une nouvelle police fait son apparition par défaut. Dénommée Adwaita, elle remplace l'illustre Cantarel qui remplissait ce rôle jusqu'alors. Elle est basée sur la police Inter qui permet une prise en charge plus complète des langues, une meilleure lisibilité sur les écrans à haute densité de pixels tout en étant accessible et lisible dont pour le terminal. En parlant d'affichage, la prise en charge de la technologie HDR a été introduite pour permette une meilleure qualité d'affichage avec les appareils compatibles.

          De manière globale, il est possible de changer les raccourcis clavier de l'interface et le placement des nouvelles fenêtres par défaut est centré.

          Comme de nombreux systèmes, GNOME propose des paramètres liés au bien-être. Il permet de rapporter le temps d'écran jour par jour au cours d'une semaine. Par ailleurs on peut lui demander de nous notifier régulièrement de faire une pause visuelle en regardant ailleurs ou en faisant quelques mouvements pendant quelques secondes. Il est également possible de définir une limite d'écran qui transforme l'interface en noir et blanc quand le temps limite est atteint. Au sein des options, pour ceux avec un matériel compatible, il est possible de configurer un pourcentage de charge maximale pour la batterie afin de la préserver dans le temps.

          Au niveau applicatif, un nouveau lecteur audio très minimaliste fait son apparition : Decibels. Destiné à remplacer le lecteur vidéo Totem pour jouer un morceau individuel depuis le navigateur de fichiers. Côté visionneur d'images, ce dernier bénéficie d'améliorations pour proposer une édition légère des images affichées. La rotation, le changement de ratio ou le découpage de l'image ce qui permet de faire ces opérations simples et courantes sans utiliser un logiciel d'édition complet qui est beaucoup plus lourd. Ensuite il propose un bouton pour revenir au niveau de zoom d'origine à la demande. Enfin, les images au format RAW peuvent être affichées. Concernant le calendrier, il est possible de renseigner le fuseau horaire pour le début ou la fin d'une activité afin de simplifier l'organisation notamment de réunions internationales. Les performances de l'application sont également améliorées.

          Sous le capot, un effort a été fait pour améliorer les performances de l'interface et du système. Par exemple le moteur JavaScript de GNOME consomme moins de mémoire et de processeur. En utilisant ffmpeg au lieu de gstreamer, l'indexation des gros fichiers et des métadonnées multimédia est aussi plus rapide et moins gourmand en mémoire. Les utilisateurs connectant leur écran à une carte graphique dédiée verront aussi leurs performances et la stabilité s'améliorer tandis que redimensionner ou créer de nouvelles fenêtres sera plus rapide.

          L'environnement de bureau Xfce bénéficie de la version 4.20. Si cette version introduit un support expérimental du protocole d'affichage Wayland, il n'est pas encore fonctionnel et des améliorations futures devront encore être fournies à ce sujet. Mais concernant l'affichage, la prise en charge des écrans à haute résolution a été améliorée ce qui devrait réduire les flous dans l'interface ou de certaines icônes pour de tels écrans.

          Dans le navigateur de fichiers Thunar, les points de montage adoptent une icône spécifique alors que les montages distants IPv6 sont désormais possibles. La barre d'outils s'enrichie avec un menu hamburger quand la barre de menu est masquée. Il permet aussi d'ouvrir facilement un nouvel onglet ou de changer la vue d'affichage du dossier en cours. Pour gagner de la place en hauteur, la décoration côté client est prise en charge ce qui permet de mettre le menu au même niveau que les touches d'actions pour réduire ou fermer la fenêtre. Des améliorations de performances sont également fournies notamment pour le transfert des fichiers ou pour afficher des dossiers avec de nombreux fichiers.

          De manière globale il est possible de définir un mode d'énergie ou de performance du système dans les propriétés d'alimentation pour choisir l'équilibre souhaité entre la consommation d'énergie et les performances du systèmes. Il y a également l'apparition des profils d'affichage particulièrement utiles quand il y a plusieurs systèmes de multi-écrans à gérer pour passer d'un mode à l'autre en fonction de ses déplacements.

          De nombreuses pages de paramètres ont été remaniées pour être plus simples et plus claires.

          L'environnement de bureau LXQt passe à la version 2.1. C'est la première version à fournir une compatibilité complète avec le protocole d'affichage Wayland qui devrait être activé par défaut dans Fedora. En dehors de cela cette version ne fournie que des changements et correctifs assez mineurs.

          Choix de langues avec le nouvel Anaconda

          Le logiciel d'installation Anaconda en profite pour également être une interface web par défaut pour Fedora Workstation. L'objectif est d'utiliser les technologies React et Cockpit pour définir cette nouvelle interface qui a été entièrement redessinée. Elle abandonne sa vieille approche de choisir les éléments à configurer dans l'ordre de son choix par l'usage d'un assistant de configuration linéaire. Donc après la configuration de la langue qui est basée par défaut sur celle de l'image en cours d'exécution, le choix de la date est ensuite suivie de l'étape de partitionnement qui a également été entièrement refaite avant de procéder à l'installation proprement dite. L'approche linéaire a été jugée plus simple d'utilisation et à maintenir même si cela ne permet pas de sauter des étapes si nécessaire, mais étant donné leur nombre réduit cela n'est pas considéré comme une grande perte.

          L'aide a été remaniée dans l'application pour être affichée de côté et qui peut être plus facilement maintenue et traduite à côté du code de l'application.

          Concernant le partitionnement, auparavant trois méthodes étaient disponibles :

          • Entièrement automatique ;
          • Personnalisé : approche dite top-down en définissant les points de montages avant de définir les détails concernant les partitions et les volumes ;
          • Basé sur l'outil blivet : approche dite bottom-up où on définit les partitions et volumes avant d'y associer les points de montage.

          Cela était complexe pour l'utilisateur et difficile à maintenir même si ça avait l'avantage d'être très flexible. L'objectif est maintenant d'offrir une approche plus guidée avec plusieurs choix plus clairs :

          • Réinstaller entièrement sur les disques ;
          • Installer uniquement dans l'espace libre disponible sur les disques ;
          • Réinstaller sur un Fedora Linux existant ;
          • Utiliser un partitionnement déjà existant ce qui permet à priori de configurer cela avec un autre outil au préalable ;
          • Supprimer manuellement des partitions pour utiliser l'espace résiduel.

          Le tout repose sur l'utilisation de la technologie Cockpit Storage ce qui simplifie la maintenance et permet d'avoir une apparence similaire avec le reste d'Anaconda. Dans le futur une installation distante par HTTPS devrait être possible grâce à cela.

          Pour les autres éditions, Anaconda devient une application Wayland native. Ce changement est utile pour supprimer les dépendances liées à X11 pour les environnements de bureaux qui peuvent s'en passer ce qui réduit la taille de l'image. Par ailleurs cela permet aussi de migrer pour les installations à distance du protocole réseau VNC à RDP qui est plus performant et sécurisé. Cela a été rendu possible par l'usage progressif de systemd-localed par les différents environnements ce qui permettait une meilleure prise en charge de la configuration du clavier dans ce contexte, faute de définition suffisament commune dans le protocole Wayland encore. Autrement le changement de clavier depuis Anaconda ne se reflétait pas sur le bureau et cela pouvait mener à des soucis comme la difficulté de déverrouillage de la machine après installation car la disposition clavier n'est plus celle utilisée lors de l'installation…

          L'édition KDE Plasma devient une édition à part entière, étant mise au même niveau que Fedora Workstation avec l'environnement GNOME. Cela récompense les efforts de longue haleine pour améliorer la qualité de l'intégration de KDE dans Fedora Linux. KDE était cependant déjà un environnement considéré comme assez important pour que son bon fonctionnement conditionne le report ou non d'une sortie de Fedora Linux, donc ce changement de statut n'aura pas d'impact de ce côté là. Elle sera maintenant proposée sur le site principal et mieux mise en avant.

          L'écran de chargement lors du démarrage plymouth utilise simpledrm par défaut pour réduire l'attente qu'une carte graphique soit disponible. Les cartes graphiques sont des composants complexes qui peuvent nécessiter du temps pour s'initialiser. Auparavant, plymouth pouvait attendre jusqu'à 8 secondes avant de basculer dans un affichage par défaut assez disgracieux. Cependant grâce à l'UEFI qui fourni un framebuffer, il est possible d'avoir un affichage plus sympa et plus tôt par l'usage de simpledrm qui peut être exploité à cette fin. Cela n'a pas été fait plus tôt car notamment simpledrm ne fournissait pas d'information concernant la rotation de l'écran et la taille physique de l'affichage.

          Cependant, dans certains cas l'affichage pourrait être plus moche par l'usage d'une résolution plus faible que ce qui est possible car l'heuristique pour définir si l'affichage est à haute définition de pixels peut se tromper. Il reste toujours possible de désactiver ce changement via la commande sudo grubby --update-kernel=ALL --args="plymouth.use-simpledrm=0"

          Si vous souhaitez changer le facteur d'agrandissement, si vous avez un écran à haute définition de pixels par exemple, vous pouvez utiliser la commande sudo grubby --update-kernel=ALL --args="plymouth.force-scale=1" et changer éventuellement la valeur 1 par 2 selon votre cas.

          L'environnement de bureau COSMIC bénéficie de sa propre édition Spin. Cet environnement est développé en Rust par l'entreprise System76 qui édite Pop! OS. Les progrès récents justifient selon le projet d'avoir sa propre variante, d'autant que Fedora Linux semblait être déjà une distribution recommandée pour tester cet environnement. Cependant COSMIC n'a pas le statut pour bloquer une sortie de Fedora Linux s'il s'avère trop instable.

          Activation de la mise à jour automatique par défaut pour la version atomique de KDE Plasma nommée Kinoite. Ces mises à jour concernent la partie de base du système reposant sur rpm-ostree. Ces mises à jour fonctionnent en arrière plan à intervalle régulier pour être instantanément appliquées lors du prochain redémarrage.

          Il est possible de désactiver la fonctionnalité en remplaçant la valeur du paramètre UseUnattendedUpdates à false dans le fichier /etc/xdg/PlasmaDiscoverUpdates.

          KDE est mis à l'honneur

          Gestion du matériel

          Amélioration de la prise en charge des webcams basées sur le protocole MIPI au lieu de USB dans les ordinateurs portables x86. Le travail entamé avec Fedora Linux 41 doit se poursuivre car ce protocole moins générique nécessite beaucoup d'adaptations spécifiques par modèle d'ordinateur portable sur le marché. Quelques nouveaux modèles doivent être pris en charge même si la route reste encore longue mais la voie est libre !

          L'Intel Compute Runtime, qui prend en charge notamment le fonctionnement de l'API OpenCL pour les processeurs Intel, a été mise à jour vers la version 24.39 qui signifie également une non prise en charge des processeurs d'avant 2020 (à partir de la 12e génération). Ce changement n'a pas d'impact sur l'Intel Media Driver qui permet l'accélération matérielle pour la lecture ou l'encodage de vidéo.

          Fedora restait sur l'ancienne version pour maintenir la compatibilité avec les vieux processeurs, jusqu'à l'architecture Broadwell sortie en 2015. Cependant avec l'évolution du noyau et de la couche graphique cela devenait un problème à maintenir et de l'autre côté Fedora n'était pas en mesure de fournir la compatibilité pour du matériel plus récent et les derniers correctifs qui améliorent notamment les performances.

          Introduction de la pile Intel SGX pour permettre son utilisation dans le futur pour améliorer l'isolation et la protection mémoire en particulier pour les machines virtuelles. Cette protection se fait notamment en chiffrant la mémoire ce qui la rend inaccessible aux autres applications, au noyau et aux différents firmwares de la machine. Les bibliothèques et en-têtes nécessaires pour ces opérations sont fournies dans le répertoire /usr/x86_64-intel-sgx. Aucune application n'est fournie avec de telles possibilités aujourd'hui, uniquement le nécessaire pour créer des applications pouvant en tirer profit.

          Intégration du projet FEX dans les dépôts pour permettre l'exécution des programmes x86 / x86_64 depuis les architectures AArch64. Contrairement à QEMU, il n'émule pas un système complet ce qui est plus performant pour émuler simplement une application non compatible avec cette architecture. Cela peut être nécessaire car de nombreuses applications non fournies par Fedora sont compilées nativement pour l'architecture x86_64 mais pas pour AArch64 alors que l'inverse est moins vrai.

          Pour permettre son fonctionnement sur les Mac avec des processeurs Apple, qui ont une taille de page de 16k au lieu de 4k pour les autres machines, le composant muvm est également fourni avec pour permettre une telle compatibilité.

          FEX est par ailleurs fourni par défaut dans la variante KDE Aarch64 du système.

          L'installateur Anaconda utilise la norme GPT par défaut pour la table de partitionnement pour les architectures PPC64LE et s390x, l'architecture x86_64 et Aarch64 ayant déjà sauté le pas avec Fedora Linux 37. L'objectif est de réduire les différences entre les architectures sur ce point ce qui simplifie les tests et la maintenance de l'ensemble.

          Les versions atomiques n'auront plus d'images compatibles avec l'architecture PPC64LE. D'après les statistiques, aucun utilisateur n'a utilisé de tels systèmes sur cette architecture. Cette suppression permet d'allouer plus de ressources matérielles et humaines pour générer et tester les images destinées pour les autres architectures où les utilisateurs sont plus nombreux de fait. Cela ne concerne pas les images de Fedora basées sur les paquets RPM qui restent disponibles pour cette architecture.

          Le paquet du logiciel Zezere qui sert à automatiser l'installation et la configurations de systèmes IoT a été retiré des dépôts. L'objectif est de remplacer ce composant par systemd-firstboot car Zezere ne fonctionnait pas bien notamment sur les réseaux IPv6, ne fournissait que la possibilité d'envoyer une clé SSH personnalisée et de nombreuses fonctions promises n'ont jamais vu le jour.

          Internationalisation

          Mise à jour de l'entrée de saisie IBus 1.5.32. Cette version apporte principalement la prise en charge du protocole des entrées Wayland version 2 ce qui permet son utilisation dans les bureaux Sway, COSMIC et Hyprland. Il permet également d'afficher la pop-up de suggestions dans les applications XIM ou GTK2 lorsqu'elles sont utilisées dans une session Wayland.

          Son aide à la saisie pour le chinois ibus-libpinyin est aussi mise à jour à la version 1.16. Il permet en outre de fournir des suggestions de ponctuations, de personnaliser la disposition du clavier ou d'afficher les convertisseurs Lua depuis un menu des méthodes d'entrées.

          Proposition d'une nouvelle aide à la saisie vocale avec Ibus Speech to Text via le paquet ibus-speech-to-text qui permet de faire de la reconnaissance vocale en local. Toutes les applications compatibles avec IBus peuvent donc avoir une telle saisie vocale qui exploite le logiciel VOSK pour la reconnaissance vocale. Aucune connexion à Internet n'est requise et il gère plusieurs langues qui peuvent être facilement téléchargées si besoin. Cela permet d'améliorer l'accessibilité du système tout en préservant la vie privée.

          Installation avec le nouvel Anaconda

          Administration système

          Les répertoires /usr/bin et /usr/sbin sont fusionnés. Ainsi /usr/sbin devient un lien symbolique vers le répertoire /usr/bin, de même que /usr/local/sbin vers /usr/local/bin. Cette séparation entre les utilitaires réservés aux superutilisateurs et les autres était artificielle et non exploitée.

          À l'origine, l'objectif de /sbin était d'avoir des binaires liés statiquement qui pouvaient être utilisés dans un système en mode de secours pour dépanner en cas de gros problème au niveau du système. Mais cette méthode n'est plus appliquée depuis longtemps et cette distinction était conservée comme une relique historique. Cela devenait un poids plus qu'autre chose car avec l'avénement des droits d'utilisateurs dynamiques via polkit par exemple, le besoin d'accéder à ces outils nécessitait de donner accès à ces répertoires même pour des utilisateurs sans droits particuliers. Puis, entre les distributions, un utilitaire pouvait être rangé dans un répertoire ou un autre en fonction des choix des empaqueteurs de chaque communauté ce qui rend la portabilité des commandes entre distributions plus difficiles inutilement. D'ailleurs ArchLinux a sauté le pas il y a quelques années déjà.

          Cela est la continuité de la suppression de la distinction entre /bin et /usr/bin qui avait le même genre de justifications qui a eu lieu avec Fedora 17, il y a 13 ans déjà.

          DNF5 va proposer à l'utilisateur de supprimer les clés GPG qui ont expiré, ou qui ont été révoquées, plutôt que de devoir le faire à la main avec la commande rpmkeys --delete. Si la commande est interactive, le choix sera laissé à l'utilisateur de supprimer ou non la dite clé. En mode non interactif via les options -y ou --assumeno, le choix dépendra de l'option choisie pour l'appliquer automatiquement.

          La commande fips-mode-setup a été retirée du paquet crypto-policies qui permet de rendre dynamiquement son système compatible avec les exigences du gouvernement américain concernant les modules cryptographiques. Cette option doit être activée lors de l'installation par d'autres moyens maintenant.

          Il est ainsi possible de le faire en utilisant l'argument noyau fips=1 pour le notifier à Anaconda, si l'image a été générée avec osbuild-composer, l'option fips=true dans la section [customizations] permet d'obtenir le même effet ou si bootc est utilisé pour une image atomique de passer par cette configuration.

          Le mode FIPS n'améliore pas forcément la sécurité, dans certains cas ça peut en bloquant l'usage des algorithmes obsolètes mais parfois cela peut avoir l'effet inverse en n'autorisant pas d'algorithmes plus récents jugés plus sécurisés, comme l'algorithme de chiffrement Argon2 utilisé par LUKS pour chiffrer le disque dur qui résiste mieux aux attaques effectuées par des cartes graphiques par rapport à l'algorithme PBKDF2 qui est lui autorisé. C'est un mode destiné aux entreprises ou personnes ayant besoin d'être certifiées à ce niveau.

          L'objectif de ce changement est de simplifier la vie des mainteneurs qui n'ont plus à se préoccuper de cet outil et de ce que cela nécessite car de nombreux changements dans le système doivent être mis en place pour activer (ou désactiver) ce mode. Par exemple reconfigurer tous les modules cryptographiques du système tels que OpenSSH, OpenSSL, GnuTLS, NSS, libgcrypt ou le noyau lui même, fournir également un module à l'initramfs pour effectuer une vérification de l'image du noyau au démarrage de la machine et ajouter un argument pour le noyau si jamais /boot est dans une partition dédiée afin d'effectuer cette vérification.

          Mais aussi le changement à la volée est source de problèmes et de confusions pour les utilisateurs. Par exemple installer Fedora Linux avec un chiffrement du disque avec un algorithme non compatible FIPS avant de l'activer après l'installation. De même si des clés de chiffrement sont générées avec OpenSSH ou autres outils avec des algorithmes non autorisés avant d'activer le dit mode. Ces situations hybrides peuvent induire des dysfonctionnement non prévus. L'objectif est de limiter ces cas problématiques en empêchant le changement à chaud.

          Le navigateur de fichiers pour Cockpit cockpit-navigator est remplacé par cockpit-files. Cela suit le changement effectué par le projet qui a entamé cette réécriture et ne maintient de fait plus l'ancien module.

          Les fichiers Kickstart seront distribués également comme des artéfacts OCI. L'objectif est de permettre de charger plus facilement une image de Fedora pour conteneurs qui est démarrable via le réseau. Dans ce cas précis, il était nécessaire pour l'utilisateur de récupérer et de transformer manuellement les différents fichiers depuis les dépôts RPM avec des numéros de versions très mouvants afin d'avoir les images du noyau, de l'initramfs, du chargeur de démarrage, de l'image d'installation et de lancement. Ici l'objectif est de pouvoir les fournir dans un endroit centralisé tel que ce dépôt avec des processus plus faciles à automatiser avec Ansible ou Foreman. Ces fichiers sont également signés avec GPG ce qui permet de facilement vérifier leur conformité.

          Les éditions dérivées de Fedora Workstation auront par défaut le pare-feu configuré avec l'option IPv6_rpfilter=loose, ce qui suit la politique appliquée pour l'IPv4 depuis Fedora 30. En effet, avec l'option IPv6_rpfilter=strict il y avait notamment régulièrement des soucis pour vérifier la connexion à Internet pour des machines ayant plusieurs interfaces connectées au réseau tel qu'un ordinateur portable passant du Wifi au réseau Ethernet pour se connecter à son réseau domestique.

          Ajout du paquet bpfman pour le déploiment et la gestion des programmes eBPF dans le système. Développé en Rust, il permet de fournir une vue d'ensemble des programmes eBPF utilisés dans le système actuellement. Il simplifie aussi leur déploiement dans un cluster Kubernetes par l'utilitaire bpfman-operator tandis que l'outil bpfman-agent exécuté au sein d'un conteneur permet de rapporter si les programmes eBPF sont dans l'état désiré.

          Mise à jour de l'outil de gestion de configuration Ansible à la version 11. Cette version propose d'ajouter des tags aux variables ou valeurs pour par exemple retourner un avertissement si on essaye d'accéder une valeur marquée comme dépréciée. Les boucles de tâches peuvent avoir une instruction d'interruption. Enfin, le module mount_facts prend en charge les périphériques non locaux.

          Le serveur de proxy inverse Apache Traffic Server évolue vers sa 10e version. Une nouvelle API basée sur JSON-RPC est proposée pour permettre des interactions avec des outils extérieurs. Le module traffic_ctl a une commande monitor pour rapporter en continue des métriques à jour. Les règles ip_allow.yaml et remap.config prennent en charge des intervalles d'IP nommées pour simplifier la configuration. La prise en charge du protocole HTTP/2 pour les connexions provenant du serveur d'origine a été ajoutée même si elle est désactivée par défaut. De plus, les plugins doivent être développés en C++20 uniquement au lieu du langage C.

          La version de compatibilité PostgreSQL 15 a été retirée, PostgreSQL 16 reste la version par défaut. Cela fait suite à l'ajout de PostgreSQL 17 dans les dépôts comme version alternative avec postgresql17 comme nom de paquet. Le projet ne souhaite pas maintenir davantage de versions pour réduire la charge de travail tout en permettant de migrer les données d'une version à l'autre. En effet, la migration nécessite le binaire de la version actuellement utilisée pour réaliser un dump avant d'utiliser la nouvelle version pour importer ce dump. Cela signifie que les utilisateurs utilisant PostgreSQL 15 doivent préparer la migration avant la mise à niveau de leur Fedora Linux.

          Les utilitaires liés au projet OpenDMARC ont été mis dans des paquets individuels au lieu du paquet opendmarc qui les fournissait tous. En effet de nombreux utilitaires notamment écrits en Perl étaient fournis avec ce paquet sans être nécessaires pour exécuter le service ce qui entrainait l'installation plus que 80 paquets Perl pour rien dans la plupart des cas. Le paquet opendmarc fournit maintenant les outils opendmarc et opendmarc-check quand le reste est fourni avec le paquet opendmarc-tools.

          L'agent pam-ssh-agent a été supprimé des dépôts. Le développement a été arrêté il y a plus d'un an par le projet OpenSSH et aucun paquet actuellement maintenu n'en dépend.

          La nouvelle application GNOME Decibels

          Développement

          La chaîne de compilation GNU bénéficie de GCC 15, binutils 2.44 et glibc 2.41. Concernant le compilateur GCC, comme d'habitude il fournit de nombreux changements. Il est possible pour l'optimisation de l'édition de lien de le faire de manière incrémentale afin que cette étape soit plus rapide en cas de petits changements dans le code source. Les très gros fichiers de code source sont également plus rapide à compiler et les erreurs les concernant sont mieux gérées. Les erreurs gagnent encore en lisibilité, en particulier pour les templates C++ ou en présentant le chemin d'exécution qui mène à l'erreur détectée.

          Pour la section OpenMP, la prise en charge des normes au dessus de la version 5.0 continue sa progression avec une meilleure gestion des cartes graphiques Nvidia et AMD. Pour le langage C, la norme C23 devient la norme par défaut tandis que le début de prise en charge de la future norme C2Y a été introduit. Pour le C++, c'est la prise en charge de la future norme C++26 qui progresse et une meilleure gestion des modules introduits dans les normes précédentes.

          Pour les architectures, de nombreuses améliorations pour la prise en charge des microarchitectures x86_64 dont des nouvelles instructions AMX. Côté Aarch64, ce sont les puces d'Apple qui sont prises en charge maintenant.

          Concernant la bibliothèque standard C, il y a quelques changements concernant la résolution DNS. Grâce à la variable d'environnement RES_OPTIONS il est possible d'ignorer des options précisées dans le fichier /etc/resolv.conf. Ainsi utiliser RES_OPTIONS=-no-aaaa permet d'ignorer l'option options no-aaaa. Les fonctions sched_setattr et sched_getattr ont été ajoutées pour permettre de changer les options de la politique d'ordonnancement des processus du noyau, par exemple quand SCHED_DEADLINE est utilisé où certains paramètres peuvent être utilisés. La prise en charge d'Unicode 16.0 a été ajoutée, de même que de nombreuses fonctions mathématiques introduites par la norme C23. Pour l'architecture AArch64, les fonctions mathématiques vectorielles devraient être plus performantes.

          Enfin pour les binutils, les extensions de l'assembleur pour les architectures AArch64, Risc-V et x86 ont été mises à jour. L'éditeur de lien peut mixer des objets avec et sans l'optimisation activée.

          La chaîne de compilation LLVM progresse à la 20e version. Comme pour son concurrent GCC, les dernières normes C et C++ ont bénéficié de nombreuses améliorations pour leur prise en charge. De même, de nombreuses instructions AMX pour l'architecture x86_64 ont été ajoutées. Un nouveau vérificateur TySan fait son apparition pour vérifier les violations d'aliasing de types, donc utiliser un pointeur d'un type particulier pour accéder à des valeurs d'un autre type en mémoire ce qui dégrade les performances ou peut engendrer des bogues. Le module de télémétrie a été extrait du débogueur pour être disponible dans l'ensemble de LLVM afin de pouvoir rapporter différentes mesures et usages de ces outils aux développeurs mais cela reste désactivé par défaut.

          Fedora par ailleurs fournit les outils llvm-bolt, polly, libcxx et mlir dans le paquet llvm au lieu d'être dans des paquets indépendants comme avant. Les binaires, bibliothèques et autres en-têtes sont installées dans le dossier /usr/lib64/llvm$VERSION/ au lieu de /usr, des liens symboliques sont proposés pour garder la compatibilité, l'objectif est de faciliter le passage d'une version à l'autre pour les utilisateurs.

          Le cadriciel web Python nommé Django utilise la version 5.x. Les formulaires peuvent bénéficier de la notion de groupe de champs pour simplifier significativement le code du template en évitant de devoir répéter les mêmes informations pour chaque champ s'ils ont la même structure. Les modèles peuvent également recevoir une valeur par défaut obtenue par la base de données. Il est également possible de générer des colonnes qui sont calculées à partir d'autres champs de la base de données.

          Mise à jour du langage Go vers la version 1.24. Côté langage, il prend en charge les alias de types génériques ce qui permet d'étendre leur champ d'applications et d'améliorer la lisibilité du code. Comme souvent avec Go, les performances sont améliorées, de l'ordre de 2-3% à l'exécution et la structure map est basée sur les tables suisses pour réduire la consommation mémoire pour les petits objets. La bibliothèque standard fournit des mécanismes pour se conformer au standard FIPS 140 concernant la cryptographie comme expliqué plus haut. Une nouvelle instruction du compilateur go:wasmexport permet d'exporter les fonctions du programme à l'hôte en WebAssembly.

          Le langage Ruby brille avec la version 3.4. Le parseur par défaut passe de parse.y à Prism pour améliorer la détection des erreurs, les performances et la portabilité. La bibliothèque de socket dispose du standard Happy Eyeballs Version 2 pour améliorer la résilience et l'efficience des connexions TCP. Le compilateur juste à temps YJIT améliore ses performances pour les architectures x86_64 et Aarch64, il est également plus fiable et réduit un peu sa consommation mémoire tout en ayant la possibilité de définir une limite maximale unifiée. Parser des structures JSON doit être également 1,5 fois plus rapide, de même pour Array#each grâce à une réécriture en Ruby.

          Le langage de programmation PHP s'impose de tout son poids à la version 8.4. Outre d'apporter un compilateur juste à temps basé sur IR Framework et diverses améliorations de performance, le langage propose de nouveaux concepts. Les property hooks permettent de facilement définir des structures basées sur une autre valeur pour les garder synchronisées tout en ayant une quantité de code plus réduites et avec moins de risque de faire des erreurs. Il est possible de définir une visibilité asymétrique, en autorisant la lecture d'une propriété mais pas son écriture publiquement et ce sans passer par des getters / setters. L'attribut #[\Deprecated] fait son apparition pour signaler à l'utilisateur qu'une méthode ou valeur sera probablement supprimée ultérieurement. Une nouvelle API pour manipuler les objets DOM apparaît et fournit la prise en charge de HTML5. Et d'autres changements encore.

          Le langage de scripts Tcl/Tk a été mis à jour vers la 9e version. Pour des raisons de compatibilité, la version 8 reste distribuée sous le nom de paquet tcl8. Grâce à l'exploitation du 64 bits, il peut maintenant manipuler des données de plus de 2 Gio. La prise en charge d'Unicode et des différentes méthodes d'encodage a été améliorée, en ajoutant d'une part mais aussi en gérant l'ensemble des valeurs existantes. L’interaction avec le système est améliorée avec la possibilité d'envoyer des notifications, d'imprimer ou d'utiliser les icônes de la barre du système. Il y a un début de prise en charge de l'affichage vectoriel permettant d'améliorer le visuel des applications. Les capacités d’interactions tactiles sont améliorées avec la possibilité de gérer des gestes à deux doigts.

          La bibliothèque de calcul scientifique en Python NumPy passe à la version majeure 2. Première version majeure depuis 2006, il fournit de nombreuses améliorations de performance en particulier autour des différents algorithmes de tri de même que la sauvegarde de gros objets. La transformée de Fourrier rapide prend en charge les types float32 et longdouble. Un nouveau type pour les chaînes de caractères de taille variable fait son apparition : StringDType qui doit fournir également de meilleures performances. La séparation entre l'API publique et privée a été aussi clarifiée avec une nouvelle structure des modules. API qui a aussi été nettoyée pour enlever ce qui n'était pas pertinent ce qui simplifie l'apprentissage de la bibliothèque.

          L'outil de développement de paquets Python Setuptools a été mis à jour vers la version 74. La commande setup.py qui était non recommandée depuis plus de 5 ans disparaît, cela a nécessité notamment de changer près de 150 paquets dans le système pour en tenir compte. D'autres changements plus mineurs sont également fournis.

          Mise à jour de la bibliothèque de compression zlib-ng à la version 2.2.x. Parmi les changements, sur l'architecture x86_64 les performances devraient être améliorées de 12% pour la compression avec le niveau par défaut. L'allocation mémoire est également fait en une seule fois ce qui réduit le nombre d'appels systèmes et le risque de fragmentation de la mémoire ce qui améliore également les performances globales. Le risque d'avoir un échec par manque de mémoire s'en retrouve également réduit.

          Le langage Copilot avec sa boîte à outil de vérification de runtime fait son apparition. Développé en Haskell par la NASA, il permet de définir des programmes concis qui peuvent ensuite être transpilés en C99 pour permettre un haut niveau de sécurité tout en étant capable de gérer des contraintes temps réel dures ce qui est important dans de nombreux contextes embarqués. Ce langage est disponible via le paquet ghc-copilot.

          La bibliothèque graphique SDL utilise la version 3 pour assurer la compatibilité avec ses versions 2 et 1.2 dorénavant. Cela passe par le paquet sdl2-compat qui fourni cette compatibilité car SDL 2 n'est plus développé.

          Les anciennes versions de OpenJDK pour le langage Java à savoir 8, 11 et 17 ne sont plus fournies par les dépôts de Fedora mais devront être installées via un dépôt tiers tel que Adoptium Temurin dont le paquet adoptium-temurin-java-repository permet son activation. La maintenance des différentes versions d'OpenJDK a été longtemps une problématique pour Fedora avec leur nombre de versions avec une maintenance officielle qui augmente, cela alourdissait considérablement la charge de travail sans avoir assez de mainteneurs en face. D'autant plus que la plupart des cas d'usage se contentent bien de la dernière version LTS disponible, les versions plus anciennes répondent à des cas plus spécifiques qui peuvent se contenter d'un dépôt externe où les mainteneurs de Fedora travaillent de toute façon ce qui garantie la qualité de l'intégration. Cela diminuera la consommation de ressources pour gérer ces paquets dans Fedora mais aussi l'allégement de la charge de travail permettra de mettre à jour OpenJDK plus rapidement à l'avenir.

          Le paquet de compatibilité Python pour la version 3.8 a été retiré. Cette version n'est plus maintenue par le projet Python et ce serait trop coûteux et peu sûr de poursuivre sa fourniture dans la distribution.

          La bibliothèque Rust zbus version 1 a été supprimée, la version 4 ou supérieure reste proposée dans les dépôts. Une vingtaine de dépendances obsolètes étaient également maintenues pour ce composant ce qui permettra de réduire la charge de travail pour les mainteneurs et la consommation de ressources pour le projet Fedora. La compatibilité avec les dernières versions du compilateur Rust et certains bogues sur certaines architectures rendaient sa maintenance problématique par ailleurs.

          La bibliothèque de compatibilité entre Rust et Python, PyO3, se voit retirer les anciennes versions 0.19, 0.20, et 0.21. Les versions 0.22 et 0.23 restent donc disponibles. Cet abandon devient nécessaire par les changements de l'API et de l'ABI de CPython qui rendent les anciennes versions de plus en plus difficiles à maintenir en état de fonctionnement.

          L'utilitaire d'exécution des tests unitaires en Python python-pytest-runner est déprécié et sera supprimé dans un futur proche. Depuis 2019 il est dans un état d'abandon par le projet source, il faut depuis envisager d'utiliser pytest à la place d'autant plus que les incompatibilités avec l'outil setuptools vont en grandissant.

          La bibliothèque de compatibilité entre GTK3 et Rust est marquée comme dépréciée et sera supprimée dans une prochaine version. En effet les versions récentes de gtk-rs ne le prennent plus en charge ce qui impose un coût de maintenance d'autant qu'il faut maintenir aussi les anciennes versions de compatibilité avec Cairo et GLib pour cela.

          Les nouveaux paramètres de GNOME bien être

          Projet Fedora

          Fedora Linux proposera des archives permettant d'être installé avec Windows Subsystem for Linux. Windows a récemment amélioré la prise en charge des installations d'un tel système en dehors du magasin d'applications Microsoft ce qui rend ce changement plus intéressant. Idéalement il faut utiliser WSL 2.4.4 ou supérieur même si une procédure sera fournie pour les versions plus anciennes. Le projet Fedora ne souhaite pas à ce jour accepter les conditions pour permettre une publication directement depuis le magasin d'applications. Cela permet de faciliter l'usage de Fedora dans un tel système.

          Les paquets RPM peuvent bénéficier de la fonction systemd sysusers.d pour créer des utilisateurs ou groupes dédiés lors de l'installation des paquets RPM. L'objectif à terme est de se débarasser des instructions useradd ou groupadd dans les paquets RPM voire l'usage de la macro %sysusers_create_compat. Cela va permettre d'uniformiser à terme la manière de créer de tels utilisateurs et groupes ce qui va également simplifier les scriplets des différents paquets RPM concernés. Comme cela est intégré dans le format RPM, il devient plus facile de retrouver quels utilisateurs et groupes sont créées par un paquet donné et de définir des dépendances basées sur ce critère si c'est pertinent.

          Les mises à jour de Fedora CoreOS passent de OSTree à OCI. Les mises à jour proviennent ainsi du dépôt quay.io/fedora/fedora-coreos. C'est la première étape avant d'être capable de passer à bootc pour gérer la base du système qui permettrait entre autre de faire des mises à jour en miroir en copiant un système existant sur le réseau local ou de laisser l'utilisateur personnaliser facilement ses propres images.

          Activation par défaut de composefs pour les images atomiques bureautiques de Fedora Linux pour les images non basées sur OSTree. Faisant suite à ce qui a été fourni pour les images CoreOS et IoT avec Fedora Linux 41, l'idée est de fournir une vérification d'intégrité des images atomiques lorsque le système tourne et d'avoir un système de fichiers du système réellement en lecture seule.

          En effet, jusqu'ici l'intégrité des fichiers du système n'est vérifiée que lors de la mise à jour ou l'installation d'une nouvelle image mais rien n'empêche d'avoir une altération malveillante par exemple entre temps. Il fallait exécuter ostree fsck à la main pour vérifier manuellement si le système était conforme. De plus le système même s'il est en lecture seule en théorie, en réalité il était monté en lecture/écriture avec la commande chattr +i / ajoutée pour prévenir les modifications accidentelles.

          Avec composefs, qui exploite overlayfs et EROFS, permet de supprimer ces limitations, le système de fichiers sera réellement en lecture seule et la moindre tentative de modification aboutira à une erreur au niveau du noyau Linux en toute circonstance. Les répertoires /etc et /var restent accessibles en lecture/écriture comme avant. L'objectif à terme est de fournir une vraie chaîne de démarrage sécurisée avec la vérification des signatures au niveau du système.

          L'utilitaire edk2 est compilé avec des options de sécurité supplémentaires pour améliorer la sécurité des machines virtuelles reposant sur l'UEFI. Ce composant est une implémentation de l'UEFI qui est notamment utilisée par les machines virtuelles créées avec libvirt. Ce changement passe par l'activation du mode strict pour NX qui empêche l'exécution de code provenant de zone mémoire en lecture/écriture. Les pointeurs NULL sont également capturés pour éviter de déférencer le vecteur d'interruption qui existe à cette adresse ce qui peut mener à des accès mémoires non souhaités. Cela ne sera appliqué que pour les sytèmes invités avec Secure boot activé, pour éviter d'introduire des régressions pour les systèmes invités plus anciens qui seraient non compatibles avec ces options de sécurité dans un environnement où ces protections additionnelles seraient moins pertinentes.

          En effet, cela est une réponse au problème de sécurité liée au composant shim pour les versions inférieures à 15.8 qui a nécessité en 2024 une mise à jour majeure des chargeurs de démarrage et du noyau Linux. Des systèmes invités avec ce problème de sécurité non corrigé entraineront une erreur mémoire prévenant toute exécution.

          Les images live de Fedora Linux utilisent le système de fichiers EROFS en lieu et place de SquashFS. Ce système de fichiers est aussi en lecture seule et est plus activement développé. De fait il peut utiliser des algorithmes de compression plus moderne pour réduire la taille de l'image et a été développé pour avoir de bonnes performances sur les systèmes embarqués ce qui devrait se retrouver aussi sur des machines plus performantes.

          Ajout d'un générateur de dépendances pour les extensions de GNOME Shell, permettant de lier la version de l'extension avec celle de gnome-shell à partir du fichier metadata.json de l'extension. Cela permet de détecter de manière générique et donc plus facilement et automatiquement un soucis de compatibilité entre une extension et la version de GNOME Shell fournie par le projet. Cela devrait permettre de travailler sur ces problèmes de compatibilité dès qu'ils apparaissent plutôt que d'attendre le retour d'utilisateurs qui découvrent une extension non fonctionnelle en pratique.

          Redéfinition des dépendances de nombreux paquets de git vers git-core. Plus de 200 paquets souhaitent utiliser le binaire git et ont une dépendance envers ce paquet éponyme alors qu'il est fourni en réalité par le paquet git-core. Ce qui implique une dépendance excessive envers 60 autres paquets inutiles dans ce contexte. Cela devrait entre autre réduire les ressources nécessaires pour générer certains paquets.

          La communauté francophone

          L'association

          Logo de Borsalinux-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 cinq 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, Sylvain Réault 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 42 ?

          Logo de Fedora Media Writer

          Si vous avez déjà Fedora Linux 41 ou 40 sur votre machine, vous pouvez faire une mise à niveau vers Fedora Linux 42. 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 42.

          Commentaires : voir le flux Atom ouvrir dans le navigateur

          • ✇LinuxFr.org : les dépêches
          • Logiciels libres pour la comptabilité d'entreprise
            Où l’on s’essaie à dresser un panorama des logiciels comptables libres. À l’origine de cette dépêche, une recherche d’un logiciel de paye libre où il a semblé que cela pouvait être utile. Il s’agit bien de logiciels de comptabilité pour un usage professionnel ou associatif, pas de gestion de finances personnelles qui ont fait l’objet d’une autre dépêche il y a quelque temps. Évidemment, il n’y a aucune prétention à l’exhaustivité, mais plus à donner un panel de logiciels avec quelques idées pou

          Logiciels libres pour la comptabilité d'entreprise

          Où l’on s’essaie à dresser un panorama des logiciels comptables libres. À l’origine de cette dépêche, une recherche d’un logiciel de paye libre où il a semblé que cela pouvait être utile.

          Il s’agit bien de logiciels de comptabilité pour un usage professionnel ou associatif, pas de gestion de finances personnelles qui ont fait l’objet d’une autre dépêche il y a quelque temps. Évidemment, il n’y a aucune prétention à l’exhaustivité, mais plus à donner un panel de logiciels avec quelques idées pour choisir le vôtre, le cas échéant. N’hésitez pas à les essayer quand c’est possible et à croiser les informations pour vous faire votre opinion. Les fiches sont succinctes, mais c’est l’occasion pour vous d’écrire plein de nouvelles dépêches puisque la plupart de ces logiciels n’ont pas eu de présentations récentes sur LinuxFr.org.
          Image d’illustration

            Sommaire

            Entrons tout de suite dans le vif du sujet. Voici des courtes présentations avec des points forts et des points faibles qui se dégagent des expériences des rédacteurs et rédactrices. Pour vous aider à faire un choix, cette liste est suivie d’explications plus générales.

            Compta.libremen.com

            logo compta libremen
            Compta libremen com est un logiciel de compta en partie double, simple et efficace. Il utilise une interface web sans fioritures. Le logiciel est écrit en Perl et s’appuie sur Postgresql et mod_Perl, avec un serveur Apache. Un fork amical fournit une image Docker et quelques améliorations. Libremen propose une offre en ligne.
            Commentaires de l’auteur recueillis par courriel : on a un peu d’aide à la saisie, il y a les raccourcis claviers (calcul du numéro de pièce, recopie de la ligne précédente) et aussi les fenêtres déroulantes pour les numéros de compte, plus le fait que le navigateur enregistre les dernières saisies ; je crois avoir documenté toutes les fonctions, la documentation est dite “minimum”, le logiciel est minimaliste par essence, donc la doc aussi :-)

            Interface web
            Aide à la saisie oui
            Saisie au km oui
            Intègre documents TVA, export FEC
            Comptabilité en partie double
            Comptabilité analytique oui, champ “Libre”
            Imports écritures en CSV
            Exports écritures en CSV
            Transmission automatisée non
            En réseau oui, et aussi sur Internet
            Documentation oui, minimum
            Forum non

            Diacamma

            logo Diacamma
            Le logiciel existe en deux versions, Diacamma Asso pour les associations et Diacamma Syndic pour les copropriétés. Diacamma utilise une interface web, avec un serveur intégré. Un installeur est fourni pour Windows, macOSX et Linux (Debian conseillée). Le CHATONS Sleto propose une offre en ligne.

            Interface web
            Aide à la saisie oui
            Saisie au km non
            Intègre achats, ventes, factures, adhérents, documents et +
            Comptabilité en partie double
            Comptabilité analytique oui, simplifiée
            Imports écritures comptables, articles, contacts
            Exports écritures en CSV
            Transmission automatisée non
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum restreint aux connectés, gratuit
            • Points forts : le facturier qui permet aussi de faire des statistiques des ventes et d’éditer des factures et des reçus, le récapitulatif à gauche de l’écran, une vision comptable par « journaux auxiliaires ».
            • Points faibles : les fenêtres modales pour les écritures, la saisie par « journal auxiliaire » qui alourdit le processus, le vocabulaire pas très adapté au secteur.
            • Licence : GNU General Public License 3
            • Site : https://www.diacamma.org/

            Dolibarr

            logo Dolibarr
            Dolibarr est un puissant ERP pour tous types d’entreprises et d’associations. Il existe des pré-sélections des modules nécessaires à votre activité. Dolibarr utilise une interface web avec des serveurs web et SQL. Un installeur est fourni pour Windows et des paquets pour plusieurs distributions Linux. Beaucoup d’offres d’hébergement existent. Il réunit une forte communauté, surtout francophone. Le développement est très actif.
            Notez qu’on parle souvent de Dolibarr sur LinuxFr.org et qu’un journal sur une migration d’ERP a produit des interventions de haut niveau.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures, adhérents, documents, stock, et plein d’autres
            Comptabilité simplifiée ou en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports des journaux, du Grand Livre, et des écritures sous différents formats
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : il est possible d’ajouter des extensions avec le magasin d’application, le dolistore. Dolibarr est également disponible chez certains hébergeurs à travers Softaculous. Une gestion fine des droits par groupe d’utilisateurs et par utilisateurs. Avec certains droits réservés aux utilisateurs internes c’est-à-dire ceux qui ne sont ni client ni fournisseur.
            • Points faibles : l’aspect « usine à gaz » de Dolibarr et sa prise en main qui peut être ardue.
            • Licence : GNU GPL V3 et plus
            • Site : http://www.dolibarr.org
            • Dolibarr sur LinuxFr.org.

            Ekyagri

            logo Ekyagri
            Une solution en ligne de gestion d’exploitation agricole.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures,
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : la facilité de la saisie des écritures, la gestion des immobilisations, sa conception bien pensée pour le secteur. L’aide est bien faite, elle indique notamment des niveaux de difficultés des tâches. On peut la télécharger au format PDF.
            • Points faibles : le site n’est pas très clair sur la récupération des données. On n’a pas de module de recherche sur l’aide en ligne et rien n’est indiqué sur les sauvegardes.
            • Licence : AGPL v3
            • Site : https://ekylibre.com/ekyagri/

            ENDI

            logo endi

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures,
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui

            ERPNext / Dokos

            Titre de l’image
            Un puissant ERP créé en Inde, le fork Dokos est la version française. Écrit en Python et JavaScript au-dessus d’une base Postgresql. Modulaire, il se positionne comme Odoo (voir ci-dessous). Comparons-les : l’interface est plus austère, la renommée moindre entraîne peu de contributeurs tiers à proposer des modules, l’équipe est plus petite, mais tout aussi dynamique, ERPNext évolue vite, il est basé sur le framework FRAPPÉ qui est stable et permet d’extraire les applications de l’ERP, l’ensemble est intégralement libre.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures, documents, stock et plein d’autres modules
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports écritures en CSV
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui

            Frappebook

            Logo FrappeBook
            Même équipe qu’ERPNext. C’est juste le morceau comptable d’ERPNext, refait en application de bureau et portable par dessus SQLite. Pour les petites entreprises.

            • Points forts : Application portable, on peut l’emmener sur sa clef USB. L’interface est sobre et bien finie.
            • Points faibles : au lancement on se retrouve dans une compta anglo-saxonne, il faut paramétrer pour avoir une compta “européenne”.
            • Licence : GNU General Public Licence version 3
            • Site : https://frappebooks.com/
            • Code source : https://github.com/frappe/books

            Galette

            Titre de l’image
            Sous le nom sympathique et tarabiscoté de Galette (Gestionnaire d’Adhérents en Ligne Extrêmement Tarabiscoté mais Tellement Efficace) se cache un logiciel à destination des associations.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures, adhérents
            Comptabilité simplifiée ou en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : Il est très facile à prendre en main, en comptabilité simple ou double. Il y a une aide en ligne copieuse ainsi qu’une liste d’entraide. Le logiciel propose plusieurs plans comptables (Au moins deux pour les plans comptables français et d’autres pour la plupart des pays européens). On peut aussi ajouter son propre plan comptable. Il offre des fonctionnalités de comptabilité analytique. On peut utiliser sa propre instance, récupérer la base de données ou exporter la comptabilité sous divers formats (CSV, FEC, ODS et XLSX). Il est possible d’importer une comptabilité dans ces formats. Le logiciel est en constante évolution, avec un développeur très réactif. Des modules permettent de gérer aussi les paiements en ligne (puisque c’est aussi un logiciel de gestion de facturations et de clients). Il y a un module PdV (point de vente, caisse).
            • Points faibles :
            • Licence : GNU General Public Licence version 3
            • Site : https://galette.eu/site/fr/
            • Code source : https://github.com/galette/galette
            • Galette sur linuxFr.org.

            GnuCash

            logo GnuCash
            GnuCash figure dans la bibliothèque logicielle de la plupart des distributions Linux. C’est un logiciel qui fait aussi bien la comptabilité personnelle que la comptabilité professionnelle. Il propose des fonctionnalités de CRM de base : gestion des adresses des clients et des fournisseurs.

            Interface Bureau (Gtk)
            Aide à la saisie oui
            Saisie au km
            Intègre
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau
            Documentation oui, complète
            Forum oui
            • Points forts : on peut paramétrer des écritures répétitives (paiements mensuels par exemple) et le logiciel vous le rappelle dans des délais fixés par vous à l’ouverture. Sa bibliothèque de rapports (ou états) est riche : bilan, comptes de résultat, portefeuille d’action, facture, quittance, graphiques. Et c’est personnalisable souvent. Les rapprochements bancaires se font avec pré-affectation des comptes grâce à de l’inférence bayésienne.
            • Points faibles : Il n’y a pas de plan comptable intégré, il faut l’ajouter. Ni de fonctionnalité d’import d’un plan comptable (ou alors, je n’ai pas trouvé), pas de comptabilité analytique, non plus. Il n’est pas complètement traduit en français et la traduction est un peu étonnante parfois. La prise en main n’est pas évidente.
            • Systèmes d’exploitation : Windows, MacOS, GNU/Linux, Unixes
            • Interface : graphique
            • Licence : GNU General Public License Version 2 ou Version 3
            • Site : https://gnucash.org/
            • Code source : https://sourceforge.net/projects/gnucash/
            • GnuCash sur linuxFr.org (dépêches anciennes).

            Grisbi

            logo Grisbi
            Un logiciel qui fonctionne tout seul et qui est souvent fourni dans les distributions Linux. Il est surtout utilisable pour les finances personnelles, mais il propose un mode comptabilité libérale et peut être utilisé par des micro-entreprises.

            Interface Bureau (GTK-3)
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures,
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : il n’est pas compliqué à installer, on peut importer des fichiers au format CSV (évidemment) mais aussi aux formats QIF, OFX et Gnucash. Pour les rapprochements bancaires, soit dit en passant, choisir le format QIF c’est encore celui qui fait le mieux le travail. Et on peut l’exporter au format QIF ou CSV. Deux formats souvent utilisés par les logiciels de comptabilité. Il propose un pratique simulateur de crédit. Il est assez facile à prendre en main. Quand on fait un rapprochement bancaire, pour une comptabilité personnelle, en bout de course, on a une bonne partie des écritures comptables qui sont saisies.
            • Points faibles : pas de comptabilité analytique, pas de compte de résultat ni de bilan et, évidemment, il n’est pas possible d’éditer des factures. L’interface GTK avait quelques bugs sous Windows (il y a plusieurs années, peut-être corrigés depuis), comme des menus déroulants qui empêchent de valider un formulaire tant qu’on a pas cliqué à côté pour les fermer.
            • Logiciel inspiré de l’ex MsMoney (qui n’est plus vendu par Microsoft)
            • Licence : GNU General Public License Version 2
            • Site : https://fr.grisbi.org/
            • Code source : https://github.com/grisbi/grisbi
            • Grisbi sur LinuxFr.org.

            Laurux

            logo Laurux

            Laurux intègre les outils classiques de gestion d’entreprise : comptabilité, facturation, gestion de stock et tous les composants nécessaires aux prises de décisions cohérentes. Développé en Gambas avec Qt à destination des PME, son auteur a aussi voulu créer un logiciel simple d’installation et d’utilisation livré avec toute la documentation utile. L’auteur fournit une attestation individuelle de conformité, obligatoire dans la loi française. Son forum communautaire est accueillant.

            Interface Bureau (Qt)
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures, point de vente
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports plein de formats
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : Logiciel multiposte performant et fiable. Gestion de la compta, des stocks et achats/devis/factures très simples. Se prend en mains sans trop de complication. Et des développeurs présents, c’est hyper important de souligner le travail de Patrick et Damscot. Pour être plus large, j’ai, par le passé, utilisé Adicom, EBP, l’AS400 (une usine à gaz de fou ce logiciel), et un autre système dans le négoce également. Avec Laurux, je retrouve les avantages de l’AS400 sans avoir les complications d’utilisation.
            • Points faibles :
            • Licence : GNU General Public Licence version 3
            • Site : https://www.laurux.fr/
            • Code source :
            • Laurux sur LinuxFr.org.

            Ledger

            Avatar de Ledger
            Ledger est un outil en ligne de commande, qu’on nourrit avec de simples fichiers textes. La puissance de la ligne de commande en fait tout l’intérêt. Développé en C++ il a été porté sur de nombreux autres langages. Ledger ne fait que la comptabilité en partie double. Plusieurs extensions facilitent son utilisation, sans entraver la rapidité de saisie.

            Interface Console (terminal)
            Aide à la saisie oui
            Saisie au km
            Intègre
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : Adapté pour les compte-rendus, donc en complément d’un autre logiciel. Il est super puissant car facilement scriptable.
            • Points faibles : Par contre, il a très peu de garde-fous. On peut mettre n’importe quelle transaction, il ne dira rien. J’avais dans l’idée de faire des scripts pour automatiser/sécuriser des transactions classiques (dépenses sur une clef, vente d’un lot, etc.) mais j’ai arrêté d’être syndic bénévole avant de le faire (marre de courir après les impayés d’un copropriétaire)
            • Licence : BSD
            • Site : https://www.ledger-cli.org/
            • Code source : https://github.com/ledger/ledger

            Noalyss (autrefois PHPCompta)

            logo Noalyss
            Au départ centré sur la compta, Noalyss est devenu un logiciel de gestion d’entreprise très complet. Noalyss utilise une interface web avec des serveurs web et Postgresql. Des paquets et une procédure d’installation existent pour Linux, Windows et MacOSX. Activement développé en Belgique, sa communauté importante est conviviale.

            Interface web
            Aide à la saisie oui
            Saisie au km ?
            Intègre achats, ventes, factures, stock, documents, etc.
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée ?
            En réseau oui, et aussi sur Internet
            Aide docu, wiki, tutos
            Communauté forum, liste

            Odoo

            logo Odoo

            Odoo est un puissant ERP, modulaire, utilisé par des micro-entreprises comme des multinationales. L’entreprise Odoo connaît une croissance rapide depuis vingt ans, et emploie plus de 2000 personnes dans le monde. Le fondateur d’Odoo poste régulièrement des dépêches annonçant les nouvelles versions d’Odoo sur LinuxFr.org, et un journal sur une migration d’ERP a produit des interventions de haut niveau. Odoo est écrit en Python et utilise Postgresql, son interface est écrite en XML et Javascript. Il est facile à installer.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures, stocks, documents et plein d’autres modules
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : L’interface est uniformisée, ergonomique et soignée. Le développement est intense depuis plus de vingt ans, appuyé sur l’entreprise Odoo et une large communauté d’intervenants et d’utilisateurs. Des milliers de modules sont disponibles. Documentation facile à lire, complétée par un forum et un grand nombre de sites, vidéos et livres. Énormément d’intégrations à des services d’État ou privés. La communauté s’est regroupée dans l’OCA Odoo Community Association qui maintient les anciennes versions et développe des centaines de modules libres de haute qualité. L’OCA propose aussi un outil de montée de versions.
            • Points faibles : L’Apps Store Odoo est de qualité très diverse, certains modules ne sont pas libres, pour installer la comptabilité libre française, il faut s’y retrouver entre plusieurs modules. C’est plus simple pour les pays anglo-saxons.
            • Licence : GNU General Public Licence version 3 et propriétaire
            • Site : https://www.odoo.com
            • Code source : https://github.com/odoo/odoo
            • Odoo sur LinuxFr.org.

            OpenConcerto

            logo OpenConcerto
            OpenConcerto est un progiciel de gestion intégrée (PGI ou ERP). Sa cible : les entreprises, grandes ou petites. C’est une application java à installer sur chaque poste utilisateur. Guillaume Maillard, son auteur, est un vieil habitué de LinuxFr.org.

            Interface Bureau (version Web prévue en 2023)
            Aide à la saisie oui
            Saisie au km oui
            Intègre achats, ventes, factures, stock, paye, documents
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports FEC (DGFIP), EBP, Sage, Relation experts (Coala), Quadratus, Cegid CCMX
            Transmission automatisée SEPA
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : la comptabilité est facile à prendre en main. Il y a une version pour macOS (ce qui est à relever compte tenu de la rareté des logiciels comptables pour ce système d’exploitation). S’agissant d’un progiciel de gestion intégrée : il y a aussi des fonctionnalités de gestion commerciale, de suivi des stocks et de préparation des commandes. Plusieurs modules complémentaires existent comme un module d’OCR qui permet, à partir d’une facture numérisée, de la saisir automatiquement dans le logiciel, ou bien un module de paye (seul module payant) : fiches de paye, journaux de paye et déclarations.
            • Points faibles : c’est très complet et donc un peu complexe pour une micro-entreprise. Certaines fonctionnalités manquent de clarté et d’exemples d’utilisation. La lecture du guide de démarrage ou du manuel (79€) est conseillée. L’équipe de développement manque de temps pour discuter sur les évolutions mais répond généralement aux questions qu’on lui pose sur le forum. Les données ne sont pas stockées de la même manière entre la version monoposte (un fichier H2) et multiposte (Postgresql). Bien choisir au début, sinon il sera difficile de changer.
            • Licence : GNU General Public Licence version 3
            • Site : https://www.openconcerto.org
            • Code source : https://code.openconcerto.org/listing.php?repname=OpenConcerto
            • OpenConcerto sur LinuxFr.org.

            Paheko (ex Garradin)

            Logo de Paheko

            Un logiciel principalement destiné aux associations, qui peut aussi être utilisé par des micro-entreprises. On l’utilise via un navigateur, il y a même une application pour mobile. C’est un logiciel complet de gestion d’association : membres, cotisation, comptabilité, communication.

            Interface web
            Aide à la saisie oui
            Saisie au km
            Intègre achats, ventes, factures,
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports écritures comptables
            Exports
            Transmission automatisée
            En réseau oui, et aussi sur Internet
            Documentation oui, complète
            Forum oui
            • Points forts : il est très facile à prendre en main, il y a une aide en ligne copieuse ainsi qu’une liste d’entraide. Le logiciel propose cinq plans comptables (associatif 1999 et 2018, Plan Comptable Général (PCG), Comités Sociaux et Économiques, copropriétés et plan comptable belge). On peut aussi ajouter son propre plan comptable. Il offre des fonctionnalités de comptabilité analytique. On peut utiliser sa propre instance, récupérer la base de données ou exporter la comptabilité sous divers formats (CSV, FEC, ODS et XLSX). Il est possible d’importer une comptabilité dans ces formats. Et, il est en constante évolution avec un développeur très réactif.
            • Points faibles : pas de lettrage, pas de gestion directe des écritures périodiques.
            • Licence : GNU Alfredo General Public Licence version 3
            • Site : https://paheko.cloud
            • Code source : https://fossil.kd2.org/paheko/doc/trunk/doc/index.md
            • Paheko sur LinuxFr.org, cherchez aussi à Garradin.

            Tryton

            logo Tryton
            Tryton est un puissant ERP pour entreprises de toutes tailles. Il est accessible via un client Web, une application native ou bien une ligne de commande en Python. L’application cliente est dispo pour Windows, Mac et Linux, le serveur est empaqueté pour plusieurs distributions Linux. Comme Odoo dont il est un fork, Tryton est basé sur une architecture trois tiers écrite en Python (et un peu de ECMAScript version 6) avec PostgreSQL comme base de données. Les auteurs nous parlent régulièrement de Tryton sur LinuxFr.org.

            Interface Bureau, Web, Console
            Aide à la saisie oui
            Saisie au km oui
            Intègre achats, ventes, factures, stock, projet, etc.
            Comptabilité en partie double
            Comptabilité analytique oui
            Imports CSV, AEB43, CODA, OFX ou CAMT.053
            Exports FEC ou CSV
            Transmission automatisée Chorus, SEPA
            En réseau oui, et aussi sur Internet
            Documentation oui
            Forum oui
            • Points forts : L’interface est uniformisée, une fois comprise on s’y retrouve quel que soit le module. Un grand choix de modules permet de couvrir tout type d’activité. On peut tout paramétrer, ajouter des champs, en masquer, adapter des modules… Le développement est très actif, la fondation Tryton rassemble beaucoup d’entreprises et de projets, dont GNU Health. Les montées de version sont prises en charge automatiquement.
            • Points faibles : L’interface est austère, il y a un très grand nombre d’options. C’est difficile à prendre en main sans être accompagné (mais c’est normal).
            • Licence : GNU General Public Licence version 3
            • Site : https://www.tryton.org/
            • Code source : https://www.tryton.org/download#source
            • Tryton sur LinuxFr.org.

            D’autres listes, d’autres articles

            Bien entendu, il manque plein de logiciels. On s’est limité à ceux qu’on a pu tester. Si ce petit résumé ne vous suffit pas ou n’est plus à jour, voici des sites avec des listes complémentaires (merci d’indiquer en commentaire si vous en connaissez d’autres).

            Alors, un logiciel de comptabilité pour quoi faire ?

            Avant tout pour faciliter la saisie comptable, fastidieuse quand elle est faite sur du papier (ou des tablettes de cire à l’origine !). Toutes les formes de comptabilité demandent une rigueur, des connaissances, du calcul et du temps — c’est un métier. Le logiciel comptable facilite tout ça.
            Mais aussi pour l’automatisation du suivi comptable, c’est-à-dire la production automatique de synthèses lisibles et compréhensibles. Vous pensez peut-être au bilan, mais on a couramment besoin de consulter toutes les dépenses électriques ou toutes les recettes de pub sur LinuxFr.org. On a aussi besoin d’envoyer périodiquement ces synthèses à l’administration, comme la transmission des recettes de TVA.
            Enfin, la comptabilité enregistre toutes sortes d’opérations, produites par d’autres logiciels spécialisés (salaires, fabrication, factures, etc.). Intégrer tout cela dans un même outil permet de gagner du temps et d’éviter les fautes de frappe (une facture génère automatiquement les écritures comptables correspondantes). Ça donne des logiciels plus ou moins touffus, certains intégrant toute la gestion d’entreprise, voire tous les outils de travail de l’entreprise — on les nomme ERP (ou PGI en français).

            Note sur les ERP ou PGI

            Quand SAP et les AS400 régnaient en maître sur ce domaine, les ERP étaient exclusivement de très gros logiciels intégrant non seulement la gestion et la comptabilité, mais aussi la production, la vente, le décisionnel, etc. La forte adaptation aux processus de l’entreprise via un paramétrage puissant, était leur gros atout et justifiait un coût d’installation très élevé. On en est même venu à appeler «SAP» ce type de logiciels.
            La langue évoluant sans cesse, de nos jours on appelle ERP tout logiciel intégrant la gestion, le point de vente, la compta et deux trois outils de moindre importance, tandis qu’on les nommait autrefois «logiciels de gestion». Mais la puissance n’est pas la même (le besoin de formation non plus !). On a donc essayé de distinguer dans la liste un puissant ERP paramétrable et adaptable aux processus de l’entreprise, d’un logiciel intégrant les outils de gestion.

            Quel logiciel de comptabilité adopter ?

            Comme on va le voir, il y a beaucoup de critères, des vérifications, des questions à se poser. Les articles déjà mentionnés de LWN.net montrent assez bien les implications de vos choix. Si vous avez de quoi faire adapter l’outil à vos besoins, choisissez un ERP, puissant ou non.

            Quel logiciel sélectionner pour sa comptabilité ? Ça dépend.

            Ça dépend de votre statut fiscal, lequel est déterminé par votre chiffre d’affaires sauf dans certains cas précisés par la loi, et ça dépend si vous voyez la comptabilité comme un outil de gestion ou une obligation fiscale. Vous pouvez donc tenir une comptabilité pour des raisons fiscales, pour des raisons légales ou pour des raisons pratiques (ou les trois). Mais pour les mêmes raisons, vous pouvez tenir différentes formes de comptabilité :

            1. une comptabilité dite recettes-dépenses, semblable à votre budget familial, très courante dans les associations regroupant des bénévoles et ne vendant rien (un cahier suffit) ;
            2. une comptabilité simplifiée, dite de trésorerie, à peu près semblable à la première : vous classez les opérations bancaires, et vous rentrez les factures de vos fournisseurs, elle est classiquement permise par l’administration pour de faibles chiffres d’affaires ;
            3. une comptabilité en partie double, fiable et difficile, inventée par les marchands il y a quelques millénaires pour mieux gérer leurs entreprises ;
            4. une comptabilité analytique, qui complique les deux précédentes, mais permet de suivre très précisément les dépenses et recettes affectées à une opération, et perfectionne donc la gestion.

            Sauf la première, ces comptabilités s’appuient sur une classification conventionnelle des opérations qu’on appelle le [plan comptable]]. Celui-ci varie selon les pays et votre statut juridique. L’utilisation du Plan comptable permet de produire les synthèses mentionnées plus haut — du calcul de la TVA au Bilan d’exercice.
            Il y a des plans comptables tout prêts, adaptés à des activités particulières (comme les associations), mais tous dérivent d’un Plan comptable plus général. Votre logiciel doit permettre d’importer ou de créer le Plan comptable souhaité.

            En passant, sachez qu’il y a des types de comptabilité, et que leur choix ne permet pas de suivre les mêmes choses. Par exemple, le monde anglo-saxon suit plutôt les finances tandis que le Vieux Continent suit plutôt les biens. Mais là, on rentre dans des débats de professionnels qu’il n’est pas nécessaire d’aborder, d’autant que les frontières (comptables) bougent en ce moment. Vérifiez ce qui est permis auprès de l’administration. Reposons notre question préalable en y répondant du point de vue pratique :

            Quel logiciel sélectionner pour sa comptabilité ? Ça dépend. Bis.

            Rappelons que beaucoup de logiciels ne se limitent pas à la comptabilité pure, mais intègrent d’autres outils utiles à la gestion (graphiques des recettes, gestion de cotisations, édition de factures, transmission automatisée aux administrations, etc.). Et attention, les écrans de saisie proposés dans les logiciels sont des aides dont un utilisateur expérimenté se passe très bien.

            La comptabilité est une obligation, c’est peut-être obscur, fastidieux, vous la faites à reculons, mais la vie est ce qu’elle est, nous sommes dans le système, il faut donc y passer, chaque jour, semaine, année… Alors le meilleur choix, passe aussi par la facilité d’installation, les couleurs, la facilité de prise en main, etc.

            Tout dépend donc surtout de vous :

            • si vous avez besoin d’aides à la saisie ou non,
            • si vous préférez des outils intégrés,
            • si un outil intégré dédié à votre activité est un plus pour vous,
            • si votre statut fiscal impose une compta en partie double,
            • si vous la faites régulièrement pour la gestion de votre structure,
            • si vous avez besoin d’exporter les données pour votre expert-comptable (vérifiez les formats possibles avec lui),
            • si vous voulez un outil en réseau, voire en ligne sur internet,
            • si vous avez déjà utilisé un logiciel et que vous vous y retrouvez.

            NB Si qui peut le plus, peut le moins, sachez toutefois rester modestes si vous manquez de temps et de compétences, parce que les outils intégrés demandent une certaine maîtrise. Eh oui ! plus vous intégrez de trucs, plus il faut remplir et paramétrer les trucs avant d’utiliser la partie comptable. Par exemple, sur le cas simple d’une vente, avec un outil intégré il faudra avoir créé les produits, leurs taxes, le client, son bon de commande et les moyens de paiements avant d’attaquer la partie comptable.

            Attention aux obligations fiscales françaises (utilisées lors d’un contrôle fiscal)

            En application du 3° bis du I de l'article 286 du Code général des impôts (CGI), toute personne assujettie à la taxe sur la valeur ajoutée (TVA) qui effectue des livraisons de biens et des prestations de services à destination de clients particuliers et qui enregistre les règlements reçus en contrepartie au moyen d’un logiciel ou d’un système de caisse, est tenue d’utiliser un logiciel ou un système qui satisfasse aux conditions d’inaltérabilité, de sécurisation, de conservation et d’archivage des données en vue du contrôle de l’administration fiscale.

            Tous les détails dans l’article du Bulletin Officiel des Finances Publiques - Impôts (BOFIP) TVA - Régimes d’imposition et obligations déclaratives et comptables - Obligations d’ordre comptable - Obligation d’utilisation de logiciels ou systèmes de caisse sécurisés

            Format Fichier des Écritures Comptables (FEC)

            Fichier texte tabulaire de 18 champs délimités par barres verticales ou par tabulations, ayant un nommage et un encodage précis ou éventuellement au format XML. Ce format est utilisé par la DGFiP pour pouvoir faire un contrôle automatisable de la comptabilité. Elle fournit un utilitaire de validation de format pour Windows.

            Les points de vente

            En France, la loi « anti-fraude » de 2016 et l’article 286 du Code des impôts imposent une certification des logiciels de caisse (c’est-à-dire des points de vente qui collectent des espèces) pour éviter les trucages de la comptabilité via modifications du code-source. Ah ben alors fini le libre ? Mais non mon bon, les logiciels libres sont autorisés, on en a beaucoup parlé sur LinuxFr.org. Toutes les structures n’y sont pas tenues, typiquement il faut être assujetti à la TVA.
            NB Depuis la loi de finance 2018, article 105, les logiciels de comptabilité n’ont pas à être certifiés.

            Si vous avez encore des doutes, consultez la FAQ en français facile écrite par l’équipe de Dolibarr.

            La gestion de la paie

            On n’en a pas beaucoup parlé alors que cette dépêche a commencé avec la recherche d’un logiciel de paie libre. Disons tout de suite qu’il est préférable de s’appuyer sur des professionnels, en effet la gestion de la paye repose sur trois piliers :

            1. la fiche de paie et les déclarations afférentes
            2. l’émission et la conservation sécurisée de la fiche de paie
            3. la saisie comptable

            Certains logiciels ont des modules de gestion des payes (OpenConcerto pour la paie française, Odoo pour plusieurs pays…). L’avantage est de faciliter les écritures comptables. Mais attention, la gestion de la paye impose un suivi juridique et un suivi des taux des cotisations, car le cadre légal varie selon les professions, les salaires et varie aussi dans le temps. Cette actualisation permanente est faite par les professionnels (comptables et experts comptables). Sauf à bien connaître votre profession ou à être dans un cadre relativement simple (par exemple celui des intermittents du spectacle en France), vous gagnerez du temps, de l’argent et de la « légalité » en passant par des professionnels. Les options les plus courantes sont de choisir un cabinet d’expertise comptable ou un service en ligne (nettement moins cher). Lisez ou relisez les commentaires du forum.

            S’agissant de la saisie et du traitement comptable de la paie, n’importe quel logiciel de comptabilité peut le faire, les logiciels de paye étant souvent susceptibles de mâcher le travail à ce niveau-là.

            Commentaires : voir le flux Atom ouvrir dans le navigateur

            • ✇LinuxFr.org : les dépêches
            • Raspberry Pi 5, évolution ou révolution ?
              Les méandres de l'espace de rédaction sont parfois mystérieux. La rédaction de certaines dépêches s'étalent parfois sur de long mois, parfois sans même comprendre pourquoi la dépêche ne part pas vers le stade de la publication. C'est ce qui est arrivé à cette dépêche qui ne suit donc pas autant qu'elle aurait pu l'actualité de la sortie de la nouvelle mouture de la microcarte de la Fondation Raspberry Pi, qui porte le nom très original de Raspberry Pi 5. Cette dépêche - qui nous offre une compar

            Raspberry Pi 5, évolution ou révolution ?

            Les méandres de l'espace de rédaction sont parfois mystérieux. La rédaction de certaines dépêches s'étalent parfois sur de long mois, parfois sans même comprendre pourquoi la dépêche ne part pas vers le stade de la publication. C'est ce qui est arrivé à cette dépêche qui ne suit donc pas autant qu'elle aurait pu l'actualité de la sortie de la nouvelle mouture de la microcarte de la Fondation Raspberry Pi, qui porte le nom très original de Raspberry Pi 5. Cette dépêche - qui nous offre une comparaison de cette nouvelle édition avec son illustre ancêtre ainsi qu'une investigation de ses nouveautés - reste substantielle et il nous a semblé qu'il valait mieux la publier même tardivement plutôt que de la plonger dans l'oubli éternel.

              Sommaire

              Cette dépêche ne traitera pas de l’ensemble de ce que l’on peut faire, la précédente dépêche sur les SoC faite pour la sortie de la Raspberry Pi 4 est toujours d’actualité en ce qui concerne ces sujets.

              Comparaison entre Raspberry Pi 4 et Raspberry Pi 5

              Sorti en 2019, le RPi4 avait fait forte impression—mais quasiment en constante pénurie entre 2020 et 2023, il commençait par accuser le coup par rapport à la concurrence du Rockchip RK3588 (Quad-core Cortex-A76 + Quad-core Cortex-A55).

              Aussi, la Raspberry Pi 5 introduit des avancées significatives par rapport à la Raspberry Pi 4, dont le Tableau 1 présente une synthèse des différences.

              Composants Raspberry Pi 4 Raspberry Pi 5
              SoC Broadcom BCM2711 Broadcom BCM2712
              CPU Quad-core Cortex-A72 (1.8 GHz) Quad-core Cortex-A76 (2.4 GHz)
              GPU VideoCore VI (500 MHz) VideoCore VII (800 MHz)
              Mémoire 1, 2, 4, 8 GB LPDDR4-3200 SDRAM 4, 8 GB LPDDR4X-4267 SDRAM
              Wi-Fi Dual-band 802.11ac Dual-band 802.11ac
              Bluetooth 5.0, BLE 5.0, BLE
              USB 2 USB 3.0, 2 USB 2.0, 1 Type-C port 2 USB 3.0, 2 USB 2.0, 1 Type-C port
              Stockage MicroSD MicroSD (SDR104⟹R/W↗ˣ²) + ligne PCIe pour NVME M.2 SSD
              Ethernet Gigabit Ethernet Gigabit Ethernet
              Puissance Jusqu’à 7.5 W 2 modes : jusqu’à 15 W et jusqu’à 25 W
              Gestion HDMI 2 HDMI 2.0 (1 gérant 4k@60 Hz) 2 HDMI 2.0 (tous les deux gérant 4k@60 Hz)
              Format vidéo H.264 (AVC) H.265 (HEVC)
              PCIe Non 1 lane PCIe pour périphériques haute performance
              Bouton d’alimentation Non Oui

              Tableau 1 : comparatif des Raspberry Pi 4 et 5

              Détail des améliorations de la Raspberry Pi 5

              La Raspberry Pi 5 introduit des avancées significatives par rapport à la Raspberry Pi 4, en particulier avec l’introduction du southbridge RP1. Voici une comparaison détaillée mettant en évidence les principales différences et l’impact du RP1 :

              • Processeur : La Raspberry Pi 5 est équipée d’un CPU ARM Cortex-A76, une amélioration substantielle par rapport au Cortex-A72 trouvé dans la Raspberry Pi 4. Cette mise à niveau fait que la Pi 5 est deux à trois fois plus rapide que son prédécesseur.
              • RAM : La Raspberry Pi 5 utilise de la LPDDR4X-4267 SDRAM, nettement plus rapide que la LPDDR4-3200 SDRAM utilisée dans la Pi 4. Cette amélioration offre plus de bande passante, contribuant à des performances globalement plus rapides.
              • Puissance graphique : La Raspberry Pi 5 dispose d’un GPU VideoCore VII plus puissant, cadencé à 800 MHz et prenant en charge OpenGL ES 3.1 et Vulkan 1.2. C’est une avancée par rapport au GPU VideoCore VI de la Raspberry Pi 4, qui prend en charge OpenGL ES 3.1 et Vulkan 1.0. Le GPU de la Pi 5 comprend également un nouveau processeur de signal d’image pour la gestion des données des caméras.
              • Chip RP1 Southbridge : La puce RP1 est une innovation majeure dans la Raspberry Pi 5. Elle agit comme un southbridge, gérant la plupart des fonctions I/O (entrée/sortie), réduisant ainsi la charge sur le CPU. Cela permet une augmentation de la bande passante I/O, bénéficiant aux dispositifs de stockage, USB et autres périphériques.
              • Vitesse des cartes MicroSD : Le port microSD de la Pi 5 prend en charge le mode haute vitesse HDR 104 avec les cartes microSD UHS-1, offrant des vitesses de lecture de 80-90 Mbps, soit le double de la vitesse de 40-50 Mbps de la Pi 4.
              • Ports USB : Dans la Raspberry Pi 5, chacun des deux ports USB 3.0 dispose d’une bande passante dédiée de 5 Gbps, grâce à la puce RP1. C’est une amélioration par rapport à la Pi 4, où les deux ports USB 3.0 partageaient la bande passante de 5 Gbps.
              • Connecteur PCIe : La Pi 5 inclut un connecteur PCIe (PCI Express), une nouvelle addition répondant à la demande pour des interfaces plus rapides. Cependant, l’interface PCIe de la Pi 5 n’est pas un connecteur M.2 standard ; elle nécessite un câble ruban pour se connecter à un HAT, et le dispositif M.2 se connectera au HAT. Caractéristiques
              • Un bouton marche/arrêt : Eh oui, on est quand même dans le 3ᵉ millénaire ;-)
              • Alimentation : Tout comme la Raspberry Pi 4, la Raspberry Pi 5 utilise un connecteur d’alimentation au format USB Type-C. En revanche, doublement de la puissance oblige, la puissance nécessaire à son fonctionnement passe de 7.5 W à 15 W, il faudra donc une alimentation en 3A minimum pour être tranquille. À noter que si vous souhaitez utiliser des périphériques externes qui consomment beaucoup comme des disques durs ou SSD, il est conseillé d’avoir une alimentation de 25 W (5A). La Raspberry Pi détecte si l’alimentation fournit plus de puissance et passe la limite de consommation USB à 1,6A au lieu de 1,2A.

              Raspberry Pi 5 : Nouveau South Bridge RP1 vs Raspberry Pi 4

              Le RP1 est un contrôleur d’entrée/sortie (I/O) conçu pour le Raspberry Pi 5, représentant le programme d’ingénierie le plus complexe et coûteux entrepris par Raspberry Pi, avec un développement s’étendant sur plus de sept ans et ayant coûté environ 25 millions de dollars. Ce contrôleur est le premier produit phare de Raspberry Pi à utiliser une puce conçue en interne​.

              Architecture du South Bridge RP1

              — Description : Le RP1 est un southbridge de 12×12 mm avec un pas de 0.65 mm en BGA (Ball Grid Array), fournissant la majorité des capacités d’E/S pour la Raspberry Pi 5.
              — Caractéristiques : Il comprend un point de terminaison PCIe 2.0 à 4 voies, un contrôleur Ethernet MAC Gigabit et deux contrôleurs hôtes USB 3.
              — Améliorations : Plus du double de la bande passante USB utilisable par rapport à la Raspberry Pi 4.
              — Documentation RP1 : RP1 Datasheet

              Sources des informations sur le RP1

              — L’article d’Eben Upton pour annoncer le RP1 : RP1 : the silicon controlling Raspberry Pi 5 (ce court article est accompagné d’une vidéo YT de 35 minutes à ce sujet, mais dont le contenu est reproduit textuellement en suivant un lien)
              — Lien direct vers la vidéo YT : RP1 : the silicon controlling Raspberry Pi 5

              Impacts du RP1

              Le RP1 constitue une avancée importante, puisque les GPIOs “physiques” de la carte ne sont plus directement reliées aux GPIOs du microprocesseur et de leurs fonctions possibles (SPI/I2C/UART/I2S) attribuées par le fondeur dans le silicium.

              1. Connectivité principale : Le RP1 se connecte à un processeur d’application (AP) via un bus PCIe 2.0 x4, consolidant de nombreux contrôleurs numériques et PHYs analogiques pour les interfaces externes du Raspberry Pi 5​​.
              2. Contrôle du trafic : Le tissu interne du RP1 permet de prioriser le trafic en temps réel de la caméra et de l’affichage sur le trafic non en temps réel de l’USB et de l’Ethernet. Des signaux de qualité de service (QoS) sur le lien PCI Express soutiennent la priorisation dynamique entre le trafic provenant du RP1 et le trafic des maîtres de bus en temps réel et non en temps réel au sein de l’AP​​.
              3. Fonctionnalités supplémentaires : Pour une flexibilité maximale des cas d’utilisation, le RP1 dispose de plusieurs fonctionnalités telles qu’un contrôleur DMA à huit canaux pour les périphériques à basse vitesse, trois PLL intégrées pour la génération d’horloges vidéo et audio indépendantes, un convertisseur analogique-numérique à cinq entrées, 64kB de SRAM partagée, et des générateurs de base temporelle pour le rythme de la DMA ou pour le debouncing des événements GPIO​​​​.
              4. Gestion des contrôleurs de bus : Les modules de régulation intégrés à chaque port de contrôleur de bus permettent de surveiller ou de limiter leur comportement. Ces modules régulent le flux de données selon le nombre de transactions en attente, assurent le respect des limites d’adresses AXI et PCIe, et disposent de compteurs statistiques pour évaluer la qualité de service ou les performances.
              5. Interfaces clés externes : Le RP1 fournit des interfaces externes clés telles que deux contrôleurs XHCI indépendants connectés à un seul PHY USB 3.0 et un seul PHY USB 2.0, deux contrôleurs de caméra MIPI CSI-2 et deux contrôleurs d’affichage MIPI DSI connectés à deux PHY transceivers MIPI DPHY à 4 voies partagées, et un contrôleur d’accès média (MAC) intégré pour l’Ethernet Gigabit​​​​.
              6. Compatibilité et évolution : Le RP1 maintient la compatibilité avec la gamme de fonctions offerte sur le Raspberry Pi 4 Model B, tout en permettant une évolution vers des processus de géométrie réduite, sans avoir à reproduire tous les éléments analogiques du système. Cela pourrait permettre à changer plus facilement de fournisseur de SoC.

              Évolution des performances

              Afin de permettre de mieux visualiser les évolutions des performances Alasdair Allan a fait un benchmark complet dont certains éléments sont repris ici.

              Tout d’abord une analyse des performances du CPU avec geekbench. Les Figures 1 et 2 montrent une augmentation des performances en single core d’approximativement 2.2x,
              performances single core

              Figure 1. : Comparaison des performances single core entre RPi4 et 5
              performances multi core

              Figure 2. : Comparaison des performances multi core entre RPi4 et 5

              Compilation de différents benchmarks entre RPi 4 et 5

              Benchmark Unités Raspberry Pi 4 Raspberry Pi 5 Augmentation de Performance
              Sysbench Mono-Thread MBps 699 1041 x1,49
              Sysbench Multi-Thread MBps 2794 4165 x1,49
              Stress-ng Mono-Thread op/s 104,78 182,68 x1,74
              Stress-ng Multi-Thread op/s 413,12 737,21 x1,78
              Bzip Mono-Thread secondes 44,98 20,53 x2,19
              Bzip Multi-Thread secondes 28,59 14,36 x1,99
              Gimp Redimensionner secondes 67,01 29,95 x2,24
              Gimp Rotation secondes 77,24 32,77 x2,36
              Gimp Niveaux Auto secondes 80,52 34,64 x2,32
              Gimp Masque Flou secondes 115,16 49,71 x2,32
              Speedometer 2.1 score 20,5 62,5 x3,05
              Glmark2 score 97 202 x2,08
              Openarena Timedemo FPS 8,77 27,05 x3,08
              RAMspeed Écriture MBps 4391 29355 x6,69
              RAMspeed Lecture MBps 5902 27931 x4,73
              HDparm Lecture MBps 43,81 90,05 x2,06
              dd Écriture MBps 34,49 61,23 x1,78
              Iozone 4 K Écriture RAND MBps 9,38 15,22 x1,62
              Iozone 4 K Lecture RAND MBps 4,71 4,6 x0,98
              Temps de démarrage secondes 33,4 19,1 x1,74

              performances des I/O

              La Figure 3. issue du travail d’Adafruit permet de mettre à jour le graphique sur la vitesse performance de la commutation des I/O proposé dans la dépêche sur la RPi4. La Figure 4. quant à elle montre une légère amélioration de la performance par Watt sur le nouveau modèle.

              Titre de l’image
              Figure 3. Évolution de la vitesse de commutation d’une sortie numérique

              Titre de l’image
              Figure 4. Évolution de la performance en fonction de la puissance électrique

              Interfaces USB et Ethernet

              — Interfaces: Le RP1 fournit deux interfaces USB 3.0 et deux interfaces USB 2.0, ainsi qu’un contrôleur Ethernet Gigabit.
              — Source: Circuit Digest – The New Raspberry Pi 5 is here

              Le Gigabit Ethernet fourni par le RP1 est en tout point semblable à celui du RBPi4 (voir : RP1 : the silicon controlling Raspberry Pi 5:

              Liam 13:21: So we’ve got the Ethernet MAC but not the PHY. So the Ethernet’s brought out to an RGMII interface, which then connects to an on-board Ethernet PHY.

              Eben 13:35: And this is a fairly similar architecture to Raspberry Pi 4, except that in that case, the MAC was in the Broadcom device, but there was still an external – in fact exactly the same external – PHY, [BCM]54213. Cool. So that’s the overall structure of the design.

              Interfaces MIPI CSI/DSI

              Ces interfaces d’entrée/sortie vidéo peuvent être qualifiées d’historiques dans l’écosystème RaspberryPi puisqu’elles sont présentes depuis la version 1. Le RBPi5 apporte toutefois une nouveauté assez remarquable par rapport à ses prédécesseurs : au lieu d’avoir un port CSI (pour une caméra) et un port DSI (pour un écran), les ports du RBPi5 peuvent être configurés pour l’une ou l’autre fonction. Malheureusement, cela s’est traduit par des changements notables au niveau de la disposition des composants sur la carte, qui ne sont pas sans susciter quelques grincements de dents parmi les utilisateurs.

              Les points discutables/discutés

              Le réarrangement de la carte

              — Le port audio a disparu, pour laisser sa place au port MIPI DSI (qui peut faire CSI à présent), lui-même remplacé, au-dessus du lecteur de carte microSD, par un connecteur FPC exposant les lignes PCIe.
              — le port DSI est passé de 15 pins à 22 pins (comme sur la carte CMIo4)
              — Et, encore une fois, les ports Ethernet et USB ont été inversés.

              Si cela ne pose pas de problèmes particuliers pour un utilisateur lambda, de nombreux projets basés sur les cartes RasperryPi à la recherche de performance de calcul (et donc potentiellement intéressés par ce nouveau RBPi5) doivent entièrement revoir la conception de leur matériel.

              Le non réarrangement de la carte

              C’est un reproche que l’on peut trouver dans de nombreux témoignages : mettre un HAT (carte d’extension) sur un RBPi, juste au dessus du CPU, c’est un non-sens en termes de refroidissement (et ce, quelle que soit la version du RBPi).
              Mais, pour relativiser, on peut dire la même chose de quasiment toutes les autres solutions alternatives au RBPi.

              Les limites du format carte de crédit

              Ce format (86x56 mm) est devenu une référence pour presque tous les acteurs du monde des SBC. Et donc, il s’agit là aussi d’un constat plus général, non spécifiquement adressé à RaspberryPi. Mais sachant que ce sont les locomotives du marché, peut être pourraient-ils initier une nouvelle approche…
              Certes, ce format permet d’élaborer des solutions compactes, mais l’on peut constater :

              — qu’augmenter la puissance et les fonctionnalités des puces embarquées tout en restant sur ce format conduit à un gaspillage inutile de ressources : il est en effet impossible d’implémenter toutes les fonctionnalités matérielles proposées par les puces sur une si petite surface, et par ailleurs il devient difficile de refroidir efficacement le système.
              — pour exposer le port PCIe, RaspberryPi a supprimé le port audio, déplacé le port DSI ; mais pour alimenter le bouzin, il vous faut du 5V 4A. Ensuite un peu tout le monde se trouve planté là : débrouillez-vous.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Unvanquished 0.55, enfin là !
                Après une longue attente la version 0.55 du jeu Unvanquished a été publiée le 20 octobre 2024. Deux mises à jour mineures se sont succédées le 3 novembre et le 15 décembre pour peaufiner cette version, juste à temps pour être déposée sous le sapin de Noël ! Unvanquished est un jeu vidéo libre et gratuit mêlant stratégie en temps réel et actions à la première personne dans un univers futuristique où deux factions (humains, aliens) combattent pour leur survie. S’inscrivant dans la continuité de

              Unvanquished 0.55, enfin là !

              Après une longue attente la version 0.55 du jeu Unvanquished a été publiée le 20 octobre 2024. Deux mises à jour mineures se sont succédées le 3 novembre et le 15 décembre pour peaufiner cette version, juste à temps pour être déposée sous le sapin de Noël !

              Unvanquished est un jeu vidéo libre et gratuit mêlant stratégie en temps réel et actions à la première personne dans un univers futuristique où deux factions (humains, aliens) combattent pour leur survie.

              S’inscrivant dans la continuité de Tremulous (révélé en 2006) et basé sur ce dernier, Unvanquished développe cette expérience de jeu nerveuse et exigeante depuis 2013, en améliorant continuellement le moteur et explorant des variantes et ajustements de jouabilité.

              Un Tyrant Laisse-moi goûter à cette version !

              Sommaire

              Cette version avait été promise dans le dernier article Des nouvelles de Unvanquished, et 10 mois après la version 0.54, voici la version 0.55.

              Pendant cette année 2024, le jeu a fait l’objet d’un développement soutenu et vu l’arrivée de nouveaux contributeurs.

              Gameplay

              • La portée du « rocket pod » a été réduite: 2000qu → 1300qu (62m → 40m).
              • Il n’est plus possible de désévoluer vers la même classe, ce qui permettait de recharger ses projectiles sans attendre.

              Bots

              • Les bots aliens savent désormais éteindre les bases en feu.
              • Ils peuvent aussi utiliser le granger avancé pour atteindre des plate-formes élevées et y construire.
              • Les classes sachant marcher sur les murs le font de manière plus fiable, et le saut de mur du maraudeur est plus précis lorsqu’il escalade des murs.

              D’autres améliorations sont plus subtiles, les bots peuvent naviguer dans les cartes de façon plus efficace depuis que la taille des tuiles du maillage de navigation est configurable. Les mappers (ceux qui créent ou modifient des cartes) peuvent aussi configurer d’autres aspects de la navigation.

              Un déséquilibre qui rendait les bots aliens moins bons que les bots humains a été retravaillé.

              La navigation dans la carte perseus a été améliorée. C’est un des patchs de la mise à jour mineure 0.55.1, c’était déjà prêt pour la 0.55 mais avait été oublié (oups !).

              La 0.55.2 a donné aux bots la capacité de voler et la capacité de danser autour des ravins sans tomber.

              Interface utilisateur

              Il est désormais possible de se déplacer et d’utiliser certaines touches d’action alors que certains menus circulaires sont ouverts : évolution, construction, balises (beacons). Cela permet d’ouvrir le menu de construction en tant que granger avancé sans tomber. On peut aussi évoluer tout en courant ou en sautant, etc.

              Les nouveaux menus Les nouveaux menus avec les options de réticules.

              Traductions

              La version 0.55 est la première version majeure d’Unvanquished à distribuer de nouveau des traductions ! Nous avions déjà distribué quelques traductions avec la version de correction 0.54.1, elles étaient en quelques sorte en prévisualisation. Cette version apporte les traductions pour le Français, l’Allemand, l’Italien, l’Espagnol, le Finlandais, deux variantes de Portugais, et trois variantes de Chinois.

              Dans les premiers jours d’Unvanquished nous avions des traductions, mais il y a longtemps nous avons changé la technologie utilisée pour implémenter l’interface utilisateur et la prise en charge des traductions a dû être réimplémentée. Les voici de retour et nous sommes heureux de vous les distribuer de nouveau. Pour contribuer plus de traductions et les affiner, le mieux est de le faire sur Weblate.

              Nouveaux visuels

              De nouveaux modèles sont là : la « painsaw » d’Alex Tikkoiev et le Chaingun d’extreazz. Ils ont été intégrés au jeu par Ishq. Cela semble simple à faire mais nous n’avons pas de modeleur ni d’animateur actif et cela nous freine beaucoup, vous pouvez nous rejoindre.

              Le chaingun Le nouveau chaingun d’extreazz.

              La painsaw produit désormais des étincelles quand elle impacte des surfaces dures, agissant comme le Grand Communicateur de vos désirs de disperser des tripes extra-terrestres.

              La painsaw La nouvelle painsaw d’Alex Tikkoiev.

              Il y a dix ans nous avons reçu une fonctionnalité bien sympathique appelée particules douces (soft particles). Cela empêche certains effets comme le brouillard ou les nuages d’acides d’être affichés de manière disgracieuse lorsqu’ils touchent des murs. Initialement l’effet n’était configuré que pour une poignée de shaders. Rapidement des programmeurs paresseux se sont dits : « configurer les shaders est ennuyeux, et si nous activions la fonctionnalité pour toutes les particules ? ». Malheureusement, cela rend certaines particules invisibles, spécialement les effets d’impacts qui sont très proches de murs ou de sols. Apparemment personne n’a remarqué ça pendant 9 ans, jusqu’à ce que nous retournions à la configuration manuelle de shaders à cause de changements architecturaux liés à autosprite2. Après une revue méticuleuse de tous les systèmes de particules du jeu, nous avons corrigé, retiré ou amélioré certains effets graphiques. Par exemple le souffle du canon lucifer produit désormais une onde de choc, causant une distorsion visuelle. Un tel effet était déjà présent dans les données, mais il ne fonctionnait pas à cause d’un problème de tri des shaders. Le tir secondaire produit aussi un flash violacé à l’impact, effet qui était souvent invisible à cause des particules douces automatiques.

              Un humain en cours de soin sur la médistation Le nouvel effet de soin de la médistation.

              Reaper a repensé l’effet de soin de la medistation et l’a rendue plus transparente, pour que les joueurs en cours de soin puissent voir à travers.

              Sweet a ajouté un nouvel effet visuel au champ de force de la carte plat23. Cela utilise l’effet de mirage de chaleur (heat haze) qui était initialement conçu pour les armes et les effets de feu, mais il se trouve que ça peut également produire des effets très sympathiques dans les cartes. Nous remercions Masmblr pour la manière dont il nous fait avancer en démontrant dans ses propres cartes communautaires comment il est possible d’exploiter de façon créative et nouvelle des fonctionnalités que nous proposons déjà !

              Fichier d’entité

              Le moteur prend désormais en charge les fichiers d’entité. Cela est particulièrement utile pour les cartes (niveaux de jeu) sans source (il y en a des centaines !). Un fichier d’entité permet certaines personnalisations de comment certaines entités fonctionnent (portes, ascenseurs, téléporteurs…). Il est possible d’extraire une description d’entités avec q3map2 et le fichier extrait peut être édité avec un éditeur de texte et lu par le moteur lorsqu’il charge une carte. Le fichier d’entité peut aussi être utilisé pour modifier comment la lumière d’une carte sera appliquée (il est possible d’y renseigner des variables qui configurent le moteur de rendu pour cette carte).

              Le futur est lumineux

              Comparaison de rendu de lumière Une vidéo démontrant la compatibilité des lumières de diverses cartes historiques (voir la vidéo complète).

              Un effort aux long cours est fait pour que le moteur affiche de meilleures lumières en jeu. Les investigations ont commencé à livrer des résultats significatifs en 2020 avec l’affinage du procédé de compilation des lumières. Cet effort est multi-facettes et touche à de multiples aspects de la chaîne de production et de rendu. Ces dernières années, Illwieckz s’est assuré que différents types d’éclairage soient pris en charge. L’éclairage par vertex (vertex lighting) a été ajouté en plus de l’éclairage par grille (grid lighting) et de l’éclairage par texture (lightmap). Ainsi les cartes qui mélangent éclairage par vertex et éclairage par texture sont désormais correctement affichées. Illwieckz a aussi débuggué les styles de lumières, une sorte de lumière dynamique pré-calculée qui fusionne plusieurs textures de lumière (lightmap) au moment du rendu.

              Comparaison de suréclairage Comparaison entre l'ancien suréclairage (à gauche) et le nouveau suréclairage (à droite). Comparer avec un curseur.

              Après cela Illwieckz a réimplémenté le mécanisme de suréclairage (overbright) pour éviter la troncature des lumières (light clamping). Il se trouve que le moteur de rendu de Quake 3 souffrait d’une limitation qui atténuait les lumières autant qu’il les éclaircissait… Le nouveau code non-buggé est désormais activé par défaut. Cela a suscité des débats puisque comme le moteur id Tech 3 avait un suréclairage buggé depuis plus de 20 ans, utiliser un moteur de rendu non-buggé peut révéler des bugs que les créateurs de niveaux n’ont jamais vu avant, et il était même possible d’introduire des bugs dans certains logiciels de production sans que les gens ne s’en rendent compte ! Certaines personnes peuvent argumenter que l’affichage buggé est la façon dont le créateur du niveau s’attend à ce que son niveau soit vu… Cette histoire va si loin que cela mériterait un article dédié !

              La prochaine étape sur ce chemin vers un meilleur éclairage sera de faire de la colorimétrie correctement et de faire de la fusion linéaire de lumière (quelque chose qu’id Tech 3 n’a jamais fait), mais cette tâche est pour le futur.

              Corrections du moteur de rendu

              Un battlesuit se regardant dans des miroirs Une vidéo montrant la récursion de miroirs et de portails et leur fusion (voir la vidéo complète).

              • Sprites : Les surfaces utilisant le mot clé de shader autosprite2 sont correctement affichées, c’est parfois utilisé pour afficher des effets de symétrie axiale, par exemple pour une flamme de bougie. Ce travail a été réalisé par Slipher.
              • Portails et miroirs : Reaper a terminé l’implémentation de la récursion de portail et de miroir, a implémenté la fusion de portails et la fusion alphaGen (une technique qui permet d’obscurcir un portail selon la distance à celui-ci), et a rendu possible d’avoir des portails mobiles. Il a corrigé la rotation de portail ainsi que des bugs de portails liés aux lumières, et s’est assuré que du creep extra-terrestre de taille 10 millions de fois la taille de l’univers observable n’apparaissent pas dans les portails…
              • Vidéo : Nous pouvons à nouveau jouer des vidéos sur les surfaces. Avec le temps le code s’était gâté (rotten code), était devenu cassé et avait même été enlevé tandis qu’il était cassé. Il fut ressuscité et a fait l’objet d’une profonde réécriture par Slipher, et la fonctionnalité fonctionne de nouveau — et même mieux qu’avant (avec moins de limites arbitraires) ! Cette nouvelle implémentation était déjà visible dans la version 0.54.1, la voici désormais dans une version majeure. Le seul format pris en charge est l’antique format RoQ utilisé par Quake 3 qui, par mesure de compatibilité avec les données de jeu existantes, est le codec que nous devons prendre en charge avant tout autre codec. Nous ne fermons pas la porte au fait de prendre en charge d’autres codecs, mais pour cela il faudrait que la fonctionnalité soit utilisée plus souvent pour justifier cet effort supplémentaire.
              • Brouillard : Reaper a corrigé l’effet de brouillard, qui était cassé dans la version 0.45. Oups !
              • Lumières : Les lumières dynamiques sont désormais moins pixelisées, quand bien même ce problème n’est pas encore complètement corrigé.
              • PBR : La prise en charge de textures prétendues « basées sur la physique » est désormais dans un état viable grâce à Ishq (plus d’artefacts noirs). C’est déjà utilisé avec un nouveau modèle de chaingun. Pour le rendre bon, nous avons besoin de le faire fonctionner avec les réflexions spéculaires (réflexions statiques).

              Un dretch regardant Big Buck Bunny Une vidéo montrant la lecture de vidéo sur les surfaces du jeu (voir la vidéo complète).

              En corrigeant le shader autosprite2, la fusion de portails et la lecture de vidéos, nous avons corrigé 3 régressions du moteur original de Quake 3 et qui étaient liées à la prise en charge de format de fichiers anciens et de techniques tout aussi anciennes. Parce que notre moteur de rendu n’est plus celui de Quake 3, corriger certaines de ces régressions requiert parfois d’écrire du code neuf plutôt que de corriger un code existant, et c’est exactement ce qui s’est produit pour les portails.

              Performance améliorées

              Un granger à Noël Unvanquished 0.55.2 a été publiée pour Noël !

              Le moteur et le jeu sont plus rapides que jamais !

              • Simplification du ciel : Reaper a purifié par le feu le code de rendu du ciel qui était archaïque et… étrange. Ce code pouvait générer plus de 1000 triangles par trame rien que pour dessiner le ciel. Une skybox n’a pas besoin d’une géométrie aussi fine, elle est simplement modélisée comme l’intérieur d’un cube. En plus le code faisait des allers-retours mémoire entre la mémoire principale et la mémoire graphique… 🤦‍♂️️ Nous dessinons donc le ciel maintenant avec seulement 12 triangles. Inutile de dire que les performances sont significativement améliorées, et ça aurait toujours dû être comme ça.
              • Culling : Il s’agit du procédé qui élague les surfaces non-visibles pour éviter de les dessiner. Illwieckz a optimisé l’implémentation générique pour processeur central (CPU), Slipher a ciselé à la main un code SSE pour les processeurs x86, et Reaper a permis d’utiliser la carte graphique (GPU) quand le pilote et le matériel sont compatibles.
              • Réduction des délais IPC par du traitement par lots et de la mise en cache : Ces travaux accélèrent des choses comme les particules, les marques d’impact, et les ombres. Illwieckz a réduit le temps d’attente pour ces communications interprocessus en ajoutant des alternatives à nos interfaces de programmation (API) qui fonctionnent par lot. L’IPC est comme un service postal qui transporte les messages entre le processus du jeu Unvanquished et le moteur Dæmon. Pour un facteur, l’important n’est pas le nombre de pages que vous écrivez mais le nombre d’enveloppes à livrer. Vous pouvez donc alléger sa charge de travail en mettant toutes vos lettres dans une seule grande enveloppe. Pour un cas d’utilisation (déjà livrée dans la version 0.54.1), Slipher a implémenté une mise en cache côté code de jeu. Pour filer la métaphore, il n’est pas nécessaire de ré-envoyer le même courrier si le contenu est déjà connu. Sur du matériel actuel, ces optimisations peuvent augmenter le taux de trame (framerate) de plusieurs centaines de FPS quand il y a de nombreuses particules et autres choses de ce genre à l’écran (spam de grenade incendiaires, par exemple !).
              • Code de vertex flottant plus rapide : L’implémentation de vertex plein-flottant écrite par Slipher pour étendre la compatibilité à du matériel plus ancien ou de plus basse gamme qui ne prennent pas en charge les demi-flottants a aussi doublé le taux de rafraïchissement sur du matériel qui fonctionnait déjà ! La réécriture a aussi apporté de menues optimisations dans le code de modèles.
              • Placage de relief : Reaper a corrigé un bug dans le code des cartes de relief (relief mapping), ce qui a débloqué quelques centaines de FPS sur des cartes graphiques de génération actuelle.
              • Usage mémoire des images : Illwieckz a implémenté le mécanisme fitScreen pour les textures d’interfaces utilisateur : c’est une alternative à l’antique implémentation noPicMip de Quake 3 : noPicMip instruisait le moteur de ne jamais réduire la taille d’une image, fitScreen s’assure qu’elle soit réduite d’une façon qu’elle ne devienne jamais plus large que l’écran. Par exemple une capture d’écran d’une carte (niveau) utilisée dans la liste des cartes et au chargement d’une carte ne sera plus jamais chargée en pleine résolution dans la mémoire graphique si elle doit être affichée sur un écran 640×480 (pour donner un exemple extrême)… Combiné avec le mécanisme r_maxImageDimension que nous avons ajouté en version 0.52 pour les textures qui ne sont pas utilisées pour les interfaces utilisateurs comme alternative à r_picmip, ce nouveau mécanisme donne au jeu une empreinte mémoire en VRAM très très faible quand on utilise un écran avec une résolution toute petite.
              • Plus de pré-calcul : De nombreuses décisions étaient préalablement prises à chaque trame en rendant telle ou telle surface, Illwieckz s’est assuré que ces décisions soient désormais prises une fois pour toute lorsque le shader est parsé. Ce que nous appelons « shader » ici est un format de définition de matériaux utilisé par id Tech 3 et ses dérivés, ainsi que de nombreux outils d’édition de cartes. Ne pas confondre avec un « shader GLSL » qui est un programme exécuté sur la carte graphique.
              • SSAO : Le shader GLSL SSAO (Screen Space Ambient Occlusion) a été rendu un peu plus rapide par Reaper.

              Le moteur et le jeu ont été profilés intensivement par Illwieckz en utilisant Orbit. Cet effort a permis d’identifier des goulots d’étranglement (bottleneck) et du code non-optimal. Au final cela nous a aidé à implémenter de nombreuses optimisations à de nombreux endroits dans le code.

              Le chargement de carte a aussi été amélioré de plusieurs façons :

              • Le moteur ne calcule plus la somme de contrôle des images CRN au chargement.
              • Le moteur ne compile plus certains shaders GLSL qui sont détectés comme inutilisés.
              • De la même façon nous avons réduit le nombre de permutations de shader GLSL à compiler.
              • Les joueurs qui aiment jouer seul apprécieront notre génération « multithread » de maillage de navigation de bot (bot navigation mesh), grâce à Ishq et Slipher. Cela fait partie de la phase de chargement lorsque vous jouez une carte pour la première fois dans un jeu local. Cette génération n’utilisait avant qu’un seul fil d’exécution (thread), désormais toute la puissante de votre processeur est exploitée en mettant tous les cœurs à contribution. Les hébergeurs de serveurs peuvent également en profiter et peuvent configurer cette fonctionnalité avec la variable g_bot_navgenMaxThreads (utiliser moins de fils utilise moins de mémoire, ce qui peut être préféré sur certains serveurs).

              Il y a aussi tout un ensemble de choses qui n’ont pas de lien avec le moteur de rendu qui rendent le jeu plus rapide :

              • Le préréglage « le plus bas » (lowest) pour les appareils de très bas de gamme a été optimisé encore plus.
              • Nous distribuons des modèles optionnels en faible qualité – pour le moment seulement pour les constructions, avec la seule différence que ces modèles ont moins d’articulations. Cela permet de traiter l’animation de ces modèles sur des GPUs plus bas de gamme (au lieu de basculer sur le code CPUs quand le GPU est trop bas de gamme).
              • Il a été découvert que certaines variables de configuration (cvar) étaient utilisées par le code de jeu pour envoyer des informations à l’interface du code du jeu dans le but de les afficher à l’écran. Cela signifie que le jeu s’envoyait une lettre à lui-même à travers le moteur à chaque trame… En fait cela demandait même deux lettres : une pour envoyer la donnée au moteur, une pour la récupérer depuis le moteur, tout ça pour une donnée déjà connue ! Cette horreur a été atomisée avec un préjudice extrême.
              • L’accès à une cvar de jeu par son nom depuis le jeu utilise désormais un cache local, réduisant encore le nombre de messages que le jeu et le moteur doivent échanger, accélérant de beaucoup l’interface utilisateur.

              Ceux qui aiment faire tourner des benchmarks seront heureux d’apprendre que le taux de trame de la fonctionnalité timedemo n’est plus plafonné à 999 fps.

              De plus, l’interface Curses peut désormais afficher les FPS.

              Bien entendu que ça fait tourner Unvanquished !

              Toujours du côté du moteur de rendu, l’exigence minimale est désormais OpenGL 2.1 sans extension spéciale. Cela signifie que le matériel le plus limité qui puisse faire tourner Unvanquished inclue les ATI R300, les Intel GMA 3 et 4 (sous Linux) et les Nvidia NV40. Parfois même un OpenGL 2.1 incomplet pourrait suffire !

              Votre carte graphique est prise en charge. Si cela ne fonctionne pas alors qu’elle est censée prendre en charge OpenGL 2.1 (ou plus), c’est très probablement un bug de pilote.

              Par exemple même le VC4 du Raspberry Pi 3B+ peut soutenir 60 fps avec la préconfiguration la plus basse (lowest) et une résolution faible. Cependant le pilote a encore besoin d’être amélioré pour être compatible avec tous les niveaux jouables.

              La carte plat23 Un Raspberry Pi 3B+ dessinant la carte plat23 à 60 fps avec le préréglage « le plus bas »…

              Jouer à Unvanquished sur un RPI3 n’est vraiment pas recommandé (la mémoire vive disponible sera aussi très limitante), mais si un RPI3 arrive à tenir le rang, c’est que le jeu tourne sur vraiment n’importe quoi, y compris sur un topinambour (parce que même une patate ça serait du luxe 🤭️).

              Voici quelques optimisations qui ont été faites pour étendre la compatibilité du moteur :

              • L’extension GL_ARB_half_float_vertex n’est plus requise. Cela s’ajoute au fait que l’extension GL_ARB_framebuffer_object n’est plus non-plus requise depuis la version 0.54 pour être compatible avec plus de matériel. La réécriture faite par Slipher pour prendre en charge à la fois les vertex demi-flottants ou les vertex plein-flottants a même amélioré les performances du moteur (code plus concis, code plus performant, et qui permet plus de chose… tout ça à la fois) !
              • Les textures 3D ne sont plus requises. C’est quelque chose qui est obligatoire en OpenGL 2.1, mais le moteur peut faire sans lorsque l’implémentation est incomplète. De telles implémentations incomplètes peuvent être trouvées avec certaines puces graphiques embarquées conçues pour OpenGL ES, et Mesa se permet de fournir « autant qu’il peut » d’OpenGL pour faire fonctionner les compositeur de bureau. Le moteur Dæmon sait désormais se satisfaire lui-aussi d’une telle implémentation incomplète.
              • Une collection de codes de détection a été implémentée pour identifier des pilotes buggés ou lent, ainsi que des matériels lents. Quand c’est possible, un code moins buggé ou plus rapide est activé lors de l’exécution. Par exemple lors de ce cycle de développement nous avons mis le pied dans ce que les développeurs Intel caractérisent comme un défaut matériel de l’architecture Iris (l’actuelle…), et ont suggéré un contournement qui limite les défauts visuels la plupart du temps. Il y a quelques années nous avions identifié que le dernier pilote Nvidia pour toute une génération de carte donnée ment sur la présence d’une extension, et plante si on tente de s’en servir, et ne sera jamais mis à jour… donc depuis un moment déjà on le détecte pour corriger ses prétentions. Il y a aussi une génération de vieilles cartes ATI qui sont plus rapides en flottants qu’en demi-flottant (la prise en charge annoncée par le pilote est très probablement une émulation pour permettre de faire fonctionner d’autres logiciels qui n’ont pas d’implémentation alternative), donc on détecte et on utilise le code le plus adapté à cette architecture. Il y a d’autres types de contournements mais ces trois-là sont représentatifs. Nous avions déjà quelques-uns de ces contournements implémentés (comme celui pour certaines Nvidia), mais désormais nous avons un procédé standardisé pour implémenter de tels contournements et pour pouvoir les désactiver (pour que les fabricants de matériel et/ou développeurs de pilotes puissent reproduire les bugs, par exemple).

              Bien sûr toutes les améliorations de la vitesse d’exécution ont étendu la compatibilité en transformant des équipements « capable de faire le rendu » en « quelque chose avec lequel on peut jouer ».

              Nous avons aussi ajouté la possibilité de compiler et exécuter un moteur Dæmon natif sur FreeBSD. Les binaires NaCl exécutés dans le bac à sable tournent toujours dans le mode de compatibilité Linux, mais le moteur peut désormais être natif FreeBSD. Une telle astuce doit probablement être utilisable sur d’autres systèmes qui ont une compatibilité Linux intégrée (NetBSD par exemple, mais nous n’avons pas testé), en utilisant un binaire natif pour le moteur et la compatibilité Linux pour la machine virtuelle du code du jeu.

              Un point que nous aimerions améliorer dans le futur au niveau du moteur est l’utilisation mémoire.

              Nouveaux joujoux

              Reflets sur des tuyaux dans la carte Chasm Remarquez les reflets sur les tuyaux !

              Placage de reflet (très expérimental) : Tandis que notre moteur de rendu progresse, les reflets statiques qui étaient complètement cassés sont désormais en meilleur état. Une fois activés, vous pourrez apercevoir votre environnement dans les matériaux réfléchissants, comme des tuyaux métalliques, des plastiques brillants, et des surfaces excessivement polies… Puisque cela est statique, seule la géométrie stationnaire de la carte est pour le moment reflétée, bien que cela soit suffisamment subtil pour que les différences ne soient pas trop évidentes, surtout au beau milieu de l’action. En outre, les données de reflets sont enregistrées et chargées depuis le disque quand vous activez la mise en cache dans les options. Le code du moteur en charge de sélectionner les reflets pour chaque surface a aussi été amélioré, apportant des reflets plus corrects et de grandes améliorations de performance.

              Système de matériaux (très expérimental) : Une autre étape vers la modernisation du moteur est l’ajout d’un système de matériaux. Lorsque le matériel et les pilotes sont compatibles, cela déplace de nombreuses tâches de rendu depuis le CPU vers le GPU, produisant ainsi un flux de travail centré sur le GPU. Bien que cela ajoute un peu plus de travail au GPU, cela élimine une forte pression mise sur le CPU, ainsi que de nombreux aller-retours entre le moteur et le pilote et entre le CPU et le GPU. Sur les cartes les plus exigeantes pour le CPU (en particulier celles avec un “vis” mauvais, le vis est une représentation de la carte générée par le compilateur de carte qui détermine quelle partie devrait être visible selon le point de vue) cela peut doubler le taux de trame comparé au moteur de base. Ce système est encore incomplet et de nombreuses améliorations sont à venir.

              Reaper est celui qui se cache derrière la réalisation de ces chantiers impressionnants.

              Pour pouvoir en profiter il vous sera nécessaire d’avoir OpenGL 4.6 et (en plus) l’extension GL_ARB_bindless_texture. Il reste cependant des problèmes avec certains matériels et pilotes : tout devrait fonctionner avec Nvidia, le système de matériaux et le « frustum culling » devraient fonctionner avec Mesa (radeonsi pour AMD, etc.) quand la dernière version de Mesa est utilisée (l’ « occlusion culling » ne fonctionne pas encore et pourrait planter avec un Mesa qui ne vient pas de la branche de développement main…). Cela ne fonctionne pas avec le pilote propriétaire AMD à cause de bugs. Des contournements pour ces problèmes sont planifiés, mais tous n’ont pas été implémentés à temps pour la sortie de cette version.

              À venir

              Parmis les développements qui sont déjà testables sur certains serveurs et qui seront disponibles dans la prochaine version, il y a le mode « vampire », qui est un mode alternatif de gestion des ressources : plutôt que de miner du point de construction, chaque équipe se voit dotée d’un lot déterminé de points en début de partie et lorsqu’une équipe détruit une construction adverse elle s’approprie les points de construction associées. Ce mode « vampire » est évalué comme une solution potentielle au problème de certaines parties qui sont trop longues ou semblent bloquées avec des équipes trop bien fortifiées de chaque côté. Ce mode de jeu peut être testé en avant-première sur des serveurs comme Map&Bot Testing, Der Bunker, ou Bug Squash Central.

              Il est temps de jouer !

              Le jeu Unvanquished se télécharge ici et les parties en cours sont listées ici !

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Illico Editor : nouveautés depuis 2021
                Illico Editor est un (petit) couteau suisse de la qualification de données développé à l’origine pour permettre aux experts métiers de transformer les données sans recourir à la programmation… le tout dans une simple page HTML (pas de serveur Web) donc une utilisation à travers le navigateur. Aujourd’hui, plus de 150 transformations de données sont disponibles prêtes à l'emploi. Particularité : chaque transformation exécutée ainsi que son résultat sont inscrits dans un journal de bord créant a

              Illico Editor : nouveautés depuis 2021

              Illico Editor est un (petit) couteau suisse de la qualification de données développé à l’origine pour permettre aux experts métiers de transformer les données sans recourir à la programmation… le tout dans une simple page HTML (pas de serveur Web) donc une utilisation à travers le navigateur.

              Aujourd’hui, plus de 150 transformations de données sont disponibles prêtes à l'emploi.

              Particularité : chaque transformation exécutée ainsi que son résultat sont inscrits dans un journal de bord créant ainsi une sorte de procédure-type sans effort.

              Publié sous licence GPL, le code d’Illico est globalement très basique : standards HTML5/CSS3/JS, et zéro dépendance, bibliothèque ou appel à un code tiers. Les données restent dans le (cache du) navigateur.
              Les algorithmes sont très simples. La complexité est plutôt liée à la manière d’imaginer de nouvelles transformations de données, à la fois génériques (paramétrables) tout en restant simples pour l’utilisateur (nombre réduit de paramètres).

              Sommaire

              Quelques limites à connaître

              Dans mon usage, des crashs du navigateur ont été constatés sur des grands jeux de données avec les fonctionnalités qui sollicitent le plus grand nombre de comparaisons (précisément le calcul de la distance d’édition / lignes).

              Pour un grand volume de données, mon conseil serait d’opter pour Opera/Vivaldi qui proposent à l’utilisateur d’augmenter la mémoire allouée à la page (plutôt que de faire crasher l’onglet/navigateur) ; de réduire le jeu de données aux colonnes/lignes à traiter (ce qui réduirait la taille), avant de se lancer dans les transformations ; ou d’opter pour des outils plus adaptés à cette volumétrie.

              Un test sur des données factices m’avait permis d’identifier des tailles limites de jeu de données : https://illico.ti-nuage.fr/doc/build/html/fct/principes.html#jeu-de-donnees-volumineux

               Objet de la dépêche

              Cette dépêche fait écho à la précédente de janvier 2021.

              Au-delà des corrections de bug et des améliorations (gestion des nombres décimaux et négatifs pour les intervalles, options supplémentaires pour décider l’interprétation de “valeurs” vides), je voulais présenter ici la trentaine de nouvelles fonctionnalités/traitements et les nouveaux tutoriels.

              Avant de commencer

              Dans Illico, l’expression valeurs en liste désigne

              • des données présentées sous la forme a, b, c (le séparateur peut être un caractère ou une chaîne)
              • des listes de couples de valeurs xxx:1 / yyy:2 / zzz:3 (un séparateur de liste / + un délimiteur {clé => valeur} ici :

              Nouveaux tutoriels

              La section tutoriels décrit des cas concrets pour lesquels il n’existe pas de résolution « en 1 étape ».
              Dans certains cas, une fonctionnalité a été développée pour couvrir tout ou partie de la résolution.

              Ces tutoriels sont détaillés pas à pas dans la section “tutoriels” afin d’être utilisés comme support de formation.

              Je résume ici leur logique.

              Transposer une matrice

              Au sens “mathématique” du terme, bascule les lignes en colonnes et vice-versa :

              nombre d’étapes/actions du tutoriel : 6

              une nouvelle fonctionnalité a été développée par la suite pour transposer les données en 1 clic/étape/action

              Comparer (rapidement) des groupes de colonnes

              Comparer des groupes de colonnes prises deux à deux était déjà possible. Cependant, avec un grand nombre de colonne, l’opération pouvait s’avérer fastidieuse et source d’erreurs.
              Le tutoriel présente une manière plus générique de comparer un grand nombre de colonne de deux fichiers sources avec le même en-tête, par exemple la description d’une même population sur deux années différentes.

              nombre d’étapes/actions du tutoriel : (2 par fichier source) + 4

              l’intérêt de ce tutoriel réside surtout dans le fait de rendre la complexité du traitement indépendante du nombre (de paires) de colonnes à comparer

              Comparer des lignes dans un fichier cumul

              On souhaite identifier des différences mais cette fois au sein d’un même fichier de données décrivant un cumul.
              Il peut s’agir par exemple de deux jeux de données mis bout-à-bout décrivant une même population sur deux années différentes.

              nombre d’étapes/actions du tutoriel : 3

              Créer un fichier cumul à partir de deux sources aux formats proches

              Le cas a été rencontré lors d’une analyse de journaux comptables où les jeux de données présentaient des rubriques/codes comptables en colonne.
              D’un mois sur l’autre, le nombre et l’ordre de ces colonnes/rubriques différaient. Le tutoriel permet de s’affranchir de ces variations de la structure des données.

              nombre d’étapes/actions du tutoriel : (4 par fichier source) + 3

              Reconstituer des calendriers

              Autre cas de figure rencontré, les données décrivent des personnes présentes sur des périodes avec en colonne la date de début, la date de fin, puis les autres données.
              À partir de ces données, on recherche les dates/jours exactes qui ont rassemblé le plus de personne.

              La résolution consiste à générer l’ensemble des jours (entre la date de début et la date de fin), c’est-à-dire une description des faits à une échelle unitaire/atomique (chaque ligne décrivant alors une date et non une période).

              Trois approches sont proposées dans le tutoriel : entre 3 et 6 étapes/actions

              Fidélisation (suivre une cohorte)

              La problématique soulevée était de comprendre les parcours, trajectoires pour une population donnée.

              Exemple simplifié : 4 lignes de données décrivent (dans l’ordre chronologique) les états/statuts successifs d’un individu, à raison d’un par ligne : a -> b -> c -> d.

              dans la pratique, le jeu de données décrivait une population d’individu avec des trajectoire de 4 à 50 états, parfois circulaires a -> b -> a -> d -> c

              On souhaite identifier :

              1. le parcours par rapport à l’état initial pour l’individu pris en exemple, le résultat sera la relation suivante : a => {b -> c -> d}
              2. les changements d’état (de proche en proche) pour le même exemple, le résultat sera une liste de couple de valeurs : (a => b), (b => c), (c => d)
              3. les relations entre l’état initial et n’importe quel autre état du parcours même exemple, le résultat sera trois couples de valeurs : (a => b), (a => c), (a => d)
              4. les relations entre n’importe quel état du parcours et n’importe quel autre état rencontré par la suite même exemple, le résultat sera six couples :
                • (a => b), (a => c), (a => d)
                • (b => c), (b => d)
                • (c => d)

              La fonctionnalité utilisée possède une option “scénario” avec les 4 choix.
              Ainsi, on définit « ce que représente les données » en précisant le ou les séparateurs, et la transformation est appliquée selon la demande.

              Les 4 scénarios sont proposés dans le tutoriel : 3 étapes/actions (une 4ème étape est nécessaire si on souhaite étudier à part le 1er état et l’état terminal de la trajectoire)

              Nouvelles fonctionnalités

              La majorité des nouvelles fonctionnalités concerne

              • des traitements de dates (décalage, conversion)
              • des traitements d’intervalles numériques
              • des traitements de périodes (intervalles de dates)

              Elles sont présentées ci-dessous dans leur rubrique respective (dans l’ordre d’apparition des rubriques dans Illico et dans la documentation).

              (dans l’application, chaque écran permettant d’exécuter une transformation possède un lien vers la section/page concernée dans la documentation)

              Valeurs en liste : compacter, inverser l’ordre, filtrer

              compacter les listes

              rubrique « valeurs en liste : agrégats"

              Pour une liste qui présente des répétitions—a,a,b,c,a,d,b—les deux options de cette transformation permettent d’obtenir :

              • a,b,c,a,d,b : réduire à une occurrence, pour chaque série
              • a,b,c,d : conserver globalement les premières occurrences
              • c,a,d,b : conserver globalement les dernières occurrences

              inverser l’ordre des éléments des listes

              rubrique « valeurs en liste : structure"

              Pour une colonne décrivant des listes d’éléments—a:1, b:2—,

              • inverse l’ordre des valeurs des listes (b:2, a:1)
              • inverse l’ordre des valeurs des listes imbriquées seulement (1:a, 2:b)
              • inverse l’ordre des listes imbriquées et des valeurs dans ces listes (2:b, 1:a)

              filtrer ou exclure les valeurs d’une liste

              rubrique « valeurs en liste : filtres"

              compare les listes de valeurs d’une colonne par rapport à une autre colonne de référence

              • égal
              • différent de
              • supérieur/inférieur ou égal à
              • strictement supérieur/inférieur à

              réduire la liste à certaines clés

              conserver/exclure certains couples {clé:valeur} lorsque la clé existe dans une autre colonne (qui contient pour chaque ligne la liste de clés à conserver ou à exclure)

              Par exemple—et sans devoir utiliser des regex/expressions rationnelles—la liste 2021=3,2022=1,2024=4 pourra être réduite à 2022=1,2024=4 si la clé 2021 existe dans la colonne de contrôle.

              Valeurs en liste : lister les permutations, mélanger la liste

              rubrique valeurs en liste : enrichissement

              lister les permutations des valeurs d’une liste

              produit la liste de toutes les permutations des valeurs des listes de la colonne sélectionnée.

              mélanger les valeurs de la liste

              applique le mélange de Fisher-Yates sur les valeurs de la liste

              enlever les accents et les cédilles de l’en-tête

              rubrique « en-tête"

              surtout utile lorsque l’on part d’un tableur et que l’on cherche à injecter les données dans une base de données ne tolérant pas ces caractères dans les en-têtes

              Permuter les colonnes

              rubrique « colonnes : ordre"

              Dans le cas d’un export de données depuis un logiciel métier, ou suite à certaines transformations, certaines colonnes peuvent être générées dans un ordre qui ne s’avère pas très intuitif.

              Cette nouvelle fonctionnalité inverse en 1 clic l’ordre des colonnes sélectionnées en permutant (au choix)

              • 1ʳᵉ et 2ᵉ, 3ᵉ et 4ᵉ, etc.
              • 1ʳᵉ et dernière, 2ᵉ et avant-dernière, etc.

              Numéroter chaque série

              rubrique “lignes”

              Dans Illico, le terme série désigne une suite de lignes contiguës qui possèdent la même valeur dans la colonne sélectionnée (un identifiant par exemple).
              Si l’identifiant réapparaît plus loin dans les données, il s’agira d’une nouvelle série.

              (une autre transformation permet déjà de numéroter chaque ligne de la série)

              Obtenir les méta-données des colonnes sélectionnées

              rubrique “agrégats”

              Pour les colonnes sélectionnées, indique

              • si la colonne ne contient que des valeurs uniques (les valeurs vides sont comptées à part)
              • le nombre de lignes sans valeur (valeur vide)
              • le nombre de valeurs renseignées (valeur non-vide)
              • la cardinalité : nombre de valeurs différentes rencontrées dans la colonne

              Décaler les dates

              rubrique “temps”

              décaler les dates avec 1 constante (saisie par l’utilisateur)

              permet de décaler les dates d’une colonne à partir d’une constante (on précise l’unité : nombre de jours, de semaines, de mois ou d’années)

              décaler des dates selon 1 autre colonne

              idem précédemment mais en se basant sur les valeurs d’une autre colonne plutôt qu’une constante

              Jours de la semaine

              rubrique “temps”

              donner le nom des jours de la semaine

              la date est alors recodée : lundi, mardi…

              compter chacun des jours de la semaine

              nombre de lundis, de mardis, etc. dans l’intervalle décrit par des colonnes début et fin de la période

              obtenir le numéro du jour dans l’année

              1 pour le 1ᵉʳ janvier, 32 pour le 1ᵉʳ février…

              Transformation des périodes « temps : intervalles »

              compléter un intervalle de date (2 colonnes : début et fin de la période)

              crée une liste de jour/date dans l’intervalle décrit

              rechercher une date dans un intervalle de date

              compare 1 colonne (date recherchée) par rapport à 2 autres colonnes décrivant une période (début et fin de la période)

              combiner deux périodes (4 colonnes)

              option (au choix) : obtenir

              • une fusion : période englobant les deux [min, max]
              • une union : période englobant les deux seulement si intersection
              • une intersection : plus petite période commune

              comparer les dates et une liste de seuils (saisie par l’utilisateur)

              détecter des collisions de périodes

              portée de la détection

              • rechercher pour l’ensemble des données
              • rechercher dans les lignes qui partagent un même identifiant (les lignes comparées ne sont pas forcément contiguës)
              • rechercher dans les lignes qui décrivent une série (lignes contiguës avec un même identifiant)

              Calculs

              rubrique “calculs”

              calculer une opération sur 1 colonne : options

              options :

              • opérations : minimum, maximum, moyenne, somme
              • valeurs vides : ignorées ou traduites par zéro
              • calcul : total ou cumulé
                • option si cumulé : en partant de la première ou dernière ligne
              • résultat : global ou local
                • option si local : pour chaque série ou pour chaque identifiant

              calculer une opération avec 1 constante (saisie par l’utilisateur)

              calculer une somme ou une moyenne sur x colonnes

              Convertir d’un système de numération à un autre

              rubrique “enrichissement”

              conversion depuis et vers une base binaire, octale, décimale, hexadécimale

              Matrice : transposée, inverser, trier

              rubrique “matrice”

              calculer la transposée

              Transpose le jeu de données : les lignes deviennent les colonnes et inversement ; la ligne d’en-tête devient la première colonne ; la première colonne devient la ligne d’en-tête.

              inverser l’ordre des lignes

              Inverse l’ordre des lignes du jeu de données : la première ligne devient la dernière, la dernière devient la première, etc.

              trier par ordre alphabétique

              options

              • ordre des lettres : A…Z…a…z…É…é ou A…É…Z…a…é…z
              • placer les valeurs vides : au début ou à la fin

              trier par ordre numérique

              option : les valeurs vides sont

              • les plus petites (seront placées au début du tableau)
              • les plus grandes (seront placées à la fin du tableau)
              • égales à zéro

              trier par ordre chronologique

              option : les valeurs vides sont

              • dans le passé lointain
              • dans un futur lointain
              • égales à la date du jour
              • égales à une date précise (à saisir)

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Nouvelles de Haiku - Hiver 2024-25
                Haiku est un système d’exploitation pour les ordinateurs personnels. Il s’agit à l’origine d’une réécriture de BeOS. Le projet a démarré en 2001 et est actuellement en phase de beta-test pour une première version stable avec support à long terme. Depuis 2024, l’activité du projet Haiku s’accélère grâce entre autres à l’embauche d’un développeur à plein temps. Les dépêches sur Haiku sont donc désormais publiées tous les 3 mois au lieu de tous les ans pour leur conserver une longueur digeste. La

              Nouvelles de Haiku - Hiver 2024-25

              Haiku est un système d’exploitation pour les ordinateurs personnels. Il s’agit à l’origine d’une réécriture de BeOS. Le projet a démarré en 2001 et est actuellement en phase de beta-test pour une première version stable avec support à long terme. Depuis 2024, l’activité du projet Haiku s’accélère grâce entre autres à l’embauche d’un développeur à plein temps. Les dépêches sur Haiku sont donc désormais publiées tous les 3 mois au lieu de tous les ans pour leur conserver une longueur digeste.

              La complète liste des changements survenus pendant ces 3 mois comporte près de 300 commits. La dépêche ne rentre pas dans les détails de chaque changement et met en valeur les plus importants.

              Les grosses évolutions sont un nouveau port de Iceweasel (Firefox), et des grosses améliorations sur la gestion de la mémoire.

              Comme on est en début d’année, c’est aussi le moment du bilan financier.

              Sommaire

              Rapport financier 2024

              Recettes

              L’association Haiku inc (association de type 501(c)3 aux USA) publie chaque année un rapport financier. Le rôle de l’association est de récolter les dons et de les redistribuer pour aider au développement de Haiku. Elle ne prend pas part aux décisions techniques sur l’orientation du projet, et habituellement les dépenses sont faites en réponse aux demandes des développeurs du projet.

              L’objectif en début d’année 2024 était de récolter 20 000$ de dons. Cet objectif a été largement atteint, il a dû être mis à jour 2 fois en cours d’année et finalement ce sont plus de 31 000$ qui ont été reçus ! Cela en particulier grace à un assez gros don de 7 500$.

              Les dons sont récoltés via différentes plateformes: Github Sponsors (intéressant, car il n’y a aucun frais de traitement), PayPal, Liberapay, Benevity (une plateforme de « corporate matching »), ainsi que des paiements par chèque, virements bancaires, et en espèce lors de la tenue de stands dans des conférences de logiciels libres. La vente de T-Shirts et autre merchandising via la boutique Freewear reste anecdotique (une centaine de dollars cette année).

              Il faut ajouter à ces dons une contribution de 4 400$ de la part de Google en compensation du temps passé à l’encadrement des participants au Google Summer of Code.

              Il faut également ajouter des dons en crypto-monnaies, principalement en bitcoins. Le rapport financier présente les chiffres en détail en tenant une compatibilité séparée en dollars, en euros, et en crypto-monnaies, avant de convertir le total en dollars pour dresser un bilan complet.

              Une mauvaise nouvelle tout de même: le service de microdons Flattr a fermé ses portes. L’entreprise propose maintenant un service de bloqueur de publicités payant, qui reverse de l’argent aux sites dont les publicités sont bloquées.

              Le compte Flattr de Haiku avait été créé pour recevoir des dons sur la plateforme, mais n’avait jamais été configuré pour transférer ces dons vers le compte en banque de l’association. Malgré un certain temps passé à discuter avec le service client de Flattr et à leur fournir tous les documents demandés, il n’a pas été possible de trouver une solution pour récupérer cet argent. Ce sont donc 800$ qui ne reviendront finalement pas au projet Haiku.

              Au final, les recettes sont de 36 479 dollars, de loin la plus grosse somme reçue par le projet en un an.

              Dépenses

              La dépense principale est le paiement de Waddlesplash, le développeur actuellement employé par Haiku inc pour accélérer le développement du système (les autres développeurs participent uniquement sur leur temps libre, en fonction de leurs autres activités). Cela représente 25 500$, un coût assez faible par rapport au travail réalisé.

              Le deuxième poste de dépenses est l’infrastructure, c’est-à dire le paiement pour l’hébergement de serveurs, les noms de domaines, et quelques services « cloud » en particulier pour le stockage des dépôts de paquets.

              Le reste des dépenses consiste en frais divers (commission PayPal par exemple), remboursement de déplacements pour la participation à des conférences, ainsi que le renouvellement de la marque déposée sur le logo Haiku.

              Le total des dépenses s’élève à 31 467$. C’est moins que les recettes, et l’association continue donc de mettre de l’argent de côté. L’année 2022 a été la seule à être déficitaire, suite au démarrage du contrat de Waddlesplash. Ce contrat est à présent couvert par les donations reçues.

              Réserves

              L’association dispose de plus de 100 000$ répartis sur son compte en banque, un compte PayPal (qui permet de conserver des fonds en euros pour les paiements en euros et ainsi d’éviter des frais de change), et un compte Payoneer (utilisé pour recevoir les paiements de Google).

              Elle dispose également de près de 350 000$ en crypto-monnaies dont la valeur continue d’augmenter. Cependant, actuellement ces fonds ne sont pas accessibles directement, en raison de problèmes administratifs avec Coinbase, l’entreprise qui gère ce portefeuille de crypto-monnaies. Le compte n’est pas configuré correctement comme appartenant à une association à but non lucratif et cela pose des problèmes de déclaration de taxes lorsque on souhaite vendre des crypto-monnaies contre du vrai argent. Cette situation persiste depuis plusieurs années, mais l’association n’a pour l’instant pas besoin de récupérer cet argent, les réserves dans le compte en banque principal étant suffisantes.

              Applications

              Iceweasel

              Le navigateur web Iceweasel est disponible dans les dépôts de paquets (seulement pour la version 64 bits pour l’instant). Il s’agit d’un portage de Firefox utilisant la couche de compatibilité Wayland. Le nom Firefox ne peut pas être utilisé puisqu’il ne s’agit pas d’un produit officiel de Mozilla.

              En plus du travail de portage pour réussir à faire fonctionner le navigateur, cela a nécessité un gros travail d’amélioration au niveau de la gestion de la mémoire, une partie du système qui est fortement mise à contribution par ce navigateur. On en reparle plus loin dans la dépêche.

              Le navigateur est encore considéré comme expérimental: plusieurs fonctions sont manquantes et il peut y avoir des plantages. WebPositive (le navigateur natif basé sur WebKit) reste donc le navigateur installé par défaut avec Haiku, mais les deux sont complémentaires. Par exemple, Iceweasel permet d’afficher les vidéos Youtube avec des performances acceptables.

              Tracker

              Tracker est le gestionnaire de fichiers de Haiku. Il implémente une interface « spatiale », c’est-à-dire que chaque dossier s’ouvre dans une fenêtre séparée et enregistre sa position à l’écran.

              Le code du Tracker fait partie des composants qui ont pu être récupérés de BeOS. Cela signifie que certaines parties du code ont été développées il y a près de 30 ans, dans un contexte où l’élégance du code n’était pas la priorité (il fallait pour les développeurs de BeOS, d’une part livrer un système fonctionnel dans un temps raisonable, et d’autre part, fonctionner sur les machines relativement peu performantes de l’époque).

              Les évolutions sur le Tracker nécessitent donc souvent du nettoyage dans de nombreuses parties du code, et provoquent souvent des régressions sur d’autres fonctionnalités. Toutefois, les choses s’améliorent petit à petit.

              Ce trimestre, on a vu par exemple arriver la correction d’un problème avec l’utilisation de la touche « echap ». Cette touche peut servir à plusieurs choses:

              • Fermer une fenêtre de chargement ou d’enregistrement de fichier,
              • Annuler le renommage d’un fichier,
              • Annuler une recherche rapide « type ahead » qui consiste à taper quelques lettres et voir immédiatement la liste de fichiers du dossier courant se réduire à ceux qui contiennent cette chaîne de caractères.

              Ces différentes utilisations peuvent entrer en conflit. Plus précisément, lorsqu’on utilise le filtrage « type ahead », puis qu’on change d’avis et qu’on appuie sur la touche « echap », il ne faut pas que cela ferme la fenêtre en même temps.

              Un autre changement concerne plutôt la validation des données: Tracker interdit l’insertion de caractères de contrôle ASCII dans le nom de fichiers. Ce n’est pas strictement interdit (ni par Haiku, ni par ses systèmes de fichiers, ni par POSIX) en dehors de deux caractères spéciaux: le '/' et le 0 qui termine une chaîne de caractères. Mais, c’est très probablement une mauvaise idée d’avoir un retour à la ligne ou un autre caractère de contrôle enregistré dans un nom de fichier. Le Tracker interdit donc désormais de le faire et si vous êtes vraiment résolu à y parvenir, il faudra passer par le terminal.

              Enfin, une nouvelle fonctionnalité dans le Tracker est la mise à jour en temps réel des menus pop-up. Cela peut se produire pour plusieurs raisons, par exemple, l’appui sur la touche « command » modifie le comportement de certains menus. Avant ce changement, il fallait ré-ouvrir le menu (command + clic droit) pour voir ces options modifiées. Maintenant, on peut d’abord ouvrir le menu, puis maintenir la touche command enfoncée pour voir les options modifiées.

              Cela a nécessité une refonte complète de la gestion de ces menus (qui proposent de nombreuses autres choses comme la navigation « rayons X »). Au passage, certaines options qui étaient uniquement disponibles au travers de raccourcis claviers ou de la barre de menu des fenêtres du Tracker sont maintenant aussi affichées dans le menu pop-up.

              TeamMonitor

              TeamMonitor est le gestionnaire d’applications affiché quand on utilise la combinaison de touches Ctrl+Alt+Suppr. Il permet de stopper des programmes, de redémarrer la machine, et autres manipulations d’urgence si le système ne fonctionne pas comme il faut.

              Les processus lancés par une même application sont maintenant regroupés et peuvent être tous arrêtés d’un seul coup. Ce changement est nécessaire suite à l’apparition de IceWeasel, qui crée beaucoup de processus en tâche de fond pour une seule instance du navigateur web.

              HaikuDepot

              HaikuDepot est l’interface graphique pour le système de paquets de Haiku. Il se présente comme un magasin d’applications, permettant non seulement d’installer et de désinstaller des logiciels, mais aussi de les évaluer avec une note et un commentaire.

              • Ajout d’un marqueur sur les icônes des paquets qui sont déjà installés, et remplacement du marqueur utilisé pour indiquer les applications « natives » (utilisant le toolkit graphique de Haiku, par opposition à Qt et GTK par exemple).
              • Affichage plus rapide de l’état « en attente d’installation » lorsqu’on demande l’installation d’un paquet.
              • L’interface pour noter un paquet est masquée si l’attribution de notes n’est pas possible.

              Préférences

              Diverses améliorations dans les fenêtres de préférences:

              • Correction d’un crash dans les préférences d’affichage (korli).
              • Les préférences de fond d’écran n’acceptent plus le glisser-déposer d’une couleur sur un contrôle de choix de couleur désactivé. La modification de la position X et Y de l’image de fond se met à jour en temps réel quand on édite la valeur des contrôles correspondants.
              • Ajout de réglages supplémentaires (vitesse, accélération, défilement) dans les préférences des pavés tactiles. Ces options étaient déjà implémentées dans l’input_server, mais configurable uniquement pour les souris.
              • Suppression de code mort et amélioration de la gestion des polices de caractères dans les préférences d’apparence.

              Plusieurs améliorations sur les préférences de sons de notifications:

              • La fenêtre de sélection de fichiers retient le dernier dossier utilisé,
              • Elle permet également d’écouter un son avant de le sélectionner,
              • Les menus de sélection rapide de sons affichent uniquement les fichiers et pas les dossiers,
              • Certains sons ont été renommés.

              La plupart des sons ne sont cependant toujours pas utilisés par le système.

              Expander

              Expander est un outil permettant d’extraire plusieurs types de fichiers archivés.

              Peu de changement sur cet outil qui est assez simple et fonctionnel. La seule amélioration ce mois-ci concerne un changement des proportions de la fenêtre pour éviter un espace vide disgracieux.

              Cortex

              Cortex est une application permettant de visualiser et de manipuler les nœuds de traitement de données du Media Kit.

              Le composant « logging consumer » qui reçoit des données d’un autre noeud et les enregistre dans un fichier de log pour analyse a été amélioré pour enregistrer un peu plus d’informations.

              Icon-O-Matic

              L’éditeur d’icônes vectoriels Icon-O-Matic évolue peu, après un projet Google Summer of Code qui a ajouté la plupart des fonctionnalités manquantes. Ce trimestre, un seul changement: l’ajout d’une entrée menu pour supprimer un « transformeur ».

              PowerStatus

              L’application PowerStatus affiche l’état de la batterie. Cela peut se présenter comme une icône dans la barre des tâches. L’icône est de taille réduite, et les différents états n’étaient pas forcément bien visibles. Ce problème a été corrigé avec des nouveaux marqueurs pour l’état de la batterie (en charge ou inactive).

              StyledEdit

              StyledEdit est un éditeur de texte simple, permettant tout de même de formater le texte (un peu comme WordPad pour Windows).

              L’application reçoit une nouvelle option pour écrire du texte barré. Le code nécessaire a également été ajouté dans app_server, puisque cette possibilité était prévue, mais non implémentée.

              WebPositive

              Le navigateur WebPositive reçoit peu d’évolutions en ce moment, en dehors de la maintenance du moteur WebKit. On peut tout de même mentionner l’ajout d’un menu contextuel sur les marque-pages, permettant de les renommer et de les supprimer. Ce développement est issu d’un vieux patch réalisé par un candidat au Google Summer of Code, qui ne fonctionnait pas et n’avait jamais été finalisé.

              Mode sombre et configuration des couleurs

              Depuis la version Beta 5, Haiku dispose d’un nouveau système de configuration des couleurs, permettant d’obtenir facilement un affichage en « mode sombre ». Cependant, cet affichage est loin d’être parfait, et de petits ajustements sont à faire petit à petit dans toutes les applications qui n’avaient pas été pensées pour cela. En particulier, le changement de couleurs se fait en direct lorsqu’on change les réglages. On trouve ces trois derniers mois des changements dans DeskBar, Tracker, HaikuDepot, l’horloge, ainsi que la classe BTextView.

              Outils en ligne de commande

              pkgman peut rechercher les paquets installés et qui n’ont aucun autre paquet dépendant d’eux. Cela permet de trouver des paquets inutiles qui peuvent être désinstallés (il manque encore la possibilité de marquer un paquet comme étant « installé manuellement » avant de pouvoir automatiser le nettoyage).

              La commande route accepte la syntaxe utilisée par openvpn pour la configuration d’une route par défaut, ce qui facilite l’utilisation de VPN avec Haiku.

              Correction d’un problème dans le compilateur de ressources: la commande rc -d ne savait pas décompiler la structure app_version des applications Haiku, uniquement le format plus ancien utilisé par BeOS.

              La commande screenmode permet maintenant de récupérer la valeur actuelle du réglage du rétro-éclairage (en plus de permettre de changer cette valeur).

              Kits

              La bibliothèque de fonctions de Haiku est découpée en « kits » qui regroupent un ensemble de classes et de fonctionnalités liées.

              Application kit

              L’Application Kit permet, comme son nom l’indique, de lancer des applications. Il offre également toutes les fonctionnalités de boucles d’évènements, et d’envoi de messages entre applications et entre composants d’une application.

              Correction d’un problème de suppression d’un port dans la classe BApplication.

              Debug kit

              Le Debug Kit fournit les services nécessaires au Debugger pour débugger une application. Cela consiste d’une part en un accès privilégie à l’espace mémoire d’une application, et d’autre part en outils pour analyser les fichiers ELF des exécutables et bibliothèques.

              Le Debug Kit reçoit ce trimestre plusieurs évolutions et corrections permettant le décodage des stack traces dans les programmes compilés avec clang et lld. Par exemple, les fichiers ELF générés par ces outils sont découpés en plusieurs segments, alors que ce n’est pas le cas pour gcc.

              Device Kit

              Le Device Kit regroupe tout ce qui concerne l’accès direct au matériel et aux entrées-sorties depuis l’espace utilisateur: ports série, accès direct aux périphériques USB, accès aux joysticks et manettes de jeu.

              Les ports série RS232 peuvent être configurés avec des valeurs en baud personnalisées (pour l’instant uniquement pour les adaptateurs série USB).

              Interface kit

              L’Interface Kit regroupe tout ce qui concerne l’affichage de fenêtres et de vues à l’écran et les interactions avec ces fenêtres.

              • Ajout de constructeur « move » et d’opérateur d’assignation pour BRegion et BShape pour améliorer les performances en évitant les copie d’objet immédiatement suivies de suppression.
              • Ajout d’un constructeur pour BRect avec deux arguments (largeur et hauteur) pour les rectangles alignés en haut à gauche ou dont la position n’a pas d’importance.
              • Remise en place d’un cas particulier dans BBitmap::SetBits pour la gestion du canal alpha afin d’avoir un comportement plus proche de celui de BeOS.
              • BColorControl réagit correctement et déclenche les évènements nécessaires lorsqu’on modifie sa couleur par glisser-déposer.

              Media Kit

              Correction d’une assertion vérifiant la mauvaise condition dans BTimeSource.

              Réécriture de la classe BTimedEventQueue pour améliorer ses performances en évitant d’allouer de la mémoire dynamique.

              Amélioration de l’affichage des « media controls » (sliders de contrôle de volume par exemple) en mode sombre.

              libshared

              La « libshared » contient plusieurs classes expérimentales, en cours de développement, mais déjà utilisées par plusieurs applications. Il s’agit d’une bibliothèque statique, ce qui permet de changer facilement son contenu sans casser l’ABI des applications existantes.

              Ajout de la classe ColorPreview qui existait en plusieurs exemplaires dans le code de Haiku (préférences d’apparence et Terminal). Cette classe permet d’afficher une couleur dans un petit rectangle. Elle est utilisée à plusieurs endroits dans des contrôles de choix de couleur plus complexes, tels que des listes ou des menus.

              Servers

              Les servers sont des processus systèmes implémentant différentes fonctionnalités de Haiku. Le concept est similaire à celui des daemons dans UNIX, ou des services dans Windows NT et systemd.

              app_server

              L’app_server s’occupe de l’affichage des applications à l’écran.

              Suppression de code inutilisé depuis longtemps permettant l’accélération matérielle d’opérations de dessin en 2D (blit, tracé de lignes, remplissage de rectangles…).

              Sur les cartes graphiques PCI, ces opérations étaient souvent réalisées plus rapidement par le CPU qui tourne à une fréquence bien plus rapide que la carte. Sur les cartes AGP, l’accès en lecture à la mémoire vidéo par le CPU est très lent, et il était donc plus intéressant de faire ces opérations en RAM centrale avant d’envoyer un buffer prêt à afficher à la carte graphique. Enfin sur les cartes PCI express modernes, ces fonctions d’accélération ont disparu ou en tout cas n’ont pas du tout une interface compatible avec les besoins de Haiku. Il est donc temps de jeter ce code.

              Modification de la façon dont les applications récupèrent la palette de couleurs en mode graphique 256 couleurs: elle utilise maintenant une mémoire partagée, et il n’est plus nécessaire que chaque application demandent au serveur graphique d’en obtenir une copie.

              input_server

              L’input_server se charge des entrées souris et clavier. Cela comprend les méthodes d’entrée de texte (par exemple pour le Japonais) ainsi que des filtres permettant de manipuler et d’intercepter ces évènements d’entrée avant leur distribution dans les applications.

              Améliorations du filtre PadBlocker pour bloquer le touchpad quand le clavier est en cours d’utilisation sur les PC portables: gestion des répétitions de touches, blocage uniquement du touchpad et pas des autres périphériques de pointage.

              net_server

              Le net_server se charge de la configuration des interfaces réseau.

              Arrêt du client d’autoconfiguration (DHCP par exemple) lors de la perte du lien sur un port Ethernet, pour ne pas essayer d’envoyer des paquets alors que le câble est débranché.

              notification_server

              notification_server se charge de l’affichage de panneaux de notification pour divers évènements tels que la connexion et déconnexion d’interfaces réseau, un niveau dangereusement bas de la batterie, la fin d’un téléchargement…

              La fenêtre de notification a été retravaillée pour mieux s’adapter à la taille de police d’affichage choisie par l’utilisateur.

              mail_daemon

              mail_daemon permet d’envoyer et de recevoir des e-mails. Les messages sont stockés sous forme de fichiers avec des attributs étendus pour les métadonnées (sujet, expéditeur…). Plusieurs applications clientes permettent de rédiger ou de lire ces fichiers. Ainsi chaque application n’a pas besoin de réimplémenter les protocoles IMAP ou SMTP.

              Amélioration de la fenêtre de logs pour la compatibilité avec le mode sombre.

              runtime_loader

              Le runtime_loader est l’outil qui permet de démarrer un exécutable. Il se charge de trouver toutes les bibliothèques partagées nécessaires et de les placer dans la mémoire.

              Ajout du flag PF_EXECUTE qui rend exécutable uniquement les sections ELF qui le nécessitent (auparavant, toutes les sections qui n’étaient pas accessibles en écriture étaient exécutables). Cela est utilisé en particulier par clang, qui sépare une zone en lecture seule (pour les constantes) et une autre en lecture et exécution (pour le code). Avec gcc, les deux sont habituellement regroupées dans la même section.

              Drivers

              Périphériques de stockage

              Correction de bugs dans la couche SCSI (utilisée également pour d’autres périphériques de stockage qui encapsulent des commandes SCSI). Des drapeaux d’état n’étaient pas remis à 0 au bon moment, ce qui causait des kernel panic avec le message « no such range! ».

              Cela a été l’occasion de faire du ménage : suppression de champs inutilisés dans des structures de données, et suppression du module d’allocation mémoire locked_pool qui n’était utilisé que par la pile SCSI. À la place, utilisation des fonctions d’allocation mémoire standard du noyau, qui sont amplement suffisantes pour répondre aux besoins de ce module (waddlesplash).

              Cartes son

              Correction d’erreurs dans le code de gestion mémoire des pilotes es1370 et auvia. Ces drivers utilisaient deux copies d’un code d’allocation identique, mais avaient divergé l’un de l’autre. Ils ont été réunifiés mais cela a provoqué quelques régressions, avec des difficultés pour trouver des machines permettant de tester chacune des cartes son concernées. Haiku peut heureusement compter sur des utilisateurs « avancés » qui testent régulièrement les nightly builds pour détecter ce type de régression (korli).

              Réseau

              Correction d’une fuite mémoire lors de l’utilisation de sockets « raw » permettant d’envoyer et de recevoir directement des paquets ethernet (en contournant la couche IP).

              Pilotes FreeBSD

              Une grande partie des pilotes de carte réseau de Haiku sont en fait ceux de FreeBSD ou d’OpenBSD. Une couche de compatibilité permet de réutiliser ces pilotes avec très peu de changement dans leur code source. Ainsi, les évolutions et corrections peuvent être partagées avec l’un ou l’autre de ces systèmes. La collaboration avec les *BSD pour les pilotes réseau se passe de mieux en mieux : suite au développement d’une couche de compatibilité permettant d’utiliser les pilotes OpenBSD dans Haiku, les développeurs de FreeBSD étudient la possibilité de réutiliser également ces pilotes. De plus, les développeurs de Haiku et d’OpenBSD sont en contact pour coordonner les mises à jour et les tests.

              Génération de statistiques plus fiables sur les paquets réseaux dans la couche de compatibilité FreeBSD et remontée des statistiques générées par les pilotes associés.

              Synchronisation du pilote realtekwifi avec la version de FreeBSD et reconnaissance d’un identifiant de périphérique USB supplémentaire dans ce pilote.

              Amélioration de la couche de compatibilité pour se comporter plus précisément comme FreeBSD, et suppression de patchs correspondants dans les pilotes qui sont devenus superflus.

              Amélioration des performances de la couche de compatibilité: retrait de comparaisons de chaînes de caractères et d’allocations inutiles.

              Pilotes spécifiques à Haiku

              Amélioration du comportement du pilote USB RNDIS (partage de connexion sur USB de certains téléphones Android) lorsque le câble USB est déconnecté. Le pilote incluait du code pour tenter de restaurer la connexion existante si le même appareil est reconnecté, mais les périphériques RNDIS utilisent des adresses MAC aléatoires qui changent à chaque connexion, donc cela ne pouvait pas fonctionner. De plus, certains transferts USB n’étaient pas correctement annulés pour laisser la pile USB dans un état propre après la déconnexion du périphérique.

              USB

              Ajout d’une annulation de transferts de données en attente dans le pilote pour les périphériques de stockage USB, ce qui corrige un kernel panic lors de l’utilisation de lecteurs de disquettes USB. Arrêt immédiat des opérations (au lieu de ré-essayer pendant quelques secondes) si le périphérique indique « no media present » (CD ou disquette éjectée de son lecteur par exemple).

              Ajout d’une vérification de pointeur NULL et de libération de mémoire manquantes dans la pile USB, ce qui corrige des fuites de mémoires (qui étaient là depuis longtemps) et une assertion qui se déclenchait (introduite plus récemment).

              Le pilote de webcam UVC est mis à jour pour utiliser des constantes (identifiants de types de descripteurs…) partagées avec le reste du système au lieu de toutes les redéfinir une deuxième fois. L’affichage des descripteurs dans listusb est également complété pour décoder toutes les informations disponibles. Le pilote n’est toujours pas complètement fonctionnel: l’établissement des transferts au niveau USB fonctionne, mais pour l’instant le pilote ne parvient pas à décoder les données vidéo reçues correctement.

              Le pilote HID sait reconnaître les « feature reports », qui permettent de configurer un périphérique. Par exemple, cela peut permettre de configurer un touchpad en mode multi-point (dans lequel le système doit effectuer lui-même le suivi de chaque doigt sur la surface tactile pour convertir cela en mouvements de pointeur de souris) ou en mode émulation de souris (où on ne peut utiliser qu’un doigt à la fois, mais avec un pilote beaucoup plus simple).

              Le pilote pour les tablettes Wacom reconnaît la tablette CTH-470.

              PS/2

              Les ports PS/2 ont disparu de la plupart des machines ces dernières années, mais le protocole reste utilisé pour le clavier des ordinateurs portables, ainsi que pour certains touchpads. Malheureusement, le protocole est seulement émulé au niveau de l’« embedded controller » (le microprocesseur qui se charge de l’interfaçage de divers composants annexes). Le résultat est que l’implémentation du protocole et des registres d’interface peut s’éloigner considérablement des documents officiels.

              Amélioration de la détection des contrôleurs PS/2 supportant le protocole « active multiplexing » permettant de connecter à la fois une souris et un touchpad. La procédure de détection officielle peut générer des faux positifs: certains contrôleurs répondent bien à cette commande, mais n’implémentent en fait pas du tout le protocole. Cela provoquait un long délai au démarrage alors que le pilote tente d’énumérer des périphériques de pointage qui n’existent pas. Une vérification supplémentaire après l’activation du mode multiplexé permet de détecter ce cas.

              virtio_pci

              virtio est un standard matériel pour les machines virtuelles. Plutôt que d’émuler un vrai matériel (carte réseau, carte graphique…), une machine virtuelle peut émuler un matériel qui n’a jamais été fabriqué, mais dont la programmation est beaucoup plus simple. Cela permet également des opérations inimaginables sur du matériel réel, comme la possibilité de changer la taille de la RAM en cours d’exécution pour mieux partager la mémoire de l’hôte entre différentes machines virtuelles.

              Le pilote virtio_pci est à la racine du système virtio. Il détecte la « carte PCI » virtio et implémente les primitives de base d’envoi et de réception de messages entre l’hôte et la machine virtualisée (du côté virtualisé, pour le côté hôte, c’est le virtualisateur, par exemple QEMU, qui s’en charge).

              Correction de plusieurs problèmes avec les numéros de files virtio qui rendaient les pilotes instables.

              ACPI

              ACPI est un cadriciel pour la gestion de l’énergie et l’accès au matériel. Le fabricant du matériel fournit (dans la ROM du BIOS) un ensemble de « tables » contenant une description du matériel disponible, ainsi que des méthodes compilées en bytecode pour piloter ce matériel. Le système d’exploitation doit fournir un interpréteur pour ce bytecode, puis réaliser les entrées-sorties vers le matériel demandé lors de l’exécution.

              Haiku utilise actuellement ACPICA, une bibliothèque ACPI développée principalement par Intel.

              Correction d’un problème d’accès à de la mémoire non cachée. Une modification faite pour les machines ARM a déclenché un problème sur les machines x86.

              Sondes de température

              Ajout d’un nouveau pilote amd_thermal, ajout de ce dernier ainsi que des pilotes pch_thermal et acpi_thermal dans l’image disque par défaut. Ces pilotes devraient permettre de récupérer la température du processeur sur la plupart des machines. Il reste maintenant à intégrer cela dans les outils en espace utilisateur pour faire un bon usage de ces informations.

              Pilotes graphiques

              Ajout de deux nouvelles générations de cartes graphiques dans le pilote intel_extreme.

              Le pilote VESA est capable de patcher le BIOS de certaines cartes graphiques à la volée pour y injecter des modes graphiques supplémentaires (la spécification VESA permettant à l’OS uniquement de choisir un mode parmi une liste fournie par la carte graphique, liste souvent assez peu fournie). Ce mode est désormais activé par défaut sur les cartes graphiques où il a pu être testé avec succès.

              Systèmes de fichiers

              FAT

              FAT est un système de fichier développé par Microsoft et qui remonte aux premiers jours de MS-DOS. Il est encore utilisé sur certaines clés USB et cartes SD, bien que exFAT tend à le remplacer petit à petit. Il est également utilisé pour les partitions systèmes EFI.

              Le pilote de Haiku a été récemment réécrit à partir de celui de FreeBSD. L’amélioration de ce nouveau pilote se poursuit, avec ce mois-ci :

              • Les noms de volumes FAT sont convertis en minuscules comme le faisait l’ancien pilote FAT,
              • Le cache de blocs implémente maintenant un mécanisme de prefetch pour récupérer plusieurs blocs disque d’un coup, et le pilote FAT utilise cette nouvelle possibilité pour améliorer en particulier le temps de montage,
              • Correction de problèmes dans le cache de fichiers si deux applications accèdent au même fichier mais avec des noms différents par la casse (le système de fichier ignorant ces différences).

              BFS

              BFS est le système de fichier principal de BeOS et de Haiku. Il se distingue des autres systèmes de fichiers par une gestion poussée des attributs étendus, avec en particulier la possibilité de les indexer et d’effectuer des requêtes pour trouver les fichiers correspondants à certains critères.

              Clarification de la description des options disponibles lors de l’initialisation d’un volume BFS.

              Correction des fonctions d’entrées/sorties asynchrones pour référencer correctement les inodes, ce qui corrige un très ancien rapport de bug. Des corrections similaires ont été faites également dans les pilotes FAT et EXFAT.

              Correction des requêtes sur l’attribut « dernière modification », et amélioration de la gestion du type « time » pour éviter les conversions inutiles (ce type d’attribut est historiquement stocké en 32 bits mais migré en 64 bits lorsque c’est possible pour éviter le bug de l’an 2038, aussi le code doit être capable de traiter ces 2 formats de stockage).

              packagefs

              Le système de fichier packagefs est au centre de la gestion des paquets logiciels dans Haiku. Les paquets ne sont pas extraits sur le disque, mais montés dans un système de fichier spécifique (qui implémente une version tout-en-un de ce qui pourrait être réalisé sous Linux avec squashfs et overlayfs).

              Ce système de fichier se trouve donc sur le chemin critique en termes de performances, ce qui fait que même de petites optimisations peuvent déboucher sur de gros gains de performance.

              Optimisation de la gestion de la mémoire: utilisation d’un allocateur dédié pour allouer et désallouer très rapidement de la mémoire de travail avec une durée de vie courte.

              Ajout d’une vérification manquante sur la présence du dossier parent, qui pouvait déclencher un kernel panic.

              NFS4

              Le pilote NFS4 permet de monter des partages réseau NFS. Cependant, le pilote ne fonctionne pas toujours, et certains utilisateurs doivent se rabattre sur le pilote NFS v2 (ancienne version du protocole de moins en moins utilisée), ou encore sur des systèmes de fichiers FUSE comme SMB ou sshfs.

              Le pilote NFS4 peut maintenant être compilé avec userlandfs (équivalent de FUSE pour Haiku) pour s’exécuter en espace utilisateur. Cela facilitera le déboguage.

              ramfs et ram_disk

              ram_disk est un périphérique de stockage qui stocke les données en RAM, il a une taille fixe et doit être formaté avec un système de fichiers avant de pouvoir être utilisé.
              ramfs est un système de fichier stockant les données directement en RAM sans passer par un périphérique de stockage de type bloc. Sa taille est dynamique en fonction des fichiers qui sont stockés dedans.

              Ces deux pilotes ont reçu divers nettoyages et corrections, suite à des problèmes mis en évidence par des assertions ajoutées précédemment dans le code.

              Dans le ramfs, nettoyage de code dupliqué, réduction de la contention sur les verrous, amélioration de la fonction readdir pour retourner plusieurs entrées d’un coup au lieu de les égréner une par une.

              Ajout de la gestion des fichiers « spéciaux » (FIFOs nommés, sockets UNIX) dans ramfs.

              Autres

              Refonte de l’algorithme de « scoring » des requêtes sur les systèmes de fichiers. Cet algorithme permet d’estimer quels sont les termes de la requête les moins coûteux à évaluer, afin de réduire rapidement le nombre de fichiers répondant aux critères, et d’effectuer les opérations complexes seulement sur un petit nombre de fichiers restants. Les requêtes s’exécutent ainsi encore plus rapidement (waddlesplash).

              Réécriture du code pour identifier les partitions dans mount_server. Ce code permet de re-monter les mêmes partitions après un redémarrage de la machine, mais l’ancien algorithme pouvait trouver de faux positifs et monter des partitions supplémentaires (OscarL et waddlesplash).

              Correction d’une option de debug pour intercepter les accès aux adresses non initialisées (0xcccccccc) ou déjà libérées (0xdeadbeef). Cela permet de détecter certains accès à des pointeurs invalides. Cette option ne fonctionnait correctement que sur les systèmes 32 bit, maintenant, l’adresse correspondante pour les machines 64 bit est également protégée.

              libroot

              La libroot est la librairie C de base de Haiku. Elle regroupe les fonctions parfois implémentées dans les libc, libm, libpthread, librt et libdl pour d’autres systèmes. Haiku choisit une approche tout-en-un, car il est excessivement rare qu’une application n’ait pas besoin de toutes ces bibliothèques.

              Du fait de la grande diversité des services rendus par cette bibliothèque, il est difficile de présenter les changements de façon cohérente et organisée.

              Correction de quelques cas particuliers dans le traitement des tableaux de descripteurs de fichiers pour select() et déplacement d’une partie des définitions de sys/select.h vers des en-têtes privés non exposés aux applications (waddlesplash).

              Ajout d’une fonction manquante dans les « stubs » de la libroot, qui sont utilisés lors de la compilation de Haiku en mode « bootstrap » (sans aucune dépendance précompilée externe). Les stubs sont normalement générés à l’aide d’un script, mais celui-ci n’avait pas pris en compte une fonction nécessaire seulement sur les architectures x86.

              Poursuite du travail d’unification des fonctions de manipulation des temps d’attentes pour toutes les fonctions de la libroot qui peuvent déclencher un timeout. Correction d’un cas où la fonction pthread_testcancel retournait NULL au lieu de la valeur attendue PTHREAD_CANCELED.

              Optimisation de la fonction strcmp, remplacement d’autres fonctions avec de meilleures implémentations provenant de la bibliothèque C musl.

              Compatibilité POSIX-2024

              La spécification POSIX Issue 8 a été publiée et comporte de nombreux changements. Après la version 7, la façon de travailler est devenue plus ouverte, avec un outil de suivi de bugs permettant de proposer des améliorations. Cela conduit à la standardisation de nombreuses extensions qui sont communes entre les systèmes GNU et BSD, rendant plus facile d’écrire du code portable entre tous les systèmes compatibles POSIX.

              • Ajout de fonctions qui ouvrent des descripteurs de fichiers avec le drapeau O_CLOEXEC activé par défaut (dup2, pipe3)
              • Ajout de reallocarray (un mélange de calloc et realloc)
              • Ajout de memmem (recherche d’une suite d’octets dans une zone de mémoire)
              • Ajout de mkostemp
              • Ajout de posix_devctl et modifications de l’implémentation de ioctl
              • Ajout de pthread_getcpuclockid pour mesurer le temps CPU consommé par un thread
              • Ajout de la constante d’erreur ESOCKTNOSUPPORT bien qu’elle ne soit jamais utilisée (cela facilite le portage d’applications qui attendent l’existence de ce code d’erreur)
              • Correction d’une boucle infinie dans pipe2
              • Suppression des fonctions *randr48_r des en-têtes publics. Il s’agit d’une extension disponible uniquement dans la glibc, et qui ne devrait donc pas être disponible dans la libroot. Cependant, l’implémentation est conservée pour assurer la compatibilité d’ABI avec les applications existantes.

              ioctl et posix_devctl

              La fonction ioctl existe depuis le début de UNIX et permet de réaliser des opérations spéciales sur les descripteurs de fichiers (tout ce qui n’est pas une simple lecture ou écriture). En particulier, elle est beaucoup utilisée pour les pilotes de périphériques qui exposent une interface sous forme de fichiers dans /dev.

              L’existence de cette fonction était demandée dans la spécification POSIX, mais son fonctionnement n’était pas documenté à l’exception de quelques cas particuliers. La documentation spécifie une fonction avec un nombre d’arguments variable : un numéro de descripteur de fichier, un identifiant de l’opération à effectuer, puis des paramètres qui dépendent de l’opération. On trouve des opérations avec aucun, un, ou deux paramètres.

              Dans UNIX et la plupart de ses dérivés, la liste des opérations possibles est définie à l’avance, et le format des numéros identifiants permet de déterminer de façon prédictible quel est le nombre de paramètres attendus. Ce n’est pas le cas dans Haiku : les pilotes de périphériques ont le choix d’assigner n’importe quelle valeur à n’importe quelle opération, et la même valeur numérique peut donc avoir une signification différente selon le type de fichier.

              L’opération ioctl est donc en réalité implémentée avec toujours 4 arguments pour Haiku : en plus des deux déjà mentionnés, il faut ajouter un pointeur vers une zone de mémoire, et un entier indiquant la taille de cette zone. Des acrobaties à base de macros permettent de remplir ces deux paramètres avec des valeurs par défaut lorsqu’ils ne sont pas nécessaires (au moins pour les programmes écrits en C ; en C++, ces deux paramètres sont simplement déclarés avec une valeur par défaut).

              Heureusement, ces problèmes avec ioctl vont être résolus, puisque POSIX a introduit une nouvelle fonction en remplacement : posix_devctl. Celle-ci fonctionne comme l’implémentation de ioctl dans Haiku, mais les arguments doivent toujours être spécifiés explicitement. Cela va donc permettre de disposer d’une interface réellement portable pour ces opérations.

              Kernel

              Correction de la taille du tampon mémoire par défaut de la classe KPath qui permet au noyau de manipuler des chemins dans le système de fichiers (waddlesplash).

              VFS

              Le VFS (virtual filesystem) est l’interface entre les appels systèmes d’accès aux fichiers (open, read, write…) et les systèmes de fichiers proprement dit. En plus de ce travail d’interfaçage (par exemple : convertir un chemin de fichier absolu en chemin relatif à un point de montage), cette couche regroupe un ensemble de fonctionnalités qui n’ont pas besoin d’être réimplémentées par chaque système de fichier: vérification des permissions, mémoire cache pour limiter les accès au disque.

              Si les systèmes de fichiers identifient chaque objet par un inode (en général lié à la position de l’objet sur le disque ou dans la partition de stockage), le VFS travaille lui avec des vnode qui existent uniquement en RAM et sont alloués dynamiquement pour les fichiers en cours d’utilisation.

              D’autre part, les systèmes de fichiers peuvent se reposer sur un cache de blocs. Ce dernier se trouve plutôt à l’interface entre un système de fichier et le support de stockage correspondant, puisqu’il fonctionne au niveau des blocs de données stockées sur disque. Mais son intégration avec le VFS est nécessaire pour savoir quels sont les fichiers en cours d’utilisation et les opérations prévisibles sur chacun (par exemple, il est utile de pré-charger la suite d’un fichier lorsque un programme demande à en lire le début, car il est probable que ces informations vont bientôt être nécessaires).

              Le VFS est donc un élément central en particulier pour obtenir de bonnes performances sur les accès aux fichiers, en minimisant les accès aux vrais systèmes de fichiers qui doivent maintenir beaucoup d’informations à jour sur les disques. Tout ce qui peut être traité en utilisant uniquement la RAM grâce à la mise en cache est beaucoup plus rapide.

              Investigation et amélioration des performances de la commande git status qui prenait beaucoup plus de temps à s’exécuter que sur d’autres systèmes (waddlesplash):

              • Meilleure gestion des vnodes inutilisés à l’aide d’une liste chaînée 'inline' protégée par un spinlock, à la place d’un mutex peu performant dans ce code très fréquemment appelé.
              • Modification de la structure io_context pour utiliser un verrou en lecture-écriture (permettant plusieurs accès concurrents en lecture, mais un seul en modification).
              • Ajout d’un chemin rapide dans le cas le plus simple de la recherche de vnode.

              Avec ces changements, les performances sont améliorées au moins lorsque les données nécessaires sont déjà disponibles dans le cache disque.

              Nettoyage et corrections dans les fonctions d’entrées-sorties vectorisées et asynchrones do_iterative_fd_io et do_fd_io utilisées par les systèmes de fichiers: meilleure gestion des références et prise en compte de certains cas particuliers. Cela permet de simplifier un peu le code de pré-remplissage du cache de blocs (waddlesplash).

              La prise en compte des drapeaux O_RDONLY|O_TRUNC lors de l’ouverture d’un fichier est maintenant faite directement dans le VFS, il n’est plus nécessaire de transmettre la requête au système de fichier. Cette combinaison de drapeaux est un comportement indéfini dans POSIX, et supprime le contenu du fichier dans Linux. Dans Haiku, elle remonte une erreur.

              Correction du comportement de l’ouverture d’un symlink invalide (ne pointant pas sur un fichier) avec le flag O_CREAT.

              Le parser de requêtes pouvait essayer de lire des données invalides (la taille de clé d’un index inexistant) dans certains cas particuliers.

              Nettoyage de logs dans tous les systèmes de fichiers qui affichaient un message lors de chaque tentative d’identification. On avait donc un message de chaque système de fichier pour chaque partition. Maintenant, le cas le plus courant (le système de fichier ne reconnaît pas du tout la partition) ne déclenche plus de logs.

              Correction d’une erreur dans userlandfs sur la fonction file_cache_read pour les tentatives d’accès après la fin d’un fichier (cas particulier nécessaire pour implémenter correctement mmap).

              Correction d’une mauvaise gestion du errno dans le cache de blocs, qui pouvait aboutir à un kernel panic.

              Diverses améliorations, nettoyages et corrections de fuites mémoire: dans la gestion des fichiers montés comme image disques, dans les entrées-sorties asynchrones, dans l’enregistreur d’évènements scheduling recorder.

              Console et affichage

              Unification du code d’affichage du splash screen (par le bootloader) et des icônes de la séquence de démarrage (par le kernel) pour éviter qu’ils prennent des décisions différentes sur le positionnement (par exemple si l’un est compilé pour afficher le logo de Haiku, et l’autre en version « dégriffée » sans ce logo qui est une marque déposée) (waddlesplash).

              Initialisation de la console framebuffer beaucoup plus tôt dans le démarrage du noyau, ce qui permet d’afficher un message à l’écran en cas de kernel panic y compris dans les premières étapes du démarrage (par exemple, l’initialisation de la mémoire virtuelle). Auparavant, ces informations étaient disponibles uniquement dans le syslog (inaccessible si le système ne démarre pas) ou via un port série (en voie de disparition sur les machines modernes) (waddlesplash).

              Réseau

              Remontée des données annexes (ancillary data) en une seule fois lorsque c’est possible. Ces données sont utilisées en particulier dans les sockets de domaine AF_UNIX pour permettre d’échanger des descripteurs de fichiers entre processus. Ce regroupement de données n’est pas exigé par la spécification POSIX, mais c’est le comportement attendu par le code de communication interprocessus de Firefox et de Chromium (ils utilisent tous les deux le même code) (waddlesplash).

              Gestion de la mémoire

              Comme indiqué plus haut dans la dépêche, l’apparition du navigateur Iceweasel a mis en évidence de nombreux problèmes autour de la gestion de la mémoire. Cela a donc été l’objet d’un gros travail de stabilisation et d’amélioration.

              • Le cache d’objets du noyau pouvait parfois ignorer le paramètre indiquant la réserve minimum d’objets devant toujours être disponibles (waddlesplash)
              • Amélioration de l’implémentation de la famille de fonctions autour de mprotect, qui permettent une gestion fine et bas niveau de la mémoire. En particulier, plusieurs problèmes se posaient lors de l’utilisation de ces fonctions lors d’un appel à fork, les deux processus se retrouvant dans un état incohérent,
              • Suppression de logs présents dans les méthodes de défaut de page, qui sont peu appelées pour les applications classiques, mais exploitées volontairement par d’autres applications (machines virtuelles Java ou Javascript par exemple). Les logs étaient donc superflus dans ce cas (waddlesplash),
              • Optimisation de l’écriture par lot de plusieurs pages de mémoire vers le swap,
              • Meilleure gestion des permissions d’accès page par page,
              • Correction de plusieurs problèmes conduisant à un blocage ou fort ralentissement du système quand il n’y a plus assez de mémoire libre,
              • Amélioration de la stratégie d’allocation de la table des descripteurs de fichiers,
              • Regroupement de code dupliqué pour chaque plateforme qui était en fait générique.

              Ce travail se poursuit avec un remplacement de l’allocateur mémoire actuel, qui est basé sur hoard2. Cette implémentation est assez ancienne et montre aujourd’hui ses limites. Des essais sont en cours avec l’implémentation de malloc d’OpenBSD, ainsi qu’avec mimalloc de Microsoft, pour déterminer lequel des deux sera utilisé. D’autres allocateurs ont été rejetés, car ils ne répondent pas au besoin de Haiku, en particulier la possibilité de fonctionner efficacement sur un système 32 bits ou l’espace d’adressage est une ressource limitée.

              Autres

              Sécurisation des permissions sur les zones mémoire partagées: une application ne peut pas ajouter des permissions en écriture aux zones mémoire d’une autre application. Une application qui n’est pas lancée par l’utilisateur root ne peut pas inspecter la mémoire d’une application lancée par l’utilisateur root. Ajout toutefois de cas particuliers pour permettre au Debugger de faire son travail (il a besoin d’accéder à la mémoire d’autres applications).

              Ajout et amélioration de commandes dans le debugger noyau pour investiguer l’état de l’ordonnanceur d’entrées-sorties, qui se charge de programmer les accès disque dans un ordre le plus efficace possible (waddlesplash).

              La fonction vfork n’appelle plus les fonctions pre-fork. Haiku n’implémente pas complètement vfork, mais peut se permettre des optimisations sur le travail qu’un duo fork + exec classique demanderait normalement.

              La configuration de la randomization de l’espace mémoire (ASLR) est maintenant faite par la libroot et pas par le noyau. Ainsi une application peut utiliser une version différente de la libroot pour avoir une politique de randomization différente.

              Optimisation de l’accès par un thread à sa propre structure Thread

              Chargeur de démarrage

              L’écran de démarrage s’affiche correctement sur les systèmes EFI utilisant un mode écran avec une profondeur de couleur 16 bits (korli).

              Affichage de la taille des partitions démarrables dans le menu de démarrage, pour faciliter leur identification (waddlesplash).

              Activation des warnings du compilateur sur les chaînes printf invalides.

              Augmentation de la zone de mémoire utilisée pour la décompression de l’archive de démarrage lors du boot sur le réseau, l’archive était devenue trop grosse suite à l’ajout de nouveaux pilotes.

              Refactorisation du code de gestion de la mémoire entre le bootloader et le runtime_loader, ajout de tests pour cette implémentation, et optimisation de l’utilisation mémoire du bootloader.

              Amélioration du comportement si le device tree définit un port série sans spécifier de baudrate: le bootloader suppose que le baudrate est déjà configuré, et utilise le port sans essayer de le réinitialiser.

              Outils de compilation

              La compilation de Haiku est un processus relativement complexe: il faut utiliser deux compilateurs pour Haiku lui-même (un gcc récent plus une version plus ancienne pour assurer la compatibilité avec BeOS) ainsi que un compilateur pour le systême hôte de la compilation (qui peut être Linux, BSD, Mac OS ou Windows) pour générer des outils nécessaires à la compilation elle-même. L’outil retenu est Jam, une alternative à Make avec une meilleure gestion des règles génériques réutilisables.

              • Ajout de vérification pour éviter d’avoir un build partiellement configuré, avec des ConfigVars définies mais vides.
              • Retrait d’un warning incorrect dans l’outil de build jam si on spécifie à la fois un profil et une cible de compilation sur la ligne de commande.
              • Reconnaissance des processeurs hôtes ARM et RISC-V pour la compilation croisée, correction d’autres problèmes avec les architectures non-x86.
              • Ajout de dépendances manquantes dans les règles de compilation de packagefs.
              • Suppression de fichiers de licence fournis avec Haiku mais concernant du code qui avait été supprimé de Haiku auparavant.
              • Amélioration de la remontée d’erreur du script configure si un interpréteur Python n’a pas été trouvé.
              • Correction de messages d’avertissement de awk pour l’utilisation de fonctions qui n’existent plus dans le traitement des fichiers d’identifiants matériels USB et PCI.

              Documentation

              Documentation interne

              Ajout de documentation sur les détails d’implémentation de ioctl et posix_devctl et les spécificités de Haiku pour la première (PulkoMandy).

              Correction de fautes de frappe dans l’introduction au launch_daemon.

              Remplacement de toutes les références à "OpenBeOS" par "Haiku".

              Documentation d’API

              Ajout de documentation pour les méthodes GetFontAndColor et SetFontAndColor de BTextView.

              Ajout de documentation pour les classes BShelf et BGameSound.

              Réorganisation de la liste des caractères de contrôles dans la documentation du clavier, ajout d’entrées manquantes dans cette liste et ajoute de commentaires indiquant à quelles combinaisons de touches ces caractères sont normalement associés.

              Traductions de Haiku

              La traduction du système dans différentes langues est un facteur important d’inclusivité et d’accessibilité (même si la communication avec l’équipe de développeurs pour le support n’est pas toujours simple).

              Haiku est disponible dans 30 langues, la trentième étant le coréen, pour lequel il y a un nouveau responsable des traductions (le précédent avait cessé toute activité et laissé la traduction inachevée).

              Haiku recherche des volontaires pour s’occuper des traductions en biélorusse, croate, bulgare, hindi, punjabi et slovène, pour lesquelles les précédents responsables de relectures n’ont plus le temps d’assurer le rôle. Ainsi bien sûr que de l’aide pour la traduction du système, du manuel d’utilisation, et des applications tierces, que ce soit pour ajouter de nouvelles langues ou pour renforcer les équipes s’occupant de langues existantes. Le point d’entrée est le portail d’internationalisation de Haiku.

              La traduction du système Haiku s’effectue avec Pootle. L’outil n’est plus développé et des investigations sont en cours pour le remplacer par Weblate. La traduction du manuel d’utilisation s’effectue avec [un outil spécifiquement développé pour cela](https://github.com/haiku/userguide-translator. La traduction des applications s’effectue également avec un outil personnalisé nommé Polyglot.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Drone, robot et radio commande
                L’open source dans l’informatique embarquée se limitait historiquement aux systèmes d’exploitation et aux compilateurs. On connaît bien GCC, BusyBox et FreeRTOS. Puis, Arduino a fait son entrée dans le monde du semi-professionnel. Mais cela évolue rapidement. Trois domaines se développent avec des logiciels, et, parfois des produits open source, qui commencent à se croiser. À part les liens Wikipedia, les sites pointés sont en anglais. lien nᵒ 1 : Fédération Open Robotics (en)lien nᵒ 2 : Fédér

              Drone, robot et radio commande

              L’open source dans l’informatique embarquée se limitait historiquement aux systèmes d’exploitation et aux compilateurs. On connaît bien GCC, BusyBox et FreeRTOS. Puis, Arduino a fait son entrée dans le monde du semi-professionnel. Mais cela évolue rapidement. Trois domaines se développent avec des logiciels, et, parfois des produits open source, qui commencent à se croiser.

              À part les liens Wikipedia, les sites pointés sont en anglais.

              Drone

              Le domaine des drones, principalement les quadcopters mais aussi les avions, rovers et même sous-marins (AUV), a vu naître des projets comme PX4 et ArduPilot. Ces firmwares d’autopilotes permettent un asservissement entre ce que l’on demande au drone et la réalité grâce à des centrales inertielles. Ils gèrent des tâches comme le quadrillage d’un secteur ou le retour automatique au point de départ, à l’aide de GPS ou de caméras de flux optique utilisant une technologie similaire à celle des souris. Les développements actuels se concentrent sur l’évitement automatique d’obstacles, comme les arbres.

              PX4 repose sur le système d’exploitation temps réel NuttX, soutenu par la Fondation Apache. Ce système m’était encore inconnu jusqu’à récemment.

              QGroundControl est un logiciel pour préparer des missions (points GPS, prises d’images, largages…), lire des journaux transmis par radio et configurer les drones sous PX4 ou ArduPilot, ainsi que pour mettre à jour leur firmware.

              GUI

              Le projet Pixhawk définit une plateforme matérielle supportée par ces deux firmwares. On en est à plus de six versions de FMU (“Flight management unit”), utilisant des processeurs STM32 avec des gyroscopes, accéléromètres, magnétomètres et baromètres, souvent avec des redondances. Les cartes comportent de nombreux connecteurs pour brancher les radiocommandes (plusieurs protocoles), les servos, les contrôleurs moteurs (ESC), les GPS, ainsi que des bus CAN utilisant des protocoles open source comme DroneCAN ou Cyphal.

              pixhawk4

              Radio commande

              Les ESC (Electronic Speed Controllers) transforment une commande de vitesse en une gestion complexe de trois signaux pour contrôler des moteurs synchrones. Le VESC Project propose un firmware open source, offrant des réglages avancés, comme la limitation du courant ou l’asservissement via des capteurs à effet Hall. Un programme Android permet de gérer des moteurs pour trottinettes ou voiturettes.
              esc

              Dans le domaine des radiocommandes, le projet OpenTX, forké en EdgeTX, remplace le firmware des radiocommandes. RadioMaster, un outsider, utilise directement ces logiciels, contrairement aux fabricants haut de gamme plus conservateurs (Futaba, Spektrum, JR, Flysky, etc.). Ces firmwares permettent une personnalisation via des scripts Lua.

              Pour les protocoles radio, plusieurs solutions propriétaires existent avec des portées annoncées de plus de 2 km. Cependant, un protocole ouvert, ExpressLRS, reposant sur LoRaWAN, permet des portées jusqu’à 5 km (en 2.4 GHz) ou 15 km (à 900 MHz). Les émetteurs et récepteurs bi-bandes commencent à apparaître.

              Et robotique

              Dans le domaine de la robotique, Gazebo est en train de devenir un simulateur et visualiseur polyvalent. Il repose sur le moteur de rendu OGRE et le moteur physique ODE. Il est intégré aux outils de développement de PX4 et même utilisé dans des concours de drones virtuels.

              GUI

              ROS2 (“Robot Operating System”) est un middleware généraliste basé sur un protocole Pub/Sub à faible latence, permettant à plusieurs ordinateurs de communiquer. Il tend à remplacer MAVLink, un protocole de commande plus léger, encore majoritaire dans le domaine des drones.

              Les trois domaines (drones, robotique et radiocommande) se croisent de plus en plus. Les autopilotes permettent de gérer tous types de véhicules, tandis que des outils comme QGroundControl et ROS2 facilitent le développement de missions automatiques de plus en plus complexes.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • La virtualisation pour les nuls et autres enjeux autour des datacenters
                Depuis quelques années la virtualisation sous toutes ses formes est devenue l'alpha et l'oméga de l'informatique, elle a révolutionné en quelques années la manière d'administrer les serveurs et de gérer les données. Cette dépêche est un essai de vulgarisation sur la virtualisation pour en exposer ses grands principes techniques, ses avantages et inconvénients et ses enjeux sous-jacents. lien nᵒ 1 : VirtualisationSommaire Commençons par quelques définitions C'est quoi la virtualisation ? C'est

              La virtualisation pour les nuls et autres enjeux autour des datacenters

              Depuis quelques années la virtualisation sous toutes ses formes est devenue l'alpha et l'oméga de l'informatique, elle a révolutionné en quelques années la manière d'administrer les serveurs et de gérer les données. Cette dépêche est un essai de vulgarisation sur la virtualisation pour en exposer ses grands principes techniques, ses avantages et inconvénients et ses enjeux sous-jacents.

              Sommaire

              Commençons par quelques définitions

              C'est quoi la virtualisation ?

              Pour pouvoir illustrer concrètement ce qu'est la virtualisation, à une époque pas si lointaine que ça, dans le monde professionnel on retrouvait des serveurs physiques dédiés, par exemple un serveur pour gérer les mails, un autre pour le serveur web et un dernier comme serveur de fichiers. Chacun des serveurs pouvant tourner sur des systèmes d'exploitation (OS) différents. Dans notre exemple il en résulte qu'il faut maintenir et administrer trois machines différentes qui vont prendre de la place et consommer de l'électricité, sans une utilisation optimale de chacune des machines, si le serveur web par exemple a besoin momentanément d'un accroissement de puissance et de mémoire, il ne pourra pas bénéficier des ressources des autres serveurs physiques.
              Avec la virtualisation, sur une seule machine physique on va faire tourner plusieurs environnements de serveurs distincts en même temps, sans avoir à redémarrer, ils vont se partager les ressources matérielles de la machine physique de manière plus optimale et efficace en réduisant les coûts d'administration. On retrouvera donc sur une seule machine physique, nos serveurs de courriel, web et de fichiers, chacun dans un environnement distinct fonctionnant de manière autonome et isolée.

              C'est quoi une machine virtuelle ?

              On appellera chaque environnement distinct machine virtuelle, elle s'exécute sur une machine physique avec son propre système d'exploitation, ses applications et avec les ressources de la machine physique qu'on veut bien lui allouer (mémoire, puissance de traitement, stockage). On dit aussi que la machine physique est appelée machine hôte et les machines virtuelles sont des machines invitées. Une machine hôte peut faire tourner plusieurs machines invitées.
              Une machine virtuelle fonctionne comme n'importe quel poste informatique avec son OS qu'on peut mettre à jour, ses applications, ses paramètres système et on pourra à partir de la machine hôte accéder à toutes les machines virtuelles.

              C'est quoi un hyperviseur ?

              Pour que les machines virtuelles puissent s'exécuter indépendamment et utiliser les ressources de la machine hôte simultanément sans qu'elles interfèrent entre elles, il est nécessaire de rajouter une couche logicielle qui va gérer tout ça, c'est ce qu'on appelle un hyperviseur.
              Il existe deux types d'hyperviseur:

              • L'hyperviseur de type 1, ou bien encore hyperviseur de matériel nu (bare metal en anglais) est en interface direct avec l'ordinateur physique, cela sous entend que votre machine soit compatible (Intel VT pour les processeurs Intel et AMD-V pour les processeurs AMD). Dans le monde libre, proxmox est certainement l'hyperviseur de type 1 le plus connu.
              • L'hyperviseur de type 2 ou bien encore hyperviseur de matériel invité (host metal en anglais) fonctionne dans un système d'exploitation déjà préinstallé, c'est le cas par exemple de VirtualBox qui permet de faire tourner une instance de windows dans un environnement Linux.

              Un hyperviseur de type 1 est une couche logicielle très légère et offre de meilleures performances et est la solution privilégiée pour des serveurs en production, l'hyperviseur de type 2 est plutôt une solution destinée aux utilisateurs qui souhaitent tester d'autres systèmes d'exploitation ou faire tourner un logiciel sur un OS particulier sur un poste de travail classique. Mais rien ne vous empêche de faire tourner plusieurs machines virtuelles sur un hyperviseur de type 2 qui pourront communiquer entre elles et fonctionner comme un hyperviseur de type 1, à la différence qu'elles seront moins performantes.
              Par abus de langage, le terme d'hyperviseur fait référence plutôt à l'hyperviseur de type 1.

              C'est quoi les avantages de la virtualisation ?

              Une administration centralisée et facilitée

              L'hyperviseur fournit des outils de gestion des machines virtuelles qui simplifient sensiblement le travail d'administration, comme les outils de déploiement à partir de modèles de machines virtuelles, les outils de gestion de charge, de sauvegarde et de restauration de machines virtuelles.

              La disponibilité et la robustesse aux pannes

              Un autre avantage de la virtualisation est la fonctionnalité de migration à chaud, elle permet de déplacer une machine virtuelle d'une machine physique à une autre sans qu'il soit nécessaire de l'arrêter. Si un serveur physique présente des défaillances, les machines virtuelles sont automatiquement déplacées sur un autre hôte physique.
              Alors bien sûr si le serveur physique tombe en rade sans crier gare, la migration à chaud peut ne pas être opérante, dans ce cas on peut très bien envisager la mise en place d'une machine physique redondante sur laquelle les machines virtuelles sont répliquées et qui prendra le relais automatiquement si le serveur primaire tombe.

              L'amélioration des performances

              La migration à chaud évoquée plus haut a un autre avantage si une machine virtuelle est sursollicitée et nécessite de la puissance de traitement et de la mémoire, elle pourra être déplacée automatiquement sur un autre serveur moins sollicité à ce moment-là.

              La sécurité

              La virtualisation isole les services chacun dans leur machine virtuelle, en cas de corruption d'une machine virtuelle par cyberattaque, l'impact est nul pour les autres services et la restauration d'une machine virtuelle est autrement plus rapide et plus simple qu'avec une machine physique.

              La disparition des machines physiques

              Le stade ultime de la virtualisation est de déléguer à un prestataire la gestion des machines physiques qui se retrouve quelque part dans un datacentre. On s'abstrait totalement du matériel physique et des contraintes qui vont avec et on gère seulement nos machines virtuelles à distance, c'est totalement transparent pour les utilisateurs qui accèdent à leurs services via internet ou sur un réseau privé. On parle aussi d'infrastructure virtuelle.

              Il existe d'autres types de virtualisation ?

              On a surtout évoqué jusqu'à présent la virtualisation des serveurs, mais il existe également d'autres types de virtualisation comme:

              La virtualisation du stockage

              Cela consiste en la création d'un espace virtuel de stockage à partir d'installations physiques de stockage bien réelles comme les serveurs de fichiers, NAS ou SAN qu'ils soient locaux ou distants. Cela permet de mettre en commun toutes ces installations et de la gérer à partir d'un outil unique de gestion pour effectuer toutes les opérations de sauvegarde, réplication, d'archivage et de restauration.

              La virtualisation des réseaux

              Un réseau est composé d'un tas d'éléments actifs comme les commutateurs, les routeurs et autres pare-feux, de type et de marques différentes. Là aussi on va créer un réseau virtuel qui combine l'ensemble de ces éléments actifs physiques pour pouvoir centraliser leur gestion sans avoir à y accéder physiquement. La virtualisation des réseaux permettra également d'améliorer les performances du réseau avec des analyseurs de trafic qui pourront équilibrer la charge ou favoriser certains flux.

              La virtualisation des données

              Les données sont issues de diverses sources, ont chacune leur format et sont stockées sur différents supports locaux ou distants. La virtualisation des données est une couche logicielle qui va gérer l'ensemble de ces données de manière centralisée et les mettre à disposition des utilisateurs et des applications dans le format désiré.

              La virtualisation d'application

              La virtualisation d'application permet de séparer l'application de son système d'exploitation hôte et de fonctionner sur un poste utilisateur sans qu'elle soit installée. Dans la pratique l'application est installée sur un serveur centralisé et peut tourner sur un poste utilisateur du réseau comme si elle était installée localement, quand bien même l'OS du poste utilisateur n'est pas celui pour lequel l'application a été conçue.

              La virtualisation des postes de travail

              La virtualisation permet de virtualiser des serveurs mais pas seulement, on peut virtualiser également des postes de travail pour en faciliter la gestion qui seront accessibles aux utilisateurs du réseau via un client léger bien moins cher qu'un PC client classique.

              Autres concepts autour de la virtualisation

              C'est quoi une infrastructure convergée et hyperconvergée ?

              Une infrastructure convergée regroupe plusieurs composants informatiques traditionnels et bien physiques comme les serveurs de calcul, les dispositifs de stockage ou les éléments actifs réseau pour en assurer la gestion dans un tout cohérent. Cela simplifie la gestion de l'administration et ça optimise les ressources matérielles et logicielles. On dit que c'est une approche modulaire basée sur le matériel physique.
              L'hyperconvergence a une approche plutôt logicielle, elle intègre une couche logicielle qui va combiner les ressources de calcul, de stockage et de réseau dans ce qu'on appelle un nœud. Les nœuds sont interconnectés et combinés entre eux pour former des pools au sein d'un cluster, on retrouve ainsi un pool de stockage ou un pool de calcul, si un nœud venait à défaillir ça n'aurait pas de conséquence pour les autres nœuds et le fonctionnement du pool et du cluster.

              OK, mais une fois que tout ça est posé, quelle est la différence entre les deux ?
              L'infrastructure convergée a une approche basée sur le matériel physique, c'est à dire qu'un serveur physique peut être séparé du reste du dispositif et toujours fonctionner comme un serveur indépendant alors que ce n'est pas possible avec l'infrastructure hyperconvergée où les noeuds sont nécessairement interconnectés entre eux pour que le cluster puisse fonctionner correctement. Par ailleurs l'infrastructure convergée intègre de base d'autres fonctionnalités comme la sauvegarde, la réplication, la déduplication des données, la compression, l'optimisation du réseau, etc.

              C'est quoi un cluster haute disponibilité ?

              On a bien vu que finalement qu'elle soit dans vos locaux ou chez un prestataire de service, la machine physique reste le maillon faible du dispositif. Pour améliorer encore plus la disponibilité et la robustesse, on va dupliquer les machines physiques et si possible en les dispatchant dans des locaux et sites différents. Le tout étant géré comme un seul système. La virtualisation du stockage prend alors toute son importance, pour éviter de se rendre dépendant d'un serveur physique de données.

              C'est quoi le cloud computing ?

              On appelle cloud computing le fait de confier à un tiers sur internet la gestion de services informatiques (applications, stockage, outils de gestion, …) mais aussi le fait d'utiliser des services fournis par un prestataire via internet. Le cloud computing repose largement sur la virtualisation, on peut dire que le cloud computing est un environnement alors que la virtualisation est une technologique. En matière de cloud computing, il en existe de différentes sortes :

              • Infrastructure as a service (IaaS) ou infrastructure en tant que service : L'IaaS offre une infrastructure informatique complète (serveurs, stockage, réseau, …) sur un réseau privé (ressources en accès limité), public (ressources en accès libre) ou hybride (qui mélange les deux).
              • Platform as a service (PaaS) ou plate-forme en tant que service : Le PaaS c'est grosso modo la même chose que l'IaaS sauf qu'en plus on bénéficie d'outils supplémentaires pour pouvoir développer des applications qu'on retrouvera sur le cloud et tous un tas de services supplémentaires, gestion de base de données, aide à la décision, etc.
              • Le Software as a service (SaaS) ou logiciel en tant que service : Le SaaS est une offre logicielle complète qu'on retrouvera sur internet, c'est typiquement des offres comme Microsoft Office 365 ou Google Workspace, dans le monde opensource, on peut dire que certains prestataires recensés par les CHATONS se rapprochent d'une solution SaaS.

              NdM: il est question ici de cloud computing sur un cloud public, une infrastructure gérée par un hébergeur tiers. Il est aussi possible de faire du cloud computing privé, interne, dans une grosse structure qui en a la capacité, ce qui revient à déléguer l'hébergement à un tiers (des collègues dans ce cas). Et on peut combiner les deux pour faire du cloud hybride. Le cloud computing implique aussi la création de ressources en libre-service, de la facturation à l'usage et de la mutualisation.

              Les enjeux

              Enjeu environnemental

              L'adoption quasi généralisée de solutions autour de la virtualisation dans le monde professionnel a conduit à la disparition progressive des serveurs locaux d'entreprise au profit d'un développement effréné des datacenters de par le monde. Or un datacenter est constitué de machines bien physiques tournant 24h24 7j/7 avec tout un dispositif lui aussi bien physique pour assurer leur fonctionnement optimal, leur sécurisation et la robustesse aux pannes, il s'agit notamment de :

              • La climatisation et le traitement d’air pour maintenir des conditions satisfaisantes de température et hygrométrie avec toute un système de circulation et de refroidissement d'air
              • La distribution de l’électricité avec un dispositif de sécurisation en cas de coupure d'alimentation, souvent basé sur tout un ensemble d'onduleurs et appuyé par groupes électrogènes
              • la protection physique de l'installation avec contrôle d'accès, vidéosurveillance et autres systèmes anti intrusion

              Le tout nécessite une consommation électrique massive et une forte consommation en eau. Si l'on traduit cela en équivalent d'émission de gaz de serre (GES), d'après une étude de l'ADEME les datacenters ont déjà atteint le même niveau d'émission que le transport aérien à l'échelle mondiale.
              Il se trouve que le destin des datacenters est maintenant également étroitement lié à celui de l'IA, même si dans ce domaine on envisage plutôt des datacenters dédiés, or les besoins générés par l'IA dopent l'expansion globale des datacenters dans le monde. La demande de puissance de calcul de l'IA est exponentielle et double tous les 3,4 mois selon OpenAI. Selon une étude Gartner citée par le Monde Informatique, rien que les besoins liés à l'IA feront exploser la demande énergétique des datacenters au point que les fournisseurs d'énergie ne pourront y répondre dès 2027 !

              Dans ce contexte il n'est pas étonnant donc que les grands acteurs du secteur poussent au développement des centrales nucléaires qui leur permettra par la même occasion de verdir leur image. Mais ces acteurs ne sont pas à une contradiction près, on peut s'étonner du développement dans certaines régions qui de prime abord ne se prêtent pas particulièrement à leur installation contrairement aux pays nordiques. Le projet d'installation de Meta dans une région aride d'Espagne où chaque goutte d'eau compte, en est une triste illustration. Les températures régionales élevées décupleront ses besoins en électricité et en eau pour les circuits de refroidissement alors que la région souffre de sécheresse chronique. On peut déplorer que tout cela ne pourrait se faire sans le soutien des gouvernements et des élus locaux qui ne trouvent rien à redire.

              Enjeu de résilience

              Le marché actuel est dominé par trois acteurs qui représentent à eux trois plus de 60% du marché mondial il s'agit dans l'ordre d'AWS (Amazon), d'Azure (Microsoft) et de Google Cloud Platform, on parle d'eux comme des hyperscalers car ils fournissent des services à l'échelle mondiale à grande échelle. Cette hyperconcentration des acteurs et des solutions techniques fragilise l'économie mondiale en la rendant davantage sensible et moins résiliente aux pannes, la défaillance d'un simple outil de sécurité a ainsi entraîné en cascade une panne informatique mondiale en juillet dernier avec des conséquences graves comme l'arrêt partiel du contrôle aérien, de centres d'appels d'urgence ou de services hospitaliers. Plus modestement l'incendie subi par OVH en 2021 a impacté des milliers d'entreprise et services publics, toutes les données contenues sur les serveurs sont perdues, puisqu'OVH a commis l'erreur de stocker au même endroit les données et les sauvegardes. NdM: historique de pannes GCP, AWS ou Azure
              Cette hyperconcentration fait planer également des risques en termes de cybersécurité, la corruption d'un élément du système et sa prise de contrôle par un hacker aura vite des conséquences majeures.

              Enjeu de souveraineté

              Il faut savoir que les données gérées par un datacenter sont soumises à la réglementation propre au pays où il est installé. Les autorités aux États-Unis, au nom du Patriot Act peuvent donc ainsi accéder aux données stockées sur leur territoire. Les datacenters souverains sont donc un enjeu majeur pour certains pays pour garantir que les données seront protégées par les lois nationales, sans ingérence étrangère possible.

              En France notamment, 71% des entreprises se reposent sur des solutions américaines dont des acteurs étatiques. Une affaire illustre à elle seule cet état de fait, la solution Azure de Microsoft a été ainsi choisi pour héberger l'ensemble des données de santé de 4 établissements hospitaliers (et non de l'ensemble des Français) à des fins de recherche dans un entrepôt de données de santé dénommé EMC2. Sauf qu'en l'espèce Microsoft a répondu à un appel d'offre en bonne et due forme, que la CNIL a donné son autorisation et que les différents recours à ce stade ont tous échoué. Néanmoins voici ci-dessous texto la conclusion du rapport de la CNIL en 2023 :

              (début de citation)

              • qu’aucun prestataire potentiel ne propose d’offres d’hébergement répondant aux exigences techniques et fonctionnelles du GIP PDS (Note de l'auteur : groupement d’intérêt public « Plateforme de données de santé", appelé aussi Health Data Hub) pour la mise en œuvre du projet EMC2 dans un délai compatible avec les impératifs ce dernier ;
              • que le développement d’un démonstrateur " cloud de confiance ", respectant les conditions de la circulaire précitée et permettant à terme d’héberger des projets de cette nature, et notamment la plateforme du GIP PDS, devrait se poursuivre sur les prochaines années ;
              • que la construction d’une plateforme d’hébergement spécifique pour le projet EMC2 pourrait retarder la migration de la solution d’hébergement du GIP PDS pour l’ensemble de ses missions ;
              • qu’en attendant cette migration, le projet EMC2 soit mené sur la solution technique actuelle du GIP PDS.

              À la lumière de ces conclusions, la CNIL déplore qu’aucun prestataire susceptible de répondre actuellement aux besoins exprimés par le GIP PDS ne protège les données contre l’application de lois extraterritoriales de pays tiers.
              De manière générale, elle regrette que la stratégie mise en place pour favoriser l’accès des chercheurs aux données de santé n’ait pas fourni l’occasion de stimuler une offre européenne à même de répondre à ce besoin. Le choix initial du GIP PDS, dès sa fondation, de recourir au cloud a conduit à privilégier des offres d’acteurs étasuniens dont il apparaît désormais difficile de se détacher à court terme malgré l’émergence progressive de fournisseurs souverains. Le projet EMC2 aurait pu être retenu par le GIP PDS pour préfigurer la solution souveraine vers laquelle il doit migrer.

              (fin de citation)

              À la lumière de cette conclusion, on peut comprendre que la CNIL s'est sentie contrainte et forcée de répondre favorablement pour ne pas faire capoter ce projet en espérant que cette solution ne soit que transitoire et qu'elle pourra basculer sur une solution souveraine dans quelques années.
              Autre affaire d'actualité, le contrat entre EDF et AWS pour le stockage de certaines informations sensibles de maintenance du parc nucléaire français, le Canard enchaîné vient de révéler récemment que le contrat battait de l'aile car Amazon refuse d'inscrire noir sur blanc dans le contrat que les données d'EDF seront stockées en France (autre article).
              Aussi la France cherche à développer son "cloud souverain" pour ne plus être dépendant des géants américains mais peine à avancer sur le sujet faute de barrières réglementaires et juridiques, de réticences des élus et des populations sur les territoires pouvant accueillir des datacenters et d'une certaine frilosité des banques et acteurs technologiques.

              En guise de réponse aux enjeux

              Réponse à l'enjeu environnemental

              Pour ne pas courir à la catastrophe annoncée, la mise en place de technologies plus efficaces et économes en énergie est un enjeu majeur, parmi les axes d'innovation on peut citer:

              • l'utilisation d'énergie renouvelable
              • le refroidissement des datacenters basé sur des technologies peu gourmandes en eau,
              • la réutilisation de l'énergie dissipée par les datacenters.

              Réponse à l'enjeu de résilience

              Des normes et des certifications se sont mises en place qu'elles soient internationales, européennes ou nationales. On peut citer :

              • TIA 942 qui couvre différents domaines comme la disponibilité, la sécurité, l'efficacité énergétique, le refroidissement, la redondance et la gestion de l'espace;
              • ANSI/BICSI-002 qui définit des standards de conception et de pose des systèmes de câblage, d'électricité, dissipation de chaleur, refroidissement, etc.
              • ISO 27001 qui couvre la gestion de la sécurité de la donnée;
              • ISO 22237 qui couvre l'installation et les infrastructures des datacenters;
              • le référentiel de sécurisation des services cloud SecNumCloud élaboré par l’ANSSI;
              • la certification d'Uptime Institute avec sa classification du niveau de sécurité des datacenters de Tier I à Tier IV.

              En France, France Datacenter est une organisation professionnelle qui fédère les entreprises qui conçoivent, construisent et exploitent les datacenters. Elle publie également des guides à destination de ses adhérents qui font référence, on peut citer notamment "le livre blanc sur la sécurité incendie" ou "l'humain et la sécurité du datacenter".

              D'un point de vue réglementaire, on peut citer :

              • le règlement général sur la protection des données RGPD;
              • La directive européenne relative à DEE l’efficacité énergétique DEE;
              • La directive européenne relative à la sécurité des réseaux et de l’information, dite NIS 2 pour Network and Information System Security.

              Le respect de ces normes, certification et a fortiori de la réglementation sont une garantie que les datacenters sont construits suivant les règles de l'art avec le niveau de qualité, de sécurité et de fiabilité attendu. A ce propos pour en revenir à l'incident OVH, les procédures judiciaires qui en ont découlé et qui ont conduit à la condamnation d'OVH ont mis en évidence que la société qui se targuait d'être certifié ISO 27001 n'a pas respecté la norme pour ne pas avoir prévu une copie de sauvegarde sur un site distant.

              Réponse à l'enjeu de souveraineté

              Le respect du RGPD et de la certification SecNumCloud sont une première réponse à la menace des lois extraterritoriales sur la confidentialité des données, en parallèle le premier ministre de l'époque a diffusé en 2021 une circulaire relative à la doctrine d'utilisation de l'informatique en nuage par l'État qui a été actualisé en 2023. Cette dernière "exige (…) en cas de recours à une offre commerciale d'informatique en nuage, l'hébergement des données d'une sensibilité particulière par des solutions disposant de la qualification SecNumCloud (…) et immunisées contre toute réglementation extracommunautaire".
              Il faut par ailleurs créer l'environnement pour que des acteurs locaux puissent se développer et former une alternative crédible aux hyperscalers. L'émergence d'acteurs alternatifs de proximité est donc un enjeu que le marché seul ne suffit pas à faire percer, il faut une volonté politique, une stratégie et une vision à long terme, des financements, une adaptation de la réglementation à l'échelle européenne et nationale.
              À ce sujet le précédent gouvernement avait concocté une loi de simplification de la vie économique destinée à faciliter l'installation de datacenters en France en les qualifiant de projets d'intérêt national majeur (PINM) pour qu'ils puissent bénéficier de mesures dérogatoires, de procédures accélérées tout en contournant le pouvoir des élus locaux puisque ça sera l’État qui signera les permis de construire. Avec cette loi la métropole de Rennes n'aurait sans doute pas pu refuser l'implantation d'un datacenter de Microsoft s'il avait été jugé d'intérêt national. Aujourd'hui ce projet de loi continue son bonhomme de chemin législatif malgré l'instabilité politique actuelle.
              Cet objectif de développement d'une offre de proximité n'est pas forcément compatible des objectifs environnementaux et de développement durable que la France s'est imposée, mais il faut voir ça comme une opportunité pour innover et ne plus être à la traîne des États-Unis dans ces domaines technologiques.

              En guise de conclusion

              D'une simple présentation technique autour de la virtualisation, on en arrive en tirant la pelote à des considérations à fort enjeu sur la gestion et la confidentialité des données que bien des utilisateurs de cloud n'imaginent pas, ni même ne considèrent à sa juste importance. Pourtant il suffirait qu'ils en prennent conscience pour orienter leur choix vers des solutions respectueuses qui peinent encore aujourd'hui à émerger malgré les vœux pieux de l’État qui n'est pas toujours exemplaire dans le domaine.

              Pour aller plus loin

              Quelques pages de vulgarisation

              Une sélection de sites sur les enjeux et le futur autour de la virtualisation et les datacenters

              Sites divers

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • L’exploration et le calcul de l’espace : l’horlogère, l’astronome et l’astrophysicienne
                En octobre 2024, on était allé à la conquête de l’espace, cette fois-ci, on va se concentrer sur l’exploration de l’espace vu de la Terre. Pour cela, on se penchera sur la vie et les travaux de trois femmes : Nicole-Reine Lepaute qui, au siècle des Lumières, a calculé la date du retour de la comète de Halley, Janine Connes qui prendra la direction du premier centre de calcul en France et Françoise Combes qui vient d’être élue présidente de l’Académie des sciences. C’est aussi l’occasion de voir

              L’exploration et le calcul de l’espace : l’horlogère, l’astronome et l’astrophysicienne

              En octobre 2024, on était allé à la conquête de l’espace, cette fois-ci, on va se concentrer sur l’exploration de l’espace vu de la Terre. Pour cela, on se penchera sur la vie et les travaux de trois femmes : Nicole-Reine Lepaute qui, au siècle des Lumières, a calculé la date du retour de la comète de Halley, Janine Connes qui prendra la direction du premier centre de calcul en France et Françoise Combes qui vient d’être élue présidente de l’Académie des sciences. C’est aussi l’occasion de voir l’évolution des outils utilisés en astronomie.

              Phases de l’éclipse du soleil du 1er avril 1764
              Illustration des douze phases principales selon les calculs de Nicole-Reine Lepaute

              Sommaire

              Préambule

              Les deux dépêches consacrées à la conquête de l’espace dans le cadre de la journée Ada Lovelace étaient très américano-centrées, et il manquait l’aspect étude et découverte de l’espace qui en précède la conquête. Sans cette connaissance, il n’aurait pas été possible d’envoyer des satellites artificiels, d’aller sur la Lune, sur Mars ou encore de créer des stations spatiales, voire, de concevoir les télescopes Hubble et James Webb. D’où cette dépêche, et le choix de ces trois femmes pour contrebalancer un peu leur américano-centrisme.

              Le choix a été guidé d’une part en tenant compte des informations dont je pouvais disposer, d’autre part de l’actualité : Janine Connes vient de mourir à l’âge de 98 ans et c’est une façon de lui rendre hommage, Françoise Combes vient d’être élue par ses pairs à la présidence de l’Académie des sciences.

              Nicole-Reine Lepaute, l’horlogère

              La vie de Nicole-Reine Lepaute nous est essentiellement connue grâce à l’Encyclopédie des dames de Jérôme Lalande. De fait les biographies que l’on peut trouver sur elle citent les mêmes passages en élucubrant souvent sur les relations qu’elle aurait pu avoir avec l’astronome. Mais comme LinuxFr.org n’est ni un site « people » ni un site de rencontre et que l’autrice de l’article n’aime généralement pas faire comme tout le monde, on vous renverra en fin de dépêche sur ces biographies.

              Nicole-Reine Lepaute en quelques dates (et hauts faits)

              Nicole-Reine Étable naît le 5 janvier 1723 à Paris. Elle n’est pas elle-même horlogère, mais elle épouse l’horloger Jean André Lepaute en 1749. Il deviendra le fournisseur officiel de la cour de Louis XV en 1750. Jean André Lepaute était réputé comme l’un des meilleurs horlogers de son temps. Quand il écrira son Traité d'horlogerie, contenant tout ce qui est nécessaire pour bien connoître et pour régler les pendules et les montres, c’est Nicole-Reine qui calculera la « longueur que doit avoir un Pendule simple pour faire en une heure un nombre de vibrations quelconque, depuis 1 jusqu’à 18000 » (table VI, pages 365 et suivantes du traité). Et on le sait parce qu’elle en est créditée.

              Le couple fait la connaissance de l’astronome Jérôme Lalande en 1754. Elle commencera peu après à travailler avec lui. En 1757, elle calculera les dates du retour de la comète de Halley avec Lalande et Clairaut. Quand, en 1759, Lalande est chargé des éphémérides annuelles de l’Académie royale des sciences : La Connaissance des temps1, elle fera partie de l’équipe qui travaille sur les tables et éphémérides astronomiques.

              En 1761, elle entre à l’Académie royale des sciences et belles lettres de Béziers. C’est, probablement, la première fois qu’une femme entre dans une académie pour ses travaux scientifiques. Elle offre aux académiciens les tables astronomiques pour Béziers qu’elle avait compilées à leur intention. Malheureusement ses travaux sont perdus.

              En 1764, une éclipse est prévue, pour éviter une éventuelle panique, le clergé est invité à informer le peuple du caractère inoffensif de ce phénomène céleste. Nicole-Reine Lepaute calculera les phases de l’éclipse et en dressera une carte. Elle fera publier deux documents :

              Elle meurt, aveugle, le 6 décembre 1783, elle aura passé les trois dernières années de sa vie à s’occuper de son mari loin des mathématiques. Son acte de décès figure sur le site archive.org.

              Elle ne reste pas complètement oubliée. Ainsi, quand une nouvelle édition de la Bibliographie ancienne et moderne ou (en nettement plus long) Histoire, par ordre alphabétique, de la vie publique et privée de tous les hommes qui se sont distingués, par leurs écrits, leurs actions, leurs talens, leurs vertus ou leurs crimes paraît en 1820, elle a sa notice relevée ici par le Journal des dames et de la mode. Signée d’un certain M. Weiss, elle porte cette mention :

              Mme Lepaute, douée de tous les avantages extérieurs, portoit dans la société cette politesse et cette fleur d’esprit, que semblent exclure les études profondes…

              Le numéro du 15 février 1898 du bi-mensuel La Femme (page 28) dresse un portrait de Nicole-Reine Lepaute en ajoutant :

              Telle fut la vie pure et simple de celle que Clairaut appelait « la savante calculatrice ». Plus grande lorsqu’elle partageait l’internement de son mari dans une maison de santé que lorsqu’elle compulsait les tables astronomiques.

              Et en concluant plus généralement :

              « L’examen attentif des faits, des biographies. l’étude de la vérité historique devraient rassurer les esprits chagrins. La famille n’est pas en péril parce que les filles s’adonnent aux mêmes études que les garçons et osent aspirer à des carrières libérales et scientifiques. » Le revenu qu’une jeune fille peut se procurer courageusement, dignement par son travail, à l’aide des diplômes qu’elle a remportés dans les concours par son énergie, sont un appoint pour couvrir les dépenses d’un ménage futur et assurer l’éducation libérale des enfants à venir, qui facilite l’établissement des jeunes époux. Un diplôme, c’est une dot dont la fiancée qui l’apporte dans une corbeille de mariage peut être justement fière, et, loin d’être un obstacle à fonder une famille, c’est une valeur qui favorise le mariage.

              Les outils des astronomes au XVIIIe siècle

              Il n’est pas possible de savoir ce que Nicole-Reine Lepaute utilisait pour ses calculs. Il est en revanche envisageable de dresser une liste des outils dont les astronomes disposaient pour explorer l’espace et calculer les mouvements des astres.

              Pour observer et cataloguer les astres, les astronomes du 18e siècle disposaient des lunettes d’astronomie. La paternité de leur invention est souvent attribuée à Galilée qui a construit sa première lunette en 1609. On trouve une première description de ce type d’instrument déjà en 1538 dans l’Homocentrica (texte-image en latin) de Jérôme Fracastor2. En 1608, l’opticien hollandais Hans Lippershey dépose un brevet pour des lunettes astronomiques qui lui sera refusé, car :

              il était notoire que déjà différentes personnes avaient eu connaissance de l’invention. L’optique par Fulgence Marion (texte-image) (source Gallica BnF).

              On doit l’invention du télescope à Isaac Newton en 1668. Son idée était d’ajouter un miroir : il fallait pour augmenter la puissance des lunettes astronomiques (et autres longues-vues et jumelles d’ailleurs) augmenter l’épaisseur de la lentille en perdant en précision. L’ajout d’un miroir concave donne une meilleure qualité d’image et permet d’augmenter la taille des télescopes. Est-ce que Lalande ou Nicole-Reine Lepaute pouvaient disposer d’un télescope ? Dans l’Encyclopédie des dames, Lalande mentionne un « un télescope de trente deux pouces qui coûte environ dix Louis » qui suffit pour « voir ce qu’il y a de plus singulier dans le ciel ».

              Concernant les outils de calcul : il ne fait aucun doute qu’elle a pu et dû utiliser les différentes tables existantes. À son époque, on utilisait divers abaques pour compter, par exemple un système de jetons, utilisé notamment dans le commerce. Il est possible qu’elle ait eu connaissance, en femme cultivée, de la Pascaline, voire, de la machine à calculer de Leibniz. Mais il est peu probable qu’elle les ait utilisées, notamment parce que ces machines ont été peu diffusées. Elle a pu, en revanche, utiliser les bâtons de Napier (francisé en Neper). Et elle utilisait certainement la bonne vieille méthode du papier et du crayon ou plutôt de la plume, ou « calcul indien » qui est celle que l’on apprend à l’école actuellement. Cette méthode est arrivée en Europe au XIIe siècle et a été adoptée par le monde scientifique assez rapidement mais pas dans les classes les moins instruites de la population.

              Nicole-Reine Lepaute aurait pu aussi utiliser une règle à calcul, les premières ont été inventées au XVIIe siècle, mais elles n’ont vraiment commencé à s’implanter en France qu’au XIXe siècle.

              Janine Connes, l’astronome

              Aussi paradoxal que cela puisse être, il y a encore moins d’éléments biographiques concernant Janine Connes que pour Nicole-Reine Lepaute. Son obituaire ne comporte aucun élément informatif autre que le strict minimum (nom et date). En revanche, on a la liste de ses publications et on peut même accéder à certaines.

              De la spectroscopie infrarouge à transformée de Fourier au centre de calcul d’Orsay

              Janine Connes naît en 1926. Elle épouse l’astronome Pierre Connes avec qui elle mènera diverses recherches. Elle meurt le 28 novembre 2024 à Orsay, presque centenaire (98 ans).

              En 1954, son professeur, le physicien Pierre Jacquinot lui suggère un sujet de thèse :

              Il s’agissait de faire des Transformées de Fourier (TF) de 1 million de points.
              Pierre Jacquinot faisait partie de mon jury cette année-là, et à l’issue du concours il m’avait proposé de faire une thèse dans son Laboratoire Aimé Cotton (LAC) alors spécialisé en spectroscopie atomique et développements instrumentaux. Le sujet proposé était la spectroscopie par transformation de Fourier qui théoriquement devait battre en résolution et en étendue spectrale tous les records des réseaux et des interféromètres de Fabry-Perot. (Janine Connes, in De l’IBM 360/75 au superordinateur Jean Zay, chapitre 1).

              La spectroscopie infrarouge à transformée de Fourier (IRTF ou FTIR en anglais) sur laquelle Janine Connes a basé sa thèse est une méthode d’analyse basée sur les ondes infrarouges :

              Ces ondes vont de 12 800 cm-1 à 10 cm-1 et sont divisées en trois groupes: le proche infrarouge, le moyen infrarouge et l’infrarouge lointain. La FTIR utilise quant à elle le moyen infrarouge qui s’étend de 4 000 cm-1 à 400 cm-1 (2,5 µm à 25 µm).
              Quand une onde infrarouge est envoyée sur une molécule, cette dernière absorbe une partie de l’onde qui correspond aux liaisons présentes dans la molécule. L’absorption du rayonnement infrarouge ne peut avoir lieu que si la longueur d’onde correspond à l’énergie associée à un mode particulier de vibrations de la molécule. (Spectroscopie infrarouge à transformée de Fourier (FTIR), A. Bonneau, Association des Archéologues du Québec).

              Comme on peut le voir, c’est une technique utilisée dans des domaines très différents, incluant donc l’astronomie. Sa thèse en établira les principes en astronomie. Actuellement la :

              méthode de Fourier conserve toutefois quelques niches spécifiques, comme dans le domaine de l’infrarouge lointain spatial ou pour la spectroscopie intégrale de grands champs. La spectroscopie de Fourier en astronomie : de ses origines à nos jours, Jean-Pierre Maillard, 21 décembre 2017 (Observatoire de Paris).

              La page qui lui est consacrée (en) sur le site CWP (Century Women to Physics) de l’UCLA (Université de Californie à Los Angeles) indique que sa thèse, ainsi que ses publications suivantes, ont été d’une importance majeure et a posé les bases de ce qui allait devenir un nouveau et important domaine de recherche qui rend les transformées de Fourier rapides et relativement courantes :

              Janine Connes's analysis of the technique of Fourier Transform Infrared Spectroscopy was of major significance and laid the foundations of what was to grow into a significant new field. Her thesis work and subsequent publications gave in-depth theoretical analysis of numerous practical details necessary for this experimental technique to work. All the more remarkable is that her work predates the age of digital computers, which now make fast Fourier Transforms relatively routine. Mary R. Masson

              En 1960, elle écrit avec le physicien H. P. Gush une Étude du ciel nocturne dans le proche infra-rouge dans lequel les deux auteurs remercient notamment le Comité Européen de Calcul Scientifique pour ses attributions d’heures de calcul à l’ordinateur 704 I.B.M.

              En 1961, elle publie une série de quatre articles, seule ou avec d’autres chercheurs : Études spectroscopiques utilisant les transformations de Fourier. Pour le professeur Ian McLean, fondateur du laboratoire infrarouge de l’UCLA, ce sont des « travaux fondamentaux d’une importance extrême pour le domaine ». Le travail de Janine et de Pierre Conne sur les transformations de Fourier aura notamment permis à Lewis Kaplan de déterminer, en 1966, la composition de l’atmosphère de Mars (en).

              Parallèlement à cela, elle enseigne à la faculté de Sciences de Caen. En 1963, elle sera invitée avec Pierre Connes à rejoindre le Jet Propulsion Laboratory de la NASA à Pasadena. De retour en France, elle commencera par intégrer le laboratoire de Meudon au poste de directrice adjointe avant de se voir confier en 1969 la création et la direction du Centre Inter-Régional de Calcul Électronique (CIRCÉ) à Orsay.

              En 1970, l’astronome Ruper Wildt la propose, avec son mari, Pierre Connes, et le physicien Robert Benjamin Leighton pour le prix Nobel de physique pour « leur développement de la méthode de spectroscopie infrarouge à transformée de Fourier ». Le prix sera attribué, finalement, à Louis Néel.

              En 2022, elle écrit avec la participation de Françoise Perriquet : De l’IBM 360/75 au superordinateur Jean Zay 50 ans d’informatique au centre de calcul du CNRS d’Orsay.

              Les ordinateurs de ses débuts et le centre Jean Zay

              Ce sont l’IBM 704 et l’IBM 360/75 dont on va voir quelques caractéristiques techniques.

              L’IBM 704 était la plus grande machine du monde. Il avait fallu deux avions pour la transporter des États-Unis à Orly. Son arrivée en France avait fait l’objet d’une émission de la Radio Télévision française (RTF). Le présentateur interrogeait la personne chargée de réceptionner l’ordinateur au titre de l’Institut européen de calculs scientifiques, une fondation IBM, destinée à offrir aux scientifiques européens (pas seulement français) la possibilité de procéder à des calculs, jusque-là peu envisageables.

              Les mentions en italiques sont des citations tirées de l’émission.

              L’IBM 704 pesait 21 tonnes. Celui reçu à Orly était composé de « 25 unités différentes constituants chacun autant de petits meubles de dimension normale ». Ne sachant pas ce qu’est un meuble aux « dimensions normales », on peut se donner une idée de la taille des éléments en se référant aux photos : environ la profondeur et la largeur de, disons, une armoire normande, mais en moins haut, quelque chose entre 1,10 m et 1,60 m selon les éléments.

              Il fonctionnait avec des bandes magnétiques et pouvait :

              • en physique, s’occuper du dépouillement de données de mesure,
              • faciliter l’exploitation de l’énergie atomique à des fins pacifiques,
              • faire des calculs en chimie,
              • faire des calculs dans tous les domaines de l’industrie et de la science.

              Dans l’émission de radio, le présentateur demandait à la fin un exemple de traitement que pouvait faire l’IBM :

              Neper a passé plus de trente ans de sa vie à établir les tables de logarithmes et l’ordinateur 704 pourrait exécuter le même travail en le transcrivant sur des bandes magnétiques en dix-sept secondes à peu près.

              Sorti en 1954, c’est le premier ordinateur commercialisé à utiliser des commandes arithmétiques en virgule flottante entièrement automatiques et ce grâce à John Backus qui avait insisté pour que ce soit configuré au niveau du matériel.

              L’IBM 360/75 qui équipait CIRCÉ faisait partie d’une gamme d’ordinateurs interopérables et polyvalents IBM 360 dont le premier est sorti en 1966 (la numérotation des séries d’ordinateurs chez IBM est étonnante). Les IBM 360 seront commercialisés jusqu’en 1978. Ce sont les premiers à avoir utilisé le système Solid Logic Technology (SLT). L’IBM 360/30 était le plus lent de la série ; il pouvait exécuter jusqu’à 34 500 instructions par seconde avec une mémoire allant de 8 à 64 ko. Le 360/75 est l’un des derniers de la série.

              Ces ordinateurs étaient évidemment programmés en FORTRAN. D’ailleurs, le premier compilateur FORTRAN a été écrit pour l’IBM 704.

              Le centre Jean Zay, que l’on peut considérer comme l’un des successeurs de CIRCÉ a été inauguré en janvier 2020. C’est l’un des plus puissants centres de calcul d’Europe. Sa puissance est de 125,9 Pétaflop/s. Il a coûté 40 M€, coûte en électricité 3 à 4 M€ par an et il requiert 93 tonnes d’équipement réparti sur 320 m2 (source Ministère de l’enseignement et de la recherche). Il tourne sous Linux évidemment, comme tous les supers calculateurs de sa génération.

              Françoise Combes, l’astrophysicienne

              Quelle différence y a-t-il entre les métiers d’astronome et d’astrophysicien ? À cette question, wikidifference propose :

              La différence entre astronome et astrophysicien est que « astronome » est celui ou celle qui s’occupe d’astronomie tandis que « astrophysicien » est [un ou une] scientifique qui étudie l’astrophysique, l’étude de l’espace et des propriétés des objets de l’univers.

              Pas très convaincant, ni explicite. Les astronomes observent et cataloguent l’espace sur la base d’observations quand, en astrophysique, on se base sur les lois de la physique pour observer l’univers. En fait, à l’heure actuelle, les personnes qui, au départ, étaient astronomes sont maintenant des astrophysiciennes : la connaissance a évolué, les méthodes de recherche aussi ainsi que les outils. Mais, évidemment, les astronomes sont, ont été des scientifiques, souvent diplômés en physique.

              De la physique galactique à l’Académie des sciences

              Françoise Combes naît le 12 août 1952. En 1975, elle réussit l’agrégation de physique ce qui l’amènera à enseigner à l’École normale supérieure (ENS) dont elle est issue. Elle soutient sa thèse d’État à Paris VII en 1980, sujet de la thèse : les dynamiques et les structures des galaxies. En 1985, elle devient sous-directrice du laboratoire de physique à l’ENS (Ulm). Et c’est en 1989 qu’elle devient astronome à l’Observatoire de Paris. Elle est, depuis 2014, titulaire de la chaire Galaxies et cosmologie au Collège de France.

              Pendant cette période, 1970 -1980, qui voit la naissance des premières simulations numériques des galaxies, elle a l’idée de les faire en trois dimensions au lieu des deux dimensions habituelles. Elle ainsi pu résoudre :

              un mystère jusqu’alors inexpliqué : la formation d’un bulbe (sorte de renflement) dans les galaxies spirales. La clé de l’énigme est la barre centrale, sorte de forme allongée centrale où toutes les étoiles se rassemblent. « Cette barre soulève les étoiles dans la direction perpendiculaire au plan, explique-t-elle. De ce fait, les étoiles ne restent pas confinées dans un disque très mince mais prennent de l’altitude, ce qui forme un bulbe. » Ses simulations ont aussi montré comment la même barre précipite le gaz vers le centre, ce qui a pour effet d’alimenter le trou noir central. Médaille d’or, site CNRS.

              Elle a été admise à l’Académie des sciences3 en 2004, une académie dont elle assure la vice-présidence pour le mandat 2023-2024 et qui l’élit à la présidence pour le mandat 2025-2026. Une élection qui devrait normalement être ratifiée par décret par le président de la République. Ce sera la deuxième femme à la tête de cette vénérable institution (elle a été créée en 1666) où elle succède à Alain Fischer et trente ans après la biochimiste Marianne Grunberg-Manago

              Des prix prestigieux et des publications

              Françoise Combes a engrangé les prix et les distinctions au cours de sa carrière à commencer par le prix de Physique IBM qu’elle obtient en 1986 et le prix Petit d'Ormoy de l’Académie des Sciences en 1993. En 2001, le CNRS lui décerne une médaille d’argent.

              En 2009, elle obtient le prix Tycho Brahe de la Société européenne d’astronomie (EAS) dont c’est la deuxième édition pour ses

              travaux fondamentaux dans le domaine de la dynamique des galaxies, sur le milieu interstellaire dans les systèmes extragalactiques, sur les lignes d’absorption moléculaire dans le milieu intergalactique et sur la matière noire dans l’Univers. » Communiqué de presse (en anglais) de l’EAS (pdf).

              En 2017 la Société Astronomique de France (SAF) lui décerne son prix Jules-Janssen. En 2020, le CNRS lui décerne une médaille d’or. L’année suivante, elle obtient le prix international pour les femmes de sciences L’Oréal-Unesco (en).

              Elle est autrice ou co-autrice de plusieurs livres dont les plus récents :

              • Le Big bang, PUF 2024, collection Que sais-je ?, en version papier (10 €) et numérique (PDF et EPUB)
              • Trous noirs et quasars, CNRS éditions 2021, collection Les grandes voix de la recherche, en papier (8 €), numérique PDF et EPUB sans DRM (5,99 €) et audio (9,99 €).

              Par ailleurs, l’entretien qu’elle a donné au Collège de France en février 2024 est aussi téléchargeable en PDF.

              Sources, références et remerciements

              L’illustration de tête est la reproduction de la gravure originale des phases de l’éclipse (je l’ai redessinée avec Inkscape) et on peut la télécharger sur mon site de modèles ainsi d’ailleurs que le CV de Nicole-Reine Lepaute ou sur OpenClipart.

              LinuxFr.org ne rend peut-être pas plus intelligent, mais la rédaction de dépêches pour le site rend indéniablement plus savant. Pour cette dépêche et compenser une grande ignorance du sujet, j’ai été amenée à lire, consulter, parcourir ou écouter un certain nombre de documents en plus de ce qui est cité dans le corps de la dépêche. À vous de voir si vous avez envie de poursuivre l’exploration.

              Nicole-Reine Lepaute

              Janine Connes

              • Spectroscopie du ciel nocturne dans l’infrarouge par transformation de Fourier. J. Connes, H.P. Gush, Journal de Physique et le Radium, 1959, 20 (11), pp.915-917. 10.1051/jphysrad:019590020011091500, jpa-00236163
              • Tous les articles de J. Connes sur HAL Science ouverte, à savoir : il y a un site academia.eu, mieux référencé, qui les propose moyennant une inscription au site, mais cela vient de HAL qui ne demande pas d’inscription (donc pas de courriel) pour le téléchargement des fichiers.
              • Principes & applications de la spectro. de Fourier en astronomie : de ses origines à nos jours, Jean Pierre Maillard, 8 février 2019, conférence mensuelle de la Société astronomique de France (SAF)
              • De l’IBM 360/75 au superordinateur Jean Zay 50 ans d’informatique au centre de calcul du CNRS d’Orsay, EDP Sciences, il existe en version papier (39 €), PDF et EPUB avec DRM LCP (26,99 €), on peut le feuilleter aussi sur le site Cairn Info.
              • Réception à l’aéroport d’Orly de l’IBM 704 qui avait servi à Janine Connes pour ses calculs, podcast France Culture, rediffusion d’une émission de 1957.
              • L’IBM 704
              • l’IBM 360 (es), Academia Lab (2024). Système IBM/360. Encyclopédie. Révisé le 29 décembre 2024.

              Françoise Combes

              L’histoire de l’astronomie

              • Les télescopes, Gilles Kremer, Sylvie Voisin, 30 mars 2018
              • Histoire et patrimoine de l’Observatoire de Paris
              • Une histoire de l’astronomie, Jean-Pierre Verdet, Seuil 1990, il a fait l’objet d’une publication au format EPUB avec DRM LCP (9,99 €) EAN : 9782021287929, mais on peut le trouver d’occasion assez facilement. Il est doté d’une bonne bibliographie et est plutôt passionnant.

              Remerciements

              Un très grand merci à vmagnin pour ses informations et ses précisions, même si je n’ai pas tout utilisé. Mais ce n’est pas perdu, un prochain portrait probablement (voire, sûrement).

              Merci aussi à Enzo Bricolo pour m’avoir signalé l’élection de Françoise Combes à la présidence de l’Académie des sciences, sans ça je l’aurais ratée et ce serait dommage.

              Ainsi se clôt cette série sur les femmes et la conquête de l’espace ainsi que l’année 2024. Et c’est mon cadeau de nouvelle année.


              1. La Connaissance du temps, qui se targue d’être la plus ancienne publication d’éphémérides toujours publiée est actuellement gérée et publiée par l’IMCCE - Observatoire de Paris, la version 2025 vient de paraître et est téléchargeable en PDF. Elle est accompagnée d’un logiciel de calcul d’éphémérides développé pour Windows, Mac et Linux. 

              2. Source : Les lunettes astronomiques, 29 mars 2018, Sylvie Voisin et Gilles Kremer, Le Blog Gallica. 

              3. Une académie qui s’engage en faveur de libre accès et dont les comptes rendus sont publiés depuis 2020 sous licence Creative commons CC BY – SA. 

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Haiku a 23 ans et un quart
                La dernière dépêche annuelle sur les nouveautés dans Haiku a dépassé la longueur maximale tolérée par Linuxfr (et été finalement découpée en plusieurs parties publiées séparément). Aussi, les nouveautés sur Haiku seront désormais publiées trimestriellement, pour faire face à l’augmentation d’activité dans le projet. lien nᵒ 1 : Site officiel de Haikulien nᵒ 2 : Rapport d'activité de août 2024lien nᵒ 3 : Rapport d'activié de septembre 2024lien nᵒ 4 : Rapport d'activité de octobre 2024Sommaire A

              Haiku a 23 ans et un quart

              La dernière dépêche annuelle sur les nouveautés dans Haiku a dépassé la longueur maximale tolérée par Linuxfr (et été finalement découpée en plusieurs parties publiées séparément). Aussi, les nouveautés sur Haiku seront désormais publiées trimestriellement, pour faire face à l’augmentation d’activité dans le projet.

              Sommaire

              Ce rapport est basé sur les rapports mensuels d’activité d’août, septembre et octobre publiés sur le site de Haiku. Il couvre les changements de code survenus entre hrev57901 et hrev58291 de Haiku.

              Certains des changements mentionnés dans ce rapport font partie des derniers développements du mois d'août, et étaient déjà présents dans la version R1 bêta 5 qui a été publiée début septembre 2024.

              Les corrections de bugs sont appliquées sur la branche bêta 5 si elle est concernée, mais les nouveaux développements sont mis dans la branche principale et seront disponibles uniquement dans les « nighlty builds » (constructions journalières) puis dans la prochaine version, qui sera probablement étiquetée R1 bêta 6.

              La version R1 est très attendue, mais la feuille de route comporte toujours environ 600 bugs et demandes d’amélioration. Jusqu’à ce qu’ils soient tous traités (corrigés, devenus obsolètes ou déplacés vers une version plus tardive), Haiku continue de publier des versions bêta.

              Applications

              Amélioration et corrections de textes de messages dans diverses applications (humdinger).

              L’application Switcher — permettant de naviguer rapidement entre les différentes fenêtres et applications à l’aide d’un menu qui apparaît lorsque la souris se trouve sur les bords de l’écran — peut à nouveau être compilée. Cette application n’est pas terminée et non intégrée dans Haiku par défaut pour l’instant (nephele).

              Dans les préférences de disposition clavier, des icônes avaient disparu de certains menus suite à un problème dans une modification précédente. Ces icônes sont maintenant de retour (jscipione).

              Les réglages de polices de caractères de WebPositive peuvent faire des retours à la ligne dans le texte d’exemple utilisé pour visualiser la police choisie (correction récupérée depuis la fenêtre de réglage des polices du système, qui utilise une variante du même code). (nipos).

              Le raccourci clavier « muet » permet d’alterner entre l’activation et la désactivation du son, au lieu de toujours passer en mode muet (korli).

              Plusieurs applications pouvaient ouvrir leurs fenêtres en dehors de l’écran si leur dernière position enregistrée n’était pas bonne (après un changement de résolution d’écran par exemple). L’appel de la fonction MoveOnScreen() après la création d’une fenêtre permet de régler ce problème (korli, pinaraf, waddlesplash).

              Icon-O-Matic ouvre ses dialogues de sélection de fichiers dans le dossier où se trouve l’icône en cours d’édition (nipos).

              Il est possible de sélectionner une famille de polices directement dans FontDemo (nipos).

              Améliorations du mode sombre

              Modifications faites par nipos et nephele.

              Depuis la version bêta 5 de Haiku, il est beaucoup plus simple de configurer un thème de couleurs dans Haiku (avec seulement 3 couleurs à sélectionner, les autres étant calculées automatiquement).

              Cependant, toutes les applications et contrôles graphiques ne se comportent pas forcément très bien, en particulier si on choisit une couleur de fond de fenêtres sombre. Ce trimestre, on trouve donc des améliorations sur ColumnListView (contrôle permettant l’affichage de données en listes, en arbre et en colonnes), et dans les applications Debugger, Mail (en particulier les marqueurs de portions de message citées), WebPositive, ResEdit, FontDemo, Cortex, Sudoku et Tracker (les fenêtres de configuration des permissions de fichiers et de statut de copie de fichiers), ainsi que dans les préférences de disposition clavier (couleur des touches de clavier affichées), et de configuration des écrans et des écrans de veille. Ces applications utilisaient encore quelques couleurs codées « en dur » qui ne s’adaptaient pas automatiquement au thème choisi.

              En outre, les formules de calcul utilisées pour générer le thème de couleurs ont été améliorées pour donner de meilleurs résultats dans le cas de couleurs sombres, assurant de conserver un bon contraste entre tous les éléments graphiques et une meilleure cohérence des couleurs.

              AboutSystem

              L’application AboutSystem donne quelques informations sur la machine (RAM, CPU), et surtout affiche les noms des développeurs et les messages de copyright et clauses de licences obligatoires de logiciels libres qui sont embarqués dans Haiku.

              Correction d’un crash à cause d’une information de copyright mal enregistrée (madmax).

              Mise à jour des crédits à l’occasion de la version Beta 5 : ajout des nouveaux membres de l’équipe, et passage dans la catégorie « anciens développeurs » de certaines personnes qui ne participent plus pour l’instant. (waddlesplash).

              Débogueur

              Haiku est fourni avec un débogueur graphique permettant d’investiguer facilement les problèmes dans les applications.

              Waddlesplash a amélioré le désassembleur pour mieux décoder les adresses mémoire calculées à partir de la valeur d’un registre CPU. La correction a été remontée dans la bibliothèque tierce Zydis, utilisée pour le désassemblage.

              Il a également modifié le code du Debugger pour ne pas essayer de télécharger des informations de debug lorsque l’outil est lancé en mode non-interactif (dans le cas d’une test suite automatisée par exemple). Plusieurs autres problèmes qui pouvaient causer un plantage du debugger ou un blocage dans un état invalide (avec l’application qui ne s’arrête jamais) ont été également traités.

              DriveSetup

              L’outil DriveSetup permet de modifier la table de partitions et de formater les partitions avec différents systèmes de fichiers.

              Pour les partitions de type « Intel » (MBR), lorsqu’on crée une première partition, par défaut elle est marquée automatiquement comme partition active. Auparavant il fallait cocher une case pour cela, et de nombreux utilisateurs oubliaient de le faire, ce qui pouvait rendre le système impossible à démarrer (korli).

              Dans certains messages, le nom des partitions n’était pas mis entre guillemets, ce qui pouvait prêter à confusion avec des noms de partitions choisis maladroitement (ou judicieusement, selon de quel point de vue on se place). Maintenant le nom de la partition est clairement identifiable dans le message (humdinger).

              HaikuDepot

              HaikuDepot est le frontal graphique du gestionnaire de paquets de Haiku. L’application est maintenue par apl et se compose d’une interface graphique native développée en C++ et d’un webservice développé en Java qui permet de stocker des métadonnées supplémentaires sur les paquets : captures d’écrans, notes et revues des utilisateurs, liste des paquets à mettre en avant.

              • Refactoring du « language model », de la gestion des chemins, de la récupération des données des paquets, de l’affichage des auteurs de paquets, de la gestion des notes données par les utilisateurs. (apl)
              • Fenêtre des conditions d’utilisation: correction de la couleur du texte, correction d’un crash si on clique dans la fenêtre avant que le texte soit chargé. (apl et jscipione)
              • Le bouton « Ouvrir » permettant de lancer une application installée ne fonctionnait pas toujours (apl).
              • Amélioration de la sélection d’un icône par défaut pour les paquets qui n’ont pas d’icône inclus (apl).

              La liste de paquets mis en avant a été revue, un nouveau mainteneur (Michel) se charge de la tenir à jour avec des règles mieux définies : une sélection d’applications populaires (sur suggestion de participants aux forums de discussion) ainsi que des applications mises à jour récemment. Si vous utilisez Haiku, n’hésitez pas à passer un peu de temps à évaluer et noter les applications, peu de personnes le font et il est difficile d’exploiter les données de façon pertinente si beaucoup d’applications n’ont reçu qu’un seul vote.

              Horloge

              L’application horloge permet d’afficher l’heure (sans surprise). Elle propose diverses apparences de cadrans, peut être redimensionnée, et incrustée dans le bureau sous forme d’un replicant.

              Un bug dans l’application conduisait à afficher une heure aléatoire (non initialisée) pendant quelques centièmes de secondes au démarrage avant de commencer à afficher l’heure courante (OscarL)

              Les aiguilles de l’horloge étaient décalées de quelques pixels et ne pointaient pas précisément là ou elles devraient (dovsienko).

              Tracker

              Tracker est le gestionnaire de fichiers de Haiku. Il affiche le bureau et toutes les fenêtres de navigation et de recherche de fichiers. Il se distingue par son utilisation de la navigation dite « spatiale », où chaque dossier s’ouvre dans une fenêtre séparée dont la taille et la position à l’écran sont mémorisées.

              jscipione continue son travail d’amélioration du Tracker (cela comporte de nombreux changements qui sont encore en gestation). Ce trimestre, les changements intégrés permettent :

              • la désactivation d’entrées du menu « Nouveau » lorsque les opérations ne sont pas disponibles,
              • la mise à jour dynamique de certains menus en fonction des opérations disponibles,
              • la préservation de la sélection après une opération de copie où de déplacement (avec quelques problèmes d’affichage corrigés au passage),
              • des corrections de bug sur le choix de couleurs utilisées dans la fenêtre « Ouvrir avec »,
              • la possibilité de créer un lien symbolique lorsqu’on fait un drag and drop depuis un dossier virtuel,
              • utilisation de la police de caractères « menu » de façon cohérente dans tous les menus.

              Il a également travaillé sur des tâches de fond, sans changements visibles pour l’instant. Le code du Tracker provient de BeOS et est un peu vieillissant. Il est souvent nécessaire de faire beaucoup de nettoyage avant de pouvoir développer de nouvelles fonctionnalités sans casser autre chose. Cette fois-ci, on trouve entre autres une refonte de la gestion des raccourcis claviers, la fermeture automatique des fenêtres en double lors du passage en mode « navigation spatiale », et divers crashs liés à la gestion des menus popup.

              humdinger a également travaillé sur le Tracker pour améliorer certains messages concernant la copie et la création de fichiers, pour les rendre plus faciles à traduire.

              humdinger a également travaillé sur l’organisation du menu « templates » (affiché quand on fait un clic droit -> nouveau… et permettant de créer différents types de fichiers à partir de fichiers de référence). Ce menu peut maintenant être organisé en plusieurs sous-menus à l’aide d’une nouvelle option « New template folder », pour les personnes qui utilisent cette fonctionnalité avec de nombreux fichiers de référence au point d’avoir besoin de les organiser.

              La fenêtre de requêtes (recherche de fichiers en fonction de leurs attributs étendus indexés dans le système de fichiers) permet maintenant d’afficher en temps réel les résultats lorsqu’on édite une requête. En outre, il est possible de filtrer les résultats pour afficher uniquement les fichiers contenus dans un répertoire donné (auparavant, on pouvait au mieux restreindre par volume disque). Ces changements ont été réalisés dans le cadre du Google Summer of Code par CalistoMathias, avec également une participation de jscipione, humdinger et waddleplash pour finaliser le travail.

              Correction d’un crash du Tracker lors de changements de résolution d’écran (OscarL).

              Terminal

              Le Terminal permet d’exécuter des applications en ligne de commande.

              Lors du changement de la taille de texte du Terminal, ce dernier ajuste le nombre de lignes et colonnes de texte visibles, au lieu de redimensionner sa fenêtre (nipos).

              Prise en compte de la séquence d’échappement ANSI pour effacer l’historique de défilement (CodeForEvolution).

              PowerStatus

              L’application PowerStatus affiche des informations sur les batteries pour les ordinateurs portables.
              sen a effectué plusieurs améliorations pour les systèmes avec plusieurs batteries:

              • Gestion de plusieurs emplacements pour batteries qui ne sont pas forcément tous utilisés,
              • Meilleur calcul des alertes de batterie faible,
              • Prise en compte de la déconnexion de batteries pendant le fonctionnement du système.

              Outils en ligne de commande

              La commande profile (qui permet d’analyser les performances d’autres applications et du système) peut maintenant afficher le nombre d’évènements qui n’ont pas pu être enregistrés par l’analyseur système (waddlesplash).

              La commande package_repo update (utilisée pour mettre à jour un dépôt de paquets avec de nouveaux logiciels) peut maintenant fonctionner sans avoir accès au contenu complet des fichiers packages à inclure dans le dépôt (seuls les noms des paquets et quelques autres métadonnées sont réellement nécessaires).

              La commande package_repo list dispose d’une option -f pour afficher le nom de fichiers correspondant aux paquets contenus dans un dépôt de paquets. Les fichiers peuvent ainsi être téléchargés facilement par un outil tiers. (waddlesplash)

              Ces deux modifications sont utiles en particulier pour la ferme de build de HaikuPorts, qui souhaite héberger les fichiers dans des buckets S3 afin de simplifier l’infrastructure et de réduire les coûts de fonctionnement.

              Amélioration du format de sortie de la commande launch_roster pour indiquer le statut des services et pas simplement leur nom (kallisti5 + waddlesplash).

              Ajout dans strace du décodage des drapeaux de configurations de mutex (par exemple MUTEX_SHARED) (waddlesplash).

              Serveurs

              Les serveurs sont des applications fonctionnant en tâche de fond et qui implémentent une grande partie des fonctionnalités du système.

              app_server

              app_server est le serveur graphique qui se charge de l’affichage du bureau et des fenêtres.

              madmax a travaillé sur la gestion des polices de caractères: correction de problèmes de verrouillage pour éviter des accès concurrents au gestionnaire de polices par plusieurs fils d’exécution, amélioration du traitement de l’ajout et du retrait de polices, et une optimisation pour éviter de scanner deux fois de suite les dossiers de polices au démarrage.

              waddlesplash a complété ce changement en déplaçant une partie du code de gestion des polices pour éviter que d’autres parties de l’exécution soient bloquées par l’initialisation des polices, qui peut prendre beaucoup de temps (quelques secondes) au démarrage du système.

              waddlesplash a corrigé un problème de calcul de délai d’expiration (probablement sans conséquence, découvert par hasard en investiguant un autre problème).

              jscipione a corrigé un problème de rafraîchissement de l’affichage lorsque des fenêtres sont empilées, qui pouvait conduire à ne pas bien effacer la barre de titre dans certains cas.

              Un clic simple sur le coin bas-droite de la fenêtre (coin de redimensionnement) déclenchait par erreur une minimisation de la fenêtre concernée (madmax).

              media_server

              Le media_server prend en charge les flux audio et vidéo et permet de router ces flux entre différentes applications ainsi que depuis et vers le matériel (cartes son, cartes d’acquisition vidéo, webcams…).

              Travaux effectués par waddlesplash:

              Correction de problèmes de calculs de temps dans le mixeur audio (problèmes découverts suite à l’amélioration de la détection d’erreurs dans BTimeSource, mentionné plus haut), et ajout de contrôles d’intégrité supplémentaires lors du démarrage du mixeur.

              Cela corrige plusieurs bugs qui faisaient que le système n’avait pas de son au démarrage pendant un certain temps, avant que soudainement ça se mette à fonctionner.

              D’autre part, des améliorations de performance sur la programmation des évènements, et des corrections de crash sur la connexion et déconnexion des nœuds média vers la sortie audio, et sur le nœud multi-audio avec certaines cartes sons qui exposent des types de contrôles invalides.

              D’autres changements sont en cours pour pouvoir changer la sortie audio sans avoir besoin de redémarrer le serveur média, mais ça ne fonctionne pas encore.

              registrar

              Le registrar surveille quelles sont les applications déjà lancées et fournit divers services de communication entre applications, en particulier pour le presse-papier.

              Ajout de vérification d’erreurs si un message de récupération du contenu du presse-papier échoue. Cela peut arriver si on a mis beaucoup de données dans le presse-papier et qu’il n’y a plus assez de mémoire disponible.

              Des corrections du côté de la libbe permettent maintenant de gérer ces erreurs et de ne pas faire planter l’application concernée.

              input_server

              L’input_server` se charge des périphériques d’entrée (clavier, souris…)

              Améliorations la validation des données des fichiers de configuration de souris, qui dans certains cas pouvaient empêcher la souris de fonctionner. Refonte de la gestion des accès concurrents à la liste des périphériques, pour supprimer des verrous inutiles et permettre les accès à la liste même si un thread de gestion d’un périphérique est bloqué. (madmax)

              Les codes de touches pour la touche power et la touche \_ des claviers japonais s’étaient retrouvés assignées à des valeurs identiques (cela semble provenir tout droit de changements datant de BeOS, car ces touches non présentes sur un clavier de PC américain classiques sont assez mal documentées). La documentation a été mise à jour pour mieux expliquer quels sont les codes utilisés, et les différents pilotes (PS2, USB) ont été harmonisés pour utiliser les mêmes codes (x512 et PulkoMandy).

              Le code power pourra également être utilisé par un pilote GPIO sur les machines où c’est nécessaire (souvent non compatibles PC).

              net_server

              Le net_server se charge de toutes les opérations liées au réseau.

              mmlr a corrigé un problème dans le client DHCP, qui utilisait certaines variables sans les initialiser.

              package_daemon

              Le package_daemon vérifie la cohérence des paquets installés avec leurs dépendances, crée les dossiers de transactions et de sauvegarde de l’état passé du système, et se charge de lancer les scripts d’activation et de désactivation de paquets. L’accès au contenu des paquets est en revanche traité dans le noyau par le système de fichier packagefs.

              Changement des couleurs des fenêtres « problèmes » et « résultats » qui apparaissent quand il y a des conflits ou d’autres problèmes de résolution de dépendances lors de l’activation des paquets (jscipione).

              Kits

              Les « kits » sont les composants de la bibliothèque standard de Haiku. Il s’agit principalement d’une convention de documentation et d’organisation de code source pour regrouper des fonctionnalités liées entre elles.

              Interface

              L’interface kit` permet l’ouverture de fenêtre et l’ajout de contrôles d’interface graphiques à l’intérieur de ces dernières.

              Les objets BBitmap (permettant de stocker une image « raster ») avec le flag ACCEPT_VIEWS (permettant d’attacher une « vue" pour dessiner dans le bitmap ne sont plus automatiquement effacés. Cela permet de créer un bitmap à partir de données existantes, puis de dessiner autre chose par-dessus. Ce changement corrige un problème de compatibilité avec BeOS, et permet aussi d’utiliser cette méthode dans l’implémentation de WebKit pour Haiku (ZardShard).

              Un changement précédent avait causé un problème de compatibilité d’API avec BeOS, qui déclenchait dans certains cas une récursion infinie et un crash lorsqu’on essayait de faire défiler une BListView par glisser-déplacer (par exemple dans l’application Wonderbrush). Waddlesplash a corrigé ce problème, et jscipione a également ajouté quelques améliorations sur la mise à jour des items sélectionnés lorsqu’on effectue cette opération.

              Il est maintenant possible d’afficher des « checkmarks » (coche indiquant une option activée) sur les items de menus disposés en « matrice ». Habituellement les menus sont soit disposés sur une ligne, soit sur une colonne avec les items les un au-dessous des autres. Le mode « matrice » permet de s’affranchir de ces restrictions pour disposer les items librement avec du code applicatif.

              Mise à jour en direct des couleurs dans les contrôles BSpinner, refonte de l’héritage des couleurs de la vue parente, et changement de la couleur de fond des boutons en mode sombre (jscipione).

              Centrage vertical des dates dans BCalendarView (permettant d’afficher un calendrier) (nipos).

              Factorisation de code dans BView pour l’envoi des données BShape vers app_server (x512).

              La méthode de debug BPoint::PrintToStream affiche maintenant les coordonnées avec des décimales, permettant de détecter les points qui ne sont pas alignés avec la grille de pixels (ayu-ch).

              Les boîtes de texte marquées comme « invalides » ont maintenant un fond rouge. La bordure rouge utilisée précédemment n’était pas assez visible (nephele).

              Media

              Le media kit permet aux applications de s’interfacer avec le media server, et fournit en plus une interface standardisée pour les codecs audio et vidéo.

              Ajout d’assertions dans la classe BTimeSource pour empêcher les applications d’envoyer des temps avec un « drift » inférieur ou égal à 0. Le « drift" est utilisé comme multiplicateur et diviseur dans les calculs d’horloge, donc les valeurs inférieures ou égales à 0 causent des problèmes. Ceci a été mis en évidence par des corrections au niveau du noyau (voir plus loin dans la dépêche) et a ensuite permis de trouver encore d’autres problèmes en particulier dans les add-ons media (waddlesplash).

              Locale

              Le « locale » kit permet la traduction des applications, le formatage des nombres en fonction des préférences de chaque pays, la gestion des fuseaux horaires, et toutes les autres problématiques liées à l’internationalisation. Il s’agit principalement d’un enrobage de la bibliothèque ICU pour faciliter son utilisation avec les types natifs de Haiku.

              Meilleure gestion des erreurs si la bibliothèque ICU ne peut pas être initialisée (waddlesplash).

              Support

              Le support kit contient diverses méthodes et classes utilitaires et génériques.

              Contrôle d’intégrité des données lors de la déserialisation de BMessage (waddlesplash).

              Correction d’incohérence de nommage de paramètres de fonction entre les fichiers .cpp et .h détectés par cppcheck (mt).

              Pilotes de périphériques

              Les pilotes sont indispensables pour assurer le fonctionnement de Haiku sur une grande variété de matériel. Certains sont développés à partir des spécifications du matériel spécifiquement pour Haiku, et d’autres ont été adaptés de travaux réalisés pour d’autres systèmes d’exploitation.

              Le niveau de logging par défaut a été abaissé dans certains pilotes afin de ne pas trop polluer le journal système, en particulier:

              • Suppression de messages indiquant qu’aucun matériel compatible avec le pilote n’a été détecté,
              • Suppression de certains logs de debug dans les pilotes audio HDA et usb_audio.

              Processeurs et économie d’énergie

              Renommage du pilote intel_cstates en x86_cstates puisque les processeurs récents de chez AMD sont également pris en charge par ce pilote.

              Appel à ce pilote à plus d’endroits dans le noyau pour mettre les processeurs en veille ou au ralenti quand ils ne sont pas utilisés.

              Réseau

              virtio_net

              Le pilote virtio_net (carte réseau utilisée dans les machines virtuelles) implémente maintenant le « checksum offloading » pour les protocoles IP, TCP et UDP. En effet, dans le cas de ce pilote, les vérifications et calculs de sommes d’intégrité doivent être faits de toutes façons du côté de la machine hôte, il est donc inutile de les refaire dans la machine virtuelle.

              Au passage, correction de quelques erreurs dans ce driver, et en particulier de problèmes de calcul de taille de buffers en mémoire.

              broadcom750x

              Utilisation des interruptions par messages (MSI) lorsque c’est nécessaire pour certaines versions du matériel (waddlesplash).

               vmxnet

              Nouveau pilote porté depuis FreeBSD qui permet d’utiliser l’interface réseau paravirtualisée de VMWare (CodeForEvolution).

               Couches de compatibilité BSD

              Haiku utilise des pilotes réseau venus de FreeBSD et OpenBSD, cela permet de mutualiser les ressources et de ne pas perdre du temps à réinventer la roue. Une couche de compatibilité permet de réutiliser les pilotes avec très peu de modification dans leur code et une simple recompilation.

              Cette approche est également utilisée par d’autres systèmes d’exploitation comme RTEMS.

              La couche de compatibilité a reçu des corrections de problèmes sur l’allocation de mémoire dédiée aux transferts DMA, ainsi qu’un problème sur le calcul de la taille d’un buffer de réception, qui empêchait les pilotes de fonctionner sur certains matériels.

               TCP

              Waddlesplash a travaillé sur l’amélioration de l’implémentation de TCP :

              • Refonte de la gestion des ACK reçus dans le désordre,
              • Amélioration du code de débogage pour investiguer des crashs du noyau remontés par quelques utilisateurs,
              • Modification du code de mise à jour de la taille de fenêtre TCP pour éviter d’envoyer inutilement des changements de taille,
              • Correction de calcul du temps d’aller-retour,
              • Implémentation du redimensionnement dynamique de la fenêtre de réception (auparavant, elle était de taille fixe),
              • Ajout d’assertions à divers endroits dans la pile réseau pour détecter les problèmes à la source.

              Ces améliorations permettent au trafic TCP d’être au moins 10 fois plus rapide, selon le type de connexion utilisé, et règle un problème de lenteur des téléchargements depuis Haiku qui était présent depuis assez longtemps.

               Ethernet

              Du côté d’Ethernet, quelques améliorations et nettoyages sur le calcul de la MTU (taille maximale d’un paquet qui peut être envoyé). Pour l’instant, la découverte du « path MTU », la MTU du chemin complet entre deux machines, n’est pas encore disponible. Haiku ne s’autorise donc pas à envoyer du trafic plus large qu’une trame Ethernet standard, même si cela pourrait être possible pour le réseau local. Il reste donc une amélioration potentielle des performances réseau dans certains cas.

               UNIX domain sockets

              Les sockets UNIX sont une méthode de communication entre processus standardisée par POSIX, utilisée surtout par des logiciels portés depuis d’autres systèmes (les applications natives pour Haiku utiliseront plus volontiers des BMessages ou des ports).

              Amélioration et nettoyage du code autour de la gestion des données annexes dans les sockets UNIX. Correction de petites fuites de mémoire et d’un kernel panic qui pouvait se produire lors de la fermeture d’un socket (waddlesplash).

              USB

              Implémentation de l’USB « Super Speed Plus », qui permet des connexions USB avec un débit pouvant atteindre 10 gigabits par seconde (korli).

              Refonte et consolidation du comptage de références dans la pile USB, ce qui met en évidence sous forme de kernel panic des cas où les choses ne sont pas bien faites. Ce n’est pas agréable, mais c’est tout de même mieux qu’une corruption mémoire difficile à investiguer (waddleplash).

              Décodage des descripteurs USB Audio v2 dans la commande listusb, mais pas encore dans le pilote usb_audio qui implémente pour l’instant seulement la version 1 (gscrain).

              PCI

              Correction de problèmes d’accès au bus PCI sur les machines équipées de ACPI. Suite à une modification précédente, les accès sur 8 ou 16 bits étaient convertis en accès sur 32 bits, mais ce n’est pas le comportement attendu. En particulier, certains registres effacent automatiquement leur contenu lorsqu’ils sont lus, ou bien les données accessibles en lecture et en écriture ne sont pas les mêmes. (PulkoMandy)

              Il n’est donc pas possible de lire une valeur sur 32 bits, remplacer 8 bits, et réécrire 32 bits pour simuler une écriture sur 8 bits dans un registre.

              Les accès sont à nouveau traités correctement, ce qui permet à Haiku de fonctionner à nouveau normalement sur les machines concernées par ce type d’accès au bus PCI (cela dépend du matériel et des pilotes).

              Périphériques de stockage

              Petites améliorations de performances dans le pilote NVMe (waddlesplash).

              Modification du pilote AHCI/SATA (waddlesplash) :
              - Suppression de code dupliqué pour utiliser à la place des fonctions communes partagées avec d’autres pilotes,
              - Correction d’une confusion entre adresses 32 et 64 bits qui empêchait de démarrer la version 32
              bits de Haiku sur certains systèmes avec plus de 4Gio de RAM.

              La pile SCSI prend mieux en compte les restrictions sur les adresses DMA. Chaque pilote de périphérique qui implémente SCSI peut indiquer ce qu’il est capable de faire, et la pile SCSI fait en sorte que les demandes de transferts DMA respectent ces contraintes, ce qui évite aux pilotes de devoir découper par eux-mêmes les transferts en unités qu’ils sont capables de traiter (waddlesplash).

              ACPI

              ACPI est une interface standardisée avec le matériel. Elle permet la gestion d’énergie (extinction de la machine par exemple), ainsi que l’accès à du matériel annexe tels que les boutons on/off, la détection de rabat de l’écran sur un PC portable, le contrôle des LEDs indicatrices ; ainsi que la découverte de matériel non connecté sur le bus PCI (comme certains modules eMMC dans des tablettes et ordinateurs à bas coût).

              La spécification étant assez complexe, la bibliothèque ACPICA est utilisée pour implémenter les bases de ACPI. Ensuite, des pilotes dédiés permettent d’exposer chaque périphérique ACPI.

              Mise à jour de ACPICA avec la dernière version publiée par Intel (publiée en mars), et un peu de nettoyage afin de pouvoir intégrer quelques patchs dans la version upstream de ACPICA (PulkoMandy).

              Ajustement du pilote ACPI pour mapper sa mémoire physique en « write back » au lieu de désactiver complètement le cache. C’est nécessaire sur ARM64, car le cache permet d’intercepter les accès mémoire non alignés. Correction de problèmes liés au fait que la même zone de mémoire physique pouvait être mappée plusieurs fois avec des configurations différentes, ce qui est impossible (déclenche une « machine check exception ») (oanderso).

              Graphiques

              Avancées sur la prise en charge des cartes graphiques Intel de générations Tiger Lake, Ice Lake et Gemini Lake (ttmfx, ilzu, PulkoMandy). L’utilisation de ces cartes graphiques reste assez limité, sans accélération matérielle et sans possibilité d’utiliser plusieurs écrans pour l’instant.

              virtio

              Les pilotes virtio permettent l’utilisation de matériel virtuel défini pour tirer le meilleur parti des machines virtuelles. Plutôt que de copier le fonctionnement d’un matériel existant, l’interface peut être conçue pour rendre le travail plus simple aussi bien pour l’hôte que pour le système virtualisé.

              Correction de problèmes dans l’allocation des files de messages virtio et amélioration de la gestion des erreurs (mmlr).

              Vérification de l’état du périphérique après une réinitialisation, et correction d’un accès mémoire hors limite dans le pilote virtio_pci (korli).

              PS/2

              Les ports PS/2 ont disparu de la plupart des machines depuis de nombreuses années, mais le protocole est encore utilisé pour les claviers des ordinateurs portables ainsi que pour certains touchpads. Ces derniers utilisent de nombreuses extensions peu standardisées et mal documentées pour offrir des fonctions avancées qui n’existaient pas à l’époque des souris à deux boutons.

              Le driver reçoit ce trimestre une refonte de la gestion des verrous entre ses différents composants, pour essayer de régler quelques problèmes de synchronisation (waddlesplash).

              Systèmes de fichiers

              ram_disk et ramfs

              ram_disk est un périphérique bloc (block device) qui stocke ses données en RAM (non persistante au redémarrage). Il peut être formaté avec n’importe quel système de fichier.

              ramfs est un système de fichiers qui stocke ses données en RAM, sans passer par un block device. Cela permet de meilleures performances (pas besoin de journalisation par exemple), une meilleure intégration avec le cache de fichiers (la mémoire peut être partagée directement entre ramfs et le cache), et de s’affranchir des limites habituelles des périphériques de bloc (par exemple: une taille fixe connue lors de la création du système de fichiers).

              Un utilisateur a remonté un problème de compatibilité avec POSIX. Si on utilise mmap() sur un fichier stocké dans un ramfs, et que la taille du fichier n’est pas un multiple de la taille des pages de mémoire, la fin de la dernière page pouvait contenir des données aléatoires. Selon la spécification POSIX, il faut que cette zone soit remplie avec des 0, et le compilateur clang dépend de ce comportement pour implémenter une lecture rapide des fichiers sources compilés.

              Le problème a été corrigé, avec au passage une commonalisation de code entre ramfs et ram_disk, de petits ajustements de performances, et un peu de nettoyage.

              Enfin, la priorité des allocations mémoires de ces deux pilotes a été abaissée, ce qui permet d’éviter un gel du système s’il n’y a plus de mémoire disponible.

              Le pilote ramfs continue d’être stabilisé, quelques problèmes qui pouvaient encore causer des kernel panic ont été corrigés.

              packagefs

              packagefs est un système de fichier virtuel qui expose le contenu de fichiers de packages au format hpkg. Des paquets peuvent être ajoutés et supprimés pendant le fonctionnement du système, et il n’est pas nécessaire d’extraire leurs données sur disque.

              Plusieurs améliorations faites par waddlesplash :

              • Ajout de vérifications de la bonne utilisation de verrous entre différents threads et corrections de problèmes mineurs qu’elles ont mis en évidence,
              • Amélioration du message d’erreur si on essaie d’activer deux paquets qui entrent en conflit.

              Un reproche qui est souvent fait au packagefs est d’avoir augmenté les besoins en RAM de Haiku, en effet, depuis la version Beta 1 de Haiku, la configuration mémoire minimum recommandée est de 384Mio de RAM, alors que les versions précédentes se contentaient de 128Mio.

              • Utilisation d’object_cache` (un allocateur mémoire pour des objets qui font tous la même taille) dans différents endroits de packagefs pour réduire sa consommation de mémoire,
              • Utilisation de listes chaînées simples au lieu de listes chaînées doubles là où ça ne pose pas de problème de performances,
              • Suppression de champs constants dans certaines classes,
              • « inlining » des compteurs de références pour rendre les structures de données plus compactes,
              • Réorganisation des structures pour réduire le padding,
              • Retrait des « dépôts d’objets » dans les arènes d'allocation,
              • Découpage des allocations en plusieurs zones distinctes,
              • Utilisation de verrous moins fins (par exemple, avoir un seul verrou pour tout un dossier au lieu de un par fichier),
              • Utilisation d’un « bump allocator » pour les objets à courte durée de vie.

              La réduction de consommation mémoire avec ces changements est de près de 20%, soit environ 15Mio sur une installation de référence. En effet, un gain de quelques octets sur le stockage d’informations sur un fichier est multiplié par plusieurs milliers de fichiers présents sur le disque, ce qui fait que chaque petite optimisation est intéressante. Cependant, les investigations ont aussi permis de découvrir d’autres problèmes encore plus importants qui n’étaient pas directement liés au packagefs, on en reparle un peu plus loin.

              Un autre changement a été fait par waddlesplash, non seulement pour packagefs mais aussi pour d’autres endroits où le même code était utilisé : La fonction pour calculer un hash de chaîne de caractères utilisait un algorithme obsolète. Elle a été remplacée par hashdjb2 qui génère moins de collisions.

              FAT

              FAT est un système de fichier développé par Microsoft. Il est utilisé en particulier sur les cartes SD et les clés USB, ainsi que pour les partitions systèmes EFI. Bien que sa conception soit quelque peu obsolète, il reste donc indispensable.

              Le pilote FAT de Haiku, qui provenait tout droit d’un code source publié par Be, a été remplacé dans la version beta 5 par une nouvelle version basée sur le code de FreeBSD. Ce nouveau pilote reçoit depuis des améliorations régulières par Jim906, le développeur qui s’est chargé du portage du code de FreeBSD.

              Ce trimestre, le pilote reçoit des corrections sur l’initialisation des « media bytes » dans l’en-tête des partitions, des améliorations de performances pour réduire le temps nécessaire au montage d’une partition FAT, ainsi qu’une meilleure gestion des erreurs dans le traitement des noms de volumes. Il est également possible de monter les volumes FAT de taille supérieure à 2TiO.

              BFS

              BFS est le système de fichier hérité de BeOS et utilisé pour les partitions natives de Haiku. Il propose une très bonne implémentation des attributs étendus (sans limite de taille, et typés) et permet en plus d’exécuter des requêtes sur ces attributs pour localiser très rapidement les fichiers répondant à certains critères.

              L’implémentation du système de fichier BFS est assez mûre et reçoit habituellement peu d’évolutions. Cependant, il reste toujours des possibilités d’améliorer les performances.

              C’est le cas de la fonction de recherche de blocs libres. Les blocs sont chacun représentés par un bit dans une structure indiquant s’ils sont disponibles ou pas. La recherche de blocs libres se faisait bit à bit, mais il est possible de gagner beaucoup de temps en testant 64 bits d’un coup pour savoir tout de suite qu’ils représentent tous des blocs occupés, et passer directement aux 64 bits suivants. Cela améliore les performances de la création et du redimensionnement de fichier, en particulier sur les architectures RISC-V (waddlesplash).

              Query parser

              Plusieurs systèmes de fichiers conçus pour BeOS ou Haiku (bfs, ramfs, et packagefs) permettent l’utilisation d’attributs indexés par le système de fichiers qui permettent d’effectuer des requêtes pour localiser des fichiers comme dans une base de données.

              Depuis la version beta 5 de Haiku, ces 3 systèmes de fichiers partagent le code utilisé pour parser une requête (envoyée sous forme de texte) et la convertir en une opération de recherche exécutable.

              Ce parser pouvait dans certains cas (requêtes trop complexes) déclencher volontairement un kernel panic. Celui-ci a été remplacé par une « simple » erreur, remontée à l’application qui a déclenché la requête. L’application aura la charge de remonter cette erreur à l’utilisateur, et de l’inviter à simplifier sa demande.

              block_cache

              Le cache de blocs, comme son nom l’indique, stocke en mémoire RAM une copie de certains blocs des systèmes de fichiers. Cela permet d’accélérer les opérations bas niveau sur le système de fichier, en particulier pour mettre en cache des structures internes du disque. Il complète le file_cache, qui lui se trouve à un niveau plus haut, et met en cache uniquement le contenu des fichiers lus et écrits par les applications.

              Le seul changement notable sur le block_cache est le retrait de paramètres inutilisés dans certaines fonctions, afin de simplifier le code (waddlesplash).

              kernel

              Une correction de bug sur le blocage des threads avec timeout (par exemple, l’attente d’un mutex ou d’un sémaphore avec un délai maximum): dans certains cas, une fonction pouvait retourner B_TIMED_OUT pour d’autres raisons que l’expiration du timer. Ce n’était pas traité correctement, et le noyau supposait que le timeout avait expiré, alors qu’il s’agissait d’autre chose. Des vérifications supplémentaires permettent de traiter ce cas correctement.

              Correction de problème sur la programmation des timeouts « absolus temps-réel ». Comme leur nom l’indique, ils référencent l’horloge « real time » (qui essaie de suivre l’heure et la date « réelle », par opposition à l’horloge système qui est basée sur l’uptime de la machine, mais garantit de ne jamais faire de saut ou revenir en arrière). Ces timers ne fonctionnaient pas du tout (ou alors, seulement sur un coup de chance), et restaient probablement bloqués pendant une durée beaucoup plus longue que demandé. Au passage, nettoyage du code de gestion des timers.

              Dans le code de gestion des interruptions: ajout d’assertions pour investiguer un bug dans les addons vmware ou virtualbox.

              Correction d’un bug dans l’implémentation de kqueue qui produisait un blocage au démarrage de la libevent (qui utilise maintenant kqueue pour Haiku).

              Des petites améliorations de performances: sur l’allocateur mémoire du noyau, sur l’utilisation de verrous dans la gestion de la mémoire virtuelle, des fuites de mémoire dans l’allocation de page, des améliorations sur la détection de références devenues invalides (jpelczar + waddlesplash).

              Le script de link du noyau refuse maintenant les sections inconnues avec un message d’erreur, au lieu de simplement les ignorer (korli).

              Correction du décompte du temps CPU utilisé par le thread en cours d’exécution, pour donner des résultats plus fiables dans les applications qui affichent l’utilisation CPU (waddlesplash).

              Refactorisation du décompte du temps d’exécution des appels systèmes. Seul le temps passé dans l’exécution du syscall est prise en compte, sans mesurer la mise en place d’un appel système et du retour vers l’espace utilisateur (qui ne peuvent de toutes façons pas être mesurées de façon fiable depuis le noyau). Cela rend l’affichage des durées d’exécution dans strace plus facile à interpréter (waddlesplash).

              Réduction de la taille maximale des tampons mémoire pour stocker des dirent à 8Kio. La plupart des applications n’utilisent pas un tampon aussi large, et les quelques-unes qui le faisaient ont été modifiées pour réduire la taille. Cette réduction permet d’utiliser un allocateur spécialisé beaucoup plus rapide, ce qui devrait compenser les rares cas où le tampon est trop petit pour récupérer tout le contenu d’un dossier en une seule fois (waddlesplash).

              Correction de plusieurs problèmes dans le système de gestion des ressources faibles (qui essaie de libérer de la mémoire quand il n’y en a plus assez de disponible). Dans certains cas, le système finit par geler ou déclencher un kernel panic, alors qu’il devrait toujours être possible de refuser des demandes d’allocation mémoire venant de l’espace utilisateur, et de conserver suffisamment de mémoire libre pour au moins afficher proprement une erreur.

              Amélioration de la gestion des mutex (exclusions mutuelles entre threads):

              • Ajout d’assertions pour détecter des cas de réveil d’un thread qui ne devrait pas l’être.
              • Correction d’un problème introduit récemment et investigué à l’aide de ces nouvelles assertions.
              • L’ABI des locks est identiques entre les builds du kernel en version debug ou release, ce qui permet de ne pas avoir besoin de recompiler tous les pilotes dans le même mode que le kernel. Les pilotes compilés en mode release vont déclencher une erreur de symbole manquant si on essaie de les utiliser avec un noyau en mode debug, dans l’autre sens, il n’y a pas de problème. Auparavant, dans les deux cas on obtenait des crashes ou un gel complet du système, difficile à investiguer et faisant perdre du temps.
              • Ajout d’assertions dans plusieurs cas pour détecter les utilisations incorrectes des rw-locks. Certaines activées par défaut, et d’autres uniquement sur demande à la compilation du noyau en raison de coût de vérification trop importants.
              • Correction de mauvaises utilisations des rwlocks ainsi détectées.

              Généralisation de l’utilisation de fonctions utilitaires partagées pour la conversion des timespec en durées en microsecondes. Cela permet aux fonctions concernées (entre autres kqueue) de bénéficier de contrôles de validité supplémentaires (waddlesplash).

              Ajout d’informations de debug supplémentaires dans la sortie de la commande slab_object du debugger du noyau.

              Réactivation de la calibration du TSC à partir d’informations du CPUID lorsque Haiku s’exécute dans un hyperviseur, comme c’était déjà le cas lorsqu’il s’exécute directement sur une machine physique. Le TSC est un timer interne du CPU qui permet des mesures de temps très rapides (une seule instruction CPU) mais dans une échelle de temps arbitraire qu’il faut corréler avec le « vrai » temps. Cela peut être fait soit à l’aide d’une mesure empirique (méthode historique), soit à l’aide d’informations sur cette horloge disponibles dans les informations retournées par l’instruction CPUID.

              Affichage de plus de fonctionnalités du CPU reconnues dans les logs de debug pour les processeurs x86 (korli).

              Ajout d’un raccourci clavier (Control+D) pour quitter le debugger noyau et reprendre l’exécution normale si possible (équivalent à la commande continue ou co) (mmlr).

              Le chargement des pilotes de périphériques se fait en priorité depuis les dossiers non-packaged avant de rechercher les fichiers dans les paquets logiciels, ce qui permet de tester facilement une version modifiée d’un pilote - sauf si les dossiers non-packaged sont désactivés dans la configuration du noyau (korli).

              VFS

              Le VFS (virtual file system) est le composant de Haiku qui gère l’accès aux fichiers. Il fait l’intermédiaire entre les appels systèmes liés aux fichiers (open, read, write…) et les systèmes de fichiers eux-mêmes. Il implémente autant que possible ce qui peut être mis en commun entre tous les systèmes de fichiers: résolution de chemins relatifs, vérification de permissions…

              Cela rend plus facile l’écriture d’un nouveau système de fichiers, qui peut alors se concentrer sur les aspects bas niveau et la gestion de ses structures de données.

              Ajout de vérifications d’intégrités supplémentaires dans le VFS pour détecter des bugs dans les systèmes de fichiers le plus rapidement possible, au lieu d’obtenir un crash du noyau difficile à investiguer un peu plus tard.

              Retrait d’un scan du bus SCSI et des pilotes associés par le device manager pour réduire un peu le temps de démarrage.

              Correction d’un gros problème dans l’API du noyau IORequest qui aboutissait à une confusion entre la taille totale d’une requête et l’offset de la dernière donnée transférée (les transferts ne commençant pas forcément à l’offset 0). La conséquence était l’écrasement de données dans le cache de fichiers, déclenchant des crashes du noyau avec des messages d’erreur incompréhensibles à propos des structures de pages. Correction d’un problème de calcul d’offset qui faisait que certaines opérations étaient considérées comme réussies, alors qu’il y avait en fait une erreur.

              Correction de problèmes de décomptage de références et de gestion du cache à l’interface entre ramfs et VFS, mis en évidence lors du travail de portage de Firefox.

              Ajout d’une acquisition de référence sur un vnode qui manquait dans le cache de fichiers (waddlesplash).

              Améliorations du cache d'entrées, dont en particulier la mise en cache du hash des noms de fichiers, pour éviter des comparaisons de chaînes de caractères inutiles.

              Gestion de la mémoire

              La gestion de la mémoire virtuelle est une des tâches essentielles d’un système d’exploitation. Elle garantit l’isolation entre les différents processus, permet d’utiliser la mémoire physique le mieux possible (éventuellement en déplaçant certaines allocations peu utilisées vers un espace d’échange sur disque), et permet aussi aux différents processus de se partager des données.

              Il s’agit également d’un composant très sollicité, et dont les performances impactent beaucoup le comportement du système. Une mauvaise gestion de la mémoire peut fortement ralentir le système ou le rendre instable.

              Ajout d’assertions dans le code gérant les pages de mémoire, pour essayer d’intercepter ce type de correction plus rapidement si elles se reproduisent.

              Dans l’arbre des areas globales : ajout d’assertions pour détecter les identifiants d’areas dupliqués (chaque area doit bien sûr avoir un identifiant unique).

              Implémentation de PAT (Page Attribute Table) pour les processeurs x86. Les PAT permettent de configurer des zones de mémoires qui peuvent ou ne peuvent pas être mises en cache (complètement ou en write-through). Elles remplacent les MTRR en permettant un contrôle plus fin et plus flexible. Au passage, nettoyage de l’implémentation des MTRR (préservée pour les processeurs plus anciens incompatibles avec PAT), ajout de nouvelles commandes dans le debugger noyau. Renommage des constantes B_MTR_* pour indiquer précisément leur rôle indépendamment des dénominations utilisées dans les registres MTRR qui ne sont pas très claires (mmlr).

              Lorsque le système utilise PAT, ajout d’assertions pour détecter les tentatives d’accéder à la même zone de mémoire physique avec des configurations de cache différentes. Elles ne sont pas activées lorqu'on utilise les MTRR, car ces dernières ne permettent pas une configuration aussi fine (waddlesplash).

              Ajout d’informations supplémentaire dans le message de kernel panic indiquant qu’une page devrait être libre mais qu’elle ne l’est pas. Modification de la commande page du debugger noyau pour récupérer la liste des espaces d’adressage depuis les structures du kernel plutôt que d’itérer sur tout l’espace d’adressage (ce qui pouvait fonctionner sur un espace 32 bit, mais pas en 64 bit).

              Correction du code de « guarded heap » du noyau qui ne compilait plus. Il s’agit d’un allocateur mémoire plus lent mais avec de nombreuses vérifications d’intégrité pour détecter les débordements de tampons, double free, et autres problèmes de gestion de la mémoire dans le noyau (kallisti5).

              Le fichier swap est automatiquement supprimé, et l’espace disque libéré, lors de la désactivation de la swap. Auparavant, un redémarrage était nécessaire (waddlesplash).

              Correction d’un problème dans l’allocation de mémoire « early boot » (avant que l’allocation normale soit mise en place), qui empêchait le démarrage sur les systèmes pouvant gérer de grandes quantités de mémoire (plusieurs centaines de Gio) (waddlesplash).

              libroot

              La libroot regroupe tous les composants de la librairie standard C (parfois découpée en libc, libm et libpthread pour d’autres systèmes). Elle contient en plus un certain nombre d’extensions spécifiques à Haiku et à BeOS.

              Changements effectués par waddlesplash, sauf mentions spécifiques:

              Nettoyage de code dans la classe WeakReferenceable, une classe de comptage de références intrusive qui autorise les références "faibles".

              Correction de problèmes dans le code d’interfaçage avec ICU pour la conversion de dates (nipos et waddlesplash).

              libnetwork

              Nettoyage de code de compatibilité avec BeOS dans la libnetwork, pour faire en sorte qu’il ne soit plus du tout compilé sur les architectures n’offrant pas de compatibilité avec BeOS.

              Compatibilité POSIX

              Implémentation minimale de mknod et mknodat dans le seul cas spécifié par POSIX, qui permet de réaliser une opération équivalente à mkfifo. La gestion des devices dans Haiku est très différente de celle utilisée traditionellement par UNIX, et ne se prête pas à l’implémentation des autres utilisations de ces fonctions.

              Rectification de l’implémentation des fonctions *at (par exemple linkat) qui permettent de réaliser une opération à partir d’un descripteur de fichier au lieu d’un path. Dans la libroot, ces fonctions envoyaient la valeur -1 aux appels systèmes pour implémenter AT_FDCWD. La valeur de AT_FDCWD a été modifiée pour choisir autre chose que -1 (qui est souvent utilisé pour indiquer une erreur dans le code de retour d’autres fonctions). Les appels systèmes acceptent pour l’instant les valeurs -1 et AT_FDCWD, mais rejettent maintenant toutes les autres valeurs négatives.

              Remplacement d’une partie du code de gestion des flux d’entrée-sortie par la version de la glibc. La bibliothèque libroot est un patchwork d’implémentations provenant de la glibc, de musl, et de divers BSD, un objectif à terme est d’essayer de se rapprocher d’une de ces implémentations, mais on ne sait pas encore trop de laquelle. En tout cas, le code des I/O provient majoritairement de la glibc afin d’être très compatible avec ce qui était utilisé dans BeOS.

              La fonction gmtime retourne une struct tm avec le champ tm_zone contenant la chaîne "GMT" (waddlesplash).

              Correction de la conversion des "surrogate pairs" dans la fonction mbrtowc.

              Mise en conformité de l’implémentation des threads avec POSIX :

              • Ajustement de code d’erreurs retournés par les fonctions
              • Suppression de la possibilité de retourner EINTR depuis un rwlock
              • Correction de deadlocks dans les barriers
              • Correction de plusieurs problèmes dans l’implémentation des sémaphores anonymes.

              Mise en place systématique de l’utilisation de _DEFAULT_SOURCE pour protéger les extensions à la norme POSIX, ce qui permet de les activer automatiquement via l’inclusion de features.h lorsque c’est possible.

              Nettoyage de quelques fichiers d’en-tête, dont en particulier <sys/select.h>, pour éviter de polluer l’espace global avec des macros et des définitions en double (waddlesplash).

              Prise en compte correcte du drapeau O_NONBLOCK lors de l’ouverture d’un FIFO (korli).

              runtime_loader

              Le runtime_loader est le composant responsable du chargement en mémoire des exécutables et du lancement de nouveaux processus. Il réalise la résolution des dépendances et la recherche des bibliothèques partagées nécessaires pour l’exécution d’un programme.

              Il reçoit des évolutions suite au portage d’applications complexes venues de Linux, qui nécessitent souvent plusieurs dizaines de bibliothèques partagées.

              Correction de problèmes détectés en testant un portage expérimental et instable de Firefox: crash du runtime_loader dans certains cas si on charge une bibliothèque (via dlopen ou load_add_on) dont il manque des dépendances.

              Retrait de l’option -fno-builtin dans les drapeaux de compilation du runtime_loader, comme cela avait déjà été fait pour la majorité de la libroot. Cela permet à gcc de remplacer des appels à des fonctions standardisées par une implémentation inline plus performante (waddlesplash).

              Outils de debug

              Développement d’outils pour enregistrer ce qu’il se passe pendant le démarrage du système et détecter d’éventuels problèmes de latence, de 'lock contention', etc. Au passage, correction de divers problèmes liés à ces outils : les barres de défilement de DebugAnalyzer, les permissions noyau dans transfer_area, etc.

              Amélioration de la remontée des valeurs de retour des appels systèmes vers strace sur les plateformes x86 32-bit.

              Pour terminer, un changement réalisé par mmlr : amélioration de l’allocateur mémoire "guarded heap" pour le rendre utilisable plus facilement, y compris comme allocateur pour tout le système. Cet allocateur permet de détecter les accès au-delà de la fin d’une zone mémoire allouée avec malloc(), ainsi que les accès à de la mémoire déjà libérée, mais au prix d’une consommation mémoire nettement plus élevée qu’un allocateur classique. La disponibilité d’un espace d’adressage de 64 bits permet de limiter les cas où une adresse mémoire est initialement utilisée pour une allocation, puis libérée et allouée à nouveau pour autre chose.

              Un problème de gestion d’erreur dans l’interfaçage entre le Debugger et le noyau pouvait conduire à un gel complet du système dans certains cas de plantage du debug_server, en particulier s’il n’y a plus assez de mémoire RAM disponible.

              Bootloader

              Ajout d’une vérification manquante pour prendre en compte l’option « BlockedEntries » dans le bootloader. Cette option s’appelait précédemment « EntriesBlacklist » mais a été renommée pour utiliser un terme non entaché de racisme. L’ancien nom continue de fonctionner pour ne pas casser les installations existantes, mais n’est plus documenté.

              Augmentation de la taille maximum autorisée pour les allocations « standard » sur la pile. L’allocateur mémoire du bootloader traite séparément les allocations de grande taille, mais ces allocations ne sont pas correctement libérées lors du transfert de contrôle vers le noyau, en particulier sur les machines utilisant un BIOS non EFI. Pour l’instant, une correction complète du problème semble compliquée à mettre en place, mais la modification permet de libérer de la mémoire allouée pour l’accès au packagefs (le bootloader a besoin d’y accéder pour trouver le noyau, qui est stocké dans un paquet). Ce changement permet de libérer plusieurs dizaines de Mio de mémoire, et complète les changements mentionnés plus haut sur la gestion des paquets après démarrage. Il est possible de configurer Haiku pour fonctionner avec moins de 100Mio de mémoire (waddlesplash).

              Réparation de la ré-initialisation des ports série sur le bootloader EFI. Le port série est utilisé à des fins de debug, mais il peut être accédé de plusieurs façons différentes (en adressant directement le matériel, ou bien via des services EFI dédiés). Le bootloader doit passer d’une méthode à l’autre à différentes étapes du démarrage: accès direct au port physique dans les premières étapes (en détectant s’il est bien présent à une adresse standard), accès via les services EFI une fois ceux-ci initialisés, puis à nouveau accès direct au matériel après l’arrêt des services EFI pour la dernière étape de passage de contrôle au noyau (cette fois-ci à une adresse qui peut être configurée dans les options du bootloader et du noyau). Ce fonctionnement ne s’insère pas forcément très bien dans la logique du bootloader, qui n’avait à l’origine pas été conçu pour une gestion aussi complexe des entrées-sorties (VoloDroid).

              Réduction de la quantité de logs liés à la mise en place de SMP (gestion de plusieurs processeurs) dans le bootloader pour BIOS (waddlesplash).

              Le menu de démarrage affiche la version (numéro 'hrev') du paquet système correspondant à chaque point de restauration disponible, ce qui facilite l’identification des états qui correspondent à un changement de version du système, et pas une simple installation, désinstallation ou mise à jour de paquets logiciels (waddlesplash).

              Documentation

              Haiku Book

              Le « Haiku Book » est un projet de documentation des APIs publiques de Haiku. Il doit à terme remplacer le « Be Book », qui documente les APIs de BeOS, mais ne peut pas être mis à jour à cause de se license CC BY-NC-ND. Actuellement, il faut jongler entre ces deux documentations.

              La documentation de B_INFINITE_TIMEOUT (constante permettant d’indiquer à certaines fonctions qu’on veut les exécuter sans timeout, et attendre indéfiniment) a été mise à jour pour indiquer explicitement que sa valeur numérique est INT64_MAX (waddlesplash).

              Correction de fautes de frappe dans la documentation des API liées aux entrées clavier (drea233).

              Haiku Interface Guidelines

              Ce document présente les bonnes pratiques et conventions pour la conception d’interfaces graphiques fonctionnant avec Haiku.

              Ajout d’une section sur la gestion des fichiers récemment utilisés et la façon dont ils peuvent être exposés aux utilisateurs.

              Wiki et documentation interne

              Le wiki contient des informations utiles aux développeurs de Haiku.

              La documentation « interne" documente le fonctionnement de Haiku en s’adressant principalement aux contributeurs du système, par opposition aux personnes qui souhaitent seulement développer ou porter des applications.

              Mise à jour de la page « release cookbook » indiquant toutes les étapes à suivre lors de la publication d’une version de Haiku.

              Notes d’administration système : mise à jour des instructions pour instancier des machines Google Cloud Platform (kallisti5).

              Système de build, environnement de compilation

              La compilation d’un système d’exploitation complet n’est pas chose facile. D’autant plus pour Haiku, qui présente les particularités suivantes:

              • Utilisation de deux versions de gcc (gcc 2.95.3 et gcc 13) pour la version 32 bit de Haiku, afin d’assurer la compatibilité binaire avec BeOS,
              • Possibilité de compilation croisée depuis Linux, Mac OS et d’autres systèmes, ou depuis un hôte Haiku,
              • Compilation d’outils pour la machine hôte de la compilation croisée, avec si nécessaire une couche de compatibilité permettant d’écrire ces outils en utilisant des API et fonctionnalités spécifiques à Haiku,
              • Possibilité de compiler des applications pour un système hôte existant (une autre version de Haiku) à des fins de test,
              • Compilation d’un système complet (noyau, bibliothèques, applications, image disque) en une seule opération.

              Pour ces raisons, l’utilisation d’un système de build haut niveau (CMake, Meson…) s’avère plutôt complexe. L’utilisation de make ou de ninja directement serait de trop bas niveau. Le choix de Haiku est donc d’utiliser l’outil jam, qui est malheureusement assez peu populaire et tombé à l’abandon dans sa version originale. Haiku maintient un fork de jam qui est concurrent de ceux maintenus par Boost et par Freetype.

              Reformatage des fichiers Jamfile pour lister une seule cible par ligne au lieu de les rassembler, cela facilite les rebase et résolutions de conflits (x512).

              Mise à jour de paquets en préparation pour la version beta 5: OpenSSL 3, Python 3.10, et autres mises à jour diverses (PulkoMandy, waddlesplash, kallisti5).

              Ajout de l’inclusion de <features.h> dans <sched.h>. Le fichier d’en-tête features.h configure la visibilité des extensions GNU et BSD aux fichiers d’include standards C et POSIX, en fonction d’options de ligne de commande du compilateur. L’inclusion de ce fichier permet d’utiliser facilement et par défaut ces extensions (PulkoMandy).

              Mise à jour des marque-pages fournis par défaut avec le navigateur WebPositive (waddlesplash).

              Ajout des en-têtes de la bibliothèque linprog dans le paquet haiku_devel. Ces en-têtes sont nécessaires pour les applications associées au système de layout d’interfaces graphiques ALM (korli).

              Correction de fautes de frappe dans des commentaires (jmairboeck) et d’un problème de compatibilité C89 dans un en-tête système (waddlesplash).

              La taille des images « nightly build » de Haiku est maintenant de 650 Mo, ce qui laisse un peu plus de place disponible pour les utiliser et créer quelques fichiers (jscipione).

              Diverses corrections pour une nouvelle fois essayer de faire fonctionner la compilation de Haiku avec Clang (waddlesplash, oanderso). Les choses en sont toujours au même point depuis plusieurs années, avec des corrections de temps en temps mais quelques parties du système qui ne fonctionnent toujours pas correctement.

              La compilation du profil « nightly » n’a plus besoin de générer le paquet haiku_source contenant le code source de Haiku. Ce paquet est inclus uniquement dans les images de releases (pour faciliter le respect strict de la licence GPL de certains composants de Haiku), mais, pour des raisons de dépendances entre cibles dans le système de build, il était tout de même généré pour les autres profils, ralentissant la compilation (waddlesplash).

              Améliorations du script ./configure (jessicah, OscarL et waddlesplash):

              • Le script vérifie que les options passées fournies sont valides, et rejette immédiatement les configurations incohérentes plutôt que de laisser la compilation échouer bien plus loin.
              • Validation que l’interpréteur Python sélectionné existe bien, et uniformisation de la syntaxe utilisée pour choisir un interpréteur avec la façon dont c’est fait pour d’autres outils.
              • Détection des options disponibles pour demander à wget de ré-essayer un téléchargement en cas d’échec, ce qui permet d’assurer la compatibilité avec wget2.
              • Utilisation automatique d’une version moderne de GCC pour compiler les outils « hôtes » lors de la compilation à partir d’une machine hôte fonctionnant sous Haiku en version 32 bit, en ignorant le compilateur par défaut qui est gcc 2 pour des raisons de compatibilité avec BeOS.

              Réorganisation du code source de libroot pour déplacer les implémentations de malloc dans des sous-dossiers séparés, et faciliter l’expérimentation avec d’autres implémentations de malloc. L’allocateur hoard2 utilisé actuellement n’est pas adapté aux architectures 64 bits, une tentative a été faite il y a quelques années avec rpmalloc, mais ce dernier pose des problèmes sur les
              architectures 32 bits. Des investigations sont en cours avec l’implémentation de malloc d’OpenBSD.

              L’outil de dessin Wonderbrush est maintenant disponible sur toutes les architectures. Historiquement, le code de Wonderbrush n’était pas libre, mais une version gratuite était offerte aux utilisateurs de Haiku. Le développeur principal de Wonderbrush n’est plus très actif sur le projet et a décidé de publier les sources, ce qui a permis de recompiler le programme en version 64 bits et plus tard sur les autres architectures non x86. Mais ces nouvelles versions n’avaient jamais été incluses dans Haiku (PulkoMandy).

              Nettoyage et centralisation des définitions préprocesseur pour la compatibilité avec BeOS. Désactivation de la compatibilité avec BeOS dans le noyau, la compatibilité avec les pilotes et modules noyau de BeOS n’étant plus assurée depuis quelque temps dans Haiku.

              Suppression de définitions de règles obsolètes et inutilisées dans le Jamfile permettant de construire le fichier package_repo (CodeforEvolution).

              Remise en service du test DiskDeviceManagerTest qui ne compilait plus (waddlesplash).

              ARM & PowerPC

              Actuellement, Haiku est disponible officiellement pour les architectures x86 32 et 64 bits. Une version RISC-V 64 bits expérimentale est également disponible mais pas encore totalement intégrée dans le dépôt de code principal, des discussions sont en cours sur la bonne façon de faire certains changements nécessaires. Les versions ARM (32 et 64 bits) et PowerPC sont les prochaines cibles sur la liste. La première, car c’est une architecture très populaire, la deuxième plutôt pour des raisons historiques : c’est l’une des architectures sur lesquelles fonctionne BeOS.

              Renommage de structures qui étaient initialement spécifiques à l’architecture x86, mais qui sont finalement utilisées également sur d’autres CPU sans nécessiter de changements (waddlesplash).

              Réparation de la console de texte du chargeur de démarrage OpenFirmware qui était cassée depuis l’adaptation pour OpenBOOT sur les machines SPARC (zeldakatze).

              Sur ARM, utilisation de la bonne instruction CPU pour mettre le processeur en veille quand il n’y a rien à faire (archeYR).

              oanderso continue le travail sur le portage ARM64:

              • Correction de plusieurs problèmes liés à la gestion du cache et de la MMU dans le bootloader, ce qui permet de démarrer le noyau dans une machine virtuelle sur un hôte Apple M1.
              • Correction de l’implémentation des timers dans le kernel qui ne fonctionnait pas dans les environnements virtualisés.
              • Quelques avancées sur la gestion de la MMU : Implémentation de la table de translation de la mémoire virtuelle, du traitement des exceptions matérielles (défauts de page), des TLBs.
              • Synchronisation du cache d’instructions.
              • Correction de problèmes de double lock.

              Ajout de messages sur le port série traçant l’exécution de méthodes spécifiques à une architecture qui ne sont pas encore implémentées. Ceci permet de détecter facilement quelle est la prochaine fonction à implémenter (waddlesplash).

              Nettoyage et documentation du fichier ArchitectureRules pour simplifier la configuration des options en ligne de commande du compilateur (qui doit savoir traiter deux versions de gcc et clang) (waddlesplash).

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • FreeCAD 1.0
                FreeCAD est sorti le 18 novembre 2024 en version 1.0 (voir l'annonce officielle et sa vidéo associée). Cette sortie est marquée par une amélioration majeure : l'atténuation du problème de dénomination topologique. lien nᵒ 1 : Site officiellien nᵒ 2 : Le forum officiel multilanguelien nᵒ 3 : Notes de versions de la sortie de la version 1.0lien nᵒ 4 : Versions publiées de FreeCADlien nᵒ 5 : Blog FreeCAD : annonces, suivi avancement, tutorielsSommaire Qu'est-ce que FreeCAD ? Historique Le probl

              FreeCAD 1.0

              FreeCAD est sorti le 18 novembre 2024 en version 1.0 (voir l'annonce officielle et sa vidéo associée). Cette sortie est marquée par une amélioration majeure : l'atténuation du problème de dénomination topologique.

              Nouveau logo FreeCAD

              Sommaire

              La dernière dépêche sur FreeCAD remonte à avril 2021 pour la sortie de la version 0.19. Depuis, il y a eu les versions 0.20 (juin 2022) et 0.21 (août 2023). Cette version 1.0 a porté le nom de 0.22 pendant son développement.

              Qu'est-ce que FreeCAD ?

              Exemple 1 utilisation

              Extrait de wiki.freecad.org :
              FreeCAD est un modeleur paramétrique de CAO 3D open source sous licence LGPL. FreeCAD est destiné à l'ingénierie mécanique et à la conception de produits mais — étant très générique — il s'adapte également à une gamme plus large d'utilisations autour de l'ingénierie, telles que l'architecture, l'analyse par éléments finis, l'impression 3D et d'autres tâches.

              FreeCAD propose des outils similaires à CATIA, SolidWorks, Solid Edge ou Revit et entre donc également dans la catégorie CAO, GCVP, CFAO, IAO et BIM. Il s'agit d'un modélisateur paramétrique basé sur les caractéristiques d'une architecture logicielle modulaire qui permet de fournir des fonctionnalités supplémentaires sans modifier le système de base.

              FreeCAD est aussi multiplateforme. Il fonctionne sous Windows, Linux/Unix et macOS avec la même apparence et les mêmes fonctionnalités sous toutes les plateformes.

              Historique

              La toute première version de FreeCAD est sortie en 2002. FreeCAD est développé en C++, Qt et Python et son cœur repose sur les bibliothèques OpenCASCADE (ou OCCT) spécialisées dans la CAO.

              Son développement est assuré par un large panel de contributeurs : certains sont historiques, d'autres sont spécialisés sur un aspect particulier et beaucoup sont plus ou moins occasionnels.

              Les versions se sont enchaînées à un rythme quasi annuel, apportant moult améliorations et fonctionnalités nouvelles.

              En 2021, quelques contributeurs historiques fondent la FreeCAD Project Association (FPA) qui est un organisme indépendant à but non lucratif pour collecter des dons et apporter un soutien au développement du projet.
              Ce soutien passe notamment par leur programme "FreeCAD Grant Program", qui permet d'embaucher ou de récompenser des personnes pour des projets spécifiques. Ce programme a un budget de 50k$ pour l'année 2024. A titre d'exemple récent, 500$ ont été octroyés pour une étude sur les runners CI de Github, 1000$ pour un gros travail de correction de bugs, et enfin 500$ pour la création d'une vidéo sur les nouvelles fonctionnalités de cette version 1.0.

              FreeCAD bénéficie d'une communauté impliquée permettant notamment d'avoir une documentation complète, à jour et traduite dans de nombreuses langues.

              Le problème de dénomination topologique

              C'était un des points noirs de FreeCAD jusqu'à cette version 1.0.
              Il faut imaginer que dans ce logiciel, la modélisation d'une pièce (dans le sens objet physique) passe par une suite d'opérations mathématiques et géométriques en définissant à chaque fois des contraintes ou des paramètres. Une opération est par exemple la création d'un trou borgne de 5 mm sur telle face à 10 mm des bords haut et gauche. Un autre exemple est d'ajouter une « languette » sur telle face cylindrique. Ou bien d'ajouter un chanfrein de 2 mm sur telle arête, etc.

              Ainsi, petit à petit, la pièce modélisée se construit, prend forme, se détaille et se complexifie.

              Cet historique de ces opérations successives est toujours présent et modifiable. À tout moment, il est possible de modifier une des étapes intermédiaires.

              D'un point de vue technique, vous aurez sans doute compris que chaque opération s'applique à un élément précis et existant de la pièce à ce moment-là (une face ou une arête par exemple). Dans FreeCAD ces éléments ont tous un identifiant unique (Face6, Edge9, etc.), continu et incrémental. Si l'objet a 13 faces à une des étapes, les faces seront numérotées de Face1 à Face13. Chaque opération est rattachée à l'identifiant de l'élément (Face5 par exemple).

              Et le problème se situe à ce niveau : lors d'une modification d'une étape intermédiaire, il arrive souvent que cela change la géométrie globale de la pièce et donc que les nombres de faces ou d'arêtes augmentent ou diminuent. Et FreeCAD réattribue alors ces identifiants uniques aux différents éléments.
              Ainsi, si l'objet passe de 13 à 11 faces, c'est l'ensemble des faces qui vont recevoir un nouvel identifiant dans la plage Face1 à Face11, avec un très fort risque qu'une face, pourtant non touchée par la modification, porte un identifiant différent.

              Et vous voyez le problème arriver : si une des opérations suivantes dans l'historique était de faire un perçage sur la Face6 qui est maintenant devenue la Face3… Toute la modélisation part en vrille.

              Ce problème de dénomination topologique est documenté sur le wiki de FreeCAD : problème de dénomination topologique.

              Pour éviter cela, il était conseillé de suivre un ensemble de bonnes pratiques de modélisation sous FreeCAD : Édition de fonctions. Il faudra certainement suivre l'évolution de cette page avec cette sortie.

              Cette version 1.0 marque donc l'intégration de codes correctifs de cette problématique. Les notes de version indiquent tout de même que tout n'est pas résolu, et qu'il y aura d'autres améliorations dans les prochaines versions. Cette petite vidéo en anglais vous montre la différence de comportement entre la version 0.21 et 0.22dev (qui a servi de base à la 1.0).

              Les autres améliorations

              Un outil d'assemblage par défaut avec solveur dynamique

              Le terme assemblage désigne la fonctionnalité de regrouper plusieurs éléments afin d'obtenir un objet fonctionnel. Ce peut être, par exemple, une boîte constituée d'un couvercle sur charnières maintenues par des vis avec des rangements amovibles à l'intérieur. Ou bien un moteur thermique avec ses carters, vilebrequin, bielles, pistons, soupapes, etc. Il est parfois utile de pouvoir fournir des indications de positionnement et/ou de liberté des éléments entre eux, et de pouvoir animer le tout.
              Ces opérations d'assemblage n'étaient pas intégrées dans FreeCAD avant la version 1.0. Elles étaient néanmoins possibles grâce aux ateliers. Plusieurs ont été créés pour cela avec chacun leurs spécificités et leurs approches mais aussi une incompatibilité entre eux : A2plus, Assembly3 ou Assembly4.
              Cette version 1.0 propose un nouvel atelier mais intégré par défaut. Il a été mis au point par la société Ondsel (voir plus bas). Il est encore jeune, et il est encore trop tôt pour savoir s'il finira par s'imposer par rapport à l'existant déjà en place. Un tutoriel concernant l'atelier d'assemblage est d'ores et déjà disponible pour une introduction à cette nouvelle fonctionnalité de la v1.0.

              L'atelier sketcher amélioré

              Cet atelier permet de dessiner les esquisses techniques utilisées dans la conception mécanique. C'est dans celui-ci que sont dessinés les « plans 2D » avec les cotes et les contraintes dimensionnelles et spatiales. Cette version apporte un nombre conséquent d'améliorations et de nouvelles fonctionnalités rendant son utilisation plus facile, plus puissante et plus rapide. Le mieux est de regarder les notes de version animées.

              Les ateliers Arch et BIM sont morts, vive la prise en charge native du format ouvert IFC

              Si le titre est cryptique, c'est que l'on parle de BTP et d'outils destinés aux équipes de Maîtrise d'Œuvre impliquées dans la conception d'une opération construction (Architectes, Bureaux d'Études). Comme ce n'est pas forcément le lot commun des visiteurs de LinuxFr.org, résumons la situation:

              • L'atelier Arch, pour Architecture, exploite depuis longtemps les capacités de création 3D de FreeCAD pour dessiner facilement, fondations, murs, planchers, fenêtres, portes etc. Cet atelier se basait sur le format natif des fichiers FreeCAD, *.FcStd.

              • Dans l'atelier BIM (pour Building Information Model <= l'article Wikipedia_FR est bien écrit pour qui veut comprendre l'essentiel), on retrouve un certain nombre d'outils de dessin et de création d'objets qui s'avèrent redondants pour certains avec ceux de l'outil Arch tout en implémentant les paradigmes bien plus vastes qu'induit l'approche BIM d'un projet de construction <=> pas uniquement de la géométrie, mais aussi du prix, des données mécaniques, physiques, des fiches produit, du planning …

              • L'approche BIM tend à se généraliser dès lors que la complexité et le coût du projet le justifient. Elle repose (en théorie) sur un format d'échange IFC (pour Industry Foundation Class).
                Il est ouvert et au format texte.
                Oui avec vim, c'est possible de bidouiller ;)
                mais un fichier IFC fait rapidement quelques centaines de Mo voire quelques Go …

              L'Association "Building Smart" en définit les caractéristiques. Tous les logiciels sur le marché savent ouvrir et exporter dans ce format, à la norme IFC 2.3 ad minima et IFC 4.2 voire 4.3 pour les up to date.

              L'atelier BIM de FreeCAD utilisait jusqu'à présent IfcOpenShell, une application tierce Open Source pour convertir un fichier du format *.ifc vers du *.FcStd en passant (sans doute) par du OpenScad dans le processus.

              Titre de l'image
              Une image qui devrait parler au LinuxFrien (!) pour la classe IFC Material-Constituent-Set,

              Pour la version 1.0 de FreeCAD, Yorik Van Havre, développeur historique de FreeCAD, (par ailleurs, architecte et Président la FreeCAD Project Association) a entrepris de fusionner ces deux ateliers, d'en faire une fonctionnalité native de FreeCAD, c'est-à-dire qui se passe du vaillant IfcOpenShell (grâce notamment au travail fait sur Blender-Bim) pour que FreeCAD puisse ouvrir et enregistrer directement au format IFC sans conversion inutile.

              L'atelier FEM

              Cet atelier d'analyse par éléments finis comporte également des améliorations considérées comme majeures avec cette version 1.0, détaillées dans un article de blog sur l'atelier FEM de FreeCAD.

              Les avancées majeures sont liées à la prise en charge de fonctionnalités de CalculiX, un des solveurs utilisés par cet atelier : symétrie cyclique, analyses 2D et contraintes de corps rigide.

              Le reste

              Comme à chaque nouvelle version, beaucoup de choses ont été apportées, que ce soit dans l'interface, ou dans la plupart des ateliers intégrés. Les notes de version de la v1.0, comme très souvent détaillées en images, permettent de voir l'évolution de ce logiciel.

              FreeCAD a également annoncé son nouveau logo, choisi après un appel à concourir auprès de la communauté (lien). Le logo en SVG est disponible sur cette page.

              L'essai commercial d'Ondsel

              Outre la création en 2021 de l'association FPA (voir plus haut), d'autres développeurs, notamment Brad Collette, mainteneur de longue date de l'atelier Path et auteur de deux livres sur FreeCAD, ont créé début 2023 la société américaine ONDSEL sous la forme d'une Public Benefit Corporation (PBC) qui pourrait se traduire par « une entreprise d'intérêt pour la société ». Malheureusement, après environ 2 ans, Brad Collette informe de l'arrêt de la société ONDSEL, faute d'avoir trouvé un marché.

              La société voulait s'appuyer sur FreeCAD pour « apporter des fonctionnalités commerciales qui rendent FreeCAD plus utile aux utilisateurs commerciaux ». (Source)

              Pour cela, ONDSEL a produit sa propre version de FreeCAD avec ses propres choix esthétiques et ergonomiques, et a fourni un cloud pour simplifier le travail en équipe et le partage.
              À noter qu'ONDSEL indiquait soumettre ses améliorations à FreeCAD pour intégration et que son cloud était disponible sous forme de module dans FreeCAD. Ces améliorations se retrouvent dans cette version 1.0 de FreeCAD, notamment le nouvel outil intégré d'assemblage ainsi que les très nombreuses nouvelles fonctionnalités de l'atelier Sketcher.

              La société ONDSEL avait détaillé sa relation avec le projet FreeCAD indiquant notamment leur mode de collaboration. Ils avaient également un blog en anglais intéressant, où ils abordent plusieurs thématiques, notamment sur l'évolution de CATIA ou bien la liste des nouveautés agrémentée de nombreuses animations.

              Dans l'annonce de cet arrêt, Brad Collette revient également sur ce qu'ils ont apporté au projet FreeCAD. Tout ce qu'ils ont développé était en open source et déjà intégré pour la plupart à FreeCAD. Les fondateurs d'ONDSEL continueront de contribuer au projet directement.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Publication du numéro 4 du Lama Déchaîné
                Afin de permettre à sa campagne de soutien financier de prendre son envol, l'April investit dans l'aéronautique ! Ce mercredi 13 novembre sortait le tant attendu numéro 4 du Lama Déchaîné. Le thème : le monde associatif lien nᵒ 1 : Numéro 4lien nᵒ 2 : Numéro 3lien nᵒ 3 : Numéro 2lien nᵒ 4 : Numéro 1lien nᵒ 5 : Numéro 0lien nᵒ 6 : Adhérer à l'Aprillien nᵒ 7 : Faire un donlien nᵒ 8 : Page d'accueil explicative Vous y retrouverez nos rubriques habituelles : un édito malodorant, un dessin satiri

              Publication du numéro 4 du Lama Déchaîné

              Afin de permettre à sa campagne de soutien financier de prendre son envol, l'April investit dans l'aéronautique ! Ce mercredi 13 novembre sortait le tant attendu numéro 4 du Lama Déchaîné.

              Le thème : le monde associatif

              Bannière Campagne April

              Le Lama déchaîné

              Vous y retrouverez nos rubriques habituelles : un édito malodorant, un dessin satirique d'un supermarché, une actu brûlante, certains projets de Framasoft (qui entre bientôt en campagne !) avec la belle plume d'Angie, des anecdotes du salon Solution Linux devenu Open source XP, un chiffre, un service chapril, une idée déconstruite, un truc à savoir, la parole d'une bénévole, un extrait de compte-rendu d'activités de 2008 sur DAVDSI et les p…… de DRM, le courrier des lecteurs et, comme à chaque fois, les mots croisés (dont toutes les solutions seront données à la fin de la campagne, promis).

              La campagne progresse bien, nous avons atteint les 6 000€ et nous sommes super reconnaissants de ce soutien… Il nous reste encore 14 000€ pour finir l'année sereinement. Alors n'hésitez pas à en parler autour de vous.

              Et si vous voulez participer au courrier des lecteurs, répondez à cette dépêche !

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • 📰 Revue de presse — novembre 2024
                Livraison automnale de vos magazines préférés. Voici donc un petit panorama, forcément subjectif et parti{e,a}l, de la presse papier sortie récemment. Les nouveautés d’octobre et novembre 2024 : GNU/Linux Magazine France no 272 ; Linux Pratique no 146 ; MISC magazine no 136 ; Hackable no 57 ; MISC hors-série no 30 sécurise vos codes. Pour rappel, nous avons appris que la société éditrice de Planète Linux est malheureusement en liquidation judiciaire et MagPi arrête la publication de

              📰 Revue de presse — novembre 2024

              Livraison automnale de vos magazines préférés. Voici donc un petit panorama, forcément subjectif et parti{e,a}l, de la presse papier sortie récemment.

              Image une de Journal

              Les nouveautés d’octobre et novembre 2024 :

              • GNU/Linux Magazine France no 272 ;
              • Linux Pratique no 146 ;
              • MISC magazine no 136 ;
              • Hackable no 57 ;
              • MISC hors-série no 30 sécurise vos codes.

              Pour rappel, nous avons appris que la société éditrice de Planète Linux est malheureusement en liquidation judiciaire et MagPi arrête la publication des versions françaises, mais aussi allemandes et néerlandaises.

              Les sommaires des numéros sortis en octobre et novembre 2024

              Mosaïque des couvertures GLMF 272 Mosaïque des couvertures LP146 Mosaïque des couvertures MISC HS 30
              Mosaïque des couvertures MISC136 Mosaïque des couvertures HK57

              MISC hors‑série numéro 30

              Au sommaire de ce numéro hors-série d’octobre — novembre 2024 :

              • Je signe ou je tamponne ? Ni l’un ni l’autre, vous contresignez ;
              • Dossier : Sécurisez vos codes
                • Lala langue ;
                • Ça déborde là, non ?
                • Attention : pointeur libéré !
                • Des soucis à la chaîne ;
                • Un problème systémique ;
                • Garder ses parties privées ;
                • Smash Bros ;
                • Rien de secret dans la mémoire ;
                • Pointer Authentication Code (PAC) ;
                • PTrace me if you can ;
                • Rootkit et DLL Hijacking ;
              • Fileless malware : comprendre et mitiger les attaques.

              GNU/Linux Magazine numéro 272

              Au sommaire de ce numéro de novembre – décembre 2024 :

              • Kanban : Créer une Google Drive App
              • Authentification sans mot de passe : est-ce que Woofy va bien ?
              • Une VM OpenBSD pour se rassurer dans la création de ports
              • Outil en ligne de commande : pourquoi pas l’assembleur ?
              • Au-delà de la fonction : libérez tout le potentiel de la pile de contrôle !
              • Les codes fantastiques : une fonction symbolique
              • Utiliser Mutt avec OAuth 2.0.

              Linux Pratique numéro 146

              Au sommaire de ce numéro de novembre – décembre 2024 :

              • Le temps stocké dans les données
              • Créer une cible iSCSI sur Linux
              • Migrer vers les pipelines Cloud Native avec Tekton
              • Déploiements de VM Proxmox automatisées avec Packer, Terraform et Cloud Init
              • Installation et configuration de Snort : un guide pratique
              • Comprendre et prévenir les attaques de Social Engineering : stratégies de protection et rôle de l’IA
              • Cartographiez votre système d’information avec Mercator.

              MISC Magazine numéro 136

              Au sommaire de ce numéro de novembre – décembre 2024 :

              • Android/FluHorse, le malware qui défie les désassembleurs
              • Indicateurs de compromission : piliers du renseignement sur les menaces
              • Les outils d’accès à distance : défis et solutions
              • Guide pour la construction d’une activité de Purple Team
              • Cyber Resilience Act et DevSecOps : le nouveau mariage parfait ?
              • Comment deux chats s’affrontent pour sensibiliser aux risques cyber
              • IPECC, une IP hardware de calcul sur courbes elliptiques résistante aux side-channels.

              Hackable numéro 57

              Au sommaire de ce numéro de novembre – décembre 2024 :

              • Conférence European GNU Radio Days 2024 : annonce de GNU Radio 4.0 et tutoriel sur les blocs de traitement Python
              • Effort maximum : OpenBSD sur une carte RISC-V 1 GHz/1 Gio à 30 €
              • RPi et I2P : anonymiser son trafic avec l’Internet invisible
              • Cross-compilation d’OpenBSD : c’est mal (tm), mais c’est pas grave…
              • Sipeed SLogic Combo 8 : un multioutil très utile… un jour
              • FPGA facile : petite présentation et prise en main de LiteX
              • Programmation USB sous GNU/Linux : application du FX2LP pour un récepteur de radio logicielle dédié aux signaux de navigation par satellite (1/2)

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • La conquête de l’espace : une affaire féminine, deuxième partie les missions Apollo
                Dans l’histoire de l’espace, les épisodes qui ont le plus marqué les esprits sont, probablement, ceux des marches sur la Lune qui ont été le fait des missions Apollo. Dans cette deuxième dépêche à l’occasion de la journée Ada Lovelace de 2024, on retrouvera donc un portrait de quatre femmes qui ont codé ou calculé les missions Apollo, Judith Love Cohen (1933 – 2016), Margaret Hamilton, JoAnn H. Morgan et Frances (Poppy) Northcutt mais aussi une histoire de celles, plus anonymes, qui ont tissé le

              La conquête de l’espace : une affaire féminine, deuxième partie les missions Apollo

              Dans l’histoire de l’espace, les épisodes qui ont le plus marqué les esprits sont, probablement, ceux des marches sur la Lune qui ont été le fait des missions Apollo. Dans cette deuxième dépêche à l’occasion de la journée Ada Lovelace de 2024, on retrouvera donc un portrait de quatre femmes qui ont codé ou calculé les missions Apollo, Judith Love Cohen (1933 – 2016), Margaret Hamilton, JoAnn H. Morgan et Frances (Poppy) Northcutt mais aussi une histoire de celles, plus anonymes, qui ont tissé les mémoires des modules Apollo.

              Ces biographies sont précédées d’un genre d’état des lieux de l’informatique en URSS et aux USA et suivies d’une sitographie pour prolonger un peu plus l’exploration.

              Journée Ada Lovelace

              Sommaire

              Préambule

              Pourquoi n’est-il essentiellement question que des informaticiennes de la NASA ou ayant travaillé pour la NASA ? Cela revient à poser la question de l’informatique côté Union soviétique. Plusieurs facteurs peuvent expliquer la méconnaissance que l’on a des personnes qui, côté soviétique, ont travaillé sur les programmes relatifs à la conquête de l’espace, à commencer par l’histoire qui est, disons compliquée surtout par rapport à celle des USA.

              Ensuite, c’était un secteur stratégique : envoyer des satellites pose les mêmes questions balistiques que l’envoi d’un missile intercontinental. L’existence du fondateur du programme spatial soviétique, Sergueï Korolev, qui subissait des peines d’emprisonnement pour raisons politiques (dont quatre mois de goulag) et qui avait été admis dans l’équipe de l’ingénieur aéronautique Andreï Tupolev lui-même prisonnier politique à l’époque, a été tenue secrète jusque bien après sa mort. On peut penser qu’il en va de même pour les autres personnes ayant participé aux programmes de conquête spatiale.

              Concernant l’informatique proprement dite, trois noms apparaissent. Sergueï Lebedev (1902 - 1974) est considéré comme le père de l’informatique soviétique. Lebedev semble être un nom assez courant, ainsi, on trouve un cosmonaute russe du nom de Valentin Lebedev. L’Ukrainienne Ekaterina Yushchenko (en) (1919 - 2001) que le site ukrainien (en) sur l’histoire de l’informatique en Ukraine appelle « l’Ada Lovelace ukrainienne ». Yushenko a posé les bases de la programmation théorique en Ukraine (et en URSS avant) et écrit le langage de haut niveau Address. Andreï Erchov (en) (1931 – 1988), fondateur de l’École sibérienne de science informatique dont le livre, Programmation pour le BESM, a marqué un certain Donald Knuth.

              Les ordinateurs de la conquête de l’espace URSS et USA

              Les ordinateurs soviétiques

              Le premier ordinateur soviétique date de 1950, construit sous la direction de Sergeï Lebedev, dans un contexte où le traitement électronique de l’information, considéré par Staline (1878 – 1953) et son entourage comme « fausse science au service de l’impérialisme »1 n’est pas encouragé par le pouvoir. Il s’agit du MESM (МЭСМ, Малая электронная счетно-решающая машина, petit calculateur électronique, qui était plutôt assez gros en volume), développé par une vingtaine de personnes. La plupart des ordinateurs soviétiques en découleront.

              Le BESM sur lequel Andréï Erchov a écrit son livre de programmation a été produit à partir de 1953. Il se déclinera en deux séries les : BESM–1 (1950) à BESM–6 (1966) et les M -20 et ses descendants. Ces derniers, dont le premier, fabriqué à Moscou, est sorti en 1956 seront les ordinateurs des premiers âges de la conquête spatiale. Le dernier de la série, le M-220 était, quant à lui, fabriqué à Kazan. Ils ont, par la suite, probablement été remplacés par le MINSK dans les années 1960.

              Quant aux langages de programmation, Yves Logé, en 1987, dans l’article Les ordinateurs soviétiques : Histoire obligée de trois décennies de la Revue d’études comparatives Est-Ouest relevait ceci :

              • 1953 – librairie de sous-programmes pour STRELA et BESM,
              • 1955 – langage de compilation (PP2 – PP – BESM),
              • 1957 – assembleurs (PAPA, SSP),
              • 1962 – compilateur Algol 60 (TA 1),
              • 1962 – moniteur de traitement par lots (AUTOOPERATOR),
              • 1966 – premier système d’exploitation (MINSK 22, BESM 6),
              • 1967 – langage de programmation (EPSILON, ALMO).

              Le FORTRAN et l’ALGOL, bien qu’ayant été introduits dans les ordinateurs soviétiques dans les années 1960, ne commenceront à être vraiment utilisés qu’à partir des années 1970, époque à laquelle l’URSS abandonnera la conception de ses propres ordinateurs.

              Les ordinateurs des missions Apollo

              L’informatisation de la NASA a commencé avec des machines IBM, la série IBM 700/7000 commercialisée dans les années 1950 à 1960 ; c’était la première version des ordinateurs à transistors. Les langages de programmation les plus courants à l’époque étaient le Cobol et le FORTRAN pour lequel des personnes comme Frances Allen avaient été recrutées afin de former des chercheurs, parfois réticents, au langage.

              En 1964, IBM sort la série System/360 qui pouvait travailler en réseau et dont le système d’exploitation, multitâches, était OS/360. Il était doté d’une RAM, insuffisante, d’un mégaoctet qui a poussé les ingénieurs à adopter un code abrégé. Et, évidemment, il se programmait encore à l’époque avec du papier.

              L’invention qui a permis d’équiper informatiquement les modules des missions Apollo est celle des circuits intégrés, inventés par Jack Kilby en 1958. Ils équiperont les ordinateurs à partir de 1963, la NASA étant dans les premiers utilisateurs pour les ordinateurs de guidage d’Apollo. Par la suite, les circuits intégrés permettront de fabriquer les « mini-ordinateurs » (qui restent toujours assez encombrants) et les micro-ordinateurs. Les premiers micro-ordinateurs, à l’allure de ceux que nous avons actuellement avec : l’ordinateur, un écran, un dispositif de saisie, puis, plus tard, un dispositif de pointage sortiront en 1973, après les missions Apollo.

              Judith Love Cohen (1933 – 2016) l’accouchement du programme de guidage Apollo

              Judith Love Cohen est ingénieure aérospatiale, après sa retraite, elle deviendra écrivaine et fondera une entreprise multimédia Cascade Pass.

              En 1952, celle qui aidait ses camarades de classe à faire leurs devoirs de mathématiques, est embauchée par la North American Aviation. Elle obtient, en 1957 un Bachelor of Art (licence) en sciences, puis, en 1962, un master en sciences à l’Université de Californie. En 1957, après son BA, elle est embauchée par le « Space Technology Laboratories (laboratoire des technologies spatiales) qui deviendra TRW. Elle y travaillera jusqu’à sa retraite en 1990, souvent seule femme ingénieure de l’équipe dans laquelle elle se trouvait.

              Son travail : les ordinateurs de guidage. Elle a fait partie de l’équipe qui a conçu le « Tracking and Data Relay Satellites (TDRS) », le système suivi et de relais des données des satellites de la NASA. Ce système qui permet notamment de rester en contact avec la Station spatiale internationale.

              Elle s’occupera aussi du télescope Hubble. Elle avait été chargée de concevoir le système terrestre des opérations scientifiques. Elle dira dans une vidéo (en) réalisée par Cascade Pass qu’elle avait travaillé avec les astronomes, car c’étaient eux qui allaient utiliser le télescope. Le système avait trois fonctions principales :

              • planification des observations,
              • contrôle en temps réel du réglage de la mise au point et du changement des filtres,
              • récupération des données pour générer des photos, partie que Cohen considérait comme la plus intéressante et la plus difficile à réaliser.

              Mais, le point culminant de sa carrière a été le programme Apollo, notamment le système de guidage de la mission Apollo 13 qui devait être la troisième à se poser sur la Lune, l’ordinateur AGS (Abort Guidance System, système de guidage d’abandon pour le module destiné à rester sur la Lune). Cette mission commence mal : les astronautes prévus à l’origine changent presque à la dernière minute, quand la fusée décolle le 11 avril 1970, le moteur central du deuxième étage s’éteint trop tôt. Ce sera compensé, sans incidence sur la trajectoire. Le 13 avril, l’un des astronautes, Jack Swigert, lance le fameux :

              Houston, we’ve had a problem.

              Le module de service d’Apollo 13 est hors d’usage, l’équipe change de module de service en urgence et embarque dans le module lunaire (LM) prévu pour deux personnes alors qu’ils sont trois. L’AGS servira en tant qu’ordinateur de bord et contrôlera tous les équipements vitaux, mais il n’aurait pas pu revenir sur l’orbite terrestre si Cohen n’avait pas bataillé avec la NASA pour que la fonction de retour y soit incluse.

              Son fils, l’ingénieur en informatique Neil Siegel (en) racontera, ce qui a été vérifié, qu’elle avait conçu l’AGS pendant qu’elle était enceinte de son demi-frère, l’acteur Jack Black. Le 28 août 1969, au moment de partir pour l’hôpital pour accoucher, elle prend aussi le code d’un problème sur lequel elle travaillait. Elle appellera son patron plus tard pour lui signaler qu’elle l’avait résolu, et aussi, en passant, que le bébé était né. Le problème en question concernait l’AGS.

              Margaret Hamilton (née en 1936) la jeune femme à côté de la pile de livre de sa hauteur

              La photo probablement la plus connue de Margaret Hamilton est celle où on la voit poser à côté d’une pile de gros documents reliés : le code du logiciel de navigation de la mission Apollo 11.

              Margaret Hamilton intègre le MIT (Massachusetts Institute of Technology) en 1960 pour développer des logiciels informatiques. En 1961, la NASA confie au MIT la mission de réaliser un ordinateur embarqué de navigation et de pilotage avec un cahier des charges assez léger et permettant au MIT une grande créativité. Ce sera l’AGC (Apollo Guidance Computer) qui sera le premier à utiliser des circuits intégrés. Lourd, 32 kilos, il préfigure néanmoins les ordinateurs portables puisque tous les éléments, ordinateur, mémoire, écran et dispositif de saisie étaient réunis dans un seul boitier.

              Mais avant de travailler sur l’AGC, Hamilton intègre, en 1961, le laboratoire Lincoln pour travailler sur le projet militaire ultra-secret SAGE qui devait produire en temps réel une image de l’espace aérien états-unien. Elle racontera ensuite avoir fait l’objet d’un bizutage (une coutume apparemment) : on lui avait demandé de travailler sur un programme piégé commenté en grec et en latin. Elle était la première à avoir réussi à le faire fonctionner. Et c’est ainsi qu’en 1963 elle est invitée à rejoindre le laboratoire Draper du MIT qui était en charge du développement des logiciels embarqués d’Apollo.

              Elle évoquera aussi la fois où, emmenant de temps en temps sa fille au laboratoire, un jour, cette dernière, jouant à l’astronaute, fait planter le système : elle avait sélectionné le programme d’atterrissage alors qu’elle était « en vol » (un appui sur une mauvaise touche). Ce que voyant Hamilton alerte la direction pour que l’on modifie le programme, réponse « ils sont expérimentés, ça n’arrivera pas ». Sauf qu’évidemment, c’est arrivé au pendant la mission Apollo 8. On peut imaginer qu’Hamilton et son équipe étaient préparées à cette éventualité : les données de navigation seront renvoyées et la trajectoire corrigée. Elle codera aussi un système de priorité des tâches afin d’éviter que l’AGC ne sature et qu’il fasse le travail correctement. L’AGC pouvait ainsi interrompre des tâches pour faire passer celles qui étaient les plus prioritaires et c’est ce qui a permis à Apollo 11 d’atterrir correctement sur la Lune.

              Hamilton quittera le MIT en 1974 pour co-fonder une entreprise de développement de logiciels, Higher Order Software (HOS) qu’elle dirigera jusqu’en 1984. HOS se spécialisait notamment sur les logiciels de détection des erreurs. Ensuite, en 1986, elle créera Hamilton Technologies et concevra le langage de programmation USL (Universal Systems Language).

              Elle reçoit en 2016 la médaille présidentielle de la liberté des mains de Barack Obama. Margaret Hamilton est considérée comme une pionnière de l’ingénierie logicielle et comme une des personnes qui ont contribué à la populariser.

              JoAnn H. Morgan (née en 1940) la seule femme présente dans la salle de tir lors du lancement d’Apollo 11

              Sur une photo de la salle de tir d’Apollo 11, le 16 juillet 1969, elle apparaît comme la seule femme derrière une console. Les femmes que l’on voit sur le côté sont entrées après le lancement.

              Étant enfant, elle préférait lire Jules Verne à jouer à la poupée2 et jouer avec la boîte de chimie que son père lui avait offert. Son père, justement, travaillait pour le programme de développement des fusées américaines. JoAnn H. Morgan va passer son adolescence à Titusville en Floride, à quelques kilomètres de la base de lancement de Cap Canaveral. Elle y regardera les lancements des fusées. Ce qui la décidera dans son orientation professionnelle. Elle commence, à dix-sept ans, par un stage à l’Army Ballistic Missile Agency (ABMA, Agence des missiles balistiques de l'armée de terre). Elle continuera à travailler à Cap Canaveral pendant l’été. En 1963, elle obtient un Bachelor of Arts (licence) en mathématiques. Elle commence à travailler pour la NASA au Centre spatial Kennedy (KSC) en tant qu’ingénieure. Elle sera la seule, ça n’a pas été facile : entre le fait que son supérieur hiérarchique trouve nécessaire de préciser qu’elle est ingénieure et pas là pour faire le café pour ses collègues (en) ou l’absence de toilettes pour femmes.

              En 1969, elle est promue et devient « Chief Instrumentation Controller, KSC Technical Support » (Contrôleur en chef de l’instrumentation, support technique du centre), ce qui lui donne un poste dans la salle de contrôle de la mission Apollo 11. L’équipe de Morgan sera celle qui supervisera le lancement de la mission ce qui lui demandera de rester dans la salle de contrôle encore après le lancement pour pouvoir vérifier les équipements et faire un rapport sur les dommages consécutifs au lancement afin de préparer le suivant, sa tâche, dans le cadre de la mission, s’arrête au moment de l’atterrissage lunaire. Elle considère que c’est ce qui a lancé sa carrière.

              Après Apollo 11, elle bénéficiera d’une bourse Sloan pour poursuivre des études et elle obtiendra une maîtrise en sciences de gestion en 1977 et retournera à la NASA en 1979 où elle est promue chef de la division des services informatique du KSC, première femme à occuper ce poste en particulier et un poste de direction à la NASA. Une tâche ardue dans une période de transition technologique : la NASA changeait son système informatique et commençait à remplacer les vieux ordinateurs géants par des PC. Elle deviendra ensuite directrice adjointe des véhicules de lancement (deputy of Expendable Launch Vehicles, director of Payload Projects Management) puis directrice de la sécurité de la mission ( director of Safety and Mission Assurance). Elle aura été l’une des deux dernières personnes à avoir vérifié le lancement de la navette spatiale.

              Elle prend sa retraite en 2003 après avoir passé toute sa carrière à la NASA.

              Morgan continue à militer pour que plus de femmes puissent suivre des carrières scientifiques et techniques.

              Frances Northcutt dite « Poppy » (née en 1943) l’autre seule femme présente dans les salles de tir des missions Apollo 8 et 13

              Frances « Poppy » Northcutt a planifié les trajectoires des vols des missions Apollo dans les années 1960 et 1970.

              Elle commence sa carrière dans l’aérospatiale comme Judith Love Cohen en étant embauchée en 1965 par TRW. Elle sera d’abord une des calculatrices humaines. Problème : pour pouvoir bénéficier d’une promotion, elle devait faire des heures supplémentaires si nécessaire, ce qui était interdit aux femmes états-uniennes de l’époque. Elle tient le pari d’en faire mais non rémunérées. Cela fonctionne, elle obtient une promotion et intègre l’équipe technique (personnel effectuant des travaux ingénierie), mieux payée. Ce qui pose un autre problème, celui de l’écart de rémunération entre les hommes et les femmes.

              Le travail de l’équipe technique consistait à écrire le programme. D’autres assuraient la tâche de le rentrer dans l’ordinateur, ce qui n’allait pas sans quelques bugs au passage, qui pouvaient avoir des conséquences fatales. L’équipe de Northcutt était chargée du calcul de la trajectoire de retour d’Apollo 8. C’était une mission mémorable pour Northcutt à plus d’un titre. D’abord, c’était la première fois qu’un véhicule spatial habité allait être mis en orbite autour de la Lune. C’était aussi ce qui aura permis de déterminer l’équipement et le matériel nécessaire pour les missions suivantes, notamment la quantité de carburant nécessaire. Enfin, c’était la première fois que les calculs de Northcutt et de son équipe étaient utilisés, et cela allait servir aussi aux missions suivantes. Ainsi, après Apollo 8, il n’y aura pas eu de modifications des programmes, sauf en cas de problème. Pour Apollo 13, avec d’autres ingénieurs, elle aura pour mission de calculer le retour de la capsule Apollo après l’explosion du réservoir d’oxygène qui oblige l’équipage à rentrer sur Terre dans le module lunaire.

              Elle suivra ensuite des études de droit à l’Université de Houston pour devenir avocate. Elle en sortira diplômée en 1981 et travaillera pour le procureur du comté de Harris à Houston, sera stagiaire auprès d’un juge fédéral en Alabama avant de se tourner vers le privé et défendre des causes sur les droits de femmes, elle qui a longtemps travaillé avec un salaire inférieur à celui de ses collègues pour le même travail.

              Elle expliquera au site astronomy (en) :

              J’ai eu beaucoup de chance. La plupart des femmes n’avaient pas quelqu’un qui se battait aussi durement pour elles.

              Elle ajoutera :

              C’est le problème auquel sont confrontées les femmes en particulier, lorsqu’elles sont embauchées pour un salaire inférieur à ce qu’elles valent. Si vous ne partez pas sur un pied d’égalité, vous ne pourrez jamais vous rattraper.

              Northcutt continue à militer pour les droits des femmes, mis à mal aux États-Unis lors de la présidence de Trump.

              Les tisserandes

              Les tisserandes, dont beaucoup étaient navajos ou noires, les « Little Old Ladies » ont tressé les mémoires à tores de ferrite des missions Apollo. Elles avaient littéralement la vie des astronautes entre leurs mains.

              Les RAM des ordinateurs des années 1950 à 1975 étaient le plus souvent des mémoires à tores de ferrite. D’après la notice de celles présentées au musée du Conservatoire National des Arts et Métiers (CNAM) à Paris dans la photo ci-dessous :

              elles sont encore utilisées lors de certaines missions spatiales car elles ne sont pas endommagées par les rayons cosmiques.

              Mémoire à tores de ferrite avec détail et pile de mémoire
              Mémoires à tores de ferrite du Gamma 60 d’une capacité de 512 octets, début des années 1960, musée du CNAM, Paris.

              La fabrication de ces mémoires ne pouvait pas être mécanisée, elles étaient donc tissées à la main. Et, à l’époque des missions Apollo les seules personnes qui avaient l’habilité et la précision digitale nécessaires pour le faire étaient des femmes, surnommées les LOL et supervisées par les « rope mothers » (mères des cordes), généralement des hommes, et dont la cheffe était Margaret Hamilton. Ce travail extrêmement critique, était contrôlé par trois ou quatre personnes avant d’être validé. Il réclamait non seulement des ressources manuelles mais aussi des capacités intellectuelles certaines pour être accompli correctement.

              Quand, en 1975, un rapport de la NASA sur les missions Apollo s’extasiait, à juste titre, sur les systèmes informatiques développés en mis en œuvre, il négligeait complètement cet aspect essentiel. Les journalistes de cette époque, présentaient la fabrication des mémoires comme un travail ne nécessitant aucune réflexion ni aucune compétence…

              Pour compléter

              Les ordinateurs soviétiques

              Missions Apollo

              L’exploration spatiale et les astronautes

              Sur la journée Ada Lovelace et la place des femmes dans les carrières scientifiques et techniques

              Excuse et paragraphes de la fin

              Cette dépêche paraît assez tardivement après la précédente pour des raisons assez indépendantes de ma volonté et incluant un piratage d’un de mes sites.

              Ceci étant, un grand merci une fois de plus à vmagnin pour ses suggestions, notamment pour cette citation tirée d’une de ses lectures, Forces de la nature de François Lacombe, Anna Reser et Leila McNeil chez Belin :

              Dans l’histoire des sciences et des vols spatiaux, on constate que cette distinction nette établie entre les tâches techniques et non techniques a été l’une des façons de marginaliser systématiquement les femmes.

              Ce qui se vérifie amplement notamment avec les tisserandes des mémoires.

              Comme de bien entendu, entre les recherches, l’écriture et les commentaires de la dépêche précédente, il appert qu’il y a un sujet connexe, celui de l’astronomie et de l’évolution du métier d’astronome et d’astrophysicienne qui mériterait d’être traité. Ce qui sera fait, d’ici la fin de l’année. Et, si vous cherchez un sujet de mémoire ou thèse, à mon avis le thème des langages informatiques : naissance, diversité, histoire, pourquoi un langage très populaire finit par être abandonné, etc. pourrait être passionnant (si ça n’a pas déjà été fait). Peut-être qu’un jour je vous infligerai un texte sur l’histoire de l’informatique soviétique (ou peut-être pas).


              1. Citation reprise de l’article d’Yves Logé dans « Les ordinateurs soviétiques : histoire obligée de trois décennies » Revue d’études comparatives Est-Ouest Année 1987 18-4 pp. 53-75 qui cite D. Brand, L’Union Soviétique, France, Sirey, 1984, p. 230. 

              2. L’autrice de cette dépêche aussi à qui ce comportement paraît tout à fait normal. 

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Des nouvelles de Unvanquished
                La dernière dépêche sur le jeu Unvanquished a été publiée ici en 2023, pour son dixième anniversaire. La dernière version annoncée ici était la version 0.53, en 2022. Alors que nous sommes à deux mois de 2025 et à quelques jours de la prochaine version 0.55, c’est l’occasion de faire un point sur ce qui s’est passé ces dernières années et d’ajouter un épisode à la série « des nouvelles de [votre jeu préféré] » et de faire suite à celui sur Xonotic. Laisse-moi sortir de là ! — réclame la versio

              Des nouvelles de Unvanquished

              La dernière dépêche sur le jeu Unvanquished a été publiée ici en 2023, pour son dixième anniversaire. La dernière version annoncée ici était la version 0.53, en 2022. Alors que nous sommes à deux mois de 2025 et à quelques jours de la prochaine version 0.55, c’est l’occasion de faire un point sur ce qui s’est passé ces dernières années et d’ajouter un épisode à la série « des nouvelles de [votre jeu préféré] » et de faire suite à celui sur Xonotic.

              Unvanquished

              Laisse-moi sortir de là ! — réclame la version 0.55…

              Unvanquished est un jeu de stratégie en temps réel (RTS) à la première personne (FPS) où des extraterrestres évolutifs et des humains lourdement armés s’affrontent pour leur survie. Son développement, basé sur Tremulous, a commencé en 2011.

              Sommaire

              Quelques nouvelles en vrac

              Un nouveau lanceur

              En prévision de la prochaine version 0.55 qui arrive (deux « release candidates » ont déjà été publiées), le « lanceur » (aussi appelé « updater ») a été mis à jour en juillet dernier.

              Le lanceur est le moyen recommandé d’installer Unvanquished : il permet une intégration optimale avec le système (possibilité de cliquer sur des liens pour lancer une partie) et propose la mise à jour du jeu quand une nouvelle version est disponible. Le lanceur sait aussi se mettre à jour et c’est ce qui a été fait en juillet.

              Des améliorations graphiques

              L’année dernière le projet Unvanquished avait annoncé être en recherche d’un développeur spécialisé dans les moteurs de rendus. Reaper a rejoint l’équipe et a réalisé un gros travail : débugage et finalisation des miroirs récursifs et d’autres choses. Il fait aussi progresser le moteur pour tirer partie d’OpenGL 4.6 et autre techniques avancées (« bindless textures », etc.).

              Un explorateur de serveur minimaliste

              Viech a publié un explorateur de serveur de jeu minimaliste qui tient dans la barre de notification (tray browser). C’est à la fois simple et pratique.

              Des vidéos et un compte Mastodon

              Diverses vidéo montrant les avancées du développement ont été publiées sur la chaîne Youtube d’Unvanquished, c’est l’occasion de rappeler l’existence de cette chaîne : https://www.youtube.com/@UNVofficial

              Pour ceux qui préfèrent Peertube, qui permet aussi de s’abonner aux chaînes à travers Mastodon et plus globalement le Fédiverse, avec la publication de certaines parties : https://vdo.unvanquished.greboca.com/

              Un compte Mastodon a été créé sur l’instance idtech.space dédiée aux technologies id Tech et projets associés (le moteur d’Unvanquished dérive d’id Tech 3) : https://idtech.space/users/UNVofficial

              Ce compte Mastodon s’ajoute aux comptes X et Facebook. Le public libriste sera peut-être plus intéressé par ce compte Mastodon.

              Unvanquished, ARMé et dangereux

              De nouvelles architectures

              La version 0.54 de Unvanquished sortie en janvier 2023 avait été la première à être jouable autrement que sur PC (x86 et x86-64), en proposant des binaires pour les processeurs ARM (sous Linux seulement pour l’instant).

              Côté moteur la version 0.54 avait reçu de nombreuses optimisations pour mieux tourner sur des machines moins performances, par exemple, Certaines ressources logiciels optionnelles comme les deluxemaps ne sont plus chargées si désactivées, ceci économise non seulement le calcul, mais aussi la mémoire de la carte graphique. Les lightstyles peuvent être désactivés, ce qui peut accélérer le rendu graphique, etc. La compatibilité matérielle sera encore étendue avec la version 0.55.

              À partir de la version 0.54 tous les binaires pour toutes les architectures matérielles et systèmes d’exploitation sont compilés dans des containers Docker, y compris les binaires macOS compilés dans un container Linux en utilisant Darling, Darling étant à macOS ce que Wine est à Windows. La version 0.55 sera produite de la même manière.

              La version 0.55 apportera la compatibilité pour un nouveau système d’exploitation ! 🤫️

              Interface, jouabilité et bots

              Chargement de carte

              Le nouvel écran de chargement des cartes.

              L’interface avait été revue à l’occasion de la version 0.54 :

              • Nouvelles icônes d’inventaire contribuées par Nanaa, Gireen et Bob Vador
                Ces icônes donnent un coup de fraîcheur, on distingue mieux les deux types de grenades et les armures ainsi que le mode de déplacement.
              • L’écran de chargement des cartes affiche le nom de la carte et des auteurs (si renseigné) depuis les métadonnées. Historiquement, les artistes inscrivaient ces informations sur l’image d’illustration de la carte avec un logiciel de dessin… (!!!)
              • La version 0.55 apportera des modifications d’interface réalisées par Grise.

              Côté jouabilité, la version 0.54 avait corrigé le momentum négatif qui était particulièrement pénalisant. Le momentum, est généré par les Leech (Alien) ou les Drills (Humain). Il faut qu’il y ait assez de momentum pour pouvoir construire d’autres éléments.

              La version 0.54 a apporté toute une série de nouveautés au niveau des bots (entités qui remplacent les joueurs afin de compléter les équipes) :

              • Amélioration de l’évitement d’obstacles pour les bots.
              • Les bots peuvent viser des cibles situées sur des navmesh différents.
              • Certains bots n’hésiteront pas à sauter pour atteindre une cible en hauteur, d’autres se retiennent d’exécuter une attaque qui pourraient les blesser si la cible est trop proche…

              Depuis quelque temps, le développement des bots suscite un regain d’intérêt. La version 0.55 ne sera pas la plus riche à ce sujet car elle apportera surtout des améliorations du moteur. Le développement de gameplay ne s’est pas ralenti mais s’est surtout focalisé sur des mods dont il faudra fusionner les avancées dans le tronc commun après la sortie de la version 0.55. Ces améliorations de gameplay sont déjà jouables sur des serveurs en ligne.

              L’amélioration du comportement des bots à permis un nouveau type de jeu : Le PVE. C’est à dire que les joueurs peuvent jouer ensemble contre l’ennemi piloté par le serveur. Certaines cartes ont été créées spécifiquement pour ce type de jeu, et d’autres ont été adaptées à l’aide de layout qui étaient déjà utilisés pour créer des variantes de parties.

              La version 0.54.1 n’avait pas vraiment proposé de modifications des données, il s’agissait surtout de publier des correctifs de bugs gênant du moteur. La version 0.55 viendra avec une mise à jour des données et donc avec les corrections attendues. Par exemple un bug dans la chaîne logicielle de conversion d’images avait produit des artefacts dans certaines textures, ce sera corrigé dans la version 0.55.

              La danse des submodules

                          _________________
                         /                 \
                        |         ✝         |  
                        |                   |
                        |      beloved      |
                        |     submodule     |
                        |                   |
                        |    2017-12-30     |
                        |     2023-04-11    |
                        |                   |
                        |       R.I.P.      |
                        |                   |  🄵
                (,,)é   |                   |   ɘ̀(⹁⹁)  ɘ̀(⹁⹁)
              ////////////////////////////////////////////////
              

              Press F to Pay Respects!

              Tous ceux qui doivent traiter avec Git savent que les submodules sont très pratiques mais parfois bien ennuyeux. Un travail de fond réalisé sur les outils de production des données a permis la réintégration du dossier source unvanquished_src.dpkdir. Le générateur de code CBSE qui produit la plomberie pour la logique de jeu a été réintégré aussi. Cela rend plus facile de travailler sur des mods en évitant de devoir gérer plusieurs dépôts différents.

              Contributions

              Unvanquished recrute
              Voulez-vous en savoir plus ?

              Comme vous le voyez, ce cycle de développement a aussi vu de nouveaux contributeurs apporter leur concours au projet. Certaines de leurs améliorations ont déjà été publiées dans la version mineure 0.54.1, d’autres arriveront avec la version 0.55.

              Récement, le développeur Slipher qui est un des développeurs Unvanquished les plus prolifiques et les plus fidèles a étendu ses activités au moteur de rendu et a rejoint la petite élite de ceux qui savent comment le moteur fonctionne. Il a corrigé entre autre le rendu de vidéo sur des surfaces et une fonctionnalité de sprites.

              La liste de régressions depuis le désormais lointain ancêtre d’Unvanquished, Tremulous, est maintenant réduite à peau de chagrin.

              Des traductions !

              La grosse nouveauté de la version 0.54.1 publiée en décembre 2023 a été de proposer à nouveau des traductions intégrées au jeu. L’outil de traduction est gracieuseuement hébergé par Weblate.

              L’interface Weblate

              L’interface de traduction Weblate.

              Il y a longtemps, le jeu était traduit, mais suite à de très profonds changements (par exemple le remplacement total de la technologie utilisée pour faire des menus, désormais sous RmlUi), l’effort de traduction avait été interrompu.

              La traduction francophone est bien avancée, mais la traduction en breton a besoin de plus de contributions. Si vous souhaitez contribuer votre langue régionale, vous êtes les bienvenus, c’est ici que cela se passe !

              La 0.55 arrive !

              Préparez votre souris et votre clavier, la version 0.55 arrive très bientôt.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Nouveautés d'octobre 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 : *

              Nouveautés d'octobre 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
              * …

              Prochain mini-webinaire : « Les outils Scenari pour traduire ses contenus » 15 octobre

              🖥️ Prochain mini-webinaire : « Les outils Scenari pour traduire ses contenus » 15 octobre

              La session aura lieu le mardi 15 octobre 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.

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

              Tu utilises les « type de » dans Opale 24 ?

              📣 Tu utilises les « type de » dans Opale 24 ?

              On va organiser un mini-webinaire sur l’usage de ces nouveaux et mystérieux objets dans Opale 24 : les « Type De ».

              Tu les utilises et tu pourrais expliquer ton usage à la communauté ? Alors écris à direction@scenari.org.

              Sortie de la première version stable de Parcours

              📣 Sortie de la première version stable de Parcours

              La première version stable de Parcours vient de sortir : Parcours 1.0.2.

              Parcours est une chaîne éditoriale SCENARI qui assiste la création de parcours de formation en outillant la conception de conducteurs pédagogiques et l’exécution des sessions de formation. Elle est mise à disposition sous la forme d’une application utilisable en mode local (desktop), sur ton ordinateur.

              Parcours est maintenant également disponible dans Platine-suite (solution serveur en version beta). Dans l’optique de finaliser Platine-suite, Kelis — qui développe la solution — propose un hébergement gratuit, pour ceux et celles qui veulent l’expérimenter en contexte réel.

              Parcours PHP : des fonctionnalités serveur, sans installer un serveur

              📣 Parcours PHP : des fonctionnalités serveur, sans installer un serveur

              Parcours PHP est une publication du modèle Parcours quipermet de générer un site web autonome, sans avoir à configurer une solution serveur SCENARI complète.

              Parcours PHP propose une base de données qui permet d'inscrire des utilisateurs, stocker les scores et les avancées dans un exercice SCORM, et le téléversement des devoirs et des corrections.

              Nouvelles versions de modèles Scenari

              📣 Nouvelles versions de modèles Scenari

              OPALE : nouvelle version Opale 24.1.0 .

              Cette version apporte :

              • De nombreuses corrections dans les publications Exerciseur ;
              • Des corrections dans l’habillage par défaut Daylight ;
              • L’ajout de deux nouvelles options à la barre d’accessibilité de la publication Web : Titres numérotés & Titres à l’échelle ;
              • L’ajout de la barre d’accessibilité au générateur Diaporama ;

              Tous les détails sur le forum.

              DOKIEL : nouvelle version (corrections dans la Documentation de référence) Dokiel 6.0.8. Elle est disponible dans quatre langues: Français, Anglais, Portugais, Italien.

              LEXICO : nouvelle version Lexico 3.0.3. Cette version apporte surtout une correction dans le choix des termes à inclure dans un lexique : Seuls les termes explicitement inclus dans la requête sont inclus dans les « Liens vers d’autres termes ».

              TECHNOPALE (modèle destiné à l’enseignement des sciences expérimentales dans le secondaire) : nouvelle version TechnOpale 5.0.7 dérivé d’Opale 5.0.7. Cette mise à jour est accompagnée des habillages graphiques Aurora Dys et Daylight Mint. Tous les détails sur le forum.

              Nouvelles versions des outils Scenari

              📣 Nouvelles versions des outils Scenari

              SCENARI : nouvelles versions de maintenance (corrections fonctionnelles et sécuritaires) de :

              MYSCENARI : mise à jour en version 6.3.11. Si tu utilises le client, pense à déclencher la mise à jour qui doit être proposée au prochain lancement.

              LTI-SUITE : nouvelle version de maintenance LTI-suite 1.0.1. Pour rappel LTI-suite est un serveur qui permet de stocker des contenus accessibles par les plateformes d’apprentissage (LMS). LTI-suite enregistre les données d’apprentissage et propose des rapports détaillés de suivi des apprenants.

              LTI-suite 1.0 est un projet en phase beta. Kelis est intéressé par tes retours éventuels afin de finaliser la version.

              Appel à volontaires pour traduire les outils Scenari

              📣 Appel à volontaires pour traduire les outils Scenari

              Tu maîtrises une autre langue que le français ?

              Tu peux dédier un peu de temps à la communauté Scenari ?

              Alors tu peux nous aider à traduire les outils Scenari !

              C’est simple et chacun⋅e peut le faire à son rythme.

              Envoie un message à direction@scenari.org, et on voit comme tu peux donner un coup de main aux traductions.

              Le savais-tu ?

              ✨ Le savais-tu ?

              Dans l’éditeur Scenari, lorsque l’on crée un bloc dans lequel un item doit être référencé, si on laisse la souris sur l’icone de la petite feuille, une popup indique quels sont les différents types d’items que l’on peut y mettre.

              Très pratique pour mieux connaître un modèle et faciliter la réutilisation.

              Popup qui indique quels sont les différents types d’items que l’on peut y mettre

              Tu peux retrouver cette astuce, et beaucoup d’autres, sur le forum.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Haiku a 23 ans - Haiku R1 bêta 5 (partie 3 : documentation, finances et GSOC)
                Les deux parties précédentes ont présenté les principales évolutions dans le code de Haiku. Mais le code ne fait pas tout. Cette troisième (et dernière) partie présente les nouveautés dans la documentation, ainsi qu’un court aperçu du rapport financier et aux dons qui permettent à Haiku d’employer un développeur à plein temps de façon durable. Enfin, elle présente la participation au Google Summer of Code et les travaux réalisés par les cinq étudiants encadrés par Haiku cette année. lien nᵒ 1

              Haiku a 23 ans - Haiku R1 bêta 5 (partie 3 : documentation, finances et GSOC)

              Les deux parties précédentes ont présenté les principales évolutions dans le code de Haiku. Mais le code ne fait pas tout.

              Cette troisième (et dernière) partie présente les nouveautés dans la documentation, ainsi qu’un court aperçu du rapport financier et aux dons qui permettent à Haiku d’employer un développeur à plein temps de façon durable.

              Enfin, elle présente la participation au Google Summer of Code et les travaux réalisés par les cinq étudiants encadrés par Haiku cette année.

              Sommaire

              Documentation

              La documentation de Haiku se découpe en 3 parties principales : un manuel de l’utilisateur, une documentation d’API, et une documentation interne pour les développeurs qui travaillent sur les composants du système.

              Ces documents sont complétés par de nombreuses pages et articles sur le site Internet, et deux livres pour apprendre à programmer en C++ avec Haiku, ou encore un document de référence pour la conception d’interfaces graphiques et un autre pour le style graphique des icônes.

              Documentation d’API

              La documentation d’API de BeOS était assez complète et de bonne qualité. L’entreprise Access Co Ltd qui a hérité de la propriété intellectuelle de BeOS a autorisé le projet Haiku à la réutiliser et à la redistribuer. Malheureusement, cette autorisation est faite avec une licence Creative Commons n’autorisant pas les modifications. Cette documentation ne peut donc pas être mise à jour, ni pour corriger les erreurs, ni pour ajouter des informations sur toutes les nouvelles fonctions ajoutées par Haiku ou les différences entre les deux systèmes.

              Il est donc nécessaire de réécrire une nouvelle documentation à partir de zéro. Ce travail est assez ingrat lorsqu’il s’agit de re-décrire ce qui est déjà très bien expliqué dans la documentation existante. La nouvelle documentation a donc tendance à se concentrer sur les nouvelles fonctions, et il faut souvent jongler entre les deux documentations, le contenu des fichiers .h, et des exemples de code d’applications existantes pour découvrir toutes les possibilités offertes.

              Il ne semble pas utile de lister chaque fonction ou méthode qui a été documentée. On peut mentionner une page d’explications sur la bibliothèque C standard, comprenant des liens vers les spécifications POSIX qui documentent déjà la plupart des choses, et quelques détails sur les différences avec d’autres systèmes.

              Une autre nouvelle page documente les primitives de synchronisation qui sont disponibles pour le code s’exécutant dans le noyau.

              Documentation interne

              La documentation interne était à l’origine simplement une accumulation de fichiers dans divers format dans un dossier « docs » du dépôt Git de Haiku. Depuis 2021, ces fichiers ont été rassemblés et organisés à l’aide de Sphinx, qui permet de mettre à disposition une version navigable en HTML et de donner une meilleure visibilité à ces documents.

              D’autres pages sont petit à petit migrées depuis le site web principal de Haiku, qui n’est pas un très bon support pour de la documentation, et bénéficiera un jour d’une refonte pour être plus tourné vers les utilisateurs que vers les développeurs.

              Quelques nouvelles pages ajoutées cette année:

              • Une documentation sur l’utilisation de divers outils de complétion de code automatique avec le code source de Haiku
              • Une page présentant l’organisation du code source et les principaux dossiers et sous-dossiers
              • La documentation de l’outil rc utilisé pour compiler les « resources » attachées aux exécutables a été intégrée
              • Le système de fichier FAT a reçu également une page de documentation à l’occasion de sa réécriture

              Un point sur le financement

              L’association Haiku inc qui gère le compte en banque de Haiku publie chaque année un rapport financier.

              Le financement provient principalement de dons des utilisateurs et soutiens de Haiku. Le projet reçoit également une compensation financière de Google pour le temps passé à encadrer les participants du Google Summer of Code (voir le paragraphe suivant). La contribution de Google cette année est de 3 300$.

              Les plateformes de don les plus utilisées sont Paypal et Github sponsor. Ce dernier est recommandé car, pour les dons reçus via Github, c’est Microsoft qui paie les frais bancaires de la transaction. 100% de l’argent donné arrive donc sur le compte de Haiku. Tous les autres opérateurs ont un coût, soit fixe lors des retraits, soit un pourcentage de chaque don, soit un mélange des deux.

              En 2023, l’association a reçu 25 422$ de dons et a dépensé 24 750$. Elle dispose d’une réserve confortable de 100 000$ (accumulés avant 2021, alors qu’il n’y avait pas de développeur salarié) ainsi que d’environ 150 000$ en cryptomonnaies.

              Les dons en cryptomonnaies sont pour l’instant bloqués sur un compte Coinbase suite à des problèmes administratifs (le compte n’est pas correctement déclaré comme appartenant à une association, il faudrait donc payer un impôt sur le revenu lors de la conversion en vraie monnaie). Il semble difficile de contacter Coinbase pour régler ce problème.

              Du côté des dépenses, le poste le plus important est le paiement de 21 000$ à Waddlesplash, développeur employé par Haiku inc pour faire avancer le projet Haiku. Il travaille à temps partiel et avec un salaire très bas par rapport au marché, comme cela a été fait pour les précédents contrats entre Haiku inc et d’autres développeurs. Les finances de l’association ne permettent pas encore d’assurer un emploi à plein temps avec un salaire correct sur le long terme (c’est faisable sur le court ou moyen terme à condition de puiser dans les réserves de trésorerie).

              Le reste des dépenses concerne principalement le paiement de l’infrastructure (serveurs pour le site Internet, l’intégration continue, hébergement cloud pour les dépôts de paquets) pour environ 3 000$.

              Il faut enfin compter environ 500$ de frais Paypal, puis quelques dépenses administratives (déclaration de changement d’adresse de l’association, déclaration d’embauche) pour des montants négligeables (moins de 10$ au total).

              En 2024, l’objectif fixé en janvier était de récolter 20 000$ de dons supplémentaires. Cet objectif a été atteint dès le mois de juillet, et a donc été révisé pour tenter d’atteindre les 30 000$. Cela permettra de rémunérer Waddlesplash pour un plus grand nombre d’heures cette année, ou bien d’envisager l’embauche d’une deuxième personne si un ou une candidate se présente parmi les personnes contribuant au projet (l’embauche d’une personne extérieure ne se fera pas tant que l’association ne peut pas se permettre de proposer une rémunération raisonnable).

              Google Summer of Code

              Haiku participe au Google Summer of Code depuis 2007. Il s’agit d’un programme où des étudiants (et d’autres participants pas forcément étudiants, ces dernières années) sont payés par Google pendant deux mois pour découvrir la contribution à des projets de logiciels libres.

              Ce programme a été monté par « l’Open source program office » de Google. Leur intérêt est de défendre leur image d’entreprise sympathique (bien mise à mal ces dernières années, c’est devenu un géant de la publicité en ligne et de l’aspiration des données personnelles), et de contribuer à la richesse d’un écosystème de logiciels libres dont ils bénéficient beaucoup. Cela permet aussi d’encourager des personnes à s’essayer au développement logiciel, facilitant indirectement le recrutement chez Google en augmentant le nombre de candidats. Ces justifications peuvent sembler hypothétiques ou très indirectes, mais elles ont convaincu Google d’attribuer un budget de quelques millions de dollars à ce programme.

              Une équipe de Google choisit les projets de logiciel libres participants parmi de nombreuses candidatures. Chaque projet participant propose une liste « d’idées » (un peu sous la forme d’un sujet de stage) et a ensuite la responsabilité de choisir parmi les candidats qui ont répondu à cette offre (en respectant les critères de non-discrimination imposées par Google ainsi que les embargos imposés par les USA), et d’assurer l’encadrement des personnes sélectionnées. Google rémunère les participants, et dédommage les projets participants pour le temps investi.

              Cette année les développeurs de Haiku encadrent cinq participants :

              Calisto Mathias — Re-design de la fenêtre de recherche de fichiers

              Le système de fichier BFS utilisé par Haiku permet l’exécution de requêtes (comme une base de données) exploitant les attributs étendus des fichiers, qui peuvent être indexés.

              Ce système permet de faire beaucoup de choses, et la fenêtre de recherche du navigateur de fichier essaie d’en tirer parti. Cependant, l’interface résultante est trop complexe, et peu de personnes prennent le temps de concevoir des requêtes améliorant leur façon de travailler, se cantonnant aux quelques exemples fournis.

              L’objectif de ce projet est de refondre l’interface de cette fenêtre pour obtenir quelque chose de plus intuitif, et également d’afficher en temps réel les résultats de la requête dès qu’elle est modifiée, pour encourager les utilisateurs à expérimenter avec des requêtes plus complexes.

              Daniel Martin — Virtualisation matérielle accélérée avec NVMM

              Haiku n’est pas encore parfait, et certaines tâches nécessitent encore l’utilisation d’autres systèmes d’exploitation. Une partie des utilisateurs ont donc une configuration en double boot, ou bien lancent Haiku dans une machine virtuelle.

              L’objectif de ce projet est de permettre d’utiliser Haiku comme système principal, et de lancer les autres systèmes dans des machines virtuelles. Cela sera réalisé à l’aide d’un portage de NVMM, qui a été développé à l’origine par NetBSD et Dragonfly BSD. Cette bibliothèque a l’avantage d’être bien documentée et conçue pour faciliter son adaptation vers d’autres systèmes.

              NVMM sera complétée par l’utilisation de QEMU qui pourra fournir un « front-end » à cette mécanique.

              Diego Roux — Pilote pour les cartes sons virtuelles VirtIO

              Pour les personnes utilisant Haiku dans une machine virtuelle, il est intéressant d’utiliser autant que possible la famille de périphériques VirtIO.

              Il s’agit de périphériques virtuels conçus sans s’inspirer de matériel existant, et plutôt pour avoir l’interface la plus simple possible entre la machine virtualisée et son hôte.

              Haiku dispose déjà d’un jeu de pilote Virtio relativement complet (réseau, stockage de masse, affichage graphique). Le but de ce projet est de compléter cet ensemble avec un pilote pour les cartes son VirtIO.

              trungnt2910 — Portage de GDB

              Haiku dispose de son propre débugger (appelé Debugger, de façon assez peu originale). Ce dernier présente une interface graphique confortable, mais une interface en ligne de commande beaucoup plus limitée. Il souffre également de quelques problèmes de performances et d’un manque de prise en charge des fichiers exécutables et bibliothèques compilés avec autre chose que GCC. Il est également incapable de faire du debug à distance ou de s’intégrer dans une interface graphique existante (par exemple au sein d’un IDE).

              L’objectif de ce projet est de ressusciter la version de GDB ciblant Haiku. Cette version très ancienne était utilisée avant l’apparition du Debugger natif. Le projet est en bonne voie, le code d’interfaçage a été entièrement réécrit pour s’adapter aux versions modernes de GDB, et plusieurs évolutions et corrections ont été intégrées dans le système de debugging de Haiku (par exemple, pour mettre en pause tous les threads nouvellement créés afin que le debugger puisse les intercepter).

              Zardshard — Migration du navigateur web WebPositive vers WebKit2

              Le navigateur WebPositive utilise le moteur de rendu webKit. Actuellement, il s’interface avec ce moteur via l’API WebKitLegacy. Cette API exécute tout le moteur de rendu web dans un seul processus, et ne fournit pas les garanties d’isolation nécessaires pour les navigateurs web modernes (que ce soit en termes de sécurité, ou en termes de fiabilité).

              L’objectif de ce projet est de reprendre les travaux déjà entamés en 2019 pour migrer WebPositive vers la nouvelle API « WebKit2 », et bénéficier d’une séparation entre l’interface graphique, la communication réseau, et le rendu HTML/CSS/JavaScript dans des applications séparées. Ainsi, un crash d’un de ces composants peut être récupéré de façon transparente sans faire disparaître toute l’application (et les données non enregistrées de l’utilisateur avec).

              Le projet est également en bonne voie, un navigateur de test permet déjà d’afficher quelques pages ce qui montre que les bases sont en place. Il reste à régler de nombreux problèmes de rendu de texte, ainsi qu’à implémenter la gestion des entrées (clavier et souris) pour avoir un navigateur web utilisable. Il faudra ensuite migrer WebPositive vers ces nouvelles APIs.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Haiku a 23 ans - Haiku R1 bêta 5 (partie 1 : applications)
                Haiku est un système d’exploitation libre destiné aux ordinateurs personnels ou de bureau (pas de serveurs, pas de systèmes embarqués, pas de tablettes ni de téléphones). Il s’agit au départ d’une réécriture libre de BeOS, préservant la compatibilité binaire avec ce dernier (les applications BeOS peuvent tourner sur certaines versions de Haiku). Le projet Haiku (au départ nommé OpenBeOS) a démarré officiellement le 18 août 2001 avec le premier message sur la liste de diffusion : Ok, let's start

              Haiku a 23 ans - Haiku R1 bêta 5 (partie 1 : applications)

              Haiku est un système d’exploitation libre destiné aux ordinateurs personnels ou de bureau (pas de serveurs, pas de systèmes embarqués, pas de tablettes ni de téléphones). Il s’agit au départ d’une réécriture libre de BeOS, préservant la compatibilité binaire avec ce dernier (les applications BeOS peuvent tourner sur certaines versions de Haiku).

              Le projet Haiku (au départ nommé OpenBeOS) a démarré officiellement le 18 août 2001 avec le premier message sur la liste de diffusion : Ok, let's start (OK, allons-y). Cet anniversaire est l’occasion de faire un point sur les développements de l’année dans Haiku et ce qui est en préparation.

              La dépêche a été un peu retardée cette année, pour être synchronisée avec la version R1 bêta 5 de Haiku, publiée le vendredi 13 septembre 2024.

              Le projet emploie un développeur presque à plein temps depuis 2021 et le reste de l’équipe contribue bénévolement. La dernière version bêta a été publiée fin 2023 et la Bêta 5 est désormais disponible : l’occasion de revenir en trois parties sur ce que propose Haiku, d’abord des applications, un noyau et des améliorations de la documentation.

              Sommaire

              Près de 350 tickets ont été clos dans le cadre du travail sur la version R1 bêta 5. Il y a bien sûr de très nombreuses corrections de bugs, qui ne seront pas listées dans cet article. On se concentrera plutôt sur les nouveautés, sauf dans les cas où la correction est vraiment importante ou permet d’ouvrir de nouvelles possibilités d’utilisation.

              Applications

              Haiku est un système d’exploitation complet, fourni avec un certain nombre d’applications permettant d’accomplir les tâches les plus courantes. En plus de ces applications de base, le gestionnaire de paquets HaikuDepot, alimenté principalement par le travail du projet HaikuPorts, apporte à la fois des applications portées depuis d’autres systèmes et des applications développées spécifiquement pour Haiku.

              De façon générale, on trouve cette année dans les applications de Haiku des améliorations sur le rendu des nombres, l’utilisation d’un symbole de multiplication à la place d’une lettre x là où c’est pertinent, et de nombreuses petites corrections et améliorations sur la mise en page des fenêtres, des corrections de problèmes de traduction et ainsi de suite.

              AboutSystem

              AboutSystem est la fenêtre d’information sur le système Haiku. Elle fournit quelques informations sur la machine sur laquelle le système fonctionne (quantité de RAM, marque et modèle du CPU, uptime) ainsi que les noms des développeurs et autres logiciels libres ayant participé au développement de Haiku.

              Cette application reçoit tout d’abord une mise à jour cosmétique : si le système est configuré en « mode sombre », le logo Haiku correspondant (avec un lettrage blanc et des dégradés de couleurs un peu différents) sera utilisé. Sinon, ce sera le logo avec lettrage noir.

              AboutSystem en mode clair
              AboutSystem en mode sombre

              Elle reçoit également quelques mises à jour de contenu : en plus de l’ajout de quelques nouveaux contributeurs qui ont rejoint le projet, on trouvera maintenant un lien vers la page web permettant de faire un don à Haiku. Plusieurs liens vers des bibliothèques tierces utilisées dans Haiku, qui ne fonctionnaient plus, ont été soit supprimés, soit remplacés par des liens mis à jour.

              Enfin, il est désormais possible d’utiliser AboutSystem comme un « réplicant », c’est-à-dire de l’installer directement sur le bureau pour avoir en permanence sous les yeux les statistiques sur l’utilisation mémoire et l’uptime ainsi que le numéro de build de Haiku en cours d’exécution (ce qui peut être utile par exemple lorsqu’on lance beaucoup de machines virtuelles avec des versions différentes de Haiku pour comparer un comportement, ou si on veut stocker des captures d’écran de plusieurs versions et s’y retrouver facilement).

              CharacterMap

              L’application « table de caractères » permet d’étudier de près les différents glyphes et symboles présents dans une police de caractères. En principe, elle permet de choisir une police spécifique, mais le serveur graphique de Haiku substitue automatiquement une autre police si on lui demande d’afficher un caractère qui n’est pas disponible dans la police demandée.

              Cela peut être gênant dans certains contextes, par exemple si on envisage d’embarquer une police dans un fichier PDF, il est difficile de savoir quelle police contient vraiment les caractères qu’on veut utiliser.

              L’application a été améliorée pour traiter ce cas et affiche maintenant ces caractères en grisé.

              CharacterMap affichant des caractères manquants

              CodyCam

              CodyCam est une application permettant de tester une webcam et de l’utiliser pour envoyer périodiquement des images vers un serveur HTTP.

              L’évolution principale a été la mise à jour de l’icône de l’application. L’utilité de CodyCam est limitée par le manque de pilotes : il faudra soit trouver une webcam Sonix du début des années 90, seul modèle USB à disposer d’un pilote fonctionnel, soit utiliser un ordiphone Android équipé d’un logiciel permettant de le transformer en caméra IP (ou encore une vraie caméra IP).

              Le pilote pour les WebCams UVC — standard utilisé pour les caméras USB modernes — n’est pas encore au point et n’est pas inclus dans les versions publiées de Haiku.

              Debugger

              Debugger est, comme son nom l’indique, le debugger de Haiku. Il est développé spécifiquement pour le projet sans s’appuyer sur les outils existants (gdb ou lldb). Il dispose à la fois d’une interface graphique et d’une interface en ligne de commande, plus limitée. Cette dernière est surtout utilisée pour investiguer des problèmes dans les composants de Haiku qui sont nécessaires pour l’utilisation d’une application graphique : app_server, input_server ou encore registrar.

              La version en ligne de commande a reçu quelques petites améliorations, mais la principale nouveauté est la prise en charge des formats DWARF-4 et DWARF-5 pour les informations de debug. Cela permet de charger les informations générées par les versions modernes de GCC, sans avoir besoin de forcer la génération d’une version plus ancienne du format DWARF.

              Le désassembleur udis86, qui n’est plus maintenu et ne reconnaît pas certaines instructions ajoutées récemment dans les processeurs x86, a été remplacé par Zydis.

              Enfin, un bug assez gênant a été corrigé : si une instance de Debugger était déjà en train de débugger une application et qu’une deuxième application venait à planter, il n’était pas possible d’attacher une deuxième instance de Debugger à cette application. Les problèmes impliquant plusieurs processus pouvaient donc être un peu compliqués à investiguer. C’est maintenant résolu.

              Deskbar

              L’application DeskBar fournit la « barre des tâches » de Haiku. Elle permet de naviguer entre les fenêtres et applications ouvertes, de lancer de nouvelles applications via un menu (similaire au « menu démarrer » de Windows), ou encore d’afficher une horloge et des icônes fournis par d’autres applications (sous forme de réplicants).

              Elle fait partie, avec le Tracker, des applications qui ont été publiées sous license libre lors de l’abandon de BeOS par Be Inc.

              Quelques changements dans la DeskBar :

              • Tous les menus utilisent maintenant la police « menu » choisie dans les préférences d’apparence du système. Auparavant, la police « menu » et la police « plain » étaient mélangées. Ces deux polices étant identiques dans la configuration par défaut, le problème n’avait pas été repéré.
              • Si un nom de fenêtre est tronqué dans la liste des fenêtres, le nom complet peut être affiché dans une infobulle.
              • L’icône pour les fenêtres dans la DeskBar a été remplacée. La nouvelle icône indique plus clairement si une fenêtre se trouve dans un autre bureau virtuel (dans ce cas, activer cette fenêtre provoquera un changement de bureau).

              GLTeapot

              GLTeapot est une application permettant de tester le rendu OpenGL, en affichant un modèle 3D de la théière de l’Utah.

              En plus de la théière, cette application affiche un compteur du nombre d’images affichées par secondes. Bien que les chiffres affichés ne soient pas du tout représentatifs des performances d’un rendu 3D réaliste, certains utilisateurs insistent lourdement pour pouvoir faire le concours de gros chiffres de nombre d’images par seconde.

              Il est donc à nouveau possible de désactiver la synchronisation sur le rafraîchissement de l’écran, et demander au processeur de réafficher la théière plusieurs centaines de fois par seconde, bien que l’écran soit incapable de suivre le rythme. Par défaut, la synchronisation est activée et le rafraîchissement ne dépassera jamais 60 FPS, si toutefois le pilote graphique implémente les fonctions de synchronisation nécessaires.

              HaikuDepot

              HaikuDepot est un hybride entre un gestionnaire de paquets et un magasin d’applications.

              Il se compose d’un serveur (développé en Java) fournissant une API REST et permettant de collecter les informations sur les applications (icônes, captures d’écrans, catégories, votes et revues des utilisateurs, choix de la rédaction pour les applications mises en avant…), d’un frontend web minimaliste et d’une application native C++ permettant d’afficher ces données.

              La principale nouveauté est l’intégration du système de single-sign-on (SSO) permettant d’utiliser un compte utilisateur commun avec d’autres services en ligne de Haiku. Actuellement, l’outil de revue de code Gerrit
              utilise ce même compte, mais ce n’est pas encore le cas pour Trac (outil de suivi des bugs) ni pour le forum. Ce sera mis en place plus tard.

              De façon peut-être moins visible, mais pas moins importante, le code C++ de l’application a reçu de nombreuses améliorations et optimisations « sous le capot », rendant l’application plus rapide et plus fiable, mais qui sont un peu difficiles à résumer dans le cadre de cette dépêche.

              Enfin, l’apparence de l’application a été légèrement retravaillée pour mieux s’adapter aux écrans à haute définition (ce qui nécessite d’avoir des marges et espacements de taille dynamique en fonction de la taille de texte choisie par l’utilisateur).

              Icon-O-Matic

              Capture d’écran de l’éditeur d’icônes

              Icon-O-Matic est un éditeur d’icônes. Il permet d’exporter les fichiers au format HVIF, un format vectoriel compact qui permet de stocker les icônes dans l’inode d’en-tête des fichiers pour un chargement et un affichage rapide.

              Cette application a bénéficié du travail de Zardshard pendant le Google Summer of Code 2023, elle a donc reçu plusieurs évolutions et corrections importantes (dont certaines sont mentionnées dans la dépêche anniversaire de l’année dernière).

              Citons en particulier l’ajout d’un nouveau type de transformation, « perspective », qui permet de facilement déformer un ensemble de chemins vectoriels selon une projection de perspective, ce qui est assez utile pour concevoir plus facilement une icône avec un aspect tridimensionnel (bien qu’en pratique l’apparence habituelle des icônes de Haiku soit un intermédiaire entre une projection perspective et une vue isométrique, ne se prêtant pas forcément à l’utilisation de cette opération de transformation purement mathématique).

              Une autre petite amélioration est l’ajout d’une vérification pour empêcher la fenêtre de Icon-O-Matic de se positionner en dehors de l’écran, par exemple si on a déplacé la fenêtre vers le bas de l’écran, enregistré cette position, puis relancé l’application dans une résolution d’écran plus réduite. Dans ce cas, la fenêtre sera automatiquement ramenée dans la zone visible de l’affichage.

              Magnify

              L’application Magnify permet d’afficher une vue zoomée d’une partie de l’écran. Elle peut servir pour améliorer l’accessibilité (mais n’est pas idéale pour cet usage), mais aussi pour les développeurs d’interfaces graphiques qui ont parfois besoin de compter les pixels pour s’assurer que leurs fenêtres sont bien construites.

              En plus de l’affichage zoomé, l’application permet d’afficher l’encodage RGB de la couleur d’un pixel, ou encore de placer des « règles » permettant de vérifier l’alignement des objets. Ces dernières ont reçu une petite mise à jour, avec une amélioration de l’affichage de leur largeur et hauteur pour les rendre plus lisibles.

              Magnify avec une 'règle'

              MediaPlayer

              L’affichage des sous-titres ne fonctionnait pas correctement, il manquait une partie du texte. C’est maintenant corrigé.

              PowerStatus

              Capture d’écran de PowerStatus: fenêtre principale et icône de la DeskBar avec son menu

              L’application PowerStatus permet de surveiller l’état de la batterie pour les ordinateurs qui en disposent.

              Elle a reçu plusieurs améliorations importantes :

              Une notification a été ajoutée pour un niveau de décharge très faible (en plus du niveau faible déjà présent). Ces deux niveaux peuvent être paramétrés à un pourcentage choisi de décharge de la batterie, et associé à des sons d’alerte spécifiques. Avant ces changements, il était facile de ne pas voir le message d’alerte (affiché seulement pendant quelques secondes) ou de se dire qu’avec 15% de batterie on a encore le temps de faire plein de trucs, puis se retrouver un peu plus tard avec une batterie vide sans autre avertissement.

              L’état « not charging » est maintenant détecté et correctement affiché, pour une batterie au repos : ni en train de se charger, ni en train d’alimenter la machine. C’est en particulier le cas d’une batterie déjà chargée à 100%, si la machine reste connectée au réseau électrique.

              L’icône de statut de la batterie s’installe automatiquement dans la DeskBar au premier démarrage de Haiku sur les machines disposant d’une batterie.

              Le réglage du mode « performance » ou « économie d’énergie" est enregistré et ré-appliqué lors des prochains démarrages (ces modes configurent l’ordonnanceur du noyau pour exécuter un maximum de tâches sur tous les cœurs du processeur, ou bien au contraire pour essayer de garder ces cœurs en veille autant que possible s’ils ne sont pas nécessaires).

              SerialConnect

              SerialConnect est une application de terminal série, utile principalement aux développeurs de systèmes embarqués et autres gadgets électroniques.

              Elle est encore en cours de développement et propose pour l’instant les fonctions les plus basiques. Il est maintenant possible de coller du texte depuis le presse-papier pour l’envoyer sur un port série, ce qui est pratique si on veut envoyer plusieurs fois la même séquence de commandes.

              ShowImage

              ShowImage est la visionneuse d’images de Haiku. Elle utilise les traducteurs, des greffons avec une API standardisée qui permettent de convertir différents formats de fichiers entre eux.

              L’interface graphique de ShowImage a été mise à jour pour utiliser le « layout system ». Historiquement, dans BeOS, tous les éléments des interfaces graphiques devaient être positionnés manuellement avec des coordonnées en pixels, ce qui est pénible à faire, surtout si on doit traiter tous les cas (polices de caractères de différentes tailles, remplacement des textes lors de traductions, utilisation de thème d’interfaces différents), et aussi lors d’évolution de l’application (si on veut insérer un élément en plein milieu, il faut souvent décaler tout ce qui se trouve autour).

              Le « layout system » fournit un ensemble d’outils pour automatiser ce travail, soit à l’aide d’éléments prédéfinis (grilles, groupes, « cartes » superposées), soit à l’aide d’un système de définition de contraintes et de programmation linéaire.

              D’autre part, ShowImage dispose maintenant d’un menu permettant d’ouvrir l’image affichée dans un éditeur d’images.

              Terminal

              Le Terminal de Haiku permet d’exécuter un shell (c’est bash par défaut) et toutes les applications conçues pour un affichage en console.

              Les principaux changements cette année sont la correction d’un problème sur la configuration des couleurs utilisées par le Terminal (il y avait un mélange entre le nom anglais et le nom traduit des couleurs, empêchant d’enregistrer et de relire correctement le fichier de configuration), ainsi que des modifications sur les raccourcis clavier utilisés par le Terminal lui-même (en particulier pour naviguer entre plusieurs onglets) qui entraient en conflit avec ceux utilisés par les applications lancées dans le terminal.

              Le terminal est également capable de traiter les « bracketed paste », c’est-à-dire que les applications en console sont informées que des caractères en entrée proviennent du presse-papier. Cela permet par exemple à bash de ne pas exécuter directement des commandes qui sont collées, mais de les mettre en surbrillance et d’attendre que l’utilisateur valide cette saisie.

              D’un point de vue plus bas niveau, les pilotes TTY utilisés pour les ports série et pour le Terminal, qui étaient indépendants, ont été unifiés afin d’éviter de devoir corriger tous les bugs deux fois dans deux versions du code presque identiques.

              Tracker

              Tracker est le navigateur de fichiers de Haiku. Tout comme la DeskBar, il fait partie des quelques rares morceaux de BeOS qui ont été publiés sous licence libre par Be et ont donc pu être repris directement par Haiku. Contrairement à la DeskBar, la publication du code du Tracker avait conduit à l’apparition de nombreux forks, chacun améliorant à sa façon le logiciel. La version utilisée par Haiku provient principalement du projet OpenTracker, mais a réintégré ou réimplémenté au fil du temps les modifications faites dans d’autres variantes.

              Le Tracker est un composant central de l’interface de Haiku et a donc reçu un nombre assez important d’évolutions :

              La taille des fichiers est maintenant affichée à l’aide de la fonction string_for_size qui s’adapte aux conventions de la langue et du pays choisi par l’utilisateur.

              Les brouillons de courrier électronique disposent maintenant de leur propre type MIME et de l’icône associée. Ils s’ouvriront dans un éditeur de mail plutôt que dans une fenêtre de lecture de message.

              Pour les fichiers qui disposent d’un attribut « rating » (évaluation), ce dernier est affiché avec des étoiles pleines ou vides selon la note attribuée. La note va de 0 à 10 mais il n’y a que 5 étoiles. Le caractère demi-étoile permet d’afficher la note exacte avec les versions récentes d’Unicode (depuis 2018 en fait, mais il a fallu attendre la disponibilité dans une police de caractères).

              Une fenêtre du Tracker, montrant la colonne taille et la colonne rating

              La gestion des dossiers en lecture seule a été améliorée. Ils sont affichés sur fond gris (au lieu d’un fond blanc pour les dossiers modifiables) et tous les menus correspondant à des opérations non autorisées sont désactivés (au lieu d’être activés, mais d’aboutir sur une erreur car le dossier est en lecture seule).

              Dans le même esprit, le bouton « ouvrir » des boîtes de dialogues d’ouverture de fichier est désactivé si le fichier sélectionné ne peut pas être ouvert (c’était déjà le cas, mais tous les cas possibles n’étaient pas bien pris en compte).

              Un problème d’affichage sur le système de fichier packagefs a été corrigé : les dossiers n’ont pas de taille et affichent donc - au lieu d’une taille fixe de 4 Kio qui n’a aucune signification.

              La fenêtre de recherche a reçu quelques évolutions, voir plus bas dans la section dédiée au Google Summer of Code, qui détaille le travail réalisé à ce sujet.

              Le menu « templates », utilisé quand on fait un 'clic droit -> Nouveau…' et qui permet de créer différents types de fichiers et de dossiers à partir de fichiers de référence, peut maintenant contenir des sous-dossiers, pour les personnes qui utilisent beaucoup cette possibilité, avec par exemple des modèles de documents pré-remplis pour différents usages.

              Enfin, un peu de nettoyage interne : les classes NavMenu et SlowContextPopup, qui permettent la navigation dans les sous-dossiers via des menus popup, ont été fusionnées en une seule classe car elles sont toujours utilisées ensemble. Cela simplifie le code pour l’affichage de ces menus, qui a quelques particularités pour permettre une navigation confortable même sur un disque dur un peu lent.

              TV

              L’application TV utilisée pour recevoir la TNT à l’aide d’un tuner approprié a été déplacée dans le paquet haiku_extras et n’est donc plus installée par défaut. La plupart des gens ne disposant pas d’un tuner compatible sur leur ordinateur, cette application était source de confusion et de nombreuses questions sur le forum.

              WebPositive

              WebPositive est le navigateur web de Haiku. Il utilise le moteur WebKit développé conjointement par Apple, Igalia et Sony principalement.

              En dehors de la mise à jour du moteur vers une version plus récente, WebPositive reçoit actuellement peu d’évolutions, les développeurs étant malheureusement trop occupés par ailleurs. On peut toutefois mentionner une correction sur la barre de signets : celle-ci ne s’affichait jamais lorsque la langue du système était autre chose que l’anglais.

              Zip-O-Matic

              Zip-O-Matic est un outil permettant de créer une archive zip facilement depuis le Tracker. Il a reçu une amélioration qui est en fait une correction d’un problème qui existait depuis longtemps : l’archive créée est maintenant automatiquement sélectionnée dans le navigateur de fichier à la fin du processus, ce qui permet de facilement la retrouver pour la renommer, la déplacer ou l'envoyer à son destinataire.

              Haikuports

              Haikuports est un projet indépendant de Haiku, il se charge d’alimenter le dépôt de paquets. Au départ il s’agissait principalement d’un projet pour le portage de bibliothèque et de programmes venant d’autres systèmes (d’où son nom), mais il est également utilisé pour la plupart des applications natives développées pour Haiku.

              Le dépôt de paquets contient actuellement 4193 paquets, il est mis à jour en continu par une petite équipe de bénévoles qui ne sont pas forcément tous développeurs, mais tout de même capables de faire les tâches de maintenance ainsi que le développement de quelques patchs simples.

              Il est impossible de lister toutes les mises à jour et ajouts, le projet HaikuPorts étant très actif. Donc voici une sélection arbitraire de quelques nouveautés et mises à jour.

              Applications natives

              • Mises à jour de Renga (client XMPP), PonpokoDiff (outil de diff), 2pow (clone de 2048), StreamRadio (lecteur de podcasts), NetSurf (navigateur web léger)…
              • Genio, un IDE pour Haiku avec gestion de la complétion de code via le protocole LSP (compatible avec les outils développés pour VS Code par exemple).
              • Ajout de HaikuUtils, un ensemble d’outils de développement et de debug divers.
              • WorkspaceNumber, un replicant pour afficher le numéro du bureau actif dans la DeskBar.
              • KeyCursor, un outil pour contrôler le curseur de souris à l’aide du clavier.
              • BatchRename, un outil pour renommer automatiquement des fichiers par lot.

              HaikuUtils

              WorkspaceNumber

              PonpokoDiff

              PecoRename

              2pow

              BatchRename

              Applications portées

              • Un gros travail a été fait sur le portage de KDE Frameworks et des applications l’utilisant. De très nombreuses applications Qt et KDE sont donc disponibles.
              • Du côté de GTK, il n’existait pas de version de GTK pour Haiku, le problème a été résolu à l’aide d’une couche de compatibilité avec Wayland qui n’implémente pas le protocole Wayland mais réimplémente l’API de la libwayland. Les applications GTK arrivent petit à petit, mais l’intégration est pour l’instant beaucoup moins bonne qu’avec Qt, qui dispose lui d’un vrai port utilisant les APIs natives directement. L’apparence des applications est très visiblement différente, certaines touches du clavier ne fonctionnent pas. C’est donc encore un peu expérimental.
              • Enfin, pour compléter les possibilités d’outils graphiques, la bibliothèque Xlibe implémente les APIs de la libx11 (mais pas le protocole de communication de X) et permet de porter les applications FLTK par exemple, ainsi que celles utilisant directement la libx11. Il reste encore des problèmes avec les applications utilisant Tk (si vous connaissez Tk ou X, les développeurs de Xlibe aimeraient bien un petit coup de main). En attendant, les applications Tk sont utilisables à travers un portage de undroidwish, mais ça reste peu confortable.

              Du côté des compilateurs et des langages de programmation : LLVM a été mis à jour en version 17. GCC est disponible en version 13 et peut maintenant être utilisé pour compiler du FORTRAN et de l’Objective-C. Les dernières versions de Python sont disponibles, et en plus avec des performances améliorées. Node.JS est également mis à jour, ou si vous préférez le langage R, vous le trouverez également, avec son IDE associé rkward.

              Bien sûr, la plupart des bibliothèques et outils disponibles sur d’autres systèmes sont aussi disponibles : ffmpeg (en version 6), Git, libreoffice, Wireshark…

              Mentionnons enfin un pilote FUSE pour monter des volumes réseau NFS, qui vient compléter les deux implémentations de NFS présentes dans le noyau (une obsolète qui implémente NFS2, et une plus récente implémentant NFS4, mais qui est instable et pas activement maintenue actuellement).

              GCompris

              DrawTerm

              KDE Mah Jong

              NetBeans

              Frogatto

              CudaText

              Cantor

              Panneaux de préférences

              Appearance

              Les préférences « Appearance » permettent de configurer l’apparence du système et des applications : principalement les polices de caractères et les choix de couleurs.

              C’est ce dernier qui reçoit une mise à jour en profondeur, avec l’ajout d’un mode automatique. Auparavant, chaque couleur utilisée par le système devait être configurée manuellement, ce qui permet un contrôle très fin, mais demande de passer un certain temps à faire des ajustements. Le mode automatique permet de configurer seulement 3 couleurs : le fond des fenêtres, les barres de titres, et une couleur d’« accentuation ». Les autres couleurs et nuances sont calculées automatiquement à partir de cette palette de base.

              En particulier, il devient beaucoup plus facile de choisir un fond sombre pour se retrouver avec un système en mode sombre, très à la mode chez certain·e·s utilisateurices de Haiku.

              Il est toujours possible d’activer le mode avancé pour affiner les réglages si nécessaire (ou si vous aimez les interfaces graphiques bariolées et multicolores).

              Le mode automatique dans l’application Appearance

              La même capture d’écran avec une configuration « mode sombre »

              Keymap (disposition clavier)

              L’application Keymap permet de configurer la disposition de touches du clavier. Le point qui a reçu un peu d’attention est la gestion de la configuration des touches modificatrices.

              Haiku est un dérivé de BeOS qui lui-même a été au départ inspiré de Mac OS. On conserve de cet héritage l’utilisation des touches commande et option au lieu de meta et alt sur les claviers de PC. Mais BeOS et Haiku sont conçus pour être utilisés avec des claviers de PC. La touche commande qui prend la place de la touche ALT est donc celle utilisée pour la plupart des raccourcis claviers. Cela se complique si on essaie d’utiliser un clavier fabriqué par Apple (les codes de touches renvoyés par le clavier pour des touches situées au même endroit ne sont pas les mêmes), ou encore si on a besoin d’une touche AltGr (historiquement utilisée comme touche option par BeOS, mais aujourd’hui ce rôle est plutôt attribué à la touche windows apparue un peu plus tard). Une page sur le wiki de développement de Haiku tente de résumer l’historique et la situation actuelle.

              La configuration des touches modificatrices est donc un sujet complexe, et il est probable que le comportement sera à nouveau modifié plus tard. Quoi qu’il en soit, en attendant, l’application Keymap permet toutes les permutations possibles de configuration de ces touches.

              Screen (Affichage)

              Les préférences d’affichage, en plus de permettre de changer la résolution d’écran, affichent quelques informations essentielles sur la carte graphique et l’écran en cours d’utilisation. Pour les écrans, ces informations sont généralement extraites des données EDID, mais il y a une exception : les dalles d’affichage des PC portables n’implémentent en général pas ce protocole. Les informations sont donc récupérées par d’autres moyens parfois moins bien normalisés. Par exemple, l’identifiant du fabricant est un code à 3 lettres. En principe, les fabricants doivent s’enregistrer auprès d’un organisme qui attribue ces codes, afin d’en garantir l’unicité.

              Cependant, certains fabricants ne l’ont pas fait, et se sont choisi eux-mêmes un code qui semblait inutilisé. La base de données officielle réserve donc ces codes et en interdit l’utilisation, afin d’éviter des conflits. Il arrivait donc que le fabriquant d’un écran soit affiché comme étant « DO NOT USE », ce qui a inquiété quelques utilisateurs de Haiku se demandant s’ils risquaient d’endommager leur matériel.

              Ces entrées de la liste sont maintenant filtrées et remplacées par les noms des fabricants de panneaux d’affichages concernés (lorsqu’on sait de qui il s’agit).

              Outils en ligne de commande

              Haiku est fourni avec un terminal et un shell bash (par défaut, d’autres shells peuvent également être utilisés). Les outils définis dans la spécification POSIX sont fournis, ainsi que des compléments permettant d’utiliser les fonctionnalités supplémentaires de Haiku.

              df

              La commande df affiche l’espace disque disponible sur chaque volume de stockage actuellement monté.

              Les colonnes de l’affichage ont été réorganisées, pour être plus lisibles, et se rapprocher un peu du format spécifié par POSIX (mais pas complètement lorsqu’on lance la commande sans options particulières : des informations supplémentaires sont alors affichées).

              filteredquery

              L’outil filteredquery permet d’effectuer une requête sur les attributs étendus du système de fichiers (permettant de requêter le système de fichiers comme une base de données, plutôt que de naviguer de façon hiérarchique dans les dossiers), puis de filtrer le résultat pour ne conserver que les réponses contenues dans un sous-dossier spécifique. En effet, les requêtes étant indépendantes de l’organisation des dossiers, il est nécessaire de faire ce filtrage par post-traitement des résultats (ce qui reste tout de même généralement plus rapide que de faire l’inverse : parcourir tous les fichiers d’un dossier pour trouver ceux correspondant à un critère particulier).

              Cet outil n’a pas reçu de nouvelles fonctionnalités, mais de nombreuses corrections et nettoyages qui le rendent véritablement utilisable.

              ping, traceroute, telnet, ftpd

              Ces commandes liées à des opérations sur le réseau ont été remplacées par les dernières versions développées par FreeBSD, permettant de bénéficier d’une version moderne, avec plus de fonctionnalités et moins de bugs.

              La commande ping6 est supprimée, car ping peut maintenant utiliser l’IPv6 aussi bien que l’IPv4.

              pkgman

              L’outil pkgman permet de télécharger et d’installer des logiciels et des mises à jour.

              Il a peu évolué, mais on peut tout de même noter l’utilisation d’un algorithme de tri « naturel » pour l’affichage des résultats dans l’ordre alphabétique (par exemple, llvm12 sera affiché après llvm9).

              Une fonction qui n’est toujours pas disponible dans pkgman est le nettoyage des dépendances non utilisées. Un script fourni dans le dépôt Git de Haiku permet de réaliser manuellement une analyse des paquets installés sur le système pour détecter ceux qui n’ont pas de dépendances, il faudra pour l’instant se contenter de cette solution.

              strace

              L’outil strace permet d’afficher les appels systèmes effectués par une application, pour comprendre son interfaçage avec le noyau et investiguer certains problèmes de performances ou de mauvais comportements.

              L’interfaçage avec le noyau pour extraire ces informations étant assez spécifique, l’implémentation de strace est faite à partir de zéro, et ne partage pas de code avec la commande du même nom disponible par exemple sous Linux.

              strace est mis à jour régulièrement et en fonction des besoins des développeurs de Haiku pour décoder et afficher de plus en plus d’informations. Par exemple, elle peut maintenant afficher le contenu des iovec (par exemple pour les fonctions readv ou writev), ainsi que les objets manipulés par wait_for_object et event_queue.

              Un exemple de sortie de strace (traçant l’ouverture d’un fichier et le chargement d’une bibliothèque partagée) avant ces changements:

              open(0x5, "plaintext", 0x2042, 0x0) = 0x8000000f () (49 us)
              map_file("libicuuc.so.66 mmap area", 0x7f04c2675228, 0x6, 0x1ababd0, 0x1, 0x0, true, 0x3, 0x0) = 0x329a0 () (108 us)
              

              et après :

              open(0x5, "plaintext", O_RDWR|O_NOTRAVERSE|O_CLOEXEC, 0x0) = 0x8000000f Operation not allowed (57 us)
              map_file("libicuuc.so.66 mmap area", [0x0], B_RANDOMIZED_ANY_ADDRESS, 0x1ababd0, B_READ_AREA, 0x0, true, 0x3, 0x0) = 0x73e8 ([0x6392223000]) (135 us)
              

              whence

              La commande whence permettait de trouver dans le PATH un exécutable à partir de son nom. Elle était implémentée sous forme d’une fonction bash dans le fichier profile par défaut. Cependant, cette implémentation posait problème pour charger le fichier profile avec d’autres shells, elle a donc été supprimée. La commande which peut être utilisée à la place, puisqu’elle remplit un rôle équivalent.

              Serveurs

              Les serveurs sont l’équivalent des daemons pour UNIX ou des services sous Windows : il s’agit d’applications lancées par le système pour rendre différents services et coordonner l’ensemble des applications.

              app_server

              app_server est le serveur graphique de Haiku, équivalent de X ou de Wayland. Il se distingue par un rendu graphique fait principalement côté serveur (pour les applications natives), ce qui permet de l’utiliser de façon fluide à travers une connexion réseau.

              Bien que ce soit le serveur graphique, et qu’il ait reçu plusieurs améliorations importantes, les différences sont subtiles. Elles sont toutefois importantes pour proposer un système qui semble réactif et confortable à utiliser.

              Un premier changement est une réarchitecture du code qui traite le rafraîchissement de l’écran. Ce rafraîchissement se fait en général en plusieurs étapes, par exemple, si on déplace une fenêtre :

              • Le contenu de la fenêtre déplacée peut être directement recopié de l’ancienne position vers la nouvelle,
              • La zone où se trouvait la fenêtre auparavant doit être re-remplie avec ce qui se trouvait en dessous de la fenêtre déplacée. Cela peut être plusieurs morceaux de fenêtres d’autres applications, qui vont devoir chacune ré-afficher une partie de cette zone.

              Le problème étant que certaines applications peuvent mettre un peu de temps à répondre à cette demande de ré-affichage (par exemple parce qu’elles sont occupées ailleurs, ou alors parce que la zone à redessiner est relativement complexe).

              Différentes stratégies peuvent être mises en place dans ce cas : laisser à l’écran le contenu obsolète, ou remplir la zone en blanc en attendant que les données deviennent disponibles, par exemple. Ou encore, tout simplement ne rien mettre à jour du tout tant que tout l’écran n’est pas prêt à être affiché. Il faut faire un compromis entre la réactivité (déplacer la fenêtre tout de suite), la fluidité (éviter les clignotements de zones blanches) et la précision (affichage d’information cohérente et à jour).

              Plusieurs modifications ont permis d’obtenir un meilleur compromis.

              Dans un autre domaine, la police de caractères par défaut « Noto Sans Display » a été remplacée par « Noto Sans », ce qui donne un affichage du texte légèrement différent. La police « display » avait été choisie suite à une mauvaise compréhension de la signification de ce mot en typographie : il signifie que c’est une police de caractères à utiliser pour des gros titres et autres textes courts. Il ne signifie pas que c’est une police à utiliser sur un écran d’ordinateur. De toutes façons la police Noto Display n’est plus maintenue par Google et a disparu des dernières versions du jeu de polices Noto.

              Toujours dans le domaine des polices de caractères, app_server sait maintenant charger les fichiers « variable fonts ». Ces fichiers contiennent plusieurs polices de caractères définies à partir de glyphes de base, et d’algorithmes de transformation et de déformation (pour rendre une police plus ou moins grasse, plus ou moins italique…). Pour l’instant, app_server sait charger les valeurs de ces paramètres qui sont préconfigurées dans le fichier. Cela permet de réduire la place utilisée par les polices de caractères sur le media d’installation de Haiku (c’est l’un des plus gros consommateurs d’espace disque, qui nous empêche de faire tenir une version complète de Haiku sur un CD de démonstration par exemple).

              Plus tard, il sera également possible de configurer plus finement ces paramètres pour générer des variantes intermédiaires des polices de caractères, ainsi que d’exploiter certaines polices qui offrent des paramètres configurables supplémentaires.

              input_server

              L’input_server se charge de lire les données venant des périphériques d’entrée (clavier et souris) et de les convertir en évènements distribués aux applications. Il est extensible par des add-ons qui peuvent générer ou filtrer des évènements, ce qui peut être utilisé pour de l’accessibilité (émuler une souris à partir de touches du clavier), de l’automatisation (envoi de commandes pré-enregistrées), du confort d’utilisation (bloquer le touchpad d’un ordinateur portable lorsque le clavier est en cours d’utilisation) et bien d’autres choses.

              L’input_server a reçu des corrections de problèmes sur la gestion des réglages de souris, permettant en particulier d’utiliser des réglages différents pour plusieurs périphériques (souris, touchpad), et que ceux-ci soient bien enregistrés.

              registrar

              Le serveur registrar suit les applications en cours de fonctionnement, et leur permet de communiquer entre elles au travers de l’envoi de messages. Il assure également le suivi de la base de données des types MIME et des associations de types de fichiers avec les applications correspondantes.

              L’implémentation de BMessageRunner, qui permet d’envoyer des messages périodiques (par exemple pour faire clignoter le curseur des zones de texte à la bonne vitesse), autorise maintenant des intervalles de répétition en dessous de 50 millisecondes. Cela permet d’utiliser ce système pour des animations fluides de l’interface graphique, par exemple.

              D’autre part, la liste des applications et documents récemment lancés est maintenant limitée à 100 entrées. Cela évite un fichier qui grossit indéfiniment et finit par contenir surtout des vieilles informations sans intérêt.

              Kits

              Le système Haiku fournit les mêmes APIs que BeOS. Elles couvrent les usages basiques d’une application, et sont découpées (dans la documentation de BeOS et de Haiku, au moins) en « kits » qui prennent chacun en charge une partie spécifique (interface graphique, multimédia, jeux vidéos, accès au matériel, etc).

              Interface

              L’interface kit est la partie de la bibliothèque standard qui se charge des interfaces graphiques.

               BColumnListView

              BColumnListView est un ajout de Haiku par rapport à BeOS. Il s’agit d’un élément d’interface permettant de présenter une liste avec plusieurs colonnes, de trier les lignes selon le contenu de ces colonnes, et aussi d’avoir des items hiérarchisés avec la possibilité de plier et déplier une partie de l’arborescence.

              Cette classe remplace avantageusement BListView et surtout BColumnListView, les classes historiques de BeOS, qui sont beaucoup plus limitées.

              Un certain nombre de type de colonnes prédéfinis sont également disponibles, ce qui facilite la construction d’interfaces présentant les données de différentes applications avec le même formatage.

              La classe BColumnListView elle-même n’a pas changé. Par contre, les colonnes de type « taille » (pour afficher une taille en Kio, Mio, Gio…) et « date » utilisent la langue choisie dans les préférences système au lieu d’un format anglais par défaut.

              BTextView

              BTextView est une classe permettant d’afficher une zone de texte éditable. Elle implémente les fonctionnalités de base (curseur, sélection, retour à la ligne automatique) ainsi que quelques possibilités de mise en forme (couleurs, polices de caractères).

              BTextView peut également être utilisée pour des zones de textes non éditables, souvent plus courtes. Cela permet de réutiliser une partie des algorithmes de mise en page et de formatage du texte dans différents contextes. Dans le cadre de l’utilisation du « layout system », une vue doit pouvoir indiquer sa taille minimale, maximale et optimale. Le « layout system » va ensuite calculer la meilleure disposition de fenêtre possible pour satisfaire ces contraintes.

              Le cas des zones de texte est particulier, car la hauteur optimale dépend du nombre de lignes de texte, qui lui-même peut être plus ou moins grand si la largeur de la vue oblige à ajouter des retours à la ligne. Le « layout kit » prend en compte ce cas particulier, mais les algorithmes ne sont pas encore tout à fait au point et peuvent conduire à des résultats inattendus dans certains cas. Un de ces cas particuliers sur les zones de texte non éditables a été corrigé.

              BMenu

              La classe BMenu permet d’afficher un menu. Elle est utilisée de plusieurs façons, puisqu’on trouve des menus dans des barres de menu, dans des contrôles de type « popup », ou encore en faisant un clic droit sur certains éléments de l’interface.

              Les menus sont également particuliers parce qu’ils peuvent d’étendre en dehors de la fenêtre dont ils sont originaires. Ils sont donc implémentés sous forme de fenêtres indépendantes. Mais cela pose un autre problème : dans Haiku, chaque fenêtre exécute son propre thread et sa propre boucle d’évènements. Si on navigue dans un grand nombre de menus et de sous-menus, cela peut causer quelques problèmes de synchronisation et de performances.

              Le code contient également un grand nombre de cas particuliers pour, par exemple, aligner les raccourcis claviers et les flèches indiquant la présence de sous-menus ente les différents items d’un menu, ou encore détecter si un déplacement de souris a pour but de sélectionner un autre menu (en dessous ou au-dessus de celui actif), ou bien plutôt de naviguer vers un sous-menu.

              Les nouveautés suivantes sont apparues cette année:

              • Correction de problèmes de race condition lors de l’ajout d’items dans un menu pendant qu’il est affiché à l’écran. Ce problème se manifestait par exemple dans les menus affichant la liste des réseaux Wifi, qui sont mis à jour en temps réel.
              • Finalisation de l’implémentation de la navigation au clavier (avec les flèches directionnelles) dans les menus.
              • Affichage des symboles graphiques UNICODE pour « backspace » (⌫) et « delete » (⌦) si ces touches sont utilisées comme raccourcis clavier pour un item de menu.
              • Utilisation d’un algorithme de tri stable pour la fonction SortItems. Ce type d’algorithme préserve l’ordre relatif des items qui sont égaux d’après la fonction de comparaison. Ce n’est pas le cas de certains algorithmes de tri classiques, notamment le quicksort. La conséquence était que trier un menu déjà trié pouvait changer l'ordre des items. C’était visible encore une fois sur le menu listant les réseaux Wifi, qui est trié par puissance du signal reçu.

               BSpinner

              BSpinner est un contrôle permettant de choisir une valeur numérique, soit à l’aide de boutons +/- pour modifier la valeur par incréments, soit en entrant directement la valeur dans une zone de texte.

              Il s’agit d’une extension de Haiku par rapport à BeOS qui ne proposait pas cette fonctionnalité.

              Cette classe est encore en cours de développement. Elle a reçu des améliorations pour désactiver correctement les boutons +/- lorsque la valeur atteint le minimum ou le maximum autorisé, et aussi une correction sur le message de notification envoyé lors des changements de valeurs du spinner, qui ne contenaient pas la bonne valeur.

              rgb_color

              La structure rgb_color permet de représenter une couleur par la valeur de ses composantes rouge, vert, bleu (comme son nom l’indique) et alpha (comme son nom ne l’indique pas). Elle fournit également un certain nombre de fonctions pour mélanger des couleurs, les éclaircir ou les assombrir.

              La méthode Brightness() dans la classe rgb_color implémentante maintenant l’algorithme perceptual brightness documenté par Darel Rex Finley, qui donne des meilleurs résultats que l’algorithme utilisé précédemment (qui était celui de la luminosité dans l’espace de couleurs Y'IQ. La fonction perceptual_brightness devenue redondante est supprimée.

              Cette méthode permet en particulier de déterminer si une couleur est « sombre » ou « claire », et ainsi de décider si du texte affiché par-dessus doit être blanc ou noir (comme démontré ici par exemple).

              Locale

              Le locale kit se charge de tous les aspects liés à la localisation : traductions des applications, formatage des messages en utilisant les règles de pluralisation de chaque langue, formatage de dates, de nombres avec et sans unités, de pourcentages, nom des fuseaux horaires…

              Il utilise ICU pour implémenter la plupart de ces fonctionnalités, mais fournit une surcouche avec une API s’intégrant mieux avec les autres kits.

              La principale évolution cette année est l’implémentation de BNumberFormat, qui permet de formater des nombres. Elle permet de choisir une précision (nombre de décimales - pour les langues qui utilisent un système décimal), d’afficher ou non des séparateurs de groupes (de milliers en français, mais par exemple en Inde la séparation se fait traditionnellement par multiples de 10 000).

              Media

              Le media kit se charge de tous les aspects multimedia.

              Il se compose de deux parties. D’une part, un système de gestion de flux média temps réel, permettant de transférer des données multimédia (son ou flux vidéo par exemple) entre différentes applications qui vont les manipuler, le tout avec un certain contrôle du temps de traitement ajouté par chaque opération, pour tenter de minimiser la latence tout en évitant les vidages de tampons qui produiraient une interruption dans le flux. D’autre part, des classes permettant d’encoder et de décoder des fichiers média et d’en extraire des flux de données (encodées ou décodées).

              C’est surtout cette deuxième partie qui a reçu quelques évolutions. La version de ffmpeg utilisée pour le décodage de presque tous les formats audio et video est maintenant la dernière version ffmpeg 6. Quelques autres problèmes (erreurs d’arrondis, gestion des tampons partiels en fin de fichier) ont également été corrigés, ce qui permet de faire fonctionner à nouveau le jeu BePac Deluxe qui est extrêmement intolérant au moindre écart de comportement par rapport à l’implémentation du Media Kit dans BeOS.

              Support

              Le support kit contient un ensemble de classes basiques mais indispensables : gestion des chaînes de caractères, des tampons en mémoire, etc. Il fournit les briques de bases utilisées par les autres kits.

              BDataIO

              BDataIO est une classe abstraite avec des fonctions de lecture et d’écriture. Plusieurs autres classes sont des instances de BDataIO, par exemple BFile (représentant un fichier), mais aussi BMemoryIO (permettant d’accéder à une zone mémoire).

              Plusieurs autres classes acceptent BDataIO (ou sa sous-classe BPositionIO, qui ajoute la possibilité de se déplacer à une position donnée dans le flux) comme entrée ou comme sortie. Il est donc facilement possible de réaliser les mêmes opérations sur un fichier, une zone de données en mémoire, un socket réseau, ou tout autre objet susceptible de fournir une interface similaire.

              BDataIO elle-même n’a pas évolué, mais deux de ses implémentations, BBufferedDataIO et BAdapterIO, ont été améliorées. Ces deux classes permettent de construire un objet BDataIO à partir d’un autre, en ajoutant un cache en mémoire pour accélérer les opérations ou encore pour rendre compatible avec BPositionIO un objet qui ne l’est pas.

              Ces classes sont en particulier utilisées par l’application StreamRadio, qui implémente la lecture de podcasts en connectant directement le résultat d’une requête HTTP (effectuée grace au network kit) dans un décodeur audio (via la classe BMediaFile du media kit). La mise en tampon permet de revenir en arrière dans la lecture d’un épisode, de télécharger en avance les données qui vont être lues, et d’éviter de conserver inutilement en mémoire les données qui sont déjà lues par l’application.

              Bibliothèques C

              Les « kits » mentionnés ci-dessus sont l’API en C++ utilisée par les applications Haiku.

              Il existe aussi des APIs en C, en grande partie implémentant la bibliothèque C standard et les fonctions décrites dans la spécification POSIX.

              Libroot

              Libroot implémente la bibliothèque standard C. Elle regroupe entre autres la libc, la libm, et la libpthread, qui sont parfois implémentées comme 3 bibliothèques différentes pour d’autres systèmes. Les évolutions consistent à compléter l’implémentation de la spécification POSIX, et à suivre les évolutions de cette dernière ainsi que des nouvelles versions du langage C. On trouve également des corrections de bugs découverts en essayant de faire fonctionner de plus en plus d’applications sur Haiku, ce qui permet de mettre en évidence des différences de comportement avec d’autres systèmes.

              • Ajout de getentropy pour initialiser les générateurs de nombres aléatoires
              • Correction de problèmes de locks au niveau de l’allocateur mémoire lors d’un fork
              • Plusieurs corrections sur l’implémentation de locale_t, remplacement de code écrit pour Haiku ou provenant de FreeBSD par une implémentation simplifiée mais suffisante, provenant de la bibliothèque C musl.
              • Ajout de static_assert en C11
              • Correction d’un crash lors de l’utilisation de certaines fonctions XSI
              • Ajout de stpncpy
              • La fonction open utilisée sur un lien symbolique pointant vers un fichier non existant peut maintenant créer le fichier cible.
              • Il est possible d’utiliser mmap sur un fichier plus grand que la mémoire disponible sans avoir besoin de spécifier le flag MAP_NORESERVE
              • Utiliser rename pour renommer un fichier vers lui-même ne retourne plus d’erreur (conformément à la spécification POSIX).
              • Ajout de pthread_sigqueue

              Libnetwork

              La libnetwork implémente les APIs nécessaire pour se connecter au réseau (sockets, résolution DNS…). Elle est séparée de la bibliothèque C pour des raisons historiques : l’implémentation de TCP/IP pour BeOS avait été réalisée entièrement en espace utilisateur (le noyau n’offrant qu’une interface pour envoyer et recevoir des paquets ethernet sur la carte réseau). Cela a posé des problèmes de compatibilité avec d’autres systèmes, et des problèmes de performance. Haiku est donc compatible avec la version "BONE" de BeOS, qui implémente la pile réseau dans le noyau.

              • Mise à jour du résolveur DNS à partir du code de NetBSD 9.3. Précédement le code utilisé était celui du projet netresolv de NetBSD, mais ce projet n’a pas connu de nouvelles publications et le code est à nouveau maintenu directement dans NetBSD sans publication séparée.
              • Correction d’un crash lors de l’utilisation de multicast IPv4

              LibBSD

              La libbsd implémente plusieurs extensions fournies par la libc de certains systèmes BSD. Elle est séparée de la bibliothèque C principale pour limiter les problèmes de compatibilité: certaines applications préfèrent fournir leur propre version de ces fonctions, ou d’autres fonctions avec le même nom mais un comportement différent. Elles peuvent alors s’isoler en n’utilisant pas la libbsd pour éviter toute interférence.

              LibGNU

              De façon similaire à la libbsd, la libgnu fournit des fonctions qui sont disponibles dans la glibc (la bibliothèque C du projet GNU) mais ne font pas partie d’un standard (C ou POSIX).

              • Ajout de sched_getcpu pour savoir sur quel cœur de CPU le thread appelant est en train de s’exécuter.
              • Ajout de pthread_timedjoin_np, pour attendre la fin de l’exécution d’un thread (comme pthread_join mais avec un timeout.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Sortie de Crème CRM en version 2.6
                Le 5 août 2024 est sortie la version 2.6 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0), environ 11 mois après Creme 2.5 (11 septembre 2023). Au programme notamment, un système de notification, des améliorations pour le calendrier ou des filtres réservés aux rapports. Les nouveautés sont détaillées dans la suite de la dépêche. lien nᵒ 1 : Site officiellien nᵒ 2 : Démo en lignelien nᵒ 3 : Le dépôt de sourcelien nᵒ 4 : Images Docker de démoSommaire Description d

              Sortie de Crème CRM en version 2.6

              Le 5 août 2024 est sortie la version 2.6 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0), environ 11 mois après Creme 2.5 (11 septembre 2023).

              Icône de Crème CRM

              Au programme notamment, un système de notification, des améliorations pour le calendrier ou des filtres réservés aux rapports. Les nouveautés sont détaillées dans la suite de la dépêche.

              Sommaire

              Description du logiciel

              Crème CRM est un logiciel de gestion de la relation client, généralement appelé CRM (pour Customer Relationship Management). Il dispose évidemment des fonctionnalités basiques d’un tel logiciel :

              • un annuaire, dans lequel on enregistre contacts et sociétés : il peut s’agir de clients, bien sûr, mais aussi de partenaires, prospects, fournisseurs, adhérents, etc. ;
              • un calendrier pour gérer ses rendez‐vous, appels téléphoniques, conférences, etc. ; chaque utilisateur peut avoir plusieurs calendriers, publics ou privés ;
              • les opportunités d’affaires, gérant tout l’historique des ventes ;
              • les actions commerciales, avec leurs objectifs à remplir ;
              • les documents (fichiers) et les classeurs.

              Crème CRM dispose en outre de nombreux modules optionnels le rendant très polyvalent :

              • campagnes de courriels ;
              • devis, bons de commande, factures et avoirs ;
              • tickets, génération des rapports et graphiques…

              L’objectif de Crème CRM est de fournir un logiciel libre de gestion de la relation client pouvant convenir à la plupart des besoins, simples ou complexes. À cet effet, il propose quelques concepts puissants qui se combinent entre eux (entités, relations, filtres, vues, propriétés, blocs), et il est très configurable (bien des problèmes pouvant se résoudre par l’interface de configuration) ; la contrepartie est qu’il faudra sûrement passer quelques minutes dans l’interface de configuration graphique pour avoir quelque chose qui vous convienne vraiment (la configuration par défaut ne pouvant être optimale pour tout le monde). De plus, afin de satisfaire les besoins les plus particuliers, son code est conçu pour être facilement étendu, tel un cadriciel (framework).

              Du côté de la technique, Crème CRM est codé notamment avec Python/Django et fonctionne avec les bases de données MySQL, SQLite et PostgreSQL.

              Principales nouveautés de la version 2.6

              Voici les changements les plus notables de cette version :

              Le nouveau système de notification

              Depuis toujours Crème possède un système de Mémentos (Reminders), qui permet de recevoir des e-mails pour vous prévenir d’une échéance. Ce système est utilisé par les Alertes & les ToDos ; par exemple vous recevez un e-mail lorsqu’une Alerte qui vous est attribuée va expirer dans 30 minutes. Et comme vous pouvez créer des Alertes dont la date d’expiration est un champ date de la fiche associée, cela permet par exemple d’être prévenu qu’une activité importante à laquelle vous participez va bientôt avoir lieu.

              Le nouveau système de notification qui a été introduit amène 2 avancées principales :

              • les notifications envoyées ne sont pas limitées à des e-mails, vous pouvez aussi les voir dans votre navigateur (donc sans quitter Crème).
              • si les mémentos ont été retravaillés pour utiliser ce nouveau système, d’autres parties de Crème en profitent aussi. Par exemple, une notification vous est envoyée si un administrateur a changé votre mot de passe ; ou bien quand un job d’import CSV vient de s’achever.

              Une notification web est arrivée

              Chaque notification est associée à un canal, et vous pouvez configurer les canaux pour savoir si la notification est envoyée dans le navigateur, par e-mail ou bien les 2. Si le canal n’est pas obligatoire, vous pouvez aussi choisir de ne pas recevoir les notifications du tout. Chaque utilisateur peut utiliser sa propre configuration si la configuration générale du canal ne lui convient pas.

              La configuration des canaux

              Améliorations du calendrier

              • Le composant JavaScript FullCalendar est passé à la version 5. Même si ce n’est pas la toute dernière version (il faut dire qu’il y a pas mal de changements cassants entre chaque version), on profite de pas mal d’améliorations diverses.
              • Il est maintenant possible de configurer graphiquement le calendrier (premier jour de la semaine, plage horaire, jour travaillés…). Il y a une configuration globale utilisée par tout le monde, mais comme presque toujours dans Creme, il est possible de créer des configurations par rôle.

              La configuration des calendriers du module « Activités »

              Filtres spécifiques aux Rapports

              Les Rapports utilisent généralement un filtre, afin d’affiner leurs résultats. Ces filtres sont les mêmes que ceux qu’utilisent les vues en liste ; par exemple si vous faites un Rapport sur les Devis, il peut utiliser les filtres disponibles sur la liste des Devis.

              Un problème que cela entraîne est que beaucoup d’utilisateurs créent des filtres un peu spécifiques afin de les utiliser dans leurs Rapports, mais ces filtres viennent « polluer » la vue en liste correspondante (car la sélection de filtres proposent de nombreux filtres non pertinents). Afin de corriger ce souci, il est désormais possible de créer des filtres utilisables uniquement dans les Rapports. Les Rapports peuvent bien sûr continuer à utiliser les filtres classiques, mais les filtres spécifiques aux Rapports ne sont pas utilisables dans les vues en liste évidemment.

              La création d’un rapport avec un filtre spécifique sélectionné

              Quelques autres améliorations notables

              • Python 3.12 est officiellement géré.
              • Dans le module facturation, vous pouvez maintenant configurer les statuts sélectionnés par défaut (dans les formulaires), ainsi que les statuts utilisés par les Factures lorsque leur numéro est généré.
              • Un nouveau bouton, qui peut être mis sur la vue détaillée des Contacts, est disponible: « Créer un appel non abouti » (détails).
              • La configuration des blocs d’un rôle peut maintenant être créée en clonant la configuration d’un autre rôle (les rôles pouvant avoir des configurations assez proches, ça peut être un gain de temps appréciable).
              • Les blocs basés sur OpenStreetMap sont maintenant utilisés dans l’installation par défaut (à place de ceux basés sur GoogleMaps).
              • Un rôle «Utilisateur normal» est créé dans les nouvelles installations. Dans la mesure où c’est une bonne chose que tout le monde ne soit pas connecté en tant que super-utilisateur, ce rôle devrait permettre de gagner du temps et servir au moins de base de travail.
              • Un bouton permettant de transformer un simple Contact en utilisateur a été ajouté. Auparavant il fallait fusionner ce Contact avec le Contact automatiquement créé à la création d’un utilisateur.
              • Les Graphes ont reçu de nombreuses améliorations : plus de champs sont disponibles en abscisse, plus de champs sont disponibles pour le filtrage, les couleurs associées aux petits modèles auxiliaires (du genre « Statut ») sont utilisées…
              • La validation des URLs est désormais moins stricte dans les champs informatifs. Cela posait pas mal de problèmes notamment lors des imports, les gens mettant rarement le « http:// » dans leur base de données.

              Le futur

              La prochaine version marquera notamment le passage à Django 5.2, la future LTS qui sortira en avril 2025. À l’année prochaine !

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • 24 ans de libcurl
                Curl est un outil en ligne de commande destiné à récupérer le contenu d’une ressource accessible par un réseau informatique et gérant de nombreux protocoles. Curl est un outil essentiel pour de nombreux usages, pris en charge par une gamme très large de systèmes d’exploitation, d’architectures matérielles, de l’objet connecté à l’embarqué spatial en passant par l’informatique classique ou les consoles de jeux. Il évolue rapidement et fréquemment, voir par exemple l’arrivée prochaine de HTTP3 p

              24 ans de libcurl

              Curl est un outil en ligne de commande destiné à récupérer le contenu d’une ressource accessible par un réseau informatique et gérant de nombreux protocoles.

              Curl est un outil essentiel pour de nombreux usages, pris en charge par une gamme très large de systèmes d’exploitation, d’architectures matérielles, de l’objet connecté à l’embarqué spatial en passant par l’informatique classique ou les consoles de jeux. Il évolue rapidement et fréquemment, voir par exemple l’arrivée prochaine de HTTP3 pour curl dans Debian unstable (avec le backend gnutls). Son domaine d’utilisation pourrait encore s’étendre avec l’apparition de wcurl dans Debian et bientôt dans le monde entier ?

              Il y a 24 ans, une division du code entre une interface ligne de commande et une bibliothèque a été faite.

              (Cette dépêche est principalement basée sur l’annonce anglophone par Daniel Stenberg, auteur principal de curl et libcurl ; dépêche rédigée sur un téléphone embarquant curl 7.80, pas vraiment la dernière version…).

              La première version de libcurl, baptisée 7.1, date du 7 août 2000. La version de curl précédente, la 6.5.2, pas encore séparée entre une interface ligne de commande et une bibliothèque. Il s’agit de l’écart le plus long entre deux versions de curl. La création de la bibliothèque a été très largement réalisée par Daniel Stenberg seul.

              Il décrit son choix de division ainsi : c'était juste une intuition et une conjecture. Je ne savais pas. Je n’avais pas fait de recherches sur cela ou autre chose. Je me suis juste lancé en me disant qu’on verrait plus tard si j’avais raison ou tort.

              Le nom de la bibliothèque a été choisi faute d’une meilleure idée. L’API a été définie comme étant bas niveau (on peut toujours ajouter une API de plus haut niveau par-dessus), en observant ioctl(), fcntl() et les fonctions du genre. Le code est en C, langage de prédilection de l’auteur principal.

              L’API a bien vieilli : 17 fonctions encore présentes proviennent de la 7.1 ; elle est passée de 17 000 lignes à 171 000 ; elle a survécu aux révolutions HTTP/2 (transferts multiples multiplexés) et HTTP/3 (passer de TCP à UDP).

              L’usage a aussi bien progressé depuis l’entrée dans PHP 4.0.2 comme premier binding (ici rendre utilisable en langage PHP), moins d’un mois après la publication de la bibliothèque.

              En 2002 a été ajoutée une API multi pour gérer des transferts parallèles concurrents de façon illimitée dans un même thread.

              Puis en 2006 vient en surplus le multi_action avec des mécanismes orientés événements, avec une boucle événementielle (comme epoll).

              Les premiers changements douloureux sur l’interface binaire (ABI) ont entraîné une volonté de stabilité, de ne jamais casser volontairement cette interface, et ce depuis 2006.

              libcurl possède des bindings vers au moins 65 langages de programmation, fonctionne sur au moins 103 systèmes d’exploitation et 28 architectures de processeur, est présent dans les bibliothèques standard de langages de programmation (Python, Java, Rust ou .Net). Son ancien concurrent principal libwww n’est plus développé. Bref 18 ans de stabilité d’API et d’ABI.

              L’utilisation de libcurl continue de croître (de plus en plus d’objets connectés notamment). Et curl de manière générale supporte rapidement les nouveaux protocoles et leurs évolutions. À noter que l’auteur principal ne mentionne pas dans ses projections ce qui me semble le plus gros risque pour Curl/libcurl, la difficulté d’avoir une personne prête à lui succéder si quand cela s’avérera nécessaire.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • SPIP 4.3 : une sortie estivale
                Ne redoutant pas la canicule, le sympathique outil de gestion de contenu de sites web (CMS) à l’écureuil, SPIP, vient de sortir en version 4.3. Au menu, entre autres : des améliorations de l’interface privée, de la conformité HTML5 et des performances des filtres pour les images. Petite sélection des changements apportés par cette version. lien nᵒ 1 : Le site de SPIPlien nᵒ 2 : Les notes de la version 4.3lien nᵒ 3 : Sortie de SPIP 4.3.0lien nᵒ 4 : Mise à jour de maintenance : sortie de SPIP

              SPIP 4.3 : une sortie estivale

              Ne redoutant pas la canicule, le sympathique outil de gestion de contenu de sites web (CMS) à l’écureuil, SPIP, vient de sortir en version 4.3. Au menu, entre autres : des améliorations de l’interface privée, de la conformité HTML5 et des performances des filtres pour les images.

              Logo de SPIP

              Petite sélection des changements apportés par cette version.

              Sortie, versions et php

              SPIP 4.3 est sortie le 26 juillet 2024, suivie quelques jours après d’une version de maintenance, la 4.3.1 qui est celle que vous devez adopter pour votre site. Elle est compatible de PHP 7.4 à PHP 8.3.

              Les versions antérieures suivantes bénéficient encore de correctifs de sécurité :

              • SPIP 4.2.15, versions de PHP supportées 7.4 à 8.3,
              • SPIP 4.1.17, versions de PHP supportées 7.4 à 8.1.

              Si votre site est sous une version encore plus antérieure, il est très fortement recommandé de le passer en SPIP 4.3.1. Si vous ne savez pas trop comment procéder, n’hésitez pas à lancer un appel à l’aide sur le site discuter.spip.net. Vous trouverez sûrement des gens pour vous aider.

              SPIP pense aux webmestres et aux personnes qui animent un site Internet

              La version 4.3 voit l’apparition, dans la barre du haut de l’interface privée, d’un bouton Créer qui ouvre un menu déroulant pour créer un nouveau contenu, article, rubrique, site référencé, etc.

              Haut de l’interface privée et son menu déroulant.

              Cette barre est aussi réorganisée, la zone de recherche est à côté du nouveau bouton tandis que l’aide et le nom de la personne connectée passe à droite. Si vous rédigez vos articles avec LibreOffice et utilisez le superbe plugin ODT2SPIP, ce bouton ne vous servira à rien. Il est préférable de continuer logiquement à passer par Édition > Rubrique > Nom de la rubrique > Nouvel article.

              Le formulaire de changement de statut d’un article a été revu. On ne risque plus d’oublier d’appuyer sur le bouton Changer par exemple, car il est intégré au formulaire.

              Le nouveau formulaire de changement de statut d’article dans SPIP 4.3
              À gauche la version 4.2, à droite le formulaire de la 4.3.

              Il est possible d’indiquer le fuseau horaire du site au niveau de Configuration > Identité du site.

              Le menu déroulant d’indication de fuseau horaire

              Et enfin, si on peut dire, la sortie des mises à jour fera l’objet d’un message aux webmestres dans l’interface privée avec un bouton pour y procéder via spip_loader, et même d’un courriel. Plus aucune excuse pour ne pas mettre un site à jour ! Si la notification par courriel vous ennuie, c’est désactivable. Pas très facilement, cela demande de modifier la constante _MAJ_NOTIF_EMAILS dans le fichier config/mes_options.php, mais c’est tout l’intérêt du système justement.

              Corrections et améliorations

              La conformité HTML5 est améliorée.

              Les performances du plugin-dist (plugin de la distribution de SPIP) Filtre Images ont été optimisées : certains des filtres images sont dix fois plus rapides grâce à l’utilisation des fonctions natives de PHP GD. Il y a aussi des nouveaux filtres d’images, |image_oriente_selon_exif, |image_recadre qui permettent de réorienter une image selon son exif.

              Sinon, tiré des notes de version :

              • ecrire_fichier() a été revu,
              • il est possible de combiner les critères {pagination} et {limit},
              • (#PRODUIRE_FOND) permet de ne pas conserver un double des fichiers calculés inchangés,
              • la bibliothèque mediaelement a été mise à jour.

              Les notes de version sont plus disertes.

              Mettre à jour, plugins, etc.

              Avant de mettre à jour le site, il faut commencer par mettre à jour les plugins : Configuration > Gestion des plugins ce qui rendra la tâche plus facile. Vos plugins seront ainsi compatibles avec la nouvelle version de SPIP. La bibliothèque des plugins compatibles SPIP 4.3 recense environ sept-cent plugins.

              Pour la mise à jour, le plus simple est de passer par spip_loader.php qui doit être installé à la racine du site. Il faut être connecté au site pour faire la mise à jour. Si vous n’avez pas spip_loader, c’est peut-être le moment de l’ajouter à votre site.

              Sinon, la procédure lourde : télécharger SPIP 4.3.1, le décompresser et ensuite le téléverser sur le serveur non sans avoir fait les sauvegardes nécessaires.

              Si la version de votre site est ancienne, il faudra sans doute procéder à une montée en version progressive, et vérifier que le squelette du site est compatible avec les versions plus récentes. Mais cela peut aussi être le moment de modifier l’interface publique de votre site. Ne pas oublier de sauvegarder, les dossiers img et squelette ainsi que la base avant !

              Un grand merci à celles et à ceux qui font de SPIP un outil si agréable à utiliser.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • S.M.A.R.T. badblocks badblocks2
                S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) est un système de surveillance intégré aux disques durs modernes et aux disques SSD. Il évalue en continu le bien-être du périphérique tout en anticipant les éventuels dysfonctionnements. Il utilise une réserve de secteurs de rechange pour réparer quand il détecte un secteur en anomalie. Le programme Linux badblocks teste les blocs d’un média par écriture+relecture+comparaison. À l’origine il servait à mettre les blocs mauvais en li

              S.M.A.R.T. badblocks badblocks2

              S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) est un système de surveillance intégré aux disques durs modernes et aux disques SSD. Il évalue en continu le bien-être du périphérique tout en anticipant les éventuels dysfonctionnements. Il utilise une réserve de secteurs de rechange pour réparer quand il détecte un secteur en anomalie.
              Le programme Linux badblocks teste les blocs d’un média par écriture+relecture+comparaison. À l’origine il servait à mettre les blocs mauvais en liste noire dans le file-system.

              Est-il utile de nos jours de vérifier ses médias ?
              Comment se situe S.M.A.R.T. par rapport à l’outil badblocks ?
              Comment vérifier un média en tenant compte de sa surveillance par S.M.A.R.T. ?

              C'est ce que nous allons voir dans la suite de la dépêche.

              smart-drive

              Sommaire

              Préambule

              Quelle précaution prendre vis-à-vis du risque de mauvaise qualité du stockage, quand je viens d’acheter un média (disque SSD, disque rotatif, clé USB, carte SD) ou un appareil sous Linux équipé d’un espace de stockage dont j’ignore la technologie ?
              Sans être parano, je me dis qu’avant d’envoyer des données précieuses sur l’espace de stockage, c’est le moment de faire certaines vérifications. Mais quelles vérifications ? Qu’est-il possible de faire ?

              Sur un média connectable, tout est possible.
              Sur un appareil neuf sans système ni données, tout est possible en utilisant une distrib Live.
              Sur les autres, ça dépend, il y en a où on n’a même pas un accès root pour lancer une vérification « dure » ou « molle » (Android, routeur…).

              En écrivant cet article, je me suis rendu compte que je ne me suis jusqu’ici jamais posé de questions sur l’opportunité de vérifier les espaces de stockage de mes téléphones, PC portables, routeurs, box… bref tous les appareils vendus prêts à être utilisés. Pourtant, que sais-je de la vérification faite par celui qui a installé le système ? Rien, et j’utilise, sans penser que l’espace de stockage de l’appareil n’est ni plus ni moins robuste que celui du PC Linux que j’ai installé dernièrement, mais que j’ai vérifié consciencieusement.

              S.M.A.R.T.

              S.M.A.R.T. est un système de surveillance intégré aux disques durs modernes et aux disques SSD. Il évalue en continu le bien-être du périphérique tout en anticipant les éventuels dysfonctionnements. Il surveille un maximum de paramètres (température, temps de fonctionnement, vitesse de rotation pour les disques magnétiques, nombre de démarrages et d’arrêts…) et dépend de l’expérience du fabricant. La réparation de secteurs utilise une réserve de secteurs et le mapping entre secteurs logiques et secteurs physiques.

              On pourrait se dire que, de nos jours, les supports sont fiables et testés par les intégrateurs. D’autres considèrent que la technologie S.M.A.R.T. suffit… et c’est bien commode de ne plus se soucier de la fiabilité des supports de stockage. Mais à la première galère due à un média défaillant, tu évolueras dans ta confiance.

              Sais-tu seulement sur lesquels de tes médias S.M.A.R.T. est installé et actif ?
              Si tu utilises un RaspberryPi, ton média système est… une carte SD. Elle n’a pas S.M.A.R.T.. Idem pour l’extension de mémoire que tu as ajoutée à ton téléphone.

              Je t’invite à lire la page Wikipedia sur S.M.A.R.T. et son paragraphe « Standard, implémentation et limitations ». Que fait et que ne fait pas le S.M.A.R.T. qui fonctionne sur le disque du PC qui te permet de lire cet article ? Difficile de savoir. Comment est-il configuré ? Fais un sondage autour de toi à ce sujet et tu seras pris pour un parano.

              Sur ton PC, sais-tu qu’il y a une option S.M.A.R.T. dans le BIOS (ou UEFI) ? Sais-tu qu’il y a un service smartd dans ton Linux ? As-tu compris aussi qu’avec du RAID il n’est pas toujours opportun d’activer S.M.A.R.T. ? Les communications entre S.M.A.R.T. RAID et l’O.S. peuvent se passer plus ou moins bien selon la qualité de ces éléments. Il te faut bien comprendre ce qu’il est possible de paramétrer et deviner comment ça marche derrière.

              Si tu demandes une vérification à S.M.A.R.T. par smartctl, sais-tu ce qu’il fait ? Se contente-t-il de lire ou fait-il un test en écriture ?

              Enfin, quand S.M.A.R.T. détecte qu’un secteur est devenu défectueux, il ne peut pas deviner quels bits sont défaillants, aussi il renseigne le secteur de secours avec ce qu’il peut, qui est l’état du secteur après défaillance. S.M.A.R.T. a ses limites, il répare comme il peut. S’il est configuré pour, il alerte quand il prévoit de la défaillance, mais sais-tu reconnaître ses alertes ? As-tu compris ce que tu dois faire en réponse aux alertes ?

              Je t’invite à apercevoir la complexité de prise en main de S.M.A.R.T. en faisant quelques recherches sur ces listes de mots :

              smartctl howto
              smartctl configure self test
              smartd howto
              

              et tu verras que ce n’est pas simple à comprendre et à configurer.

              Tu peux te dire naïvement que tout est bien configuré par défaut et que tes médias seront toujours impeccables. Sinon, il va falloir investir en temps et faire quelques essais. À toi de choisir.

              S.M.A.R.T. est une belle avancée technologique, mais il est dangereux de lui attribuer des mérites indus.

              BADBLOCKS

              Le programme Linux badblocks a été créé en même temps que le paquetage e2fsprogs (mkfs.ext2, mkfs.ext3, mkfs.ext4, fsck.ext2…). À l’époque S.M.A.R.T. n’existait pas et il n’y avait pas de mapping entre les adresses logiques et physiques. C’est le file-system qui devait tout gérer quand il détectait un bloc défectueux, notamment la mise du bloc en liste noire. C’est pour cela que mke2fs et e2fsck lancent un badblocks « dur » quand on leur spécifie deux fois l’option -c. Cela dure trèèès longtemps car les paramètres par défaut ne sont plus bien optimisés.

              Depuis l’arrivée de S.M.A.R.T., certains considèrent badblocks comme obsolète. Mais qui peut affirmer que TOUS les médias utilisés par TOUS les usages de Linux sont équipés de S.M.A.R.T. ?
              Peut-être qu’au M.I.T. avec un réseau de classe A, on ne s’abaisse pas à utiliser une clé USB ou un RaspberryPi. Je me demande dans quel type de bulle vivent ceux qui pensent que S.M.A.R.T. est sur tous les médias de stockage.

              Quand j’achète une clé USB, je lui passe badblocks dessus et s’il y a des mauvais blocs, je la rends et je me fais rembourser.
              J’ai essayé d’interroger les fonctionnalités S.M.A.R.T. de diverses clés USB et je n’ai rien obtenu, comme si cette utilité n’y était pas installée :

              # smartctl --scan-open
              # smartctl -x /dev/sdc
              # smartctl -i -d scsi -T verypermissive /dev/sdc
              

              Mes recherches sur Internet n’ont abouti à rien qui me permette de voir une réponse de la part de clés USB. Peut-être que si j’achetais (cher) des clés USB de très haute qualité, j’y trouverais S.M.A.R.T. ?

              Comme l’intervenant du message #25 de ce rapport de bug (en), je pense que badblocks est loin d’être obsolète.
              J’ai envie d’imiter le message #20 juste au-dessus en disant : « Je dois demander --- ***pourquoi*** vous (et d’autres personnes) mettez de l’essence dans vos voitures en 2024 ? L’essence en tant que chose a commencé à devenir inutile pour les voitures vers 2011, lorsque la voiture électrique s’est répandue, et que les batteries sont devenues suffisamment énergétiques pour faire rouler des véhicules sur des centaines de km ».

              Je t’invite aussi à une recherche sur la liste de mots « courbe en baignoire composants électroniques ». Le programme badblocks peut servir au déverminage. On sait en détail ce qu’il fait. Son résultat est clair, contrairement aux implémentations propriétaires de S.M.A.R.T..
              Sans déverminage (rodage) on court le risque de subir trop tôt une réparation discrète incomplète : le secteur réparé sera physiquement bon mais son contenu sera corrompu. La conséquence peut être catastrophiquement discrète. Par exemple, un fichier LibreOffice est une archive zip (compressée), la corruption d’un seul bit y a des conséquences imprévisibles.

              De mon côté, j’utilise badblocks pour tester les médias nouvellement acquis et pour effacer ceux bons à réformer. Ce programme permet aussi la chasse aux médias « fake-size », du genre carte SD de 1To qui accepte de recevoir 1To de fichiers, mais qui ne stocke en réalité que 8Go. On trouve de nos jours (juin 2024) des clés USB de 16To vendues au prix de 5 € ! L’application h2testw sous windows et son équivalent f3 sous linux sont spécialement conçus pour cette chasse. Le microprogramme de ces clés USB ou de ces disques a été détourné pour déclarer un espace de stockage falsifié. C’est de l’escroquerie.

              BADBLOCKS2

              Mon usage du badblocks du paquetage e2fsprogs-1.47.0 m’a amené à y caractériser un bug reproductible en novembre 2023. J’ai eu l’intention de remonter le bug aux équipes ad hoc de ma distribution (Mageia) mais je me suis d’abord mis à regarder le source.

              J’y ai trouvé l’origine du bug, et j’ai trouvé d’autres bugs. En ajoutant des instructions de traçage et de simulation d’erreurs du média, j’ai mis en évidence encore d’autres bugs. De fil en aiguille, j’ai fini par retoucher profondément certains algorithmes, et j’ai appelé badblocks2 cette nouvelle version. J’y ai ajouté diverses options faciles à programmer et commodes à l’usage. J’ai copieusement testé.

              Si tu veux essayer badblocks2 et/ou prendre connaissance de ma démarche, je livre tout sur mon site. Tu verras pourquoi je me suis rabattu sur la création d’une nouvelle version, plutôt que de faire remplacer l’ancienne (ce qui aurait profité à tous).
              Tu peux te faire une idée des fonctionnalités ajoutées en consultant les *.8.txt .
              Tu peux t’inspirer des tests décrits dans le fichier Alire.txt, tester diverses valeurs pour -c -t et voir l’effet sur la vitesse de traitement. Tu peux même jouer à arracher la clé en cours de test (Ctrl-C pour arrêter) !

              J’espère que ce programme servira à d’autres que moi.

              En pratique

              Voici une suggestion d’actions à faire lors de l’acquisition d’un nouveau média (disque SSD, disque rotatif, clé USB, carte SD…). Les commandes doivent être lancées par l’opérateur root.
              Avec cela, quand dans quelques années tu satureras le média, tu seras sûr que le dernier secteur utilisé aura été déverminé avant la mise en production.

              ATTENTION : les usages de badblocks proposés sont destructifs pour les données présentes sur le média. Le mode non-destructif du badblocks actuel comporte des bugs (version e2fsprogs-1.47.0). Celui de badblocks2 a été corrigé.
              ATTENTION : la liste des mauvais blocs renvoyée par le badblocks actuel est fausse (version e2fsprogs-1.47.0). Le nombre de mauvais blocs est correct. La liste renvoyée par badblocks2 est correcte.
              ATTENTION : le paramètre device du média est supposé être /dev/sdc. Ne pas se tromper, au risque d’effacer un autre média en cours d’usage.

              D’abord déterminer le block-size du noyau, c’est une bonne valeur à prendre comme block-size du file-system :

              # blockdev --getbsz /dev/sdc
              

              Dans ce qui suit, je suppose que la valeur 4096 a été renvoyée.

              Ensuite déterminer si S.M.A.R.T. est sur le média :

              # smartctl --scan-open
              # smartctl -x /dev/sdc
              # smartctl -i -d scsi -T verypermissive /dev/sdc
              

              Si S.M.A.R.T. n’est pas sur le média

              Passer badblocks2 pour voir s’il y a 0 ou peu de mauvais blocs :

              # badblocks2 -b 4096 -c 32768 -wrrvvss -t r -t r -e 40 -o /tmp/sdc.bb /dev/sdc
              

              L’option -e peut être supprimée ou modifiée selon la limite du nombre de mauvais blocs considérée acceptable ; les options -t peuvent être différentes selon la sévérité souhaitée (voir le man).

              S’il y a trop de mauvais blocs, refuser d’utiliser le média (->garantie ?).

              S’il y a 0 mauvais bloc on peut formater en toute tranquillité (partitionner éventuellement avant) :

              # mkfs.ext? -b 4096 ... /dev/sdc
              

              S’il y a quelques mauvais blocs, sans que la limite -e soit atteinte, on pourra formater en utilisant la liste sauvée de mauvais blocs :

              # mkfs.ext? -b 4096 -l /tmp/sdc.bb ... /dev/sdc
              

              Si l’on veut partitionner, il faudra recalculer la liste des mauvais blocs de chaque partition avant de formater (remplacer sdc par sdc1 dans les commandes badblocks2 et mkfs.ext? ci-dessus).

              Si l’on veut formater en vfat exfat ou f2fs (clés USB en général), il n’est pas possible d’utiliser la liste des mauvais blocs détectés ; la seule solution est de refuser d’utiliser le média s’il y a des mauvais blocs (ou alors de restreindre l’usage à une zone saine… à localiser)

              Si S.M.A.R.T. est sur le média

              On peut vérifier son activation par smartctl :

              # smartctl -i /dev/sdc
              

              Ensuite, il faut interroger le média sur l’état et les capacités de son S.M.A.R.T. :

              # smartctl -a /dev/sdc
              

              Noter le nombre de réallocations faites et prévues :

              # smartctl -a /dev/sdc | grep -i _sector
              

              Puis faire une passe de déverminage, en écriture+lecture car on ne sait pas si l’écriture seule suffit ; ne pas utiliser l’option -p de badblocks ; les options -t peuvent être différentes selon la sévérité souhaitée (voir le man) :

              # badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb1 /dev/sdc
              

              Faire une passe de vérification, il ne devrait plus y avoir de mauvais blocs :

              # badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb2 /dev/sdc
              

              S’il y a encore des mauvais blocs, c’est soit que le déverminage n’est pas terminé, soit que le média et/ou son S.M.A.R.T. sont foireux (il ne détecte pas les mauvais secteurs vus par badblocks2 ou les secteurs de réserve sont mauvais ou… pire) ; relancer des passes une par une jusqu’à ce qu’il n’y ait plus de mauvais bloc détecté.

              Re-interroger S.M.A.R.T. pour voir l’évolution des réallocations :

              # smartctl -a /dev/sdc | grep -i _sector
              

              Ensuite on peut formater (partitionner éventuellement avant) en considérant que le média a remappé tous ses mauvais secteurs et est donc impeccable pour l’utilisation :

              # mkfs.ext? -b 4096 ... /dev/sdc
              

              Par la suite, on pourra de temps en temps consulter l’état de santé du média en service :

              # smartctl -H /dev/sda
              

              Si on est courageux, on peut lancer de temps en temps un contrôle du média par son S.M.A.R.T.
              Si on est encore plus courageux, on configurera smartd pour que ces vérifications soient automatiques et pour que les alertes soient envoyées par courriel.

              Attention à la communication entre l’O.S., S.M.A.R.T. et RAID (niveau carte mère / niveau OS / contrôleurs bas de gamme), voir la page Wikipedia sur S.M.A.R.T..

              Que l’esprit « aware » soit en toi, sur tes données et sur ton espace de stockage

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Enquête de l’UE sur Microsoft pour abus de position dominante avec Teams
                La Commission européenne a publié un avis préliminaire selon lequel Microsoft aurait enfreint les règles antitrust de l’UE en liant Teams à ses suites bureautiques, Office 365 et Microsoft 365, avec pour effet de limiter la concurrence sur le marché des outils de communication et de collaboration. La Commission a constaté que Microsoft est en position dominante sur le marché mondial des suites bureautiques SaaS pour un usage professionnel. Elle s’inquiète du fait que, depuis au moins avril 2019

              Enquête de l’UE sur Microsoft pour abus de position dominante avec Teams

              La Commission européenne a publié un avis préliminaire selon lequel Microsoft aurait enfreint les règles antitrust de l’UE en liant Teams à ses suites bureautiques, Office 365 et Microsoft 365, avec pour effet de limiter la concurrence sur le marché des outils de communication et de collaboration.

              La Commission a constaté que Microsoft est en position dominante sur le marché mondial des suites bureautiques SaaS pour un usage professionnel. Elle s’inquiète du fait que, depuis au moins avril 2019, Microsoft inclut Teams dans ses suites bureautiques en SaaS, restreignant ainsi la concurrence sur le marché des produits de communication et de collaboration. Cette stratégie empêche les concurrents de Teams de rivaliser efficacement, réduisant ainsi l’innovation au détriment des clients dans l’Espace économique européen.

              La Commission juge insuffisants les changements apportés par Microsoft à la distribution de Teams après l’ouverture de l’enquête en juillet 2023. Si ces accusations sont confirmées, elles constitueraient une violation de l’article 102 du Traité sur le fonctionnement de l’Union européenne (TFUE), qui interdit l’abus de position dominante. La Commission pourrait alors interdire ces pratiques et imposer une amende pouvant atteindre 10 % du chiffre d’affaires annuel mondial de l’entreprise, ainsi que des remèdes pour rétablir la concurrence.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              • ✇LinuxFr.org : les dépêches
              • Sortie du logiciel de généalogie Ancestris version 12
                Le logiciel gratuit et illimité de généalogie Ancestris vient de sortie en version 12. Il est placé sous licence GPL. La v12 en quelques chiffres : plus de 1700 commits, trois ans de développement, et elle fonctionne sur tous les systèmes d’exploitation qui permettent d’installer Java de la version 8 à la version 22. Nouveautés, évolutions, corrections et traductions sont détaillées en seconde partie de dépêche. lien nᵒ 1 : Ancestrislien nᵒ 2 : Wikidata AncestrisNouveautés Gestion du GEDCO

              Sortie du logiciel de généalogie Ancestris version 12

              Le logiciel gratuit et illimité de généalogie Ancestris vient de sortie en version 12. Il est placé sous licence GPL.

              La v12 en quelques chiffres : plus de 1700 commits, trois ans de développement, et elle fonctionne sur tous les systèmes d’exploitation qui permettent d’installer Java de la version 8 à la version 22.

              Nouveautés, évolutions, corrections et traductions sont détaillées en seconde partie de dépêche.

              Logo

              Nouveautés

              • Gestion du GEDCOM 7 (complet pour l’éditeur GEDCOM et l’éditeur Cygnus).
              • Affiche toutes les entités (même les entités non conformes) dans l’explorateur de GEDCOM et dans l’éditeur GEDCOM.
              • Nouvelle traduction en hongrois
              • Enregistrer sous : copie exacte ou partielle
              • Possibilité de choisir l’inhumation à la place de la date de décès pour les affichages.
              • Ajout d’une option pour zoomer l’ensemble de l’application.
              • Choix du répertoire de sauvegarde
              • Imports spécifiques pour : Elie, Aldfaer, RootsMagic, Ancestry.com, Brother's Keeper
              • Ajout d’un gestionnaire de média
              • Ajout d'un convertisseur de GEDCOM
              • Refonte du module de recherche de doublons
              • Réécriture du rapport calendrier
              • Réécriture du rapport narratif
              • Réécriture du rapport circulaire 10 générations avec sortie SVG.
              • Ajout d’un rapport de ligne de vie individuel.
              • Ajout d’un tri des entités à la sauvegarde et la possibilité de trier les propriétés d’une entité par date.
              • Possibilité de créer un nouveau GEDCOM directement à partir des entités affichées dans une vue (Arbre, Graphe, time-line, Carte, Recherche, Groupes de famille)
              • Réécriture du module de groupes familiaux avec nouvelles fonctionnalités (marquage, regroupements…)
              • Ajout d’une possibilité d’ignorer les vérifications automatiques.
              • Nouveau calcul de consanguinité et détection de boucles.
              • Ajout d’une liste de dépôts d’archives par défaut.
              • Export pour Genealogieonline.nl

              Évolutions et corrections

              • Ajout d’un symbole pour les divorces dans l’arbre graphique
              • Améliorations de Cygnus
              • Améliorations d’Ariès
              • Amélioration de l’éditeur GEDCOM
              • Améliorations du module d’ancêtres communs
              • Ouverture d’un nouveau fichier provenant d’Ancestris sur le SOSA 1
              • Ajout par défaut du tag FILE des entités médias dans la table des entités
              • Conserve l’ordre de tri dans les écrans de recherche d’Ariès
              • Recherche sans accents
              • Correction du tutoriel de présentation s’il y a plusieurs écrans.
              • Ajout de la recherche par époux dans la recherche avancée
              • Ajout du marquage par chromosome X
              • Amélioration de l’exploitation des liens des médias dans les éditeurs.
              • Amélioration de l’import Geneanet, geneatique et Heredis
              • Améliorations de l’export Livre Web
              • Améliorations de l’export Site Web
              • Tri sur les dates dans la table des entités
              • Ajout de séparateurs pour la gestion des marque-pages
              • Améliorations et corrections de la carte géographique
              • Ajout de filtres dans la vue graphe
              • Permet de choisir une date de changement dans l’explorateur pour ne voir que les modifications postérieures.
              • Améliorations du rapport d’arbre graphique multi-génération
              • Améliore l’ouverture de fichier pour détecter et expliquer au mieux les problèmes rencontrés.
              • Améliorations de l’export Geneanet
              • Ajout d’un bouton de remise aux valeurs par défaut pour les réglages de la table des entités.
              • Affichage de la première page des pdf à la place d’une image neutre.
              • Conservation des options d’enregistrement d’un fichier d’une fois à l’autre.
              • Ajout de l’impression de la vue en cours dans le menu « Outils ».
              • Affiche les images de type JFIF
              • Amélioration de la vue graphe sur les écrans à large résolution
              • Possibilité de marquer les individus à partir de toutes les vues.
              • Améliorations du module Relevé
              • Ajout d’une préférence de durée maximale d’attente pour la vérification des liens internet
              • Ajout d’icônes pour distinguer l’ajout d’une numérotation de l’affichage du Sosa 1.
              • Correction de l’affichage en langue différente des rapports par rapport à l’interface.
              • Utilisation des options des rapports avant de les lancer à partir du menu contextuel.
              • Ajout d’un écran d’assistant pour la comparaison de généalogies.
              • Possibilité de choisir le nombre de génération d’ascendants et de descendants séparément dans l’arbre dynamique.
              • Ajout d’un nouveau template GedArt.
              • Ajout d’un dégradé par date dans la carte géographique
              • Ajout d’un paramètre pour limiter la longueur d’un champ dans un calque.
              • Ajout d’un menu avec les derniers fichiers ouverts
              • Ajout de la possibilité de souligner des champs dans les calques.
              • Amélioration de la gestion des almanachs.

              Mise à jour de traduction

              • Allemand
              • Anglais
              • Castillan
              • Catalan
              • Danois
              • Français
              • Grec
              • Hongrois
              • Italien
              • Néerlandais
              • Polonais
              • Portugais
              • Tchèque
              • Turc

              Merci à tous les traducteurs pour leur travail constant, si important pour l’ensemble de la communauté.

              Pour conclure, merci à toute la communauté par vos remarques, vos demandes, vos remontées d’anomalies, vous permettez de faire vivre et embellir ce logiciel.
              On compte sur vous dans la suite pour nous créer du buzz, des tutoriels, des idées et de l’enthousiasme.

              Commentaires : voir le flux Atom ouvrir dans le navigateur

              ❌
              ❌