Vue lecture

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

    •  

    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

      •  

      GNOME OS comme Linux idéal, partie 1 : la promesse de l'atomique

      Et si le système d’exploitation (OS) libre et souverain dont le monde a besoin était basé sur GNOME ? C’est ce que propose Thibault Martin dans un billet posté le 28 février 2025 sur son blog. L’idée est ambitieuse, et bien entendu elle peut froisser les gens qui préfèrent d’autres environnements de bureau, mais elle présente l’intérêt de s’appuyer sur deux tendances notables dans l’actualité récente de Linux : l’avènement des systèmes atomiques et la demande d’un OS dit “souverain”. Nous vous proposons, à travers le billet de Martin, d’en apprendre plus sur ces deux tendances. Ce premier journal se concentre sur la première : les systèmes atomiques, et le changement de paradigme qu’ils préfigurent pour le bureau Linux.

      Sommaire

      De quoi ça parle ?

      Dans ce billet titré « Prosthetics that don't betray » (« des prothèses qui ne trahissent pas »), Thibault Martin, ancien membre de la fondation GNOME, appelle à changer la gouvernance du projet pour se donner les moyens d’en faire un OS “indépendant” et prêt à l’emploi, financé par l’Union européenne. Il est question ici de vendre des ordinateurs et des téléphones avec un système Linux pré-installé dessus, assemblé par et basé sur GNOME, indépendant de toute distribution existante, et le tout idéalement financé par l’Union européenne (« ça se verrait à peine dans son budget », argue Martin).

      Pourquoi GNOME ? Parce que c’est l'environnement de bureau préféré de Martin, évidemment. Il vante notamment sa bonne intégration au mobile : on l’ignore peut-être (car il reste nettement plus difficile d’installer un Linux sur un téléphone que sur un PC), mais les développeurs GNOME travaillent depuis quelques années à rendre leurs applis adaptables aux petits écrans. Il ne s’agit pas de versions différentes, mais bel et bien de vos applis de bureau, qui se redimensionnent automatiquement pour être utilisables à l’écran tactile. Nick du Linux Experiment en a récemment dit du bien dans une de ses vidéos. Bien entendu, il existe d’autres interfaces mobiles dans le monde Linux, au hasard celle de KDE, Plasma Mobile. Mais ce n’est pas sur cet argument que cette dépêche aimerait s’attarder ; plutôt que de parler des avantages et inconvénients de GNOME sur les autres environnements graphiques libres, nous allons nous pencher sur deux autres idées avancées par Thibault Martin dans son billet, à savoir :

      • pour être « utilisable par les masses », cet OS de rêve doit adopter une technologie dite “atomique”
      • sa vocation principale sera d’échapper à « l’hégémonie américaine » et « sécuriser la souveraineté numérique de l’UE »

      Les OS atomiques, ou la promesse du Linux qui juste-marche

      C’était le 25 février dernier, et il l’a dit au premier degré : "We believe that 2025 is truly the year of the Linux gaming desktop ». Pourtant, Nirav Patel précise bien cinq secondes avant que ses ordinateurs (il est le fondateur et le PDG de Framework) supportent aussi Windows. Mais il a l’air de sincèrement croire que cette année, quelque chose de différent est en train de se passer avec le bureau Linux ; et sur la diapo où est écrite cette phrase, on peut voir les logos de Playtron OS et Bazzite, deux projets de Linux orientés “gaming”, mais qui présentent aussi la particularité d’être basés sur Fedora Silverblue, sans doute le plus populaire des Linux atomiques.

      À moins que ce ne soit l’inverse ? Le 13 février dernier, Jorge Castro, fondateur du projet Universal Blue (dont est issu Bazzite), montrait fièrement les statistiques des appareils actifs sous Fedora atomiques (si vous ne le saviez pas, toutes les installations de Fedora envoient par défaut un signal anonyme aux serveurs afin d’être recensées). On y voit les machines sous Bazzite doubler de nombre entre octobre dernier et février, dépassant de loin les propres variantes atomiques officielles de Fedora (mais encore très loin derrière “la” Fedora Workstation ordinaire, selon Castro).

      Évolution du nombre d’appareils actifs sous Fedora atomiques entre juillet 2024 et février 2025

      Bazzite a tellement la cote qu’elle a été saluée comme « mettant la honte à Windows » dans un article sur The Verge, ce qui est surprenant de la part d’un média tech “généraliste” qui jusqu’à présent n’avait d’yeux que pour les GAFAM et ne s’intéressait guère au monde du libre. Il y a, bien sûr, une explication simple à ce succès : Bazzite vise une niche particulière, celle des utilisateurs et utilisatrices de Steam Deck et autres consoles portables à base de technologie PC, et on peut arguer que cette niche est non seulement en pleine croissance, mais aussi peut-être un peu délaissée par un Microsoft qui n’a pas encore bien optimisé son Windows à un tel cas d’usage. Ce serait comme attribuer la hausse des téléchargements de Linux il y a 15 ans à la mode des netbooks. Mais nous aimerions arguer ici que le succès de Bazzite est aussi dû à son choix technologique de bureau atomique.

      Pour rappel, “atomique” est l’expression qui tend à remplacer celles d'“immuable” (traduction anglaise d'"immutable") ou "image-based", et qui désigne une façon bien particulière de construire et distribuer un système d’exploitation. Solène Rapenne propose une définition dans un billet de 2023, où elle résume les principes essentiels des systèmes immuables :

      • les mises à jour système ne sont pas effectuées sur le système en cours d’utilisation (celui-ci n’est jamais censé changer, d’où le qualificatif d'“immuable”)
      • les modifications de paquets sont appliqués au prochain démarrage (mais pas celles des Flatpak par exemple)
      • vous pouvez revenir en arrière (roll back) et restaurer le système dans l’état exact où il se trouvait avant une mise à jour

      Les systèmes atomiques peuvent avoir chacun leurs particularités : ainsi, NixOS (lisez à son sujet notre récente dépêche), Endless OS, les images Universal Blue, Vanilla OS, MicroOS ou encore AerynOS, mais aussi ChromeOS et Android ne fonctionnent pas tout à fait de la même façon, bien qu’ils partagent ces trois principes en commun. Mais le gros joueur dans ce domaine, c’est Fedora : Renault nous expliquait il y a bientôt cinq ans comment les expérimentations du projet ont donné naissance à Silverblue et comment ce dernier s’utilisait. Depuis, Silverblue a été décliné en versions Plasma, Sway, Budgie et bientôt COSMIC et Plasma Mobile ; certaines de ses briques sont amenées à évoluer, comme l’expliquait Timothée Ravier à la sortie de Silverblue 41 en automne dernier (voir la section Notes), mais les principes fondamentaux restent les mêmes, et vous pouvez les retrouver décrits dans la documentation commune (en version bêta) des Fedora atomiques. Ravier les rappelle dans un récent entretien qu’il nous a accordé (à paraître après le 21 avril) et nous partage son espoir de voir un jour l’atomique devenir le modèle par défaut pour Fedora :

      Je l’espère ! Il est impossible de donner une échéance et cela ne dépend pas vraiment de moi. La difficulté la plus importante est la prise en charge du matériel et les pilotes qui ne sont pas intégrés dans Fedora. C’est un problème que l’on ne peut pas résoudre dans Fedora à cause des contraintes légales et qui sont traitées par le projet Universal Blue, dont la variante Bazzite est très populaire.

      Capture d’écran du site officiel de Bazzite
      Capture d’écran du site officiel de Bazzite

      Les possibilités ouvertes par cette approche sont telles qu’elles inspirent beaucoup de Linuxiens à assembler leur propre bureau Linux atomique, y compris hors des mainteneurs de distributions : c’est le cas de Jorge Castro et de Thibault Martin. Mais Martin n’est pas le premier à avoir eu l’idée parmi la communauté GNOME : il cite un billet d’Adrien Vovk paru en octobre dernier, titré « Un bureau pour tous », et qui appelle déjà à s’appuyer sur GNOME, et plus précisément le projet GNOME OS (lequel est déjà atomique), pour « construire un OS qui rend le bureau Linux utilisable pour les non-passionnés » :

      Je pense à mes amis et à ma famille : ils ne méritent pas plus que nous d’être maltraités par les entreprises de la tech. Beaucoup d’entre eux adorent l’idée de Linux et sont d’accord avec nos valeurs, mais ont décidé de ne pas rester dessus après l’avoir essayé pour de vrai. Ils sont intéressés, mais juste pas assez intéressés pour surmonter nos barrières à l’entrée. Ils se moquent des paquets, des codecs, des pilotes, des brevets, des licences, ou de toutes ces choses qui sont devenues ce qu’on doit gérer en tant que passionnés de Linux. Je crois que beaucoup se mettront à se préoccuper de ces choses-là une fois qu’ils auront rejoint nos communautés, comme nous l’avons tous fait nous-même, mais à l’heure actuelle, ils ne nous rejoignent pas…

      L’idée ne séduit pas que chez GNOME : Vovk dit lui-même avoir été inspiré par KDE, après que ceux-ci aient annoncé un projet similaire lors de la conférence Akademy en septembre 2024, sobrement baptisé « KDE Linux ». Et pour pallier les défauts que les devs reprochent à KDE neon, laquelle vieillit trop vite du fait d’être basée sur Ubuntu LTS, KDE Linux sera donc, lui aussi, un OS atomique et immuable : « les applis viendront de Flatpak (et peut-être aussi de Snap si ce n’est pas trop difficile et que l’UX est convenable) ». Et lui aussi aura vocation à s’adresser au plus large public possible, « des développeurs KDE aux utilisateurs et aux vendeurs de matériel ».

      Or, pour atteindre un tel objectif d’universalité, Vovk considère que GNOME OS se doit d’être complètement immuable, sans permettre à l’utilisateur d’installer des paquets traditionnels, contrairement au « modèle immuable-hybride en vogue » qui est celui de Silverblue et ses dérivés (où il est possible de faire du layering pour installer des paquets de la distribution, faisant ainsi entorse à l’immuabilité) :

      À mon avis, permettre l’overlay de paquets dissuade le développement de vraies solutions permanentes aux fonctionnalités manquantes dans l’OS, puisque les utilisateurs peuvent juste se reposer sur les surcouches. Au bout du compte, la nécessité d’installer des paquets pour contourner ces problèmes va juste garantir que personne n’utilisera les distributions immuables-hybrides de manière immuable, ce qui annule les bienfaits de l’immuabilité tout en soumettant l’utilisateur aux points de friction [sharp edges] supplémentaires qu’apporte l’immuabilité.

      Comme le rappelle Vovk, cette idée a déjà été formulée par le fameux Lennart Poettering en mai 2022, dans un long billet où il détaille sa vision personnelle (« et non celle de mon employeur », qui à l’époque était soit Red Hat, soit Microsoft) de la direction dans laquelle le bureau Linux doit aller :

      Avant toute chose, je pense qu’il faut se concentrer sur un design basé sur une image plutôt que sur des paquets. Pour la robustesse et la sécurité, il est essentiel de travailler avec des images reproductibles et immuables qui décrivent l’OS ou des grandes portions de celui-ci dans leur entièreté, plutôt que de toujours travailler avec des paquets détaillés façon RPM/dpkg. Ce n’est pas dire que les paquets ne sont pas pertinents (je trouve en réalité qu’ils ont beaucoup d’importance !), mais je pense qu’ils devraient être moins un outil de déploiement de code, mais plutôt un outil pour construire les objets à déployer. Une autre manière de voir la chose : tout OS construit ainsi doit être facile à répliquer sur un grand nombre d’instances, avec une variabilité minimale.

      C’est donc bien un nouveau paradigme qui bouleverse les principes traditionnels des distros, selon lesquels les empaqueteurs se chargent d’assembler et distribuer toutes les applications qu’ils veulent rendre disponibles à leurs utilisateurs. Or, dans les préconisations de la documentation de l’outil Blue-build, dédié à la création d’images atomiques customisées, il faut au contraire « résister à la tentation d’intégrer tout l’univers » :

      Les systèmes dans ce genre sont conçus autour d’un cœur petit, simple et efficace, maintenable et performant. Rappelez-vous que les mises à jour de l’image de base nécessitent un redémarrage, donc idéalement vous allez vouloir limiter sa taille – laissez Flatpak et d’autres outils de l’espace utilisateur s’occuper du reste.

      Diapositive issue de la présentation « Bazzite: Building the Future of Linux Gaming Together » donnée par Kyle Gospodnetich et Noel Miller au salon SCALE 22x, le 8 mars 2025
      Diapositive issue de la présentation « Bazzite: Building the Future of Linux Gaming Together » donnée par Kyle Gospodnetich et Noel Miller au salon SCALE 22x, le 8 mars 2025

      Jorge Castro dit lui-même :

      Je ne voulais pas refaire une autre distro. J’ai fait ça pendant dix ans [chez Canonical, NDLR], je ne voulais pas faire d’empaquetage, je comprends les difficultés que ça entraîne de faire une distro, je ne veux plus jamais refaire ça.

      Et il ajoute :

      Il nous faut avoir des applis en bac à sable, sans quoi autant faire nos valises et rentrer chez nous. Actuellement c’est flatpak via flathub. Malgré toutes les plaintes que vous pouvez lire sur le net au sujet de flatpak, il y a plein de monde qui en tire une bonne expérience. […] Et aussi nous avons abandonné tout l’aspect « allons empaqueter la planète entière nous-même » du modèle parce que nous savons que ça ne s’étend pas [it doesn't scale]. Ça veut dire que c’est aux développeurs d’applis de prendre en charge leur destin, et que c’est notre boulot de livrer tout ça à l’utilisateur. […] C’est aussi pour cela que nous ne sommes pas une distro – nous sommes trois distros, fedora pour la base, homebrew pour la ligne de commande, flatpak pour les applis à interface graphique. Oh et puisque vous avez aussi distrobox, n’importe quel autre paquet de distro.

      Et évidemment, cet éloignement revendiqué du modèle de la bonne vieille distribution n’est pas sans causer quelques frictions, surtout au sein d’une communauté comme Fedora qui demeure avant tout dédiée à faire… une bonne vieille distribution. Le 21 janvier 2025, Michael Catanzaro demandait que Flathub devienne le dépôt Flatpak par défaut des Fedora, plutôt que le dépôt Flatpak de Fedora comme c’est le cas jusqu’alors, affirmant que ces flatpaks “maison” étaient « une source notable de problèmes de qualité », et citant des « plaintes de multiples développeurs upstream », notamment ceux du célèbre OBS qui sont allés jusqu’à réclamer formellement le retrait du Flatpak que Fedora distribue pour leur appli. Le conflit s’est depuis détendu et les développeurs d’OBS ont rétracté leur demande, mais pas sans que le Project Leader de Fedora Matthew Miller ne déclare sur la chaîne YouTube de Brodie Robertson que « les règles d’acceptation sur Flathub sont plutôt laxistes » et que rien ne garantissait l’absence de code malveillant dans leurs flatpaks, ce qui a provoqué une levée de boucliers et une clarification officielle de Flathub quant à leur processus de vérification. Miller a salué cette clarification et précisé sa pensée, et à l’heure actuelle, c’est toujours les dépôts de Fedora qui sont présélectionnés par défaut lorsqu’on cherche à installer un Flatpak via Logiciels ou Discover dans une Fedora.

      Alors, faut-il imaginer un projet tout neuf et émancipé des distributions, comme GNOME et KDE aimeraient le faire, pour être digne d’être l’OS atomique dont l’Europe a besoin ? À moins que ce dont l’Europe ait besoin, ce n’est pas d’un seul mais de plusieurs OS atomiques ? C’est l’idée que défend openSUSE, qui propose aux gouvernements non pas d’adopter une seule et unique solution qui "surfe sur l’idée de souveraineté européenne", mais plutôt une stratégie multi-distributions, qui inclurait, au hasard, les propres projets atomiques d’openSUSE – Aeon (sous GNOME) et Kalpa (sous Plasma) :

      L’idée globale dont les gouvernements ont besoin de débattre va au-delà du standard des distros. À l’âge du rançongiciel, du verrouillage dans le nuage et du capitalisme de surveillance, il est temps d’aller au-delà de la façon traditionnelle de penser les OS de bureaux. Le monde de l’open-source a déjà les outils pour avancer vers cette nouvelle façon de penser :

      • L’immuabilité avec des mises à jour transactionnelles (MicroOS, Aeon, Kalpa, Kinoite)
      • Une configuration système déclarative (Agama, Ansible)
      • Des options de bureaux pour des besoins utilisateur variés (GNOME, KDE Plasma, Xfce)
      • Des standards d’identités et d’authentification ouverts (LDAP, OpenID)
      • Des formats de paquet transparents (Flatpak, RPM)

      La gouvernance des Linux : suffit-il d’être libre pour être souverain ?

      Ce second volet fera l’objet d’une dépêche future, à laquelle vous pouvez d’ores et déjà contribuer (comme à toutes les autres dépêches en cours de rédaction sur Linuxfr). À bientôt !


      Notes

      • Les Steam Deck sont vendus avec SteamOS, qui n’est pour l’instant pas disponible au téléchargement (Valve a déclaré vouloir le faire d’ici avril 2025), et qui est également un OS atomique. Bazzite est fortement inspiré de SteamOS et en reprend directement une partie de son code, publié sous licence libre par Valve.
      • Un des signes distinctifs d’Universal Blue est son usage de bootc, qui permet purement et simplement de rendre des conteneurs bootables (ce que Jorge Castro résume par « Podman dans une boucle for » ; Colin Walters en parle dans une vidéo de Red Hat) et qui devrait bientôt être adopté par Fedora à son tour, en remplacement d’OSTree. Sur la feuille de route de ce projet, Timothée Ravier précisait en janvier dernier que, bien que ses propres machines reposent sur des conteneurs bootables, il considère que « ce n’est pas prêt pour l’usage général ».
      • À l’heure actuelle, la distribution vitrine de Linux sur téléphones est sans doute postmarketOS. Les développeurs de celle-ci ont annoncé le 30 mars dernier travailler à une version immuable de pmOS, qui sera partiellement subventionnée par la fondation européenne NLnet (la question du financement des Linux sera abordée dans la 2ᵉ partie de cette dépêche).

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      •  

      Donnez moi un NixOS à ronger

      NixOS

      Petit aperçu de Nix : il y a plusieurs articles sympas ici, la récente revue de Seb95, à cause de laquelle je suis passé sur cette distribution il y a quelques jours (et sachant que visiblement lui n’y est pas resté!, peut-être qu’il me lit haha), ou cette revue plus ancienne, donc j’essaierai de mettre en avant d’autres aspects.

        Sommaire

        Mini histoire à zapper

        Dejà reprécisons - il faut remonter à 2003 pour que Eelco Dolstra développe le gestionnaire de paquets Nix, mais la distribution, elle, NixOS date de 2006. Il y a deux versions par an, nommée YY.MM, par ex. 13.05 pour version de mai 2013 - brillant.

        Pour la suite j’écrirai simplement Nix pour désigner la distribution.

        En 2010 un wiki démarre. En 2013, la distribution 13.05 passe de upstart à systemd et systemd-boot au démarrage (alors appelé gummiboot). La version 13.10 est la première version stable de NixOS.
        On peut noter chez la concurrence, en 2014 le lancement du projet Atomic de Red Hat.
        En 2016, le wiki Nix officiel est clos et un wiki non officiel démarre…
        Fedora Silverblue apparait 2018 comme projet de distinct de « Atomic ». En 2019 Open Suse démarre le projet Micro OS.
        Côté Nix, en 2020 ont été intégrés les Flakes (22.05). Un installateur graphique apparait en 2022, sur la 22.05.
        En 2024, le wiki Nix officiel redémarre (mais le non-officiel demeure…).

        Une distribution rétro-futuriste

        Dans Nix, il n’y a pas de répertoire /bin, de /sbin, de /lib ou de /usr. Tout est gardé dans un /nix/store.

        Enfin moi j’ai quand même un /usr/bin/env mais j’avoue ça fait peu, ou un /bin mais qui ne contient qu’un symlink pour bash. Mais bref

        Dans le /nix/store on va retrouver nos hiérarchies habituelles, rangées dans des « dérivations ». Prenons firefox : je ne l’aurai pas directement dans /usr/bin mais dans le store voici comment ça se présente

        $ ls -R /nix/store/lxgnpycfaac8w893wmka5hw3dad8w228-firefox-121.0
        /nix/store/lxgnpycfaac8w893wmka5hw3dad8w228-firefox-121.0:
        bin  lib  share
        
        /nix/store/lxgnpycfaac8w893wmka5hw3dad8w228-firefox-121.0/bin:
        firefox
        
        /nix/store/lxgnpycfaac8w893wmka5hw3dad8w228-firefox-121.0/lib:
        firefox  mozilla
        
        /nix/store/lxgnpycfaac8w893wmka5hw3dad8w228-firefox-121.0/lib/firefox:
        application.ini    defaults            firefox-bin   libgkcodecs.so        libmozavutil.so   libmozwayland.so   omni.ja        Throbber-small.gif
        browser            dependentlibs.list  fonts         libipcclientcerts.so  libmozgtk.so      libxul.so          pingsender     vaapitest
        crashreporter      distribution        glxtest       liblgpllibs.so        libmozsandbox.so  minidump-analyzer  platform.ini
        crashreporter.ini  firefox             gmp-clearkey  libmozavcodec.so      libmozsqlite3.so  mozilla.cfg        removed-files
        

        etc.
        Pour le reste c’est plus standard.

        $ ls /
        bin  boot  dev  etc  home  lib  lib64  lost+found  nix  proc  root  run  srv  sys  tmp  usr  var
        
        

        Déclaratif

        La configuration, utilisateurs réseaux paquets services saucisson fromage, tout est déclaré dans un fichier /etc/nixos/configuration.nix.
        Comme définir un point de montage pour un disque ou les règles du pare-feu, qui correspondraient à du /etc sur d’autres distributions, mais aussi par exemple créer un utilisateur - ce qui correspondrait plutôt à des commandes sur d’autres distributions, comme useradd.

        Quand vous « compilez » le fichier /etc/nixos/configuration.nix, Nix va s’occuper tout seul des /etc/fstab, iptables (*), /etc/group, et ainsi de suite ; en général on précise que l’on « switche » vers ce nouvel OS et Nix redémarre les services avec la nouvelle config (à vous de savoir si redémarrer des services est suffisant, ou si pour prendre en compte les changements vous préférez redémarrer la session voire reboot).

        (*nftables dispo)

        Exemple fstab, au lieu d’éditer fstab je mets ça dans /etc/nixos/configuration.nix

         # FSTAB
          fileSystems."/home" = {
            device = "/dev/disk/by-uuid/220260f3-a7b2-4387-9a0b-9d17c604aa18";
            fsType = "ext4";
           options = [ # If you don't have this options attribute, it'll default to "defaults" 
             # boot options for fstab. Search up fstab mount options you can use
             "users" # Allows any user to mount and unmount
             "nofail" # Prevent system from failing if this drive doesn't mount     
           ];
          };
        

        Ou encore ma fichue imprimante Samsung
        Sous Debian, j’aurai peut-être ajouté un dépôt dans /etc/apt, j’aurai rafraichi puis installé un paquet. Sous Nix j’édite le fichier.

          # Enable CUPS to print documents.
          services.printing.enable = true;
          services.printing.drivers = [ pkgs.samsung-unified-linux-driver ];
        

        On peut même se retrouver à configuration de manière abstraite… En effet, imaginons que je configure le pare-feu : quel pare-feu suis-je en train de configurer?

        networking.firewall.allowedTCPPorts = [ 80 443 ];
        

        La documentation vous apprendra que par défaut, Nix passe par iptables pour implémenter les règles que vous précisez. Avec la directive ci-dessous, les mêmes règles seraient implémentées en se basant sur nftables.

        networking.nftables.enable
        

        Immuable

        Est-ce que NixOS est immuable? On pourrait dire, comme Distro Watch, non, car on peut en réalité écrire sur la totalité du système de fichier. L’immuabilité est plutôt fonctionnelle - au sens où on ne lance pas de commande, on édite un fichier /etc/nixos/configuration.nix (que l’on peut scinder, au besoin), qui donnera toujours le même résultat. (spoil cf quand même plus bas : channel).

        Retour arrière

        Après construction du système, au démarrage, vous aurez le choix d’amorcer (booter) sur chaque version de l'OS que vous avez construite. On peut démarrer sur une ancienne version. Un peu comme démarrer sur une ancienne version du noyau mais appliqué à tout.

        Multi-utilisateurs

        Vous pouvez avoir plusieurs versions d’un paquet installées en même temps, en fonction des utilisateurs. Certainement très utile… et pas testé chez moi.

        En somme

        Cette page décrit bien les logiques différentes entre Nix et un système basé sur Debian pour quelques opérations courantes.

        Bon clairement si le besoin c’est installer firefox et qu’on doit éditer un fichier /etc puis rebuild le système, on ne ressent pas particulièrement d’avantage à utiliser Nix vs un autre système (mais en cas de souci, vous serez bien content d’avoir le rollback…)

        • À noter cela dit que l’installation de paquets n’est pas vraiment plus longue. Rebâtir le système n’est pas vraiment plus long qu’un apt-get ou équivalent. Ce qui m’étonne le plus c’est que par défaut il n’y a pas de commande pour chercher des paquets (… ??!!! …bon il y a le site officiel et on peut par exemple installer nix-search-cli) .
        • On peut bien sûr utiliser des Flatpak si on active cette option. Par défaut si on installe GNOME, cela vient d’ailleurs avec gnome-software qui n’inclut que les Flatpak. Au moins c’est un Gnome Software léger, ça change ahem ahem…
        • Pour les AppImage j’en parle plus bas

        Donc l’usage pour installer une application graphique ne changera pas vraiment la vie. À noter tout de même que le dépôt est particulièrement large.

        Mais quid de paquets un peu plus complexes? Quand j’ai voulu installer nginx avec le TLS, j’ai eu une bonne surprise. J’imaginais une tannée du fait de devoir « passer par Nix » pour gérer tout ce qui est configuration et certificats. En effet plus question de lancer des commandes pour acquérir ou renouveler des certificats. Comment faire? Pour le coup la doc me l’a indiqué rapidement.

              security.acme.acceptTerms = true;
              security.acme.defaults.email = "mon@email.example.com";
        
                  services.nginx = {
                    enable = true;
                      virtualHosts = {
                         "mon.domaine" = {
                             forceSSL = true;
                             enableACME = true;
                             root = "/var/www/mon.domaine";
                      };
        

        Et voilà! Nginx est installé, mon domaine pointe vers le bon dossier, le http redirige vers https, Nix acquiert les certificats (par défaut Let'sEncrypt mais se personnalise si on veut), et surtout Nix définit un systemd pour renouveler les certificats.

        Et là on voit que Nix c’est un peu l’opposé d’une ditribution minimaliste comme Arch… Les points forts de Arch sont les points faibles de Nix et réciproquement…

        À noter que /etc/nginx n’existe pas. Dans mon exemple ce sera nix/store/brxfza7n2hjy6n15ffdrb7wlr2fqygy8-nginx. conf…

        $ systemctl status nginx
        ● nginx.service - Nginx Web Server
             Loaded: loaded (/etc/systemd/system/nginx.service; enabled; preset: ignored)
             Active: active (running) since Sat 2025-03-29 09:45:55 CET; 1 day 10h ago
         Invocation: 84e49760dcee4e5ea0a6baa79dd6ceb2
            Process: 35568 ExecReload=/nix/store/alqjcv381xp2wawjc919h1qr6p4q8gvj-nginx-1.26.3/bin/nginx -c /nix/store/brxfza7n2hjy6n15ffdrb7wlr2fqygy8-nginx.conf -t>
            Process: 35569 ExecReload=/nix/store/9m68vvhnsq5cpkskphgw84ikl9m6wjwp-coreutils-9.5/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
        

        Oui tout est dans le nix store, bah oui logique.

        On voit aussi que cette distribution est aussi agréable qu’elle est

        • bien empaquetée
        • bien documentée (j’y reviens plus bas…)

        Je nixifie tu nixifies

        Définir des choses dans /etc/nixos en déclaratif plutôt que de taper des commandes ou éditer d’autres fichiers comme /etc/nginx, c’est ce qu’on appelle nixifier, qui vient du verbe galérer-de-ouf. Non je plaisante.

        Cela veut dire que pour tout ce que vous pouvez faire avec les services, le paquet Nix doit proposer des options pour le faire dans /etc/nixos… Un peu effrayant au premier abord? Par ex. si je veux utiliser une fonction plus exotique de Nginx, alors la config Nix doit inclure un moyen de le spécifier, et doit inclure chaque option Nginx ??

        En fait de nombreux services vont proposer d’ajouter des options « extra ». Par ex. si je veux utiliser la fonction Nginx « rate-limit » et que le paquet Nix n’a pas d’option pour ça… Eh bien je vais utiliser une directive « appendHttpConfig » qui va me permettre de directement écrire dans le nginx.conf. Comme cela je continue d’utiliser les avantages Nix, mais je peux profiter d’options non nixifiées.

             services.nginx = {
                enable = true;
            appendHttpConfig = " limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/m; " ;
                  virtualHosts = {
                     "mon.domaine" = {
                         forceSSL = true;
                         enableACME = true;
                         root = "/var/www/mon.domaine";
                 extraConfig = "limit_req zone=mylimit;";
                  };
        

        On peut même avoir le besoin de générer un fichier /etc. Pas de souci, exemple avec fail2ban, on peut générer un fichier /etc/fail2ban/filter.d

            # Defines a filter 
            "fail2ban/filter.d/nginx-py.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter ''
              [Definition]
        failregex = ^.* \[error\] \d+#\d+: \*\d+ (\S+ )?\"\S+\" (failed|is not found) \(2\: No such file or directory\), client\: <HOST>, server\: \S*\, request: \"(GET|POST|HEAD) .*$
            '');
          };
        

        Interdit !

        Je ne vais pas rentrer dans le détail, car je suis encore débutant, mais on ne peut pas exécuter ce que l’on veut sous Nix.

        $ touch holalal.sh
        $ echo -e '#!/bin/sh \necho "toto"' >> holalal.sh
        $ chmod +x holalal.sh
        $ ./holalal.sh
        bash: ./holalal.sh: Permission denied
        $ bash holalal.sh 
        toto
        

        Appliqué aux AppImage, eh bien j’ai un peu galéré. Apparemment on lance $appimage-run . Pas de bol pour moi, ça ne passe pas. J’ai testé deux trois un million de trucs à l’aveuge pour le fun (extraire puis ajouter chmod+x, passer par exec, voire par du sudo oh la la pardonnez moi…) Comme Google n’était clairement pas mon ami, j’ai voulu tester d’empaqueter l’AppImage moi-même. C’était la bonne piste! Si j’étais familier avec Nix cela m’aurait pris 2s. Un petit fichier .nix de quelques lignes plus tard, je peux construire cette AppImage et cette fois la lancer.
        Dans de nombreux cas vous trouverez l’ppImage déjà empaquetée.

        Channel

        Vous souvenez vous, Nix propose une version tous les 6 mois. Mais dites-moi… Comment met-on à jour si on lance pas de commande dans Nix et qu’on n’utilise que vi /etc/nixos/configuration.nix ?
        Et là, voilà la vérité révélée : oui on utilise des commandes, et non Nix n’est pas que déclarative.
        (cf par exemple https://nlewo.github.io/nixos-manual-sphinx/installation/upgrading.xml.html )

        # nix-channel --add https://nixos.org/channels/*channel-name* nixos
        # nixos-rebuild switch --upgrade
        

        On peut également spécifier dans la config que l’on veut automatiquement passer sur les nouvelles versions. En attendant cela veut dire que deux fichiers /etc/nixos/configuration.nix ne correspondent pas forcément au même OS!

        Note sur les channels : similairement à Debian, il y a un channel unstable si on veut passer en mode rolling.

        Pour résoudre cette question des channels il y a les Flake. En gros l’idée est de préciser non seulement qu’un paquet est installé mais aussi quelle version.
        https://nixos-and-flakes.thiscute.world/nixos-with-flakes/introduction-to-flakes#nix-flakes-and-classic-nix
        Mais rien n’oblige à utiliser Flake.

        2 wikis et 2000 manuels

        • Deux wikis : un wiki officiel, qui a été suspendu, car il n’était pas super à jour, du coup un wiki non officiel est apparu, puis ils ont remis le wiki officiel :O !!! du coup on a plein de manuels (utilisateur, dev, celui du gestionnaire de paquets Nix…) et deux wikis et on se retrouve à jongler.
        • On a l’impression d’avoir atteint le point où toute tentative d’améliorer ne fait qu’empirer. Je propose « Tools that need a manual to find the manual » ! …
        • Mes premières recherches sur Internet sont simplement désastreuses, je tombe sur plein de versions différentes. Et souvenez-vous que Nix est à la fois un langage, un gestionnaire, un builder, une distribution…
        • Peut-être que des sites pour répertorier , comme https://nixos.org/learn/ peuvent un peu aider…

        xkcd

        Mais à l’heure qu’il est, si Nix a un défaut c’est bien la documentation chaotique.

        Et les autres bombes atomiques?

        Fedora Silverblue propose aussi le retour arrière. Toutes les applications graphiques sont des Flatpak, et les applis dév utilisent le module Toolbox. Cf la présentation par Renault, plutôt historique puis pratique.
        Silverblue semble avoir de larges défis à relever mais pourrait représenter l’avenir de Fedora.

        Côté Open Suse atomic, il y a eu Micro OS (2019), puis Aeon d’abord basé dessus puis devenu projet indépendant pour offir GNOME. (En parallèle le projet Kalpa se développe pour le bureau KDE.) Vous pouvez lire cette revue par LWN. Sur Aeon la méthode préférée d’installation de paquets est encore Flatpak, mais il y a aussi Distrobox.

        Voilà pour ce que je connais, cela mériterait bien plus!

        Commentaires : voir le flux Atom ouvrir dans le navigateur

        •  

        Cloonix version 46

        Cloonix est un outil d’aide à la construction de réseau virtuel, sous AGPLV3 (inclus qemu-kvm, openvswitch, spice, crun et wireshark).

        C'est pensé comme Docker, dont le succès provient de l'absence de tracasseries au moment de l'empaquetage, en mettant bibliothèques et binaires dans un espace de nommage (namespace). Docker est un produit de grande qualité mais il n'y a pas que sa méthode. Cloonix utilise les mêmes principes de namespace, sans infrastructure d'accueil pour faire tourner les conteneurs. Notez qu'un logiciel qui s'installe puis tourne avec les droits limités d'un utilisateur normal est la meilleure façon de décourager un pirate. Donc, pour essayer Cloonix 46, un fichier auto-extractible sans dépendance à la distribution qui l'héberge vous attend ! Téléchargez, cliquez…

        Cloonix est un outil pour étudier les réseaux. Il permet de faire des scripts de scénarios avec plusieurs machines connectées, les machines étant soit des vraies machines virtuelles tournant avec kvm, soit des conteneurs tournant avec crun. Cette maquette simplifiée de réseaux avec leur visualisation permet de transmettre des démonstrations réseaux entre utilisateurs. J'ai présenté Cloonix plus largement dans mes dépêches précedentes.

        Commentaires : voir le flux Atom ouvrir dans le navigateur

        •  

        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

        •  

        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

        •  

        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

        •  

        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

        •  

        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

        •  

        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

        •