❌

Vue lecture

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

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

Haiku a 23 ans et un quart

La derniĂšre dĂ©pĂȘche annuelle sur les nouveautĂ©s dans Haiku a dĂ©passĂ© la longueur maximale tolĂ©rĂ©e par Linuxfr (et Ă©tĂ© finalement dĂ©coupĂ©e en plusieurs parties publiĂ©es sĂ©parĂ©ment). Aussi, les nouveautĂ©s sur Haiku seront dĂ©sormais publiĂ©es trimestriellement, pour faire face Ă  l’augmentation d’activitĂ© dans le projet.

Sommaire

Ce rapport est basĂ© sur les rapports mensuels d’activitĂ© d’aoĂ»t, septembre et octobre publiĂ©s sur le site de Haiku. Il couvre les changements de code survenus entre hrev57901 et hrev58291 de Haiku.

Certains des changements mentionnĂ©s dans ce rapport font partie des derniers dĂ©veloppements du mois d'aoĂ»t, et Ă©taient dĂ©jĂ  prĂ©sents dans la version R1 bĂȘta 5 qui a Ă©tĂ© publiĂ©e dĂ©but septembre 2024.

Les corrections de bugs sont appliquĂ©es sur la branche bĂȘta 5 si elle est concernĂ©e, mais les nouveaux dĂ©veloppements sont mis dans la branche principale et seront disponibles uniquement dans les « nighlty builds Â» (constructions journaliĂšres) puis dans la prochaine version, qui sera probablement Ă©tiquetĂ©e R1 bĂȘta 6.

La version R1 est trĂšs attendue, mais la feuille de route comporte toujours environ 600 bugs et demandes d’amĂ©lioration. Jusqu’à ce qu’ils soient tous traitĂ©s (corrigĂ©s, devenus obsolĂštes ou dĂ©placĂ©s vers une version plus tardive), Haiku continue de publier des versions bĂȘta.

Applications

Amélioration et corrections de textes de messages dans diverses applications (humdinger).

L’application Switcher — permettant de naviguer rapidement entre les diffĂ©rentes fenĂȘtres et applications Ă  l’aide d’un menu qui apparaĂźt lorsque la souris se trouve sur les bords de l’écran — peut Ă  nouveau ĂȘtre compilĂ©e. Cette application n’est pas terminĂ©e et non intĂ©grĂ©e dans Haiku par dĂ©faut pour l’instant (nephele).

Dans les préférences de disposition clavier, des icÎnes avaient disparu de certains menus suite à un problÚme dans une modification précédente. Ces icÎnes sont maintenant de retour (jscipione).

Les rĂ©glages de polices de caractĂšres de WebPositive peuvent faire des retours Ă  la ligne dans le texte d’exemple utilisĂ© pour visualiser la police choisie (correction rĂ©cupĂ©rĂ©e depuis la fenĂȘtre de rĂ©glage des polices du systĂšme, qui utilise une variante du mĂȘme code). (nipos).

Le raccourci clavier « muet » permet d’alterner entre l’activation et la dĂ©sactivation du son, au lieu de toujours passer en mode muet (korli).

Plusieurs applications pouvaient ouvrir leurs fenĂȘtres en dehors de l’écran si leur derniĂšre position enregistrĂ©e n’était pas bonne (aprĂšs un changement de rĂ©solution d’écran par exemple). L’appel de la fonction MoveOnScreen() aprĂšs la crĂ©ation d’une fenĂȘtre permet de rĂ©gler ce problĂšme (korli, pinaraf, waddlesplash).

Icon-O-Matic ouvre ses dialogues de sĂ©lection de fichiers dans le dossier oĂč se trouve l’icĂŽne en cours d’édition (nipos).

Il est possible de sélectionner une famille de polices directement dans FontDemo (nipos).

Améliorations du mode sombre

Modifications faites par nipos et nephele.

Depuis la version bĂȘta 5 de Haiku, il est beaucoup plus simple de configurer un thĂšme de couleurs dans Haiku (avec seulement 3 couleurs Ă  sĂ©lectionner, les autres Ă©tant calculĂ©es automatiquement).

Cependant, toutes les applications et contrĂŽles graphiques ne se comportent pas forcĂ©ment trĂšs bien, en particulier si on choisit une couleur de fond de fenĂȘtres sombre. Ce trimestre, on trouve donc des amĂ©liorations sur ColumnListView (contrĂŽle permettant l’affichage de donnĂ©es en listes, en arbre et en colonnes), et dans les applications Debugger, Mail (en particulier les marqueurs de portions de message citĂ©es), WebPositive, ResEdit, FontDemo, Cortex, Sudoku et Tracker (les fenĂȘtres de configuration des permissions de fichiers et de statut de copie de fichiers), ainsi que dans les prĂ©fĂ©rences de disposition clavier (couleur des touches de clavier affichĂ©es), et de configuration des Ă©crans et des Ă©crans de veille. Ces applications utilisaient encore quelques couleurs codĂ©es « en dur Â» qui ne s’adaptaient pas automatiquement au thĂšme choisi.

En outre, les formules de calcul utilisées pour générer le thÚme de couleurs ont été améliorées pour donner de meilleurs résultats dans le cas de couleurs sombres, assurant de conserver un bon contraste entre tous les éléments graphiques et une meilleure cohérence des couleurs.

AboutSystem

L’application AboutSystem donne quelques informations sur la machine (RAM, CPU), et surtout affiche les noms des dĂ©veloppeurs et les messages de copyright et clauses de licences obligatoires de logiciels libres qui sont embarquĂ©s dans Haiku.

Correction d’un crash Ă  cause d’une information de copyright mal enregistrĂ©e (madmax).

Mise Ă  jour des crĂ©dits Ă  l’occasion de la version Beta 5 : ajout des nouveaux membres de l’équipe, et passage dans la catĂ©gorie « anciens dĂ©veloppeurs » de certaines personnes qui ne participent plus pour l’instant. (waddlesplash).

DĂ©bogueur

Haiku est fourni avec un dĂ©bogueur graphique permettant d’investiguer facilement les problĂšmes dans les applications.

Waddlesplash a amĂ©liorĂ© le dĂ©sassembleur pour mieux dĂ©coder les adresses mĂ©moire calculĂ©es Ă  partir de la valeur d’un registre CPU. La correction a Ă©tĂ© remontĂ©e dans la bibliothĂšque tierce Zydis, utilisĂ©e pour le dĂ©sassemblage.

Il a Ă©galement modifiĂ© le code du Debugger pour ne pas essayer de tĂ©lĂ©charger des informations de debug lorsque l’outil est lancĂ© en mode non-interactif (dans le cas d’une test suite automatisĂ©e par exemple). Plusieurs autres problĂšmes qui pouvaient causer un plantage du debugger ou un blocage dans un Ă©tat invalide (avec l’application qui ne s’arrĂȘte jamais) ont Ă©tĂ© Ă©galement traitĂ©s.

DriveSetup

L’outil DriveSetup permet de modifier la table de partitions et de formater les partitions avec diffĂ©rents systĂšmes de fichiers.

Pour les partitions de type « Intel » (MBR), lorsqu’on crĂ©e une premiĂšre partition, par dĂ©faut elle est marquĂ©e automatiquement comme partition active. Auparavant il fallait cocher une case pour cela, et de nombreux utilisateurs oubliaient de le faire, ce qui pouvait rendre le systĂšme impossible Ă  dĂ©marrer (korli).

Dans certains messages, le nom des partitions n’était pas mis entre guillemets, ce qui pouvait prĂȘter Ă  confusion avec des noms de partitions choisis maladroitement (ou judicieusement, selon de quel point de vue on se place). Maintenant le nom de la partition est clairement identifiable dans le message (humdinger).

HaikuDepot

HaikuDepot est le frontal graphique du gestionnaire de paquets de Haiku. L’application est maintenue par apl et se compose d’une interface graphique native dĂ©veloppĂ©e en C++ et d’un webservice dĂ©veloppĂ© en Java qui permet de stocker des mĂ©tadonnĂ©es supplĂ©mentaires sur les paquets : captures d’écrans, notes et revues des utilisateurs, liste des paquets Ă  mettre en avant.

  • Refactoring du « language model Â», de la gestion des chemins, de la rĂ©cupĂ©ration des donnĂ©es des paquets, de l’affichage des auteurs de paquets, de la gestion des notes donnĂ©es par les utilisateurs. (apl)
  • FenĂȘtre des conditions d’utilisation: correction de la couleur du texte, correction d’un crash si on clique dans la fenĂȘtre avant que le texte soit chargĂ©. (apl et jscipione)
  • Le bouton « Ouvrir » permettant de lancer une application installĂ©e ne fonctionnait pas toujours (apl).
  • AmĂ©lioration de la sĂ©lection d’un icĂŽne par dĂ©faut pour les paquets qui n’ont pas d’icĂŽne inclus (apl).

La liste de paquets mis en avant a Ă©tĂ© revue, un nouveau mainteneur (Michel) se charge de la tenir Ă  jour avec des rĂšgles mieux dĂ©finies : une sĂ©lection d’applications populaires (sur suggestion de participants aux forums de discussion) ainsi que des applications mises Ă  jour rĂ©cemment. Si vous utilisez Haiku, n’hĂ©sitez pas Ă  passer un peu de temps Ă  Ă©valuer et noter les applications, peu de personnes le font et il est difficile d’exploiter les donnĂ©es de façon pertinente si beaucoup d’applications n’ont reçu qu’un seul vote.

Horloge

L’application horloge permet d’afficher l’heure (sans surprise). Elle propose diverses apparences de cadrans, peut ĂȘtre redimensionnĂ©e, et incrustĂ©e dans le bureau sous forme d’un replicant.

Un bug dans l’application conduisait Ă  afficher une heure alĂ©atoire (non initialisĂ©e) pendant quelques centiĂšmes de secondes au dĂ©marrage avant de commencer Ă  afficher l’heure courante (OscarL)

Les aiguilles de l’horloge Ă©taient dĂ©calĂ©es de quelques pixels et ne pointaient pas prĂ©cisĂ©ment lĂ  ou elles devraient (dovsienko).

Tracker

Tracker est le gestionnaire de fichiers de Haiku. Il affiche le bureau et toutes les fenĂȘtres de navigation et de recherche de fichiers. Il se distingue par son utilisation de la navigation dite « spatiale Â», oĂč chaque dossier s’ouvre dans une fenĂȘtre sĂ©parĂ©e dont la taille et la position Ă  l’écran sont mĂ©morisĂ©es.

jscipione continue son travail d’amĂ©lioration du Tracker (cela comporte de nombreux changements qui sont encore en gestation). Ce trimestre, les changements intĂ©grĂ©s permettent :

  • la dĂ©sactivation d’entrĂ©es du menu « Nouveau » lorsque les opĂ©rations ne sont pas disponibles,
  • la mise Ă  jour dynamique de certains menus en fonction des opĂ©rations disponibles,
  • la prĂ©servation de la sĂ©lection aprĂšs une opĂ©ration de copie oĂč de dĂ©placement (avec quelques problĂšmes d’affichage corrigĂ©s au passage),
  • des corrections de bug sur le choix de couleurs utilisĂ©es dans la fenĂȘtre « Ouvrir avec »,
  • la possibilitĂ© de crĂ©er un lien symbolique lorsqu’on fait un drag and drop depuis un dossier virtuel,
  • utilisation de la police de caractĂšres « menu » de façon cohĂ©rente dans tous les menus.

Il a Ă©galement travaillĂ© sur des tĂąches de fond, sans changements visibles pour l’instant. Le code du Tracker provient de BeOS et est un peu vieillissant. Il est souvent nĂ©cessaire de faire beaucoup de nettoyage avant de pouvoir dĂ©velopper de nouvelles fonctionnalitĂ©s sans casser autre chose. Cette fois-ci, on trouve entre autres une refonte de la gestion des raccourcis claviers, la fermeture automatique des fenĂȘtres en double lors du passage en mode « navigation spatiale », et divers crashs liĂ©s Ă  la gestion des menus popup.

humdinger a également travaillé sur le Tracker pour améliorer certains messages concernant la copie et la création de fichiers, pour les rendre plus faciles à traduire.

humdinger a Ă©galement travaillĂ© sur l’organisation du menu « templates » (affichĂ© quand on fait un clic droit -> nouveau
 et permettant de crĂ©er diffĂ©rents types de fichiers Ă  partir de fichiers de rĂ©fĂ©rence). Ce menu peut maintenant ĂȘtre organisĂ© en plusieurs sous-menus Ă  l’aide d’une nouvelle option « New template folder », pour les personnes qui utilisent cette fonctionnalitĂ© avec de nombreux fichiers de rĂ©fĂ©rence au point d’avoir besoin de les organiser.

La fenĂȘtre de requĂȘtes (recherche de fichiers en fonction de leurs attributs Ă©tendus indexĂ©s dans le systĂšme de fichiers) permet maintenant d’afficher en temps rĂ©el les rĂ©sultats lorsqu’on Ă©dite une requĂȘte. En outre, il est possible de filtrer les rĂ©sultats pour afficher uniquement les fichiers contenus dans un rĂ©pertoire donnĂ© (auparavant, on pouvait au mieux restreindre par volume disque). Ces changements ont Ă©tĂ© rĂ©alisĂ©s dans le cadre du Google Summer of Code par CalistoMathias, avec Ă©galement une participation de jscipione, humdinger et waddleplash pour finaliser le travail.

Correction d’un crash du Tracker lors de changements de rĂ©solution d’écran (OscarL).

Terminal

Le Terminal permet d’exĂ©cuter des applications en ligne de commande.

Lors du changement de la taille de texte du Terminal, ce dernier ajuste le nombre de lignes et colonnes de texte visibles, au lieu de redimensionner sa fenĂȘtre (nipos).

Prise en compte de la sĂ©quence d’échappement ANSI pour effacer l’historique de dĂ©filement (CodeForEvolution).

PowerStatus

L’application PowerStatus affiche des informations sur les batteries pour les ordinateurs portables.
sen a effectué plusieurs améliorations pour les systÚmes avec plusieurs batteries:

  • Gestion de plusieurs emplacements pour batteries qui ne sont pas forcĂ©ment tous utilisĂ©s,
  • Meilleur calcul des alertes de batterie faible,
  • Prise en compte de la dĂ©connexion de batteries pendant le fonctionnement du systĂšme.

Outils en ligne de commande

La commande profile (qui permet d’analyser les performances d’autres applications et du systĂšme) peut maintenant afficher le nombre d’évĂšnements qui n’ont pas pu ĂȘtre enregistrĂ©s par l’analyseur systĂšme (waddlesplash).

La commande package_repo update (utilisée pour mettre à jour un dépÎt de paquets avec de nouveaux logiciels) peut maintenant fonctionner sans avoir accÚs au contenu complet des fichiers packages à inclure dans le dépÎt (seuls les noms des paquets et quelques autres métadonnées sont réellement nécessaires).

La commande package_repo list dispose d’une option -f pour afficher le nom de fichiers correspondant aux paquets contenus dans un dĂ©pĂŽt de paquets. Les fichiers peuvent ainsi ĂȘtre tĂ©lĂ©chargĂ©s facilement par un outil tiers. (waddlesplash)

Ces deux modifications sont utiles en particulier pour la ferme de build de HaikuPorts, qui souhaite hĂ©berger les fichiers dans des buckets S3 afin de simplifier l’infrastructure et de rĂ©duire les coĂ»ts de fonctionnement.

Amélioration du format de sortie de la commande launch_roster pour indiquer le statut des services et pas simplement leur nom (kallisti5 + waddlesplash).

Ajout dans strace du décodage des drapeaux de configurations de mutex (par exemple MUTEX_SHARED) (waddlesplash).

Serveurs

Les serveurs sont des applications fonctionnant en tùche de fond et qui implémentent une grande partie des fonctionnalités du systÚme.

app_server

app_server est le serveur graphique qui se charge de l’affichage du bureau et des fenĂȘtres.

madmax a travaillĂ© sur la gestion des polices de caractĂšres: correction de problĂšmes de verrouillage pour Ă©viter des accĂšs concurrents au gestionnaire de polices par plusieurs fils d’exĂ©cution, amĂ©lioration du traitement de l’ajout et du retrait de polices, et une optimisation pour Ă©viter de scanner deux fois de suite les dossiers de polices au dĂ©marrage.

waddlesplash a complĂ©tĂ© ce changement en dĂ©plaçant une partie du code de gestion des polices pour Ă©viter que d’autres parties de l’exĂ©cution soient bloquĂ©es par l’initialisation des polices, qui peut prendre beaucoup de temps (quelques secondes) au dĂ©marrage du systĂšme.

waddlesplash a corrigĂ© un problĂšme de calcul de dĂ©lai d’expiration (probablement sans consĂ©quence, dĂ©couvert par hasard en investiguant un autre problĂšme).

jscipione a corrigĂ© un problĂšme de rafraĂźchissement de l’affichage lorsque des fenĂȘtres sont empilĂ©es, qui pouvait conduire Ă  ne pas bien effacer la barre de titre dans certains cas.

Un clic simple sur le coin bas-droite de la fenĂȘtre (coin de redimensionnement) dĂ©clenchait par erreur une minimisation de la fenĂȘtre concernĂ©e (madmax).

media_server

Le media_server prend en charge les flux audio et vidĂ©o et permet de router ces flux entre diffĂ©rentes applications ainsi que depuis et vers le matĂ©riel (cartes son, cartes d’acquisition vidĂ©o, webcams
).

Travaux effectués par waddlesplash:

Correction de problĂšmes de calculs de temps dans le mixeur audio (problĂšmes dĂ©couverts suite Ă  l’amĂ©lioration de la dĂ©tection d’erreurs dans BTimeSource, mentionnĂ© plus haut), et ajout de contrĂŽles d’intĂ©gritĂ© supplĂ©mentaires lors du dĂ©marrage du mixeur.

Cela corrige plusieurs bugs qui faisaient que le systĂšme n’avait pas de son au dĂ©marrage pendant un certain temps, avant que soudainement ça se mette Ă  fonctionner.

D’autre part, des amĂ©liorations de performance sur la programmation des Ă©vĂšnements, et des corrections de crash sur la connexion et dĂ©connexion des nƓuds mĂ©dia vers la sortie audio, et sur le nƓud multi-audio avec certaines cartes sons qui exposent des types de contrĂŽles invalides.

D’autres changements sont en cours pour pouvoir changer la sortie audio sans avoir besoin de redĂ©marrer le serveur mĂ©dia, mais ça ne fonctionne pas encore.

registrar

Le registrar surveille quelles sont les applications déjà lancées et fournit divers services de communication entre applications, en particulier pour le presse-papier.

Ajout de vĂ©rification d’erreurs si un message de rĂ©cupĂ©ration du contenu du presse-papier Ă©choue. Cela peut arriver si on a mis beaucoup de donnĂ©es dans le presse-papier et qu’il n’y a plus assez de mĂ©moire disponible.

Des corrections du cĂŽtĂ© de la libbe permettent maintenant de gĂ©rer ces erreurs et de ne pas faire planter l’application concernĂ©e.

input_server

L’input_server` se charge des pĂ©riphĂ©riques d’entrĂ©e (clavier, souris
)

AmĂ©liorations la validation des donnĂ©es des fichiers de configuration de souris, qui dans certains cas pouvaient empĂȘcher la souris de fonctionner. Refonte de la gestion des accĂšs concurrents Ă  la liste des pĂ©riphĂ©riques, pour supprimer des verrous inutiles et permettre les accĂšs Ă  la liste mĂȘme si un thread de gestion d’un pĂ©riphĂ©rique est bloquĂ©. (madmax)

Les codes de touches pour la touche power et la touche \_ des claviers japonais s’étaient retrouvĂ©s assignĂ©es Ă  des valeurs identiques (cela semble provenir tout droit de changements datant de BeOS, car ces touches non prĂ©sentes sur un clavier de PC amĂ©ricain classiques sont assez mal documentĂ©es). La documentation a Ă©tĂ© mise Ă  jour pour mieux expliquer quels sont les codes utilisĂ©s, et les diffĂ©rents pilotes (PS2, USB) ont Ă©tĂ© harmonisĂ©s pour utiliser les mĂȘmes codes (x512 et PulkoMandy).

Le code power pourra Ă©galement ĂȘtre utilisĂ© par un pilote GPIO sur les machines oĂč c’est nĂ©cessaire (souvent non compatibles PC).

net_server

Le net_server se charge de toutes les opérations liées au réseau.

mmlr a corrigé un problÚme dans le client DHCP, qui utilisait certaines variables sans les initialiser.

package_daemon

Le package_daemon vĂ©rifie la cohĂ©rence des paquets installĂ©s avec leurs dĂ©pendances, crĂ©e les dossiers de transactions et de sauvegarde de l’état passĂ© du systĂšme, et se charge de lancer les scripts d’activation et de dĂ©sactivation de paquets. L’accĂšs au contenu des paquets est en revanche traitĂ© dans le noyau par le systĂšme de fichier packagefs.

Changement des couleurs des fenĂȘtres « problĂšmes » et « rĂ©sultats » qui apparaissent quand il y a des conflits ou d’autres problĂšmes de rĂ©solution de dĂ©pendances lors de l’activation des paquets (jscipione).

Kits

Les « kits » sont les composants de la bibliothĂšque standard de Haiku. Il s’agit principalement d’une convention de documentation et d’organisation de code source pour regrouper des fonctionnalitĂ©s liĂ©es entre elles.

Interface

L’interface kit` permet l’ouverture de fenĂȘtre et l’ajout de contrĂŽles d’interface graphiques Ă  l’intĂ©rieur de ces derniĂšres.

Les objets BBitmap (permettant de stocker une image « raster ») avec le flag ACCEPT_VIEWS (permettant d’attacher une « vue" pour dessiner dans le bitmap ne sont plus automatiquement effacĂ©s. Cela permet de crĂ©er un bitmap Ă  partir de donnĂ©es existantes, puis de dessiner autre chose par-dessus. Ce changement corrige un problĂšme de compatibilitĂ© avec BeOS, et permet aussi d’utiliser cette mĂ©thode dans l’implĂ©mentation de WebKit pour Haiku (ZardShard).

Un changement prĂ©cĂ©dent avait causĂ© un problĂšme de compatibilitĂ© d’API avec BeOS, qui dĂ©clenchait dans certains cas une rĂ©cursion infinie et un crash lorsqu’on essayait de faire dĂ©filer une BListView par glisser-dĂ©placer (par exemple dans l’application Wonderbrush). Waddlesplash a corrigĂ© ce problĂšme, et jscipione a Ă©galement ajoutĂ© quelques amĂ©liorations sur la mise Ă  jour des items sĂ©lectionnĂ©s lorsqu’on effectue cette opĂ©ration.

Il est maintenant possible d’afficher des « checkmarks » (coche indiquant une option activĂ©e) sur les items de menus disposĂ©s en « matrice ». Habituellement les menus sont soit disposĂ©s sur une ligne, soit sur une colonne avec les items les un au-dessous des autres. Le mode « matrice » permet de s’affranchir de ces restrictions pour disposer les items librement avec du code applicatif.

Mise Ă  jour en direct des couleurs dans les contrĂŽles BSpinner, refonte de l’hĂ©ritage des couleurs de la vue parente, et changement de la couleur de fond des boutons en mode sombre (jscipione).

Centrage vertical des dates dans BCalendarView (permettant d’afficher un calendrier) (nipos).

Factorisation de code dans BView pour l’envoi des donnĂ©es BShape vers app_server (x512).

La méthode de debug BPoint::PrintToStream affiche maintenant les coordonnées avec des décimales, permettant de détecter les points qui ne sont pas alignés avec la grille de pixels (ayu-ch).

Les boĂźtes de texte marquĂ©es comme « invalides » ont maintenant un fond rouge. La bordure rouge utilisĂ©e prĂ©cĂ©demment n’était pas assez visible (nephele).

Media

Le media kit permet aux applications de s’interfacer avec le media server, et fournit en plus une interface standardisĂ©e pour les codecs audio et vidĂ©o.

Ajout d’assertions dans la classe BTimeSource pour empĂȘcher les applications d’envoyer des temps avec un « drift » infĂ©rieur ou Ă©gal Ă  0. Le « drift" est utilisĂ© comme multiplicateur et diviseur dans les calculs d’horloge, donc les valeurs infĂ©rieures ou Ă©gales Ă  0 causent des problĂšmes. Ceci a Ă©tĂ© mis en Ă©vidence par des corrections au niveau du noyau (voir plus loin dans la dĂ©pĂȘche) et a ensuite permis de trouver encore d’autres problĂšmes en particulier dans les add-ons media (waddlesplash).

Locale

Le « locale Â» kit permet la traduction des applications, le formatage des nombres en fonction des prĂ©fĂ©rences de chaque pays, la gestion des fuseaux horaires, et toutes les autres problĂ©matiques liĂ©es Ă  l’internationalisation. Il s’agit principalement d’un enrobage de la bibliothĂšque ICU pour faciliter son utilisation avec les types natifs de Haiku.

Meilleure gestion des erreurs si la bibliothĂšque ICU ne peut pas ĂȘtre initialisĂ©e (waddlesplash).

Support

Le support kit contient diverses méthodes et classes utilitaires et génériques.

ContrĂŽle d’intĂ©gritĂ© des donnĂ©es lors de la dĂ©serialisation de BMessage (waddlesplash).

Correction d’incohĂ©rence de nommage de paramĂštres de fonction entre les fichiers .cpp et .h dĂ©tectĂ©s par cppcheck (mt).

Pilotes de périphériques

Les pilotes sont indispensables pour assurer le fonctionnement de Haiku sur une grande variĂ©tĂ© de matĂ©riel. Certains sont dĂ©veloppĂ©s Ă  partir des spĂ©cifications du matĂ©riel spĂ©cifiquement pour Haiku, et d’autres ont Ă©tĂ© adaptĂ©s de travaux rĂ©alisĂ©s pour d’autres systĂšmes d’exploitation.

Le niveau de logging par défaut a été abaissé dans certains pilotes afin de ne pas trop polluer le journal systÚme, en particulier:

  • Suppression de messages indiquant qu’aucun matĂ©riel compatible avec le pilote n’a Ă©tĂ© dĂ©tectĂ©,
  • Suppression de certains logs de debug dans les pilotes audio HDA et usb_audio.

Processeurs et Ă©conomie d’énergie

Renommage du pilote intel_cstates en x86_cstates puisque les processeurs récents de chez AMD sont également pris en charge par ce pilote.

Appel Ă  ce pilote Ă  plus d’endroits dans le noyau pour mettre les processeurs en veille ou au ralenti quand ils ne sont pas utilisĂ©s.

RĂ©seau

virtio_net

Le pilote virtio_net (carte rĂ©seau utilisĂ©e dans les machines virtuelles) implĂ©mente maintenant le « checksum offloading » pour les protocoles IP, TCP et UDP. En effet, dans le cas de ce pilote, les vĂ©rifications et calculs de sommes d’intĂ©gritĂ© doivent ĂȘtre faits de toutes façons du cĂŽtĂ© de la machine hĂŽte, il est donc inutile de les refaire dans la machine virtuelle.

Au passage, correction de quelques erreurs dans ce driver, et en particulier de problÚmes de calcul de taille de buffers en mémoire.

broadcom750x

Utilisation des interruptions par messages (MSI) lorsque c’est nĂ©cessaire pour certaines versions du matĂ©riel (waddlesplash).

 vmxnet

Nouveau pilote portĂ© depuis FreeBSD qui permet d’utiliser l’interface rĂ©seau paravirtualisĂ©e de VMWare (CodeForEvolution).

 Couches de compatibilitĂ© BSD

Haiku utilise des pilotes réseau venus de FreeBSD et OpenBSD, cela permet de mutualiser les ressources et de ne pas perdre du temps à réinventer la roue. Une couche de compatibilité permet de réutiliser les pilotes avec trÚs peu de modification dans leur code et une simple recompilation.

Cette approche est Ă©galement utilisĂ©e par d’autres systĂšmes d’exploitation comme RTEMS.

La couche de compatibilitĂ© a reçu des corrections de problĂšmes sur l’allocation de mĂ©moire dĂ©diĂ©e aux transferts DMA, ainsi qu’un problĂšme sur le calcul de la taille d’un buffer de rĂ©ception, qui empĂȘchait les pilotes de fonctionner sur certains matĂ©riels.

 TCP

Waddlesplash a travaillĂ© sur l’amĂ©lioration de l’implĂ©mentation de TCP :

  • Refonte de la gestion des ACK reçus dans le dĂ©sordre,
  • AmĂ©lioration du code de dĂ©bogage pour investiguer des crashs du noyau remontĂ©s par quelques utilisateurs,
  • Modification du code de mise Ă  jour de la taille de fenĂȘtre TCP pour Ă©viter d’envoyer inutilement des changements de taille,
  • Correction de calcul du temps d’aller-retour,
  • ImplĂ©mentation du redimensionnement dynamique de la fenĂȘtre de rĂ©ception (auparavant, elle Ă©tait de taille fixe),
  • Ajout d’assertions Ă  divers endroits dans la pile rĂ©seau pour dĂ©tecter les problĂšmes Ă  la source.

Ces amĂ©liorations permettent au trafic TCP d’ĂȘtre au moins 10 fois plus rapide, selon le type de connexion utilisĂ©, et rĂšgle un problĂšme de lenteur des tĂ©lĂ©chargements depuis Haiku qui Ă©tait prĂ©sent depuis assez longtemps.

 Ethernet

Du cĂŽtĂ© d’Ethernet, quelques amĂ©liorations et nettoyages sur le calcul de la MTU (taille maximale d’un paquet qui peut ĂȘtre envoyĂ©). Pour l’instant, la dĂ©couverte du « path MTU », la MTU du chemin complet entre deux machines, n’est pas encore disponible. Haiku ne s’autorise donc pas Ă  envoyer du trafic plus large qu’une trame Ethernet standard, mĂȘme si cela pourrait ĂȘtre possible pour le rĂ©seau local. Il reste donc une amĂ©lioration potentielle des performances rĂ©seau dans certains cas.

 UNIX domain sockets

Les sockets UNIX sont une mĂ©thode de communication entre processus standardisĂ©e par POSIX, utilisĂ©e surtout par des logiciels portĂ©s depuis d’autres systĂšmes (les applications natives pour Haiku utiliseront plus volontiers des BMessages ou des ports).

AmĂ©lioration et nettoyage du code autour de la gestion des donnĂ©es annexes dans les sockets UNIX. Correction de petites fuites de mĂ©moire et d’un kernel panic qui pouvait se produire lors de la fermeture d’un socket (waddlesplash).

USB

ImplĂ©mentation de l’USB « Super Speed Plus », qui permet des connexions USB avec un dĂ©bit pouvant atteindre 10 gigabits par seconde (korli).

Refonte et consolidation du comptage de rĂ©fĂ©rences dans la pile USB, ce qui met en Ă©vidence sous forme de kernel panic des cas oĂč les choses ne sont pas bien faites. Ce n’est pas agrĂ©able, mais c’est tout de mĂȘme mieux qu’une corruption mĂ©moire difficile Ă  investiguer (waddleplash).

DĂ©codage des descripteurs USB Audio v2 dans la commande listusb, mais pas encore dans le pilote usb_audio qui implĂ©mente pour l’instant seulement la version 1 (gscrain).

PCI

Correction de problĂšmes d’accĂšs au bus PCI sur les machines Ă©quipĂ©es de ACPI. Suite Ă  une modification prĂ©cĂ©dente, les accĂšs sur 8 ou 16 bits Ă©taient convertis en accĂšs sur 32 bits, mais ce n’est pas le comportement attendu. En particulier, certains registres effacent automatiquement leur contenu lorsqu’ils sont lus, ou bien les donnĂ©es accessibles en lecture et en Ă©criture ne sont pas les mĂȘmes. (PulkoMandy)

Il n’est donc pas possible de lire une valeur sur 32 bits, remplacer 8 bits, et rĂ©Ă©crire 32 bits pour simuler une Ă©criture sur 8 bits dans un registre.

Les accĂšs sont Ă  nouveau traitĂ©s correctement, ce qui permet Ă  Haiku de fonctionner Ă  nouveau normalement sur les machines concernĂ©es par ce type d’accĂšs au bus PCI (cela dĂ©pend du matĂ©riel et des pilotes).

Périphériques de stockage

Petites améliorations de performances dans le pilote NVMe (waddlesplash).

Modification du pilote AHCI/SATA (waddlesplash) :
- Suppression de code dupliquĂ© pour utiliser Ă  la place des fonctions communes partagĂ©es avec d’autres pilotes,
- Correction d’une confusion entre adresses 32 et 64 bits qui empĂȘchait de dĂ©marrer la version 32
bits de Haiku sur certains systĂšmes avec plus de 4Gio de RAM.

La pile SCSI prend mieux en compte les restrictions sur les adresses DMA. Chaque pilote de pĂ©riphĂ©rique qui implĂ©mente SCSI peut indiquer ce qu’il est capable de faire, et la pile SCSI fait en sorte que les demandes de transferts DMA respectent ces contraintes, ce qui Ă©vite aux pilotes de devoir dĂ©couper par eux-mĂȘmes les transferts en unitĂ©s qu’ils sont capables de traiter (waddlesplash).

ACPI

ACPI est une interface standardisĂ©e avec le matĂ©riel. Elle permet la gestion d’énergie (extinction de la machine par exemple), ainsi que l’accĂšs Ă  du matĂ©riel annexe tels que les boutons on/off, la dĂ©tection de rabat de l’écran sur un PC portable, le contrĂŽle des LEDs indicatrices ; ainsi que la dĂ©couverte de matĂ©riel non connectĂ© sur le bus PCI (comme certains modules eMMC dans des tablettes et ordinateurs Ă  bas coĂ»t).

La spĂ©cification Ă©tant assez complexe, la bibliothĂšque ACPICA est utilisĂ©e pour implĂ©menter les bases de ACPI. Ensuite, des pilotes dĂ©diĂ©s permettent d’exposer chaque pĂ©riphĂ©rique ACPI.

Mise à jour de ACPICA avec la derniÚre version publiée par Intel (publiée en mars), et un peu de nettoyage afin de pouvoir intégrer quelques patchs dans la version upstream de ACPICA (PulkoMandy).

Ajustement du pilote ACPI pour mapper sa mĂ©moire physique en « write back » au lieu de dĂ©sactiver complĂštement le cache. C’est nĂ©cessaire sur ARM64, car le cache permet d’intercepter les accĂšs mĂ©moire non alignĂ©s. Correction de problĂšmes liĂ©s au fait que la mĂȘme zone de mĂ©moire physique pouvait ĂȘtre mappĂ©e plusieurs fois avec des configurations diffĂ©rentes, ce qui est impossible (dĂ©clenche une « machine check exception ») (oanderso).

Graphiques

AvancĂ©es sur la prise en charge des cartes graphiques Intel de gĂ©nĂ©rations Tiger Lake, Ice Lake et Gemini Lake (ttmfx, ilzu, PulkoMandy). L’utilisation de ces cartes graphiques reste assez limitĂ©, sans accĂ©lĂ©ration matĂ©rielle et sans possibilitĂ© d’utiliser plusieurs Ă©crans pour l’instant.

virtio

Les pilotes virtio permettent l’utilisation de matĂ©riel virtuel dĂ©fini pour tirer le meilleur parti des machines virtuelles. PlutĂŽt que de copier le fonctionnement d’un matĂ©riel existant, l’interface peut ĂȘtre conçue pour rendre le travail plus simple aussi bien pour l’hĂŽte que pour le systĂšme virtualisĂ©.

Correction de problĂšmes dans l’allocation des files de messages virtio et amĂ©lioration de la gestion des erreurs (mmlr).

VĂ©rification de l’état du pĂ©riphĂ©rique aprĂšs une rĂ©initialisation, et correction d’un accĂšs mĂ©moire hors limite dans le pilote virtio_pci (korli).

PS/2

Les ports PS/2 ont disparu de la plupart des machines depuis de nombreuses annĂ©es, mais le protocole est encore utilisĂ© pour les claviers des ordinateurs portables ainsi que pour certains touchpads. Ces derniers utilisent de nombreuses extensions peu standardisĂ©es et mal documentĂ©es pour offrir des fonctions avancĂ©es qui n’existaient pas Ă  l’époque des souris Ă  deux boutons.

Le driver reçoit ce trimestre une refonte de la gestion des verrous entre ses différents composants, pour essayer de régler quelques problÚmes de synchronisation (waddlesplash).

SystĂšmes de fichiers

ram_disk et ramfs

ram_disk est un pĂ©riphĂ©rique bloc (block device) qui stocke ses donnĂ©es en RAM (non persistante au redĂ©marrage). Il peut ĂȘtre formatĂ© avec n’importe quel systĂšme de fichier.

ramfs est un systĂšme de fichiers qui stocke ses donnĂ©es en RAM, sans passer par un block device. Cela permet de meilleures performances (pas besoin de journalisation par exemple), une meilleure intĂ©gration avec le cache de fichiers (la mĂ©moire peut ĂȘtre partagĂ©e directement entre ramfs et le cache), et de s’affranchir des limites habituelles des pĂ©riphĂ©riques de bloc (par exemple: une taille fixe connue lors de la crĂ©ation du systĂšme de fichiers).

Un utilisateur a remontĂ© un problĂšme de compatibilitĂ© avec POSIX. Si on utilise mmap() sur un fichier stockĂ© dans un ramfs, et que la taille du fichier n’est pas un multiple de la taille des pages de mĂ©moire, la fin de la derniĂšre page pouvait contenir des donnĂ©es alĂ©atoires. Selon la spĂ©cification POSIX, il faut que cette zone soit remplie avec des 0, et le compilateur clang dĂ©pend de ce comportement pour implĂ©menter une lecture rapide des fichiers sources compilĂ©s.

Le problÚme a été corrigé, avec au passage une commonalisation de code entre ramfs et ram_disk, de petits ajustements de performances, et un peu de nettoyage.

Enfin, la prioritĂ© des allocations mĂ©moires de ces deux pilotes a Ă©tĂ© abaissĂ©e, ce qui permet d’éviter un gel du systĂšme s’il n’y a plus de mĂ©moire disponible.

Le pilote ramfs continue d’ĂȘtre stabilisĂ©, quelques problĂšmes qui pouvaient encore causer des kernel panic ont Ă©tĂ© corrigĂ©s.

packagefs

packagefs est un systĂšme de fichier virtuel qui expose le contenu de fichiers de packages au format hpkg. Des paquets peuvent ĂȘtre ajoutĂ©s et supprimĂ©s pendant le fonctionnement du systĂšme, et il n’est pas nĂ©cessaire d’extraire leurs donnĂ©es sur disque.

Plusieurs améliorations faites par waddlesplash :

  • Ajout de vĂ©rifications de la bonne utilisation de verrous entre diffĂ©rents threads et corrections de problĂšmes mineurs qu’elles ont mis en Ă©vidence,
  • AmĂ©lioration du message d’erreur si on essaie d’activer deux paquets qui entrent en conflit.

Un reproche qui est souvent fait au packagefs est d’avoir augmentĂ© les besoins en RAM de Haiku, en effet, depuis la version Beta 1 de Haiku, la configuration mĂ©moire minimum recommandĂ©e est de 384Mio de RAM, alors que les versions prĂ©cĂ©dentes se contentaient de 128Mio.

  • Utilisation d’object_cache` (un allocateur mĂ©moire pour des objets qui font tous la mĂȘme taille) dans diffĂ©rents endroits de packagefs pour rĂ©duire sa consommation de mĂ©moire,
  • Utilisation de listes chaĂźnĂ©es simples au lieu de listes chaĂźnĂ©es doubles lĂ  oĂč ça ne pose pas de problĂšme de performances,
  • Suppression de champs constants dans certaines classes,
  • « inlining » des compteurs de rĂ©fĂ©rences pour rendre les structures de donnĂ©es plus compactes,
  • RĂ©organisation des structures pour rĂ©duire le padding,
  • Retrait des « dĂ©pĂŽts d’objets » dans les arĂšnes d'allocation,
  • DĂ©coupage des allocations en plusieurs zones distinctes,
  • Utilisation de verrous moins fins (par exemple, avoir un seul verrou pour tout un dossier au lieu de un par fichier),
  • Utilisation d’un « bump allocator » pour les objets Ă  courte durĂ©e de vie.

La rĂ©duction de consommation mĂ©moire avec ces changements est de prĂšs de 20%, soit environ 15Mio sur une installation de rĂ©fĂ©rence. En effet, un gain de quelques octets sur le stockage d’informations sur un fichier est multipliĂ© par plusieurs milliers de fichiers prĂ©sents sur le disque, ce qui fait que chaque petite optimisation est intĂ©ressante. Cependant, les investigations ont aussi permis de dĂ©couvrir d’autres problĂšmes encore plus importants qui n’étaient pas directement liĂ©s au packagefs, on en reparle un peu plus loin.

Un autre changement a Ă©tĂ© fait par waddlesplash, non seulement pour packagefs mais aussi pour d’autres endroits oĂč le mĂȘme code Ă©tait utilisĂ© : La fonction pour calculer un hash de chaĂźne de caractĂšres utilisait un algorithme obsolĂšte. Elle a Ă©tĂ© remplacĂ©e par hashdjb2 qui gĂ©nĂšre moins de collisions.

FAT

FAT est un systÚme de fichier développé par Microsoft. Il est utilisé en particulier sur les cartes SD et les clés USB, ainsi que pour les partitions systÚmes EFI. Bien que sa conception soit quelque peu obsolÚte, il reste donc indispensable.

Le pilote FAT de Haiku, qui provenait tout droit d’un code source publiĂ© par Be, a Ă©tĂ© remplacĂ© dans la version beta 5 par une nouvelle version basĂ©e sur le code de FreeBSD. Ce nouveau pilote reçoit depuis des amĂ©liorations rĂ©guliĂšres par Jim906, le dĂ©veloppeur qui s’est chargĂ© du portage du code de FreeBSD.

Ce trimestre, le pilote reçoit des corrections sur l’initialisation des « media bytes » dans l’en-tĂȘte des partitions, des amĂ©liorations de performances pour rĂ©duire le temps nĂ©cessaire au montage d’une partition FAT, ainsi qu’une meilleure gestion des erreurs dans le traitement des noms de volumes. Il est Ă©galement possible de monter les volumes FAT de taille supĂ©rieure Ă  2TiO.

BFS

BFS est le systĂšme de fichier hĂ©ritĂ© de BeOS et utilisĂ© pour les partitions natives de Haiku. Il propose une trĂšs bonne implĂ©mentation des attributs Ă©tendus (sans limite de taille, et typĂ©s) et permet en plus d’exĂ©cuter des requĂȘtes sur ces attributs pour localiser trĂšs rapidement les fichiers rĂ©pondant Ă  certains critĂšres.

L’implĂ©mentation du systĂšme de fichier BFS est assez mĂ»re et reçoit habituellement peu d’évolutions. Cependant, il reste toujours des possibilitĂ©s d’amĂ©liorer les performances.

C’est le cas de la fonction de recherche de blocs libres. Les blocs sont chacun reprĂ©sentĂ©s par un bit dans une structure indiquant s’ils sont disponibles ou pas. La recherche de blocs libres se faisait bit Ă  bit, mais il est possible de gagner beaucoup de temps en testant 64 bits d’un coup pour savoir tout de suite qu’ils reprĂ©sentent tous des blocs occupĂ©s, et passer directement aux 64 bits suivants. Cela amĂ©liore les performances de la crĂ©ation et du redimensionnement de fichier, en particulier sur les architectures RISC-V (waddlesplash).

Query parser

Plusieurs systĂšmes de fichiers conçus pour BeOS ou Haiku (bfs, ramfs, et packagefs) permettent l’utilisation d’attributs indexĂ©s par le systĂšme de fichiers qui permettent d’effectuer des requĂȘtes pour localiser des fichiers comme dans une base de donnĂ©es.

Depuis la version beta 5 de Haiku, ces 3 systĂšmes de fichiers partagent le code utilisĂ© pour parser une requĂȘte (envoyĂ©e sous forme de texte) et la convertir en une opĂ©ration de recherche exĂ©cutable.

Ce parser pouvait dans certains cas (requĂȘtes trop complexes) dĂ©clencher volontairement un kernel panic. Celui-ci a Ă©tĂ© remplacĂ© par une « simple » erreur, remontĂ©e Ă  l’application qui a dĂ©clenchĂ© la requĂȘte. L’application aura la charge de remonter cette erreur Ă  l’utilisateur, et de l’inviter Ă  simplifier sa demande.

block_cache

Le cache de blocs, comme son nom l’indique, stocke en mĂ©moire RAM une copie de certains blocs des systĂšmes de fichiers. Cela permet d’accĂ©lĂ©rer les opĂ©rations bas niveau sur le systĂšme de fichier, en particulier pour mettre en cache des structures internes du disque. Il complĂšte le file_cache, qui lui se trouve Ă  un niveau plus haut, et met en cache uniquement le contenu des fichiers lus et Ă©crits par les applications.

Le seul changement notable sur le block_cache est le retrait de paramÚtres inutilisés dans certaines fonctions, afin de simplifier le code (waddlesplash).

kernel

Une correction de bug sur le blocage des threads avec timeout (par exemple, l’attente d’un mutex ou d’un sĂ©maphore avec un dĂ©lai maximum): dans certains cas, une fonction pouvait retourner B_TIMED_OUT pour d’autres raisons que l’expiration du timer. Ce n’était pas traitĂ© correctement, et le noyau supposait que le timeout avait expirĂ©, alors qu’il s’agissait d’autre chose. Des vĂ©rifications supplĂ©mentaires permettent de traiter ce cas correctement.

Correction de problĂšme sur la programmation des timeouts « absolus temps-rĂ©el ». Comme leur nom l’indique, ils rĂ©fĂ©rencent l’horloge « real time » (qui essaie de suivre l’heure et la date « rĂ©elle », par opposition Ă  l’horloge systĂšme qui est basĂ©e sur l’uptime de la machine, mais garantit de ne jamais faire de saut ou revenir en arriĂšre). Ces timers ne fonctionnaient pas du tout (ou alors, seulement sur un coup de chance), et restaient probablement bloquĂ©s pendant une durĂ©e beaucoup plus longue que demandĂ©. Au passage, nettoyage du code de gestion des timers.

Dans le code de gestion des interruptions: ajout d’assertions pour investiguer un bug dans les addons vmware ou virtualbox.

Correction d’un bug dans l’implĂ©mentation de kqueue qui produisait un blocage au dĂ©marrage de la libevent (qui utilise maintenant kqueue pour Haiku).

Des petites amĂ©liorations de performances: sur l’allocateur mĂ©moire du noyau, sur l’utilisation de verrous dans la gestion de la mĂ©moire virtuelle, des fuites de mĂ©moire dans l’allocation de page, des amĂ©liorations sur la dĂ©tection de rĂ©fĂ©rences devenues invalides (jpelczar + waddlesplash).

Le script de link du noyau refuse maintenant les sections inconnues avec un message d’erreur, au lieu de simplement les ignorer (korli).

Correction du dĂ©compte du temps CPU utilisĂ© par le thread en cours d’exĂ©cution, pour donner des rĂ©sultats plus fiables dans les applications qui affichent l’utilisation CPU (waddlesplash).

Refactorisation du dĂ©compte du temps d’exĂ©cution des appels systĂšmes. Seul le temps passĂ© dans l’exĂ©cution du syscall est prise en compte, sans mesurer la mise en place d’un appel systĂšme et du retour vers l’espace utilisateur (qui ne peuvent de toutes façons pas ĂȘtre mesurĂ©es de façon fiable depuis le noyau). Cela rend l’affichage des durĂ©es d’exĂ©cution dans strace plus facile Ă  interprĂ©ter (waddlesplash).

RĂ©duction de la taille maximale des tampons mĂ©moire pour stocker des dirent Ă  8Kio. La plupart des applications n’utilisent pas un tampon aussi large, et les quelques-unes qui le faisaient ont Ă©tĂ© modifiĂ©es pour rĂ©duire la taille. Cette rĂ©duction permet d’utiliser un allocateur spĂ©cialisĂ© beaucoup plus rapide, ce qui devrait compenser les rares cas oĂč le tampon est trop petit pour rĂ©cupĂ©rer tout le contenu d’un dossier en une seule fois (waddlesplash).

Correction de plusieurs problĂšmes dans le systĂšme de gestion des ressources faibles (qui essaie de libĂ©rer de la mĂ©moire quand il n’y en a plus assez de disponible). Dans certains cas, le systĂšme finit par geler ou dĂ©clencher un kernel panic, alors qu’il devrait toujours ĂȘtre possible de refuser des demandes d’allocation mĂ©moire venant de l’espace utilisateur, et de conserver suffisamment de mĂ©moire libre pour au moins afficher proprement une erreur.

Amélioration de la gestion des mutex (exclusions mutuelles entre threads):

  • Ajout d’assertions pour dĂ©tecter des cas de rĂ©veil d’un thread qui ne devrait pas l’ĂȘtre.
  • Correction d’un problĂšme introduit rĂ©cemment et investiguĂ© Ă  l’aide de ces nouvelles assertions.
  • L’ABI des locks est identiques entre les builds du kernel en version debug ou release, ce qui permet de ne pas avoir besoin de recompiler tous les pilotes dans le mĂȘme mode que le kernel. Les pilotes compilĂ©s en mode release vont dĂ©clencher une erreur de symbole manquant si on essaie de les utiliser avec un noyau en mode debug, dans l’autre sens, il n’y a pas de problĂšme. Auparavant, dans les deux cas on obtenait des crashes ou un gel complet du systĂšme, difficile Ă  investiguer et faisant perdre du temps.
  • Ajout d’assertions dans plusieurs cas pour dĂ©tecter les utilisations incorrectes des rw-locks. Certaines activĂ©es par dĂ©faut, et d’autres uniquement sur demande Ă  la compilation du noyau en raison de coĂ»t de vĂ©rification trop importants.
  • Correction de mauvaises utilisations des rwlocks ainsi dĂ©tectĂ©es.

GĂ©nĂ©ralisation de l’utilisation de fonctions utilitaires partagĂ©es pour la conversion des timespec en durĂ©es en microsecondes. Cela permet aux fonctions concernĂ©es (entre autres kqueue) de bĂ©nĂ©ficier de contrĂŽles de validitĂ© supplĂ©mentaires (waddlesplash).

Ajout d’informations de debug supplĂ©mentaires dans la sortie de la commande slab_object du debugger du noyau.

RĂ©activation de la calibration du TSC Ă  partir d’informations du CPUID lorsque Haiku s’exĂ©cute dans un hyperviseur, comme c’était dĂ©jĂ  le cas lorsqu’il s’exĂ©cute directement sur une machine physique. Le TSC est un timer interne du CPU qui permet des mesures de temps trĂšs rapides (une seule instruction CPU) mais dans une Ă©chelle de temps arbitraire qu’il faut corrĂ©ler avec le « vrai » temps. Cela peut ĂȘtre fait soit Ă  l’aide d’une mesure empirique (mĂ©thode historique), soit Ă  l’aide d’informations sur cette horloge disponibles dans les informations retournĂ©es par l’instruction CPUID.

Affichage de plus de fonctionnalités du CPU reconnues dans les logs de debug pour les processeurs x86 (korli).

Ajout d’un raccourci clavier (Control+D) pour quitter le debugger noyau et reprendre l’exĂ©cution normale si possible (Ă©quivalent Ă  la commande continue ou co) (mmlr).

Le chargement des pilotes de pĂ©riphĂ©riques se fait en prioritĂ© depuis les dossiers non-packaged avant de rechercher les fichiers dans les paquets logiciels, ce qui permet de tester facilement une version modifiĂ©e d’un pilote - sauf si les dossiers non-packaged sont dĂ©sactivĂ©s dans la configuration du noyau (korli).

VFS

Le VFS (virtual file system) est le composant de Haiku qui gĂšre l’accĂšs aux fichiers. Il fait l’intermĂ©diaire entre les appels systĂšmes liĂ©s aux fichiers (open, read, write
) et les systĂšmes de fichiers eux-mĂȘmes. Il implĂ©mente autant que possible ce qui peut ĂȘtre mis en commun entre tous les systĂšmes de fichiers: rĂ©solution de chemins relatifs, vĂ©rification de permissions


Cela rend plus facile l’écriture d’un nouveau systĂšme de fichiers, qui peut alors se concentrer sur les aspects bas niveau et la gestion de ses structures de donnĂ©es.

Ajout de vĂ©rifications d’intĂ©gritĂ©s supplĂ©mentaires dans le VFS pour dĂ©tecter des bugs dans les systĂšmes de fichiers le plus rapidement possible, au lieu d’obtenir un crash du noyau difficile Ă  investiguer un peu plus tard.

Retrait d’un scan du bus SCSI et des pilotes associĂ©s par le device manager pour rĂ©duire un peu le temps de dĂ©marrage.

Correction d’un gros problĂšme dans l’API du noyau IORequest qui aboutissait Ă  une confusion entre la taille totale d’une requĂȘte et l’offset de la derniĂšre donnĂ©e transfĂ©rĂ©e (les transferts ne commençant pas forcĂ©ment Ă  l’offset 0). La consĂ©quence Ă©tait l’écrasement de donnĂ©es dans le cache de fichiers, dĂ©clenchant des crashes du noyau avec des messages d’erreur incomprĂ©hensibles Ă  propos des structures de pages. Correction d’un problĂšme de calcul d’offset qui faisait que certaines opĂ©rations Ă©taient considĂ©rĂ©es comme rĂ©ussies, alors qu’il y avait en fait une erreur.

Correction de problĂšmes de dĂ©comptage de rĂ©fĂ©rences et de gestion du cache Ă  l’interface entre ramfs et VFS, mis en Ă©vidence lors du travail de portage de Firefox.

Ajout d’une acquisition de rĂ©fĂ©rence sur un vnode qui manquait dans le cache de fichiers (waddlesplash).

Améliorations du cache d'entrées, dont en particulier la mise en cache du hash des noms de fichiers, pour éviter des comparaisons de chaßnes de caractÚres inutiles.

Gestion de la mémoire

La gestion de la mĂ©moire virtuelle est une des tĂąches essentielles d’un systĂšme d’exploitation. Elle garantit l’isolation entre les diffĂ©rents processus, permet d’utiliser la mĂ©moire physique le mieux possible (Ă©ventuellement en dĂ©plaçant certaines allocations peu utilisĂ©es vers un espace d’échange sur disque), et permet aussi aux diffĂ©rents processus de se partager des donnĂ©es.

Il s’agit Ă©galement d’un composant trĂšs sollicitĂ©, et dont les performances impactent beaucoup le comportement du systĂšme. Une mauvaise gestion de la mĂ©moire peut fortement ralentir le systĂšme ou le rendre instable.

Ajout d’assertions dans le code gĂ©rant les pages de mĂ©moire, pour essayer d’intercepter ce type de correction plus rapidement si elles se reproduisent.

Dans l’arbre des areas globales : ajout d’assertions pour dĂ©tecter les identifiants d’areas dupliquĂ©s (chaque area doit bien sĂ»r avoir un identifiant unique).

ImplĂ©mentation de PAT (Page Attribute Table) pour les processeurs x86. Les PAT permettent de configurer des zones de mĂ©moires qui peuvent ou ne peuvent pas ĂȘtre mises en cache (complĂštement ou en write-through). Elles remplacent les MTRR en permettant un contrĂŽle plus fin et plus flexible. Au passage, nettoyage de l’implĂ©mentation des MTRR (prĂ©servĂ©e pour les processeurs plus anciens incompatibles avec PAT), ajout de nouvelles commandes dans le debugger noyau. Renommage des constantes B_MTR_* pour indiquer prĂ©cisĂ©ment leur rĂŽle indĂ©pendamment des dĂ©nominations utilisĂ©es dans les registres MTRR qui ne sont pas trĂšs claires (mmlr).

Lorsque le systĂšme utilise PAT, ajout d’assertions pour dĂ©tecter les tentatives d’accĂ©der Ă  la mĂȘme zone de mĂ©moire physique avec des configurations de cache diffĂ©rentes. Elles ne sont pas activĂ©es lorqu'on utilise les MTRR, car ces derniĂšres ne permettent pas une configuration aussi fine (waddlesplash).

Ajout d’informations supplĂ©mentaire dans le message de kernel panic indiquant qu’une page devrait ĂȘtre libre mais qu’elle ne l’est pas. Modification de la commande page du debugger noyau pour rĂ©cupĂ©rer la liste des espaces d’adressage depuis les structures du kernel plutĂŽt que d’itĂ©rer sur tout l’espace d’adressage (ce qui pouvait fonctionner sur un espace 32 bit, mais pas en 64 bit).

Correction du code de « guarded heap » du noyau qui ne compilait plus. Il s’agit d’un allocateur mĂ©moire plus lent mais avec de nombreuses vĂ©rifications d’intĂ©gritĂ© pour dĂ©tecter les dĂ©bordements de tampons, double free, et autres problĂšmes de gestion de la mĂ©moire dans le noyau (kallisti5).

Le fichier swap est automatiquement supprimĂ©, et l’espace disque libĂ©rĂ©, lors de la dĂ©sactivation de la swap. Auparavant, un redĂ©marrage Ă©tait nĂ©cessaire (waddlesplash).

Correction d’un problĂšme dans l’allocation de mĂ©moire « early boot » (avant que l’allocation normale soit mise en place), qui empĂȘchait le dĂ©marrage sur les systĂšmes pouvant gĂ©rer de grandes quantitĂ©s de mĂ©moire (plusieurs centaines de Gio) (waddlesplash).

libroot

La libroot regroupe tous les composants de la librairie standard C (parfois dĂ©coupĂ©e en libc, libm et libpthread pour d’autres systĂšmes). Elle contient en plus un certain nombre d’extensions spĂ©cifiques Ă  Haiku et Ă  BeOS.

Changements effectués par waddlesplash, sauf mentions spécifiques:

Nettoyage de code dans la classe WeakReferenceable, une classe de comptage de références intrusive qui autorise les références "faibles".

Correction de problùmes dans le code d’interfaçage avec ICU pour la conversion de dates (nipos et waddlesplash).

libnetwork

Nettoyage de code de compatibilitĂ© avec BeOS dans la libnetwork, pour faire en sorte qu’il ne soit plus du tout compilĂ© sur les architectures n’offrant pas de compatibilitĂ© avec BeOS.

Compatibilité POSIX

ImplĂ©mentation minimale de mknod et mknodat dans le seul cas spĂ©cifiĂ© par POSIX, qui permet de rĂ©aliser une opĂ©ration Ă©quivalente Ă  mkfifo. La gestion des devices dans Haiku est trĂšs diffĂ©rente de celle utilisĂ©e traditionellement par UNIX, et ne se prĂȘte pas Ă  l’implĂ©mentation des autres utilisations de ces fonctions.

Rectification de l’implĂ©mentation des fonctions *at (par exemple linkat) qui permettent de rĂ©aliser une opĂ©ration Ă  partir d’un descripteur de fichier au lieu d’un path. Dans la libroot, ces fonctions envoyaient la valeur -1 aux appels systĂšmes pour implĂ©menter AT_FDCWD. La valeur de AT_FDCWD a Ă©tĂ© modifiĂ©e pour choisir autre chose que -1 (qui est souvent utilisĂ© pour indiquer une erreur dans le code de retour d’autres fonctions). Les appels systĂšmes acceptent pour l’instant les valeurs -1 et AT_FDCWD, mais rejettent maintenant toutes les autres valeurs nĂ©gatives.

Remplacement d’une partie du code de gestion des flux d’entrĂ©e-sortie par la version de la glibc. La bibliothĂšque libroot est un patchwork d’implĂ©mentations provenant de la glibc, de musl, et de divers BSD, un objectif Ă  terme est d’essayer de se rapprocher d’une de ces implĂ©mentations, mais on ne sait pas encore trop de laquelle. En tout cas, le code des I/O provient majoritairement de la glibc afin d’ĂȘtre trĂšs compatible avec ce qui Ă©tait utilisĂ© dans BeOS.

La fonction gmtime retourne une struct tm avec le champ tm_zone contenant la chaĂźne "GMT" (waddlesplash).

Correction de la conversion des "surrogate pairs" dans la fonction mbrtowc.

Mise en conformitĂ© de l’implĂ©mentation des threads avec POSIX :

  • Ajustement de code d’erreurs retournĂ©s par les fonctions
  • Suppression de la possibilitĂ© de retourner EINTR depuis un rwlock
  • Correction de deadlocks dans les barriers
  • Correction de plusieurs problĂšmes dans l’implĂ©mentation des sĂ©maphores anonymes.

Mise en place systĂ©matique de l’utilisation de _DEFAULT_SOURCE pour protĂ©ger les extensions Ă  la norme POSIX, ce qui permet de les activer automatiquement via l’inclusion de features.h lorsque c’est possible.

Nettoyage de quelques fichiers d’en-tĂȘte, dont en particulier <sys/select.h>, pour Ă©viter de polluer l’espace global avec des macros et des dĂ©finitions en double (waddlesplash).

Prise en compte correcte du drapeau O_NONBLOCK lors de l’ouverture d’un FIFO (korli).

runtime_loader

Le runtime_loader est le composant responsable du chargement en mĂ©moire des exĂ©cutables et du lancement de nouveaux processus. Il rĂ©alise la rĂ©solution des dĂ©pendances et la recherche des bibliothĂšques partagĂ©es nĂ©cessaires pour l’exĂ©cution d’un programme.

Il reçoit des Ă©volutions suite au portage d’applications complexes venues de Linux, qui nĂ©cessitent souvent plusieurs dizaines de bibliothĂšques partagĂ©es.

Correction de problÚmes détectés en testant un portage expérimental et instable de Firefox: crash du runtime_loader dans certains cas si on charge une bibliothÚque (via dlopen ou load_add_on) dont il manque des dépendances.

Retrait de l’option -fno-builtin dans les drapeaux de compilation du runtime_loader, comme cela avait dĂ©jĂ  Ă©tĂ© fait pour la majoritĂ© de la libroot. Cela permet Ă  gcc de remplacer des appels Ă  des fonctions standardisĂ©es par une implĂ©mentation inline plus performante (waddlesplash).

Outils de debug

DĂ©veloppement d’outils pour enregistrer ce qu’il se passe pendant le dĂ©marrage du systĂšme et dĂ©tecter d’éventuels problĂšmes de latence, de 'lock contention', etc. Au passage, correction de divers problĂšmes liĂ©s Ă  ces outils : les barres de dĂ©filement de DebugAnalyzer, les permissions noyau dans transfer_area, etc.

Amélioration de la remontée des valeurs de retour des appels systÚmes vers strace sur les plateformes x86 32-bit.

Pour terminer, un changement rĂ©alisĂ© par mmlr : amĂ©lioration de l’allocateur mĂ©moire "guarded heap" pour le rendre utilisable plus facilement, y compris comme allocateur pour tout le systĂšme. Cet allocateur permet de dĂ©tecter les accĂšs au-delĂ  de la fin d’une zone mĂ©moire allouĂ©e avec malloc(), ainsi que les accĂšs Ă  de la mĂ©moire dĂ©jĂ  libĂ©rĂ©e, mais au prix d’une consommation mĂ©moire nettement plus Ă©levĂ©e qu’un allocateur classique. La disponibilitĂ© d’un espace d’adressage de 64 bits permet de limiter les cas oĂč une adresse mĂ©moire est initialement utilisĂ©e pour une allocation, puis libĂ©rĂ©e et allouĂ©e Ă  nouveau pour autre chose.

Un problĂšme de gestion d’erreur dans l’interfaçage entre le Debugger et le noyau pouvait conduire Ă  un gel complet du systĂšme dans certains cas de plantage du debug_server, en particulier s’il n’y a plus assez de mĂ©moire RAM disponible.

Bootloader

Ajout d’une vĂ©rification manquante pour prendre en compte l’option « BlockedEntries » dans le bootloader. Cette option s’appelait prĂ©cĂ©demment « EntriesBlacklist » mais a Ă©tĂ© renommĂ©e pour utiliser un terme non entachĂ© de racisme. L’ancien nom continue de fonctionner pour ne pas casser les installations existantes, mais n’est plus documentĂ©.

Augmentation de la taille maximum autorisĂ©e pour les allocations « standard » sur la pile. L’allocateur mĂ©moire du bootloader traite sĂ©parĂ©ment les allocations de grande taille, mais ces allocations ne sont pas correctement libĂ©rĂ©es lors du transfert de contrĂŽle vers le noyau, en particulier sur les machines utilisant un BIOS non EFI. Pour l’instant, une correction complĂšte du problĂšme semble compliquĂ©e Ă  mettre en place, mais la modification permet de libĂ©rer de la mĂ©moire allouĂ©e pour l’accĂšs au packagefs (le bootloader a besoin d’y accĂ©der pour trouver le noyau, qui est stockĂ© dans un paquet). Ce changement permet de libĂ©rer plusieurs dizaines de Mio de mĂ©moire, et complĂšte les changements mentionnĂ©s plus haut sur la gestion des paquets aprĂšs dĂ©marrage. Il est possible de configurer Haiku pour fonctionner avec moins de 100Mio de mĂ©moire (waddlesplash).

RĂ©paration de la rĂ©-initialisation des ports sĂ©rie sur le bootloader EFI. Le port sĂ©rie est utilisĂ© Ă  des fins de debug, mais il peut ĂȘtre accĂ©dĂ© de plusieurs façons diffĂ©rentes (en adressant directement le matĂ©riel, ou bien via des services EFI dĂ©diĂ©s). Le bootloader doit passer d’une mĂ©thode Ă  l’autre Ă  diffĂ©rentes Ă©tapes du dĂ©marrage: accĂšs direct au port physique dans les premiĂšres Ă©tapes (en dĂ©tectant s’il est bien prĂ©sent Ă  une adresse standard), accĂšs via les services EFI une fois ceux-ci initialisĂ©s, puis Ă  nouveau accĂšs direct au matĂ©riel aprĂšs l’arrĂȘt des services EFI pour la derniĂšre Ă©tape de passage de contrĂŽle au noyau (cette fois-ci Ă  une adresse qui peut ĂȘtre configurĂ©e dans les options du bootloader et du noyau). Ce fonctionnement ne s’insĂšre pas forcĂ©ment trĂšs bien dans la logique du bootloader, qui n’avait Ă  l’origine pas Ă©tĂ© conçu pour une gestion aussi complexe des entrĂ©es-sorties (VoloDroid).

Réduction de la quantité de logs liés à la mise en place de SMP (gestion de plusieurs processeurs) dans le bootloader pour BIOS (waddlesplash).

Le menu de dĂ©marrage affiche la version (numĂ©ro 'hrev') du paquet systĂšme correspondant Ă  chaque point de restauration disponible, ce qui facilite l’identification des Ă©tats qui correspondent Ă  un changement de version du systĂšme, et pas une simple installation, dĂ©sinstallation ou mise Ă  jour de paquets logiciels (waddlesplash).

Documentation

Haiku Book

Le « Haiku Book » est un projet de documentation des APIs publiques de Haiku. Il doit Ă  terme remplacer le « Be Book », qui documente les APIs de BeOS, mais ne peut pas ĂȘtre mis Ă  jour Ă  cause de se license CC BY-NC-ND. Actuellement, il faut jongler entre ces deux documentations.

La documentation de B_INFINITE_TIMEOUT (constante permettant d’indiquer Ă  certaines fonctions qu’on veut les exĂ©cuter sans timeout, et attendre indĂ©finiment) a Ă©tĂ© mise Ă  jour pour indiquer explicitement que sa valeur numĂ©rique est INT64_MAX (waddlesplash).

Correction de fautes de frappe dans la documentation des API liées aux entrées clavier (drea233).

Haiku Interface Guidelines

Ce document prĂ©sente les bonnes pratiques et conventions pour la conception d’interfaces graphiques fonctionnant avec Haiku.

Ajout d’une section sur la gestion des fichiers rĂ©cemment utilisĂ©s et la façon dont ils peuvent ĂȘtre exposĂ©s aux utilisateurs.

Wiki et documentation interne

Le wiki contient des informations utiles aux développeurs de Haiku.

La documentation « interne" documente le fonctionnement de Haiku en s’adressant principalement aux contributeurs du systĂšme, par opposition aux personnes qui souhaitent seulement dĂ©velopper ou porter des applications.

Mise Ă  jour de la page « release cookbook » indiquant toutes les Ă©tapes Ă  suivre lors de la publication d’une version de Haiku.

Notes d’administration systùme : mise à jour des instructions pour instancier des machines Google Cloud Platform (kallisti5).

SystĂšme de build, environnement de compilation

La compilation d’un systĂšme d’exploitation complet n’est pas chose facile. D’autant plus pour Haiku, qui prĂ©sente les particularitĂ©s suivantes:

  • Utilisation de deux versions de gcc (gcc 2.95.3 et gcc 13) pour la version 32 bit de Haiku, afin d’assurer la compatibilitĂ© binaire avec BeOS,
  • PossibilitĂ© de compilation croisĂ©e depuis Linux, Mac OS et d’autres systĂšmes, ou depuis un hĂŽte Haiku,
  • Compilation d’outils pour la machine hĂŽte de la compilation croisĂ©e, avec si nĂ©cessaire une couche de compatibilitĂ© permettant d’écrire ces outils en utilisant des API et fonctionnalitĂ©s spĂ©cifiques Ă  Haiku,
  • PossibilitĂ© de compiler des applications pour un systĂšme hĂŽte existant (une autre version de Haiku) Ă  des fins de test,
  • Compilation d’un systĂšme complet (noyau, bibliothĂšques, applications, image disque) en une seule opĂ©ration.

Pour ces raisons, l’utilisation d’un systĂšme de build haut niveau (CMake, Meson
) s’avĂšre plutĂŽt complexe. L’utilisation de make ou de ninja directement serait de trop bas niveau. Le choix de Haiku est donc d’utiliser l’outil jam, qui est malheureusement assez peu populaire et tombĂ© Ă  l’abandon dans sa version originale. Haiku maintient un fork de jam qui est concurrent de ceux maintenus par Boost et par Freetype.

Reformatage des fichiers Jamfile pour lister une seule cible par ligne au lieu de les rassembler, cela facilite les rebase et résolutions de conflits (x512).

Mise à jour de paquets en préparation pour la version beta 5: OpenSSL 3, Python 3.10, et autres mises à jour diverses (PulkoMandy, waddlesplash, kallisti5).

Ajout de l’inclusion de <features.h> dans <sched.h>. Le fichier d’en-tĂȘte features.h configure la visibilitĂ© des extensions GNU et BSD aux fichiers d’include standards C et POSIX, en fonction d’options de ligne de commande du compilateur. L’inclusion de ce fichier permet d’utiliser facilement et par dĂ©faut ces extensions (PulkoMandy).

Mise à jour des marque-pages fournis par défaut avec le navigateur WebPositive (waddlesplash).

Ajout des en-tĂȘtes de la bibliothĂšque linprog dans le paquet haiku_devel. Ces en-tĂȘtes sont nĂ©cessaires pour les applications associĂ©es au systĂšme de layout d’interfaces graphiques ALM (korli).

Correction de fautes de frappe dans des commentaires (jmairboeck) et d’un problĂšme de compatibilitĂ© C89 dans un en-tĂȘte systĂšme (waddlesplash).

La taille des images « nightly build » de Haiku est maintenant de 650 Mo, ce qui laisse un peu plus de place disponible pour les utiliser et crĂ©er quelques fichiers (jscipione).

Diverses corrections pour une nouvelle fois essayer de faire fonctionner la compilation de Haiku avec Clang (waddlesplash, oanderso). Les choses en sont toujours au mĂȘme point depuis plusieurs annĂ©es, avec des corrections de temps en temps mais quelques parties du systĂšme qui ne fonctionnent toujours pas correctement.

La compilation du profil « nightly » n’a plus besoin de gĂ©nĂ©rer le paquet haiku_source contenant le code source de Haiku. Ce paquet est inclus uniquement dans les images de releases (pour faciliter le respect strict de la licence GPL de certains composants de Haiku), mais, pour des raisons de dĂ©pendances entre cibles dans le systĂšme de build, il Ă©tait tout de mĂȘme gĂ©nĂ©rĂ© pour les autres profils, ralentissant la compilation (waddlesplash).

Améliorations du script ./configure (jessicah, OscarL et waddlesplash):

  • Le script vĂ©rifie que les options passĂ©es fournies sont valides, et rejette immĂ©diatement les configurations incohĂ©rentes plutĂŽt que de laisser la compilation Ă©chouer bien plus loin.
  • Validation que l’interprĂ©teur Python sĂ©lectionnĂ© existe bien, et uniformisation de la syntaxe utilisĂ©e pour choisir un interprĂ©teur avec la façon dont c’est fait pour d’autres outils.
  • DĂ©tection des options disponibles pour demander Ă  wget de rĂ©-essayer un tĂ©lĂ©chargement en cas d’échec, ce qui permet d’assurer la compatibilitĂ© avec wget2.
  • Utilisation automatique d’une version moderne de GCC pour compiler les outils « hĂŽtes » lors de la compilation Ă  partir d’une machine hĂŽte fonctionnant sous Haiku en version 32 bit, en ignorant le compilateur par dĂ©faut qui est gcc 2 pour des raisons de compatibilitĂ© avec BeOS.

RĂ©organisation du code source de libroot pour dĂ©placer les implĂ©mentations de malloc dans des sous-dossiers sĂ©parĂ©s, et faciliter l’expĂ©rimentation avec d’autres implĂ©mentations de malloc. L’allocateur hoard2 utilisĂ© actuellement n’est pas adaptĂ© aux architectures 64 bits, une tentative a Ă©tĂ© faite il y a quelques annĂ©es avec rpmalloc, mais ce dernier pose des problĂšmes sur les
architectures 32 bits. Des investigations sont en cours avec l’implĂ©mentation de malloc d’OpenBSD.

L’outil de dessin Wonderbrush est maintenant disponible sur toutes les architectures. Historiquement, le code de Wonderbrush n’était pas libre, mais une version gratuite Ă©tait offerte aux utilisateurs de Haiku. Le dĂ©veloppeur principal de Wonderbrush n’est plus trĂšs actif sur le projet et a dĂ©cidĂ© de publier les sources, ce qui a permis de recompiler le programme en version 64 bits et plus tard sur les autres architectures non x86. Mais ces nouvelles versions n’avaient jamais Ă©tĂ© incluses dans Haiku (PulkoMandy).

Nettoyage et centralisation des dĂ©finitions prĂ©processeur pour la compatibilitĂ© avec BeOS. DĂ©sactivation de la compatibilitĂ© avec BeOS dans le noyau, la compatibilitĂ© avec les pilotes et modules noyau de BeOS n’étant plus assurĂ©e depuis quelque temps dans Haiku.

Suppression de définitions de rÚgles obsolÚtes et inutilisées dans le Jamfile permettant de construire le fichier package_repo (CodeforEvolution).

Remise en service du test DiskDeviceManagerTest qui ne compilait plus (waddlesplash).

ARM & PowerPC

Actuellement, Haiku est disponible officiellement pour les architectures x86 32 et 64 bits. Une version RISC-V 64 bits expĂ©rimentale est Ă©galement disponible mais pas encore totalement intĂ©grĂ©e dans le dĂ©pĂŽt de code principal, des discussions sont en cours sur la bonne façon de faire certains changements nĂ©cessaires. Les versions ARM (32 et 64 bits) et PowerPC sont les prochaines cibles sur la liste. La premiĂšre, car c’est une architecture trĂšs populaire, la deuxiĂšme plutĂŽt pour des raisons historiques : c’est l’une des architectures sur lesquelles fonctionne BeOS.

Renommage de structures qui Ă©taient initialement spĂ©cifiques Ă  l’architecture x86, mais qui sont finalement utilisĂ©es Ă©galement sur d’autres CPU sans nĂ©cessiter de changements (waddlesplash).

RĂ©paration de la console de texte du chargeur de dĂ©marrage OpenFirmware qui Ă©tait cassĂ©e depuis l’adaptation pour OpenBOOT sur les machines SPARC (zeldakatze).

Sur ARM, utilisation de la bonne instruction CPU pour mettre le processeur en veille quand il n’y a rien à faire (archeYR).

oanderso continue le travail sur le portage ARM64:

  • Correction de plusieurs problĂšmes liĂ©s Ă  la gestion du cache et de la MMU dans le bootloader, ce qui permet de dĂ©marrer le noyau dans une machine virtuelle sur un hĂŽte Apple M1.
  • Correction de l’implĂ©mentation des timers dans le kernel qui ne fonctionnait pas dans les environnements virtualisĂ©s.
  • Quelques avancĂ©es sur la gestion de la MMU : ImplĂ©mentation de la table de translation de la mĂ©moire virtuelle, du traitement des exceptions matĂ©rielles (dĂ©fauts de page), des TLBs.
  • Synchronisation du cache d’instructions.
  • Correction de problĂšmes de double lock.

Ajout de messages sur le port sĂ©rie traçant l’exĂ©cution de mĂ©thodes spĂ©cifiques Ă  une architecture qui ne sont pas encore implĂ©mentĂ©es. Ceci permet de dĂ©tecter facilement quelle est la prochaine fonction Ă  implĂ©menter (waddlesplash).

Nettoyage et documentation du fichier ArchitectureRules pour simplifier la configuration des options en ligne de commande du compilateur (qui doit savoir traiter deux versions de gcc et clang) (waddlesplash).

Commentaires : voir le flux Atom ouvrir dans le navigateur

FreeCAD 1.0

FreeCAD est sorti le 18 novembre 2024 en version 1.0 (voir l'annonce officielle et sa vidéo associée). Cette sortie est marquée par une amélioration majeure : l'atténuation du problÚme de dénomination topologique.

Nouveau logo FreeCAD

Sommaire

La derniĂšre dĂ©pĂȘche sur FreeCAD remonte Ă  avril 2021 pour la sortie de la version 0.19. Depuis, il y a eu les versions 0.20 (juin 2022) et 0.21 (aoĂ»t 2023). Cette version 1.0 a portĂ© le nom de 0.22 pendant son dĂ©veloppement.

Qu'est-ce que FreeCAD ?

Exemple 1 utilisation

Extrait de wiki.freecad.org :
FreeCAD est un modeleur paramĂ©trique de CAO 3D open source sous licence LGPL. FreeCAD est destinĂ© Ă  l'ingĂ©nierie mĂ©canique et Ă  la conception de produits mais — Ă©tant trĂšs gĂ©nĂ©rique — il s'adapte Ă©galement Ă  une gamme plus large d'utilisations autour de l'ingĂ©nierie, telles que l'architecture, l'analyse par Ă©lĂ©ments finis, l'impression 3D et d'autres tĂąches.

FreeCAD propose des outils similaires à CATIA, SolidWorks, Solid Edge ou Revit et entre donc également dans la catégorie CAO, GCVP, CFAO, IAO et BIM. Il s'agit d'un modélisateur paramétrique basé sur les caractéristiques d'une architecture logicielle modulaire qui permet de fournir des fonctionnalités supplémentaires sans modifier le systÚme de base.

FreeCAD est aussi multiplateforme. Il fonctionne sous Windows, Linux/Unix et macOS avec la mĂȘme apparence et les mĂȘmes fonctionnalitĂ©s sous toutes les plateformes.

Historique

La toute premiĂšre version de FreeCAD est sortie en 2002. FreeCAD est dĂ©veloppĂ© en C++, Qt et Python et son cƓur repose sur les bibliothĂšques OpenCASCADE (ou OCCT) spĂ©cialisĂ©es dans la CAO.

Son développement est assuré par un large panel de contributeurs : certains sont historiques, d'autres sont spécialisés sur un aspect particulier et beaucoup sont plus ou moins occasionnels.

Les versions se sont enchaßnées à un rythme quasi annuel, apportant moult améliorations et fonctionnalités nouvelles.

En 2021, quelques contributeurs historiques fondent la FreeCAD Project Association (FPA) qui est un organisme indépendant à but non lucratif pour collecter des dons et apporter un soutien au développement du projet.
Ce soutien passe notamment par leur programme "FreeCAD Grant Program", qui permet d'embaucher ou de récompenser des personnes pour des projets spécifiques. Ce programme a un budget de 50k$ pour l'année 2024. A titre d'exemple récent, 500$ ont été octroyés pour une étude sur les runners CI de Github, 1000$ pour un gros travail de correction de bugs, et enfin 500$ pour la création d'une vidéo sur les nouvelles fonctionnalités de cette version 1.0.

FreeCAD bénéficie d'une communauté impliquée permettant notamment d'avoir une documentation complÚte, à jour et traduite dans de nombreuses langues.

Le problÚme de dénomination topologique

C'Ă©tait un des points noirs de FreeCAD jusqu'Ă  cette version 1.0.
Il faut imaginer que dans ce logiciel, la modĂ©lisation d'une piĂšce (dans le sens objet physique) passe par une suite d'opĂ©rations mathĂ©matiques et gĂ©omĂ©triques en dĂ©finissant Ă  chaque fois des contraintes ou des paramĂštres. Une opĂ©ration est par exemple la crĂ©ation d'un trou borgne de 5 mm sur telle face Ă  10 mm des bords haut et gauche. Un autre exemple est d'ajouter une « languette » sur telle face cylindrique. Ou bien d'ajouter un chanfrein de 2 mm sur telle arĂȘte, etc.

Ainsi, petit à petit, la piÚce modélisée se construit, prend forme, se détaille et se complexifie.

Cet historique de ces opĂ©rations successives est toujours prĂ©sent et modifiable. À tout moment, il est possible de modifier une des Ă©tapes intermĂ©diaires.

D'un point de vue technique, vous aurez sans doute compris que chaque opĂ©ration s'applique Ă  un Ă©lĂ©ment prĂ©cis et existant de la piĂšce Ă  ce moment-lĂ  (une face ou une arĂȘte par exemple). Dans FreeCAD ces Ă©lĂ©ments ont tous un identifiant unique (Face6, Edge9, etc.), continu et incrĂ©mental. Si l'objet a 13 faces Ă  une des Ă©tapes, les faces seront numĂ©rotĂ©es de Face1 Ă  Face13. Chaque opĂ©ration est rattachĂ©e Ă  l'identifiant de l'Ă©lĂ©ment (Face5 par exemple).

Et le problĂšme se situe Ă  ce niveau : lors d'une modification d'une Ă©tape intermĂ©diaire, il arrive souvent que cela change la gĂ©omĂ©trie globale de la piĂšce et donc que les nombres de faces ou d'arĂȘtes augmentent ou diminuent. Et FreeCAD rĂ©attribue alors ces identifiants uniques aux diffĂ©rents Ă©lĂ©ments.
Ainsi, si l'objet passe de 13 à 11 faces, c'est l'ensemble des faces qui vont recevoir un nouvel identifiant dans la plage Face1 à Face11, avec un trÚs fort risque qu'une face, pourtant non touchée par la modification, porte un identifiant différent.

Et vous voyez le problĂšme arriver : si une des opĂ©rations suivantes dans l'historique Ă©tait de faire un perçage sur la Face6 qui est maintenant devenue la Face3
 Toute la modĂ©lisation part en vrille.

Ce problÚme de dénomination topologique est documenté sur le wiki de FreeCAD : problÚme de dénomination topologique.

Pour Ă©viter cela, il Ă©tait conseillĂ© de suivre un ensemble de bonnes pratiques de modĂ©lisation sous FreeCAD : Édition de fonctions. Il faudra certainement suivre l'Ă©volution de cette page avec cette sortie.

Cette version 1.0 marque donc l'intĂ©gration de codes correctifs de cette problĂ©matique. Les notes de version indiquent tout de mĂȘme que tout n'est pas rĂ©solu, et qu'il y aura d'autres amĂ©liorations dans les prochaines versions. Cette petite vidĂ©o en anglais vous montre la diffĂ©rence de comportement entre la version 0.21 et 0.22dev (qui a servi de base Ă  la 1.0).

Les autres améliorations

Un outil d'assemblage par défaut avec solveur dynamique

Le terme assemblage dĂ©signe la fonctionnalitĂ© de regrouper plusieurs Ă©lĂ©ments afin d'obtenir un objet fonctionnel. Ce peut ĂȘtre, par exemple, une boĂźte constituĂ©e d'un couvercle sur charniĂšres maintenues par des vis avec des rangements amovibles Ă  l'intĂ©rieur. Ou bien un moteur thermique avec ses carters, vilebrequin, bielles, pistons, soupapes, etc. Il est parfois utile de pouvoir fournir des indications de positionnement et/ou de libertĂ© des Ă©lĂ©ments entre eux, et de pouvoir animer le tout.
Ces opérations d'assemblage n'étaient pas intégrées dans FreeCAD avant la version 1.0. Elles étaient néanmoins possibles grùce aux ateliers. Plusieurs ont été créés pour cela avec chacun leurs spécificités et leurs approches mais aussi une incompatibilité entre eux : A2plus, Assembly3 ou Assembly4.
Cette version 1.0 propose un nouvel atelier mais intégré par défaut. Il a été mis au point par la société Ondsel (voir plus bas). Il est encore jeune, et il est encore trop tÎt pour savoir s'il finira par s'imposer par rapport à l'existant déjà en place. Un tutoriel concernant l'atelier d'assemblage est d'ores et déjà disponible pour une introduction à cette nouvelle fonctionnalité de la v1.0.

L'atelier sketcher amélioré

Cet atelier permet de dessiner les esquisses techniques utilisĂ©es dans la conception mĂ©canique. C'est dans celui-ci que sont dessinĂ©s les « plans 2D » avec les cotes et les contraintes dimensionnelles et spatiales. Cette version apporte un nombre consĂ©quent d'amĂ©liorations et de nouvelles fonctionnalitĂ©s rendant son utilisation plus facile, plus puissante et plus rapide. Le mieux est de regarder les notes de version animĂ©es.

Les ateliers Arch et BIM sont morts, vive la prise en charge native du format ouvert IFC

Si le titre est cryptique, c'est que l'on parle de BTP et d'outils destinĂ©s aux Ă©quipes de MaĂźtrise d'ƒuvre impliquĂ©es dans la conception d'une opĂ©ration construction (Architectes, Bureaux d'Études). Comme ce n'est pas forcĂ©ment le lot commun des visiteurs de LinuxFr.org, rĂ©sumons la situation:

  • L'atelier Arch, pour Architecture, exploite depuis longtemps les capacitĂ©s de crĂ©ation 3D de FreeCAD pour dessiner facilement, fondations, murs, planchers, fenĂȘtres, portes etc. Cet atelier se basait sur le format natif des fichiers FreeCAD, *.FcStd.

  • Dans l'atelier BIM (pour Building Information Model <= l'article Wikipedia_FR est bien Ă©crit pour qui veut comprendre l'essentiel), on retrouve un certain nombre d'outils de dessin et de crĂ©ation d'objets qui s'avĂšrent redondants pour certains avec ceux de l'outil Arch tout en implĂ©mentant les paradigmes bien plus vastes qu'induit l'approche BIM d'un projet de construction <=> pas uniquement de la gĂ©omĂ©trie, mais aussi du prix, des donnĂ©es mĂ©caniques, physiques, des fiches produit, du planning 


  • L'approche BIM tend Ă  se gĂ©nĂ©raliser dĂšs lors que la complexitĂ© et le coĂ»t du projet le justifient. Elle repose (en thĂ©orie) sur un format d'Ă©change IFC (pour Industry Foundation Class).
    Il est ouvert et au format texte.
    Oui avec vim, c'est possible de bidouiller ;)
    mais un fichier IFC fait rapidement quelques centaines de Mo voire quelques Go 


L'Association "Building Smart" en définit les caractéristiques. Tous les logiciels sur le marché savent ouvrir et exporter dans ce format, à la norme IFC 2.3 ad minima et IFC 4.2 voire 4.3 pour les up to date.

L'atelier BIM de FreeCAD utilisait jusqu'à présent IfcOpenShell, une application tierce Open Source pour convertir un fichier du format *.ifc vers du *.FcStd en passant (sans doute) par du OpenScad dans le processus.

Titre de l'image
Une image qui devrait parler au LinuxFrien (!) pour la classe IFC Material-Constituent-Set,

Pour la version 1.0 de FreeCAD, Yorik Van Havre, développeur historique de FreeCAD, (par ailleurs, architecte et Président la FreeCAD Project Association) a entrepris de fusionner ces deux ateliers, d'en faire une fonctionnalité native de FreeCAD, c'est-à-dire qui se passe du vaillant IfcOpenShell (grùce notamment au travail fait sur Blender-Bim) pour que FreeCAD puisse ouvrir et enregistrer directement au format IFC sans conversion inutile.

L'atelier FEM

Cet atelier d'analyse par éléments finis comporte également des améliorations considérées comme majeures avec cette version 1.0, détaillées dans un article de blog sur l'atelier FEM de FreeCAD.

Les avancées majeures sont liées à la prise en charge de fonctionnalités de CalculiX, un des solveurs utilisés par cet atelier : symétrie cyclique, analyses 2D et contraintes de corps rigide.

Le reste

Comme à chaque nouvelle version, beaucoup de choses ont été apportées, que ce soit dans l'interface, ou dans la plupart des ateliers intégrés. Les notes de version de la v1.0, comme trÚs souvent détaillées en images, permettent de voir l'évolution de ce logiciel.

FreeCAD a également annoncé son nouveau logo, choisi aprÚs un appel à concourir auprÚs de la communauté (lien). Le logo en SVG est disponible sur cette page.

L'essai commercial d'Ondsel

Outre la crĂ©ation en 2021 de l'association FPA (voir plus haut), d'autres dĂ©veloppeurs, notamment Brad Collette, mainteneur de longue date de l'atelier Path et auteur de deux livres sur FreeCAD, ont crĂ©Ă© dĂ©but 2023 la sociĂ©tĂ© amĂ©ricaine ONDSEL sous la forme d'une Public Benefit Corporation (PBC) qui pourrait se traduire par « une entreprise d'intĂ©rĂȘt pour la sociĂ©té ». Malheureusement, aprĂšs environ 2 ans, Brad Collette informe de l'arrĂȘt de la sociĂ©tĂ© ONDSEL, faute d'avoir trouvĂ© un marchĂ©.

La sociĂ©tĂ© voulait s'appuyer sur FreeCAD pour « apporter des fonctionnalitĂ©s commerciales qui rendent FreeCAD plus utile aux utilisateurs commerciaux ». (Source)

Pour cela, ONDSEL a produit sa propre version de FreeCAD avec ses propres choix esthétiques et ergonomiques, et a fourni un cloud pour simplifier le travail en équipe et le partage.
À noter qu'ONDSEL indiquait soumettre ses amĂ©liorations Ă  FreeCAD pour intĂ©gration et que son cloud Ă©tait disponible sous forme de module dans FreeCAD. Ces amĂ©liorations se retrouvent dans cette version 1.0 de FreeCAD, notamment le nouvel outil intĂ©grĂ© d'assemblage ainsi que les trĂšs nombreuses nouvelles fonctionnalitĂ©s de l'atelier Sketcher.

La sociĂ©tĂ© ONDSEL avait dĂ©taillĂ© sa relation avec le projet FreeCAD indiquant notamment leur mode de collaboration. Ils avaient Ă©galement un blog en anglais intĂ©ressant, oĂč ils abordent plusieurs thĂ©matiques, notamment sur l'Ă©volution de CATIA ou bien la liste des nouveautĂ©s agrĂ©mentĂ©e de nombreuses animations.

Dans l'annonce de cet arrĂȘt, Brad Collette revient Ă©galement sur ce qu'ils ont apportĂ© au projet FreeCAD. Tout ce qu'ils ont dĂ©veloppĂ© Ă©tait en open source et dĂ©jĂ  intĂ©grĂ© pour la plupart Ă  FreeCAD. Les fondateurs d'ONDSEL continueront de contribuer au projet directement.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Publication du numéro 4 du Lama Déchaßné

Afin de permettre Ă  sa campagne de soutien financier de prendre son envol, l'April investit dans l'aĂ©ronautique ! Ce mercredi 13 novembre sortait le tant attendu numĂ©ro 4 du Lama DĂ©chaĂźnĂ©.

Le thĂšme : le monde associatif

BanniĂšre Campagne April

Le Lama déchaßné

Vous y retrouverez nos rubriques habituelles : un Ă©dito malodorant, un dessin satirique d'un supermarchĂ©, une actu brĂ»lante, certains projets de Framasoft (qui entre bientĂŽt en campagne !) avec la belle plume d'Angie, des anecdotes du salon Solution Linux devenu Open source XP, un chiffre, un service chapril, une idĂ©e dĂ©construite, un truc Ă  savoir, la parole d'une bĂ©nĂ©vole, un extrait de compte-rendu d'activitĂ©s de 2008 sur DAVDSI et les p

 de DRM, le courrier des lecteurs et, comme Ă  chaque fois, les mots croisĂ©s (dont toutes les solutions seront donnĂ©es Ă  la fin de la campagne, promis).

La campagne progresse bien, nous avons atteint les 6 000€ et nous sommes super reconnaissants de ce soutien
 Il nous reste encore 14 000€ pour finir l'annĂ©e sereinement. Alors n'hĂ©sitez pas Ă  en parler autour de vous.

Et si vous voulez participer au courrier des lecteurs, rĂ©pondez Ă  cette dĂ©pĂȘche !

Commentaires : voir le flux Atom ouvrir dans le navigateur

La conquĂȘte de l’espace : une affaire fĂ©minine, deuxiĂšme partie les missions Apollo

Dans l’histoire de l’espace, les Ă©pisodes qui ont le plus marquĂ© les esprits sont, probablement, ceux des marches sur la Lune qui ont Ă©tĂ© le fait des missions Apollo. Dans cette deuxiĂšme dĂ©pĂȘche Ă  l’occasion de la journĂ©e Ada Lovelace de 2024, on retrouvera donc un portrait de quatre femmes qui ont codĂ© ou calculĂ© les missions Apollo, Judith Love Cohen (1933 – 2016), Margaret Hamilton, JoAnn H. Morgan et Frances (Poppy) Northcutt mais aussi une histoire de celles, plus anonymes, qui ont tissĂ© les mĂ©moires des modules Apollo.

Ces biographies sont prĂ©cĂ©dĂ©es d’un genre d’état des lieux de l’informatique en URSS et aux USA et suivies d’une sitographie pour prolonger un peu plus l’exploration.

Journée Ada Lovelace

Sommaire

Préambule

Pourquoi n’est-il essentiellement question que des informaticiennes de la NASA ou ayant travaillĂ© pour la NASA ? Cela revient Ă  poser la question de l’informatique cĂŽtĂ© Union soviĂ©tique. Plusieurs facteurs peuvent expliquer la mĂ©connaissance que l’on a des personnes qui, cĂŽtĂ© soviĂ©tique, ont travaillĂ© sur les programmes relatifs Ă  la conquĂȘte de l’espace, Ă  commencer par l’histoire qui est, disons compliquĂ©e surtout par rapport Ă  celle des USA.

Ensuite, c’était un secteur stratĂ©gique : envoyer des satellites pose les mĂȘmes questions balistiques que l’envoi d’un missile intercontinental. L’existence du fondateur du programme spatial soviĂ©tique, SergueĂŻ Korolev, qui subissait des peines d’emprisonnement pour raisons politiques (dont quatre mois de goulag) et qui avait Ă©tĂ© admis dans l’équipe de l’ingĂ©nieur aĂ©ronautique AndreĂŻ Tupolev lui-mĂȘme prisonnier politique Ă  l’époque, a Ă©tĂ© tenue secrĂšte jusque bien aprĂšs sa mort. On peut penser qu’il en va de mĂȘme pour les autres personnes ayant participĂ© aux programmes de conquĂȘte spatiale.

Concernant l’informatique proprement dite, trois noms apparaissent. SergueĂŻ Lebedev (1902 - 1974) est considĂ©rĂ© comme le pĂšre de l’informatique soviĂ©tique. Lebedev semble ĂȘtre un nom assez courant, ainsi, on trouve un cosmonaute russe du nom de Valentin Lebedev. L’Ukrainienne Ekaterina Yushchenko (en) (1919 - 2001) que le site ukrainien (en) sur l’histoire de l’informatique en Ukraine appelle « l’Ada Lovelace ukrainienne Â». Yushenko a posĂ© les bases de la programmation thĂ©orique en Ukraine (et en URSS avant) et Ă©crit le langage de haut niveau Address. AndreĂŻ Erchov (en) (1931 – 1988), fondateur de l’École sibĂ©rienne de science informatique dont le livre, Programmation pour le BESM, a marquĂ© un certain Donald Knuth.

Les ordinateurs de la conquĂȘte de l’espace URSS et USA

Les ordinateurs soviétiques

Le premier ordinateur soviĂ©tique date de 1950, construit sous la direction de SergeĂŻ Lebedev, dans un contexte oĂč le traitement Ă©lectronique de l’information, considĂ©rĂ© par Staline (1878 – 1953) et son entourage comme « fausse science au service de l’impĂ©rialisme Â»1 n’est pas encouragĂ© par le pouvoir. Il s’agit du MESM (МЭСМ, ĐœĐ°Đ»Đ°Ń ŃĐ»Đ”ĐșŃ‚Ń€ĐŸĐœĐœĐ°Ń ŃŃ‡Đ”Ń‚ĐœĐŸ-Ń€Đ”ŃˆĐ°ŃŽŃ‰Đ°Ń ĐŒĐ°ŃˆĐžĐœĐ°, petit calculateur Ă©lectronique, qui Ă©tait plutĂŽt assez gros en volume), dĂ©veloppĂ© par une vingtaine de personnes. La plupart des ordinateurs soviĂ©tiques en dĂ©couleront.

Le BESM sur lequel AndrĂ©ĂŻ Erchov a Ă©crit son livre de programmation a Ă©tĂ© produit Ă  partir de 1953. Il se dĂ©clinera en deux sĂ©ries les : BESM–1 (1950) Ă  BESM–6 (1966) et les M -20 et ses descendants. Ces derniers, dont le premier, fabriquĂ© Ă  Moscou, est sorti en 1956 seront les ordinateurs des premiers Ăąges de la conquĂȘte spatiale. Le dernier de la sĂ©rie, le M-220 Ă©tait, quant Ă  lui, fabriquĂ© Ă  Kazan. Ils ont, par la suite, probablement Ă©tĂ© remplacĂ©s par le MINSK dans les annĂ©es 1960.

Quant aux langages de programmation, Yves LogĂ©, en 1987, dans l’article Les ordinateurs soviĂ©tiques : Histoire obligĂ©e de trois dĂ©cennies de la Revue d’études comparatives Est-Ouest relevait ceci :

  • 1953 – librairie de sous-programmes pour STRELA et BESM,
  • 1955 – langage de compilation (PP2 – PP – BESM),
  • 1957 – assembleurs (PAPA, SSP),
  • 1962 – compilateur Algol 60 (TA 1),
  • 1962 – moniteur de traitement par lots (AUTOOPERATOR),
  • 1966 – premier systĂšme d’exploitation (MINSK 22, BESM 6),
  • 1967 – langage de programmation (EPSILON, ALMO).

Le FORTRAN et l’ALGOL, bien qu’ayant Ă©tĂ© introduits dans les ordinateurs soviĂ©tiques dans les annĂ©es 1960, ne commenceront Ă  ĂȘtre vraiment utilisĂ©s qu’à partir des annĂ©es 1970, Ă©poque Ă  laquelle l’URSS abandonnera la conception de ses propres ordinateurs.

Les ordinateurs des missions Apollo

L’informatisation de la NASA a commencĂ© avec des machines IBM, la sĂ©rie IBM 700/7000 commercialisĂ©e dans les annĂ©es 1950 Ă  1960 ; c’était la premiĂšre version des ordinateurs Ă  transistors. Les langages de programmation les plus courants Ă  l’époque Ă©taient le Cobol et le FORTRAN pour lequel des personnes comme Frances Allen avaient Ă©tĂ© recrutĂ©es afin de former des chercheurs, parfois rĂ©ticents, au langage.

En 1964, IBM sort la sĂ©rie System/360 qui pouvait travailler en rĂ©seau et dont le systĂšme d’exploitation, multitĂąches, Ă©tait OS/360. Il Ă©tait dotĂ© d’une RAM, insuffisante, d’un mĂ©gaoctet qui a poussĂ© les ingĂ©nieurs Ă  adopter un code abrĂ©gĂ©. Et, Ă©videmment, il se programmait encore Ă  l’époque avec du papier.

L’invention qui a permis d’équiper informatiquement les modules des missions Apollo est celle des circuits intĂ©grĂ©s, inventĂ©s par Jack Kilby en 1958. Ils Ă©quiperont les ordinateurs Ă  partir de 1963, la NASA Ă©tant dans les premiers utilisateurs pour les ordinateurs de guidage d’Apollo. Par la suite, les circuits intĂ©grĂ©s permettront de fabriquer les « mini-ordinateurs Â» (qui restent toujours assez encombrants) et les micro-ordinateurs. Les premiers micro-ordinateurs, Ă  l’allure de ceux que nous avons actuellement avec : l’ordinateur, un Ă©cran, un dispositif de saisie, puis, plus tard, un dispositif de pointage sortiront en 1973, aprĂšs les missions Apollo.

Judith Love Cohen (1933 – 2016) l’accouchement du programme de guidage Apollo

Judith Love Cohen est ingénieure aérospatiale, aprÚs sa retraite, elle deviendra écrivaine et fondera une entreprise multimédia Cascade Pass.

En 1952, celle qui aidait ses camarades de classe Ă  faire leurs devoirs de mathĂ©matiques, est embauchĂ©e par la North American Aviation. Elle obtient, en 1957 un Bachelor of Art (licence) en sciences, puis, en 1962, un master en sciences Ă  l’UniversitĂ© de Californie. En 1957, aprĂšs son BA, elle est embauchĂ©e par le « Space Technology Laboratories (laboratoire des technologies spatiales) qui deviendra TRW. Elle y travaillera jusqu’à sa retraite en 1990, souvent seule femme ingĂ©nieure de l’équipe dans laquelle elle se trouvait.

Son travail : les ordinateurs de guidage. Elle a fait partie de l’équipe qui a conçu le « Tracking and Data Relay Satellites (TDRS) Â», le systĂšme suivi et de relais des donnĂ©es des satellites de la NASA. Ce systĂšme qui permet notamment de rester en contact avec la Station spatiale internationale.

Elle s’occupera aussi du tĂ©lescope Hubble. Elle avait Ă©tĂ© chargĂ©e de concevoir le systĂšme terrestre des opĂ©rations scientifiques. Elle dira dans une vidĂ©o (en) rĂ©alisĂ©e par Cascade Pass qu’elle avait travaillĂ© avec les astronomes, car c’étaient eux qui allaient utiliser le tĂ©lescope. Le systĂšme avait trois fonctions principales :

  • planification des observations,
  • contrĂŽle en temps rĂ©el du rĂ©glage de la mise au point et du changement des filtres,
  • rĂ©cupĂ©ration des donnĂ©es pour gĂ©nĂ©rer des photos, partie que Cohen considĂ©rait comme la plus intĂ©ressante et la plus difficile Ă  rĂ©aliser.

Mais, le point culminant de sa carriĂšre a Ă©tĂ© le programme Apollo, notamment le systĂšme de guidage de la mission Apollo 13 qui devait ĂȘtre la troisiĂšme Ă  se poser sur la Lune, l’ordinateur AGS (Abort Guidance System, systĂšme de guidage d’abandon pour le module destinĂ© Ă  rester sur la Lune). Cette mission commence mal : les astronautes prĂ©vus Ă  l’origine changent presque Ă  la derniĂšre minute, quand la fusĂ©e dĂ©colle le 11 avril 1970, le moteur central du deuxiĂšme Ă©tage s’éteint trop tĂŽt. Ce sera compensĂ©, sans incidence sur la trajectoire. Le 13 avril, l’un des astronautes, Jack Swigert, lance le fameux :

Houston, we’ve had a problem.

Le module de service d’Apollo 13 est hors d’usage, l’équipe change de module de service en urgence et embarque dans le module lunaire (LM) prĂ©vu pour deux personnes alors qu’ils sont trois. L’AGS servira en tant qu’ordinateur de bord et contrĂŽlera tous les Ă©quipements vitaux, mais il n’aurait pas pu revenir sur l’orbite terrestre si Cohen n’avait pas bataillĂ© avec la NASA pour que la fonction de retour y soit incluse.

Son fils, l’ingĂ©nieur en informatique Neil Siegel (en) racontera, ce qui a Ă©tĂ© vĂ©rifiĂ©, qu’elle avait conçu l’AGS pendant qu’elle Ă©tait enceinte de son demi-frĂšre, l’acteur Jack Black. Le 28 aoĂ»t 1969, au moment de partir pour l’hĂŽpital pour accoucher, elle prend aussi le code d’un problĂšme sur lequel elle travaillait. Elle appellera son patron plus tard pour lui signaler qu’elle l’avait rĂ©solu, et aussi, en passant, que le bĂ©bĂ© Ă©tait nĂ©. Le problĂšme en question concernait l’AGS.

Margaret Hamilton (née en 1936) la jeune femme à cÎté de la pile de livre de sa hauteur

La photo probablement la plus connue de Margaret Hamilton est celle oĂč on la voit poser Ă  cĂŽtĂ© d’une pile de gros documents reliĂ©s : le code du logiciel de navigation de la mission Apollo 11.

Margaret Hamilton intĂšgre le MIT (Massachusetts Institute of Technology) en 1960 pour dĂ©velopper des logiciels informatiques. En 1961, la NASA confie au MIT la mission de rĂ©aliser un ordinateur embarquĂ© de navigation et de pilotage avec un cahier des charges assez lĂ©ger et permettant au MIT une grande crĂ©ativitĂ©. Ce sera l’AGC (Apollo Guidance Computer) qui sera le premier Ă  utiliser des circuits intĂ©grĂ©s. Lourd, 32 kilos, il prĂ©figure nĂ©anmoins les ordinateurs portables puisque tous les Ă©lĂ©ments, ordinateur, mĂ©moire, Ă©cran et dispositif de saisie Ă©taient rĂ©unis dans un seul boitier.

Mais avant de travailler sur l’AGC, Hamilton intĂšgre, en 1961, le laboratoire Lincoln pour travailler sur le projet militaire ultra-secret SAGE qui devait produire en temps rĂ©el une image de l’espace aĂ©rien Ă©tats-unien. Elle racontera ensuite avoir fait l’objet d’un bizutage (une coutume apparemment) : on lui avait demandĂ© de travailler sur un programme piĂ©gĂ© commentĂ© en grec et en latin. Elle Ă©tait la premiĂšre Ă  avoir rĂ©ussi Ă  le faire fonctionner. Et c’est ainsi qu’en 1963 elle est invitĂ©e Ă  rejoindre le laboratoire Draper du MIT qui Ă©tait en charge du dĂ©veloppement des logiciels embarquĂ©s d’Apollo.

Elle Ă©voquera aussi la fois oĂč, emmenant de temps en temps sa fille au laboratoire, un jour, cette derniĂšre, jouant Ă  l’astronaute, fait planter le systĂšme : elle avait sĂ©lectionnĂ© le programme d’atterrissage alors qu’elle Ă©tait « en vol Â» (un appui sur une mauvaise touche). Ce que voyant Hamilton alerte la direction pour que l’on modifie le programme, rĂ©ponse « ils sont expĂ©rimentĂ©s, ça n’arrivera pas Â». Sauf qu’évidemment, c’est arrivĂ© au pendant la mission Apollo 8. On peut imaginer qu’Hamilton et son Ă©quipe Ă©taient prĂ©parĂ©es Ă  cette Ă©ventualitĂ© : les donnĂ©es de navigation seront renvoyĂ©es et la trajectoire corrigĂ©e. Elle codera aussi un systĂšme de prioritĂ© des tĂąches afin d’éviter que l’AGC ne sature et qu’il fasse le travail correctement. L’AGC pouvait ainsi interrompre des tĂąches pour faire passer celles qui Ă©taient les plus prioritaires et c’est ce qui a permis Ă  Apollo 11 d’atterrir correctement sur la Lune.

Hamilton quittera le MIT en 1974 pour co-fonder une entreprise de dĂ©veloppement de logiciels, Higher Order Software (HOS) qu’elle dirigera jusqu’en 1984. HOS se spĂ©cialisait notamment sur les logiciels de dĂ©tection des erreurs. Ensuite, en 1986, elle crĂ©era Hamilton Technologies et concevra le langage de programmation USL (Universal Systems Language).

Elle reçoit en 2016 la mĂ©daille prĂ©sidentielle de la libertĂ© des mains de Barack Obama. Margaret Hamilton est considĂ©rĂ©e comme une pionniĂšre de l’ingĂ©nierie logicielle et comme une des personnes qui ont contribuĂ© Ă  la populariser.

JoAnn H. Morgan (nĂ©e en 1940) la seule femme prĂ©sente dans la salle de tir lors du lancement d’Apollo 11

Sur une photo de la salle de tir d’Apollo 11, le 16 juillet 1969, elle apparaĂźt comme la seule femme derriĂšre une console. Les femmes que l’on voit sur le cĂŽtĂ© sont entrĂ©es aprĂšs le lancement.

Étant enfant, elle prĂ©fĂ©rait lire Jules Verne Ă  jouer Ă  la poupĂ©e2 et jouer avec la boĂźte de chimie que son pĂšre lui avait offert. Son pĂšre, justement, travaillait pour le programme de dĂ©veloppement des fusĂ©es amĂ©ricaines. JoAnn H. Morgan va passer son adolescence Ă  Titusville en Floride, Ă  quelques kilomĂštres de la base de lancement de Cap Canaveral. Elle y regardera les lancements des fusĂ©es. Ce qui la dĂ©cidera dans son orientation professionnelle. Elle commence, Ă  dix-sept ans, par un stage Ă  l’Army Ballistic Missile Agency (ABMA, Agence des missiles balistiques de l'armĂ©e de terre). Elle continuera Ă  travailler Ă  Cap Canaveral pendant l’étĂ©. En 1963, elle obtient un Bachelor of Arts (licence) en mathĂ©matiques. Elle commence Ă  travailler pour la NASA au Centre spatial Kennedy (KSC) en tant qu’ingĂ©nieure. Elle sera la seule, ça n’a pas Ă©tĂ© facile : entre le fait que son supĂ©rieur hiĂ©rarchique trouve nĂ©cessaire de prĂ©ciser qu’elle est ingĂ©nieure et pas lĂ  pour faire le cafĂ© pour ses collĂšgues (en) ou l’absence de toilettes pour femmes.

En 1969, elle est promue et devient « Chief Instrumentation Controller, KSC Technical Support Â» (ContrĂŽleur en chef de l’instrumentation, support technique du centre), ce qui lui donne un poste dans la salle de contrĂŽle de la mission Apollo 11. L’équipe de Morgan sera celle qui supervisera le lancement de la mission ce qui lui demandera de rester dans la salle de contrĂŽle encore aprĂšs le lancement pour pouvoir vĂ©rifier les Ă©quipements et faire un rapport sur les dommages consĂ©cutifs au lancement afin de prĂ©parer le suivant, sa tĂąche, dans le cadre de la mission, s’arrĂȘte au moment de l’atterrissage lunaire. Elle considĂšre que c’est ce qui a lancĂ© sa carriĂšre.

AprĂšs Apollo 11, elle bĂ©nĂ©ficiera d’une bourse Sloan pour poursuivre des Ă©tudes et elle obtiendra une maĂźtrise en sciences de gestion en 1977 et retournera Ă  la NASA en 1979 oĂč elle est promue chef de la division des services informatique du KSC, premiĂšre femme Ă  occuper ce poste en particulier et un poste de direction Ă  la NASA. Une tĂąche ardue dans une pĂ©riode de transition technologique : la NASA changeait son systĂšme informatique et commençait Ă  remplacer les vieux ordinateurs gĂ©ants par des PC. Elle deviendra ensuite directrice adjointe des vĂ©hicules de lancement (deputy of Expendable Launch Vehicles, director of Payload Projects Management) puis directrice de la sĂ©curitĂ© de la mission ( director of Safety and Mission Assurance). Elle aura Ă©tĂ© l’une des deux derniĂšres personnes Ă  avoir vĂ©rifiĂ© le lancement de la navette spatiale.

Elle prend sa retraite en 2003 aprÚs avoir passé toute sa carriÚre à la NASA.

Morgan continue Ă  militer pour que plus de femmes puissent suivre des carriĂšres scientifiques et techniques.

Frances Northcutt dite « Poppy Â» (nĂ©e en 1943) l’autre seule femme prĂ©sente dans les salles de tir des missions Apollo 8 et 13

Frances « Poppy Â» Northcutt a planifiĂ© les trajectoires des vols des missions Apollo dans les annĂ©es 1960 et 1970.

Elle commence sa carriĂšre dans l’aĂ©rospatiale comme Judith Love Cohen en Ă©tant embauchĂ©e en 1965 par TRW. Elle sera d’abord une des calculatrices humaines. ProblĂšme : pour pouvoir bĂ©nĂ©ficier d’une promotion, elle devait faire des heures supplĂ©mentaires si nĂ©cessaire, ce qui Ă©tait interdit aux femmes Ă©tats-uniennes de l’époque. Elle tient le pari d’en faire mais non rĂ©munĂ©rĂ©es. Cela fonctionne, elle obtient une promotion et intĂšgre l’équipe technique (personnel effectuant des travaux ingĂ©nierie), mieux payĂ©e. Ce qui pose un autre problĂšme, celui de l’écart de rĂ©munĂ©ration entre les hommes et les femmes.

Le travail de l’équipe technique consistait Ă  Ă©crire le programme. D’autres assuraient la tĂąche de le rentrer dans l’ordinateur, ce qui n’allait pas sans quelques bugs au passage, qui pouvaient avoir des consĂ©quences fatales. L’équipe de Northcutt Ă©tait chargĂ©e du calcul de la trajectoire de retour d’Apollo 8. C’était une mission mĂ©morable pour Northcutt Ă  plus d’un titre. D’abord, c’était la premiĂšre fois qu’un vĂ©hicule spatial habitĂ© allait ĂȘtre mis en orbite autour de la Lune. C’était aussi ce qui aura permis de dĂ©terminer l’équipement et le matĂ©riel nĂ©cessaire pour les missions suivantes, notamment la quantitĂ© de carburant nĂ©cessaire. Enfin, c’était la premiĂšre fois que les calculs de Northcutt et de son Ă©quipe Ă©taient utilisĂ©s, et cela allait servir aussi aux missions suivantes. Ainsi, aprĂšs Apollo 8, il n’y aura pas eu de modifications des programmes, sauf en cas de problĂšme. Pour Apollo 13, avec d’autres ingĂ©nieurs, elle aura pour mission de calculer le retour de la capsule Apollo aprĂšs l’explosion du rĂ©servoir d’oxygĂšne qui oblige l’équipage Ă  rentrer sur Terre dans le module lunaire.

Elle suivra ensuite des Ă©tudes de droit Ă  l’UniversitĂ© de Houston pour devenir avocate. Elle en sortira diplĂŽmĂ©e en 1981 et travaillera pour le procureur du comtĂ© de Harris Ă  Houston, sera stagiaire auprĂšs d’un juge fĂ©dĂ©ral en Alabama avant de se tourner vers le privĂ© et dĂ©fendre des causes sur les droits de femmes, elle qui a longtemps travaillĂ© avec un salaire infĂ©rieur Ă  celui de ses collĂšgues pour le mĂȘme travail.

Elle expliquera au site astronomy (en) :

J’ai eu beaucoup de chance. La plupart des femmes n’avaient pas quelqu’un qui se battait aussi durement pour elles.

Elle ajoutera :

C’est le problĂšme auquel sont confrontĂ©es les femmes en particulier, lorsqu’elles sont embauchĂ©es pour un salaire infĂ©rieur Ă  ce qu’elles valent. Si vous ne partez pas sur un pied d’égalitĂ©, vous ne pourrez jamais vous rattraper.

Northcutt continue Ă  militer pour les droits des femmes, mis Ă  mal aux États-Unis lors de la prĂ©sidence de Trump.

Les tisserandes

Les tisserandes, dont beaucoup Ă©taient navajos ou noires, les « Little Old Ladies Â» ont tressĂ© les mĂ©moires Ă  tores de ferrite des missions Apollo. Elles avaient littĂ©ralement la vie des astronautes entre leurs mains.

Les RAM des ordinateurs des annĂ©es 1950 Ă  1975 Ă©taient le plus souvent des mĂ©moires Ă  tores de ferrite. D’aprĂšs la notice de celles prĂ©sentĂ©es au musĂ©e du Conservatoire National des Arts et MĂ©tiers (CNAM) Ă  Paris dans la photo ci-dessous :

elles sont encore utilisées lors de certaines missions spatiales car elles ne sont pas endommagées par les rayons cosmiques.

Mémoire à tores de ferrite avec détail et pile de mémoire
MĂ©moires Ă  tores de ferrite du Gamma 60 d’une capacitĂ© de 512 octets, dĂ©but des annĂ©es 1960, musĂ©e du CNAM, Paris.

La fabrication de ces mĂ©moires ne pouvait pas ĂȘtre mĂ©canisĂ©e, elles Ă©taient donc tissĂ©es Ă  la main. Et, Ă  l’époque des missions Apollo les seules personnes qui avaient l’habilitĂ© et la prĂ©cision digitale nĂ©cessaires pour le faire Ă©taient des femmes, surnommĂ©es les LOL et supervisĂ©es par les « rope mothers Â» (mĂšres des cordes), gĂ©nĂ©ralement des hommes, et dont la cheffe Ă©tait Margaret Hamilton. Ce travail extrĂȘmement critique, Ă©tait contrĂŽlĂ© par trois ou quatre personnes avant d’ĂȘtre validĂ©. Il rĂ©clamait non seulement des ressources manuelles mais aussi des capacitĂ©s intellectuelles certaines pour ĂȘtre accompli correctement.

Quand, en 1975, un rapport de la NASA sur les missions Apollo s’extasiait, Ă  juste titre, sur les systĂšmes informatiques dĂ©veloppĂ©s en mis en Ɠuvre, il nĂ©gligeait complĂštement cet aspect essentiel. Les journalistes de cette Ă©poque, prĂ©sentaient la fabrication des mĂ©moires comme un travail ne nĂ©cessitant aucune rĂ©flexion ni aucune compĂ©tence


Pour compléter

Les ordinateurs soviétiques

Missions Apollo

L’exploration spatiale et les astronautes

Sur la journée Ada Lovelace et la place des femmes dans les carriÚres scientifiques et techniques

Excuse et paragraphes de la fin

Cette dĂ©pĂȘche paraĂźt assez tardivement aprĂšs la prĂ©cĂ©dente pour des raisons assez indĂ©pendantes de ma volontĂ© et incluant un piratage d’un de mes sites.

Ceci Ă©tant, un grand merci une fois de plus Ă  vmagnin pour ses suggestions, notamment pour cette citation tirĂ©e d’une de ses lectures, Forces de la nature de François Lacombe, Anna Reser et Leila McNeil chez Belin :

Dans l’histoire des sciences et des vols spatiaux, on constate que cette distinction nette Ă©tablie entre les tĂąches techniques et non techniques a Ă©tĂ© l’une des façons de marginaliser systĂ©matiquement les femmes.

Ce qui se vérifie amplement notamment avec les tisserandes des mémoires.

Comme de bien entendu, entre les recherches, l’écriture et les commentaires de la dĂ©pĂȘche prĂ©cĂ©dente, il appert qu’il y a un sujet connexe, celui de l’astronomie et de l’évolution du mĂ©tier d’astronome et d’astrophysicienne qui mĂ©riterait d’ĂȘtre traitĂ©. Ce qui sera fait, d’ici la fin de l’annĂ©e. Et, si vous cherchez un sujet de mĂ©moire ou thĂšse, Ă  mon avis le thĂšme des langages informatiques : naissance, diversitĂ©, histoire, pourquoi un langage trĂšs populaire finit par ĂȘtre abandonnĂ©, etc. pourrait ĂȘtre passionnant (si ça n’a pas dĂ©jĂ  Ă©tĂ© fait). Peut-ĂȘtre qu’un jour je vous infligerai un texte sur l’histoire de l’informatique soviĂ©tique (ou peut-ĂȘtre pas).


  1. Citation reprise de l’article d’Yves LogĂ© dans « Les ordinateurs soviĂ©tiques : histoire obligĂ©e de trois dĂ©cennies Â» Revue d’études comparatives Est-Ouest AnnĂ©e 1987 18-4 pp. 53-75 qui cite D. Brand, L’Union SoviĂ©tique, France, Sirey, 1984, p. 230. â†©

  2. L’autrice de cette dĂ©pĂȘche aussi Ă  qui ce comportement paraĂźt tout Ă  fait normal. â†©

Commentaires : voir le flux Atom ouvrir dans le navigateur

Des nouvelles de Unvanquished

La derniĂšre dĂ©pĂȘche sur le jeu Unvanquished a Ă©tĂ© publiĂ©e ici en 2023, pour son dixiĂšme anniversaire. La derniĂšre version annoncĂ©e ici Ă©tait la version 0.53, en 2022. Alors que nous sommes Ă  deux mois de 2025 et Ă  quelques jours de la prochaine version 0.55, c’est l’occasion de faire un point sur ce qui s’est passĂ© ces derniĂšres annĂ©es et d’ajouter un Ă©pisode Ă  la sĂ©rie « des nouvelles de [votre jeu prĂ©fĂ©rĂ©] » et de faire suite Ă  celui sur Xonotic.

Unvanquished

Laisse-moi sortir de là ! — rĂ©clame la version 0.55


Unvanquished est un jeu de stratĂ©gie en temps rĂ©el (RTS) Ă  la premiĂšre personne (FPS) oĂč des extraterrestres Ă©volutifs et des humains lourdement armĂ©s s’affrontent pour leur survie. Son dĂ©veloppement, basĂ© sur Tremulous, a commencĂ© en 2011.

Sommaire

Quelques nouvelles en vrac

Un nouveau lanceur

En prĂ©vision de la prochaine version 0.55 qui arrive (deux « release candidates » ont dĂ©jĂ  Ă©tĂ© publiĂ©es), le « lanceur » (aussi appelĂ© « updater ») a Ă©tĂ© mis Ă  jour en juillet dernier.

Le lanceur est le moyen recommandĂ© d’installer Unvanquished : il permet une intĂ©gration optimale avec le systĂšme (possibilitĂ© de cliquer sur des liens pour lancer une partie) et propose la mise Ă  jour du jeu quand une nouvelle version est disponible. Le lanceur sait aussi se mettre Ă  jour et c’est ce qui a Ă©tĂ© fait en juillet.

Des améliorations graphiques

L’annĂ©e derniĂšre le projet Unvanquished avait annoncĂ© ĂȘtre en recherche d’un dĂ©veloppeur spĂ©cialisĂ© dans les moteurs de rendus. Reaper a rejoint l’équipe et a rĂ©alisĂ© un gros travail : dĂ©bugage et finalisation des miroirs rĂ©cursifs et d’autres choses. Il fait aussi progresser le moteur pour tirer partie d’OpenGL 4.6 et autre techniques avancĂ©es (« bindless textures », etc.).

Un explorateur de serveur minimaliste

Viech a publiĂ© un explorateur de serveur de jeu minimaliste qui tient dans la barre de notification (tray browser). C’est Ă  la fois simple et pratique.

Des vidéos et un compte Mastodon

Diverses vidĂ©o montrant les avancĂ©es du dĂ©veloppement ont Ă©tĂ© publiĂ©es sur la chaĂźne Youtube d’Unvanquished, c’est l’occasion de rappeler l’existence de cette chaĂźne : https://www.youtube.com/@UNVofficial

Pour ceux qui prĂ©fĂšrent Peertube, qui permet aussi de s’abonner aux chaĂźnes Ă  travers Mastodon et plus globalement le FĂ©diverse, avec la publication de certaines parties : https://vdo.unvanquished.greboca.com/

Un compte Mastodon a Ă©tĂ© crĂ©Ă© sur l’instance idtech.space dĂ©diĂ©e aux technologies id Tech et projets associĂ©s (le moteur d’Unvanquished dĂ©rive d’id Tech 3) : https://idtech.space/users/UNVofficial

Ce compte Mastodon s’ajoute aux comptes X et Facebook. Le public libriste sera peut-ĂȘtre plus intĂ©ressĂ© par ce compte Mastodon.

Unvanquished, ARMĂ© et dangereux

De nouvelles architectures

La version 0.54 de Unvanquished sortie en janvier 2023 avait Ă©tĂ© la premiĂšre Ă  ĂȘtre jouable autrement que sur PC (x86 et x86-64), en proposant des binaires pour les processeurs ARM (sous Linux seulement pour l’instant).

CĂŽtĂ© moteur la version 0.54 avait reçu de nombreuses optimisations pour mieux tourner sur des machines moins performances, par exemple, Certaines ressources logiciels optionnelles comme les deluxemaps ne sont plus chargĂ©es si dĂ©sactivĂ©es, ceci Ă©conomise non seulement le calcul, mais aussi la mĂ©moire de la carte graphique. Les lightstyles peuvent ĂȘtre dĂ©sactivĂ©s, ce qui peut accĂ©lĂ©rer le rendu graphique, etc. La compatibilitĂ© matĂ©rielle sera encore Ă©tendue avec la version 0.55.

À partir de la version 0.54 tous les binaires pour toutes les architectures matĂ©rielles et systĂšmes d’exploitation sont compilĂ©s dans des containers Docker, y compris les binaires macOS compilĂ©s dans un container Linux en utilisant Darling, Darling Ă©tant Ă  macOS ce que Wine est Ă  Windows. La version 0.55 sera produite de la mĂȘme maniĂšre.

La version 0.55 apportera la compatibilitĂ© pour un nouveau systĂšme d’exploitation ! đŸ€«ïž

Interface, jouabilité et bots

Chargement de carte

Le nouvel Ă©cran de chargement des cartes.

L’interface avait Ă©tĂ© revue Ă  l’occasion de la version 0.54 :

  • Nouvelles icĂŽnes d’inventaire contribuĂ©es par Nanaa, Gireen et Bob Vador
    Ces icÎnes donnent un coup de fraßcheur, on distingue mieux les deux types de grenades et les armures ainsi que le mode de déplacement.
  • L’écran de chargement des cartes affiche le nom de la carte et des auteurs (si renseignĂ©) depuis les mĂ©tadonnĂ©es. Historiquement, les artistes inscrivaient ces informations sur l’image d’illustration de la carte avec un logiciel de dessin
 (!!!)
  • La version 0.55 apportera des modifications d’interface rĂ©alisĂ©es par Grise.

CĂŽtĂ© jouabilitĂ©, la version 0.54 avait corrigĂ© le momentum nĂ©gatif qui Ă©tait particuliĂšrement pĂ©nalisant. Le momentum, est gĂ©nĂ©rĂ© par les Leech (Alien) ou les Drills (Humain). Il faut qu’il y ait assez de momentum pour pouvoir construire d’autres Ă©lĂ©ments.

La version 0.54 a apportĂ© toute une sĂ©rie de nouveautĂ©s au niveau des bots (entitĂ©s qui remplacent les joueurs afin de complĂ©ter les Ă©quipes) :

  • AmĂ©lioration de l’évitement d’obstacles pour les bots.
  • Les bots peuvent viser des cibles situĂ©es sur des navmesh diffĂ©rents.
  • Certains bots n’hĂ©siteront pas Ă  sauter pour atteindre une cible en hauteur, d’autres se retiennent d’exĂ©cuter une attaque qui pourraient les blesser si la cible est trop proche


Depuis quelque temps, le dĂ©veloppement des bots suscite un regain d’intĂ©rĂȘt. La version 0.55 ne sera pas la plus riche Ă  ce sujet car elle apportera surtout des amĂ©liorations du moteur. Le dĂ©veloppement de gameplay ne s’est pas ralenti mais s’est surtout focalisĂ© sur des mods dont il faudra fusionner les avancĂ©es dans le tronc commun aprĂšs la sortie de la version 0.55. Ces amĂ©liorations de gameplay sont dĂ©jĂ  jouables sur des serveurs en ligne.

L’amĂ©lioration du comportement des bots Ă  permis un nouveau type de jeu : Le PVE. C’est Ă  dire que les joueurs peuvent jouer ensemble contre l’ennemi pilotĂ© par le serveur. Certaines cartes ont Ă©tĂ© crĂ©Ă©es spĂ©cifiquement pour ce type de jeu, et d’autres ont Ă©tĂ© adaptĂ©es Ă  l’aide de layout qui Ă©taient dĂ©jĂ  utilisĂ©s pour crĂ©er des variantes de parties.

La version 0.54.1 n’avait pas vraiment proposĂ© de modifications des donnĂ©es, il s’agissait surtout de publier des correctifs de bugs gĂȘnant du moteur. La version 0.55 viendra avec une mise Ă  jour des donnĂ©es et donc avec les corrections attendues. Par exemple un bug dans la chaĂźne logicielle de conversion d’images avait produit des artefacts dans certaines textures, ce sera corrigĂ© dans la version 0.55.

La danse des submodules

            _________________
           /                 \
          |         ✝         |  
          |                   |
          |      beloved      |
          |     submodule     |
          |                   |
          |    2017-12-30     |
          |     2023-04-11    |
          |                   |
          |       R.I.P.      |
          |                   |  đŸ„”
  (,,)Ă©   |                   |   ɘ̀(âčâč)  ɘ̀(âčâč)
////////////////////////////////////////////////

Press F to Pay Respects!

Tous ceux qui doivent traiter avec Git savent que les submodules sont trÚs pratiques mais parfois bien ennuyeux. Un travail de fond réalisé sur les outils de production des données a permis la réintégration du dossier source unvanquished_src.dpkdir. Le générateur de code CBSE qui produit la plomberie pour la logique de jeu a été réintégré aussi. Cela rend plus facile de travailler sur des mods en évitant de devoir gérer plusieurs dépÎts différents.

Contributions

Unvanquished recrute
Voulez-vous en savoir plus ?

Comme vous le voyez, ce cycle de dĂ©veloppement a aussi vu de nouveaux contributeurs apporter leur concours au projet. Certaines de leurs amĂ©liorations ont dĂ©jĂ  Ă©tĂ© publiĂ©es dans la version mineure 0.54.1, d’autres arriveront avec la version 0.55.

Récement, le développeur Slipher qui est un des développeurs Unvanquished les plus prolifiques et les plus fidÚles a étendu ses activités au moteur de rendu et a rejoint la petite élite de ceux qui savent comment le moteur fonctionne. Il a corrigé entre autre le rendu de vidéo sur des surfaces et une fonctionnalité de sprites.

La liste de rĂ©gressions depuis le dĂ©sormais lointain ancĂȘtre d’Unvanquished, Tremulous, est maintenant rĂ©duite Ă  peau de chagrin.

Des traductions !

La grosse nouveautĂ© de la version 0.54.1 publiĂ©e en dĂ©cembre 2023 a Ă©tĂ© de proposer Ă  nouveau des traductions intĂ©grĂ©es au jeu. L’outil de traduction est gracieuseuement hĂ©bergĂ© par Weblate.

L’interface Weblate

L’interface de traduction Weblate.

Il y a longtemps, le jeu Ă©tait traduit, mais suite Ă  de trĂšs profonds changements (par exemple le remplacement total de la technologie utilisĂ©e pour faire des menus, dĂ©sormais sous RmlUi), l’effort de traduction avait Ă©tĂ© interrompu.

La traduction francophone est bien avancĂ©e, mais la traduction en breton a besoin de plus de contributions. Si vous souhaitez contribuer votre langue rĂ©gionale, vous ĂȘtes les bienvenus, c’est ici que cela se passe !

La 0.55 arrive !

Préparez votre souris et votre clavier, la version 0.55 arrive trÚs bientÎt.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Nouveautés d'octobre 2024 de la communauté Scenari

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

À chaque mĂ©tier/contexte son modĂšle Scenari :
* Opale pour la formation
* Dokiel pour la documentation
* Optim pour les présentations génériques
* Topaze pour les Ă©tudes de cas
* 


Prochain mini-webinaire : « Les outils Scenari pour traduire ses contenus » 15 octobre

đŸ–„ïž Prochain mini-webinaire : « Les outils Scenari pour traduire ses contenus Â» 15 octobre

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

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

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

Tu utilises les « type de » dans Opale 24 ?

📣 Tu utilises les « type de Â» dans Opale 24 ?

On va organiser un mini-webinaire sur l’usage de ces nouveaux et mystĂ©rieux objets dans Opale 24 : les « Type De Â».

Tu les utilises et tu pourrais expliquer ton usage Ă  la communautĂ© ? Alors Ă©cris Ă  direction@scenari.org.

Sortie de la premiĂšre version stable de Parcours

📣 Sortie de la premiùre version stable de Parcours

La premiĂšre version stable de Parcours vient de sortir : Parcours 1.0.2.

Parcours est une chaĂźne Ă©ditoriale SCENARI qui assiste la crĂ©ation de parcours de formation en outillant la conception de conducteurs pĂ©dagogiques et l’exĂ©cution des sessions de formation. Elle est mise Ă  disposition sous la forme d’une application utilisable en mode local (desktop), sur ton ordinateur.

Parcours est maintenant Ă©galement disponible dans Platine-suite (solution serveur en version beta). Dans l’optique de finaliser Platine-suite, Kelis — qui dĂ©veloppe la solution — propose un hĂ©bergement gratuit, pour ceux et celles qui veulent l’expĂ©rimenter en contexte rĂ©el.

Parcours PHP : des fonctionnalités serveur, sans installer un serveur

📣 Parcours PHP : des fonctionnalitĂ©s serveur, sans installer un serveur

Parcours PHP est une publication du modÚle Parcours quipermet de générer un site web autonome, sans avoir à configurer une solution serveur SCENARI complÚte.

Parcours PHP propose une base de données qui permet d'inscrire des utilisateurs, stocker les scores et les avancées dans un exercice SCORM, et le téléversement des devoirs et des corrections.

Nouvelles versions de modĂšles Scenari

📣 Nouvelles versions de modùles Scenari

OPALE : nouvelle version Opale 24.1.0 .

Cette version apporte :

  • De nombreuses corrections dans les publications Exerciseur ;
  • Des corrections dans l’habillage par dĂ©faut Daylight ;
  • L’ajout de deux nouvelles options Ă  la barre d’accessibilitĂ© de la publication Web : Titres numĂ©rotĂ©s & Titres Ă  l’échelle ;
  • L’ajout de la barre d’accessibilitĂ© au gĂ©nĂ©rateur Diaporama ;

Tous les détails sur le forum.

DOKIEL : nouvelle version (corrections dans la Documentation de référence) Dokiel 6.0.8. Elle est disponible dans quatre langues: Français, Anglais, Portugais, Italien.

LEXICO : nouvelle version Lexico 3.0.3. Cette version apporte surtout une correction dans le choix des termes Ă  inclure dans un lexique : Seuls les termes explicitement inclus dans la requĂȘte sont inclus dans les « Liens vers d’autres termes Â».

TECHNOPALE (modĂšle destinĂ© Ă  l’enseignement des sciences expĂ©rimentales dans le secondaire) : nouvelle version TechnOpale 5.0.7 dĂ©rivĂ© d’Opale 5.0.7. Cette mise Ă  jour est accompagnĂ©e des habillages graphiques Aurora Dys et Daylight Mint. Tous les dĂ©tails sur le forum.

Nouvelles versions des outils Scenari

📣 Nouvelles versions des outils Scenari

SCENARI : nouvelles versions de maintenance (corrections fonctionnelles et sécuritaires) de :

MYSCENARI : mise Ă  jour en version 6.3.11. Si tu utilises le client, pense Ă  dĂ©clencher la mise Ă  jour qui doit ĂȘtre proposĂ©e au prochain lancement.

LTI-SUITE : nouvelle version de maintenance LTI-suite 1.0.1. Pour rappel LTI-suite est un serveur qui permet de stocker des contenus accessibles par les plateformes d’apprentissage (LMS). LTI-suite enregistre les donnĂ©es d’apprentissage et propose des rapports dĂ©taillĂ©s de suivi des apprenants.

LTI-suite 1.0 est un projet en phase beta. Kelis est intéressé par tes retours éventuels afin de finaliser la version.

Appel Ă  volontaires pour traduire les outils Scenari

📣 Appel à volontaires pour traduire les outils Scenari

Tu maĂźtrises une autre langue que le français ?

Tu peux dĂ©dier un peu de temps Ă  la communautĂ© Scenari ?

Alors tu peux nous aider Ă  traduire les outils Scenari !

C’est simple et chacun⋅e peut le faire à son rythme.

Envoie un message Ă  direction@scenari.org, et on voit comme tu peux donner un coup de main aux traductions.

Le savais-tu ?

✹ Le savais-tu ?

Dans l’éditeur Scenari, lorsque l’on crĂ©e un bloc dans lequel un item doit ĂȘtre rĂ©fĂ©rencĂ©, si on laisse la souris sur l’icone de la petite feuille, une popup indique quels sont les diffĂ©rents types d’items que l’on peut y mettre.

TrÚs pratique pour mieux connaßtre un modÚle et faciliter la réutilisation.

Popup qui indique quels sont les diffĂ©rents types d’items que l’on peut y mettre

Tu peux retrouver cette astuce, et beaucoup d’autres, sur le forum.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Haiku a 23 ans - Haiku R1 bĂȘta 5 (partie 3 : documentation, finances et GSOC)

Les deux parties précédentes ont présenté les principales évolutions dans le code de Haiku. Mais le code ne fait pas tout.

Cette troisiĂšme (et derniĂšre) partie prĂ©sente les nouveautĂ©s dans la documentation, ainsi qu’un court aperçu du rapport financier et aux dons qui permettent Ă  Haiku d’employer un dĂ©veloppeur Ă  plein temps de façon durable.

Enfin, elle présente la participation au Google Summer of Code et les travaux réalisés par les cinq étudiants encadrés par Haiku cette année.

Sommaire

Documentation

La documentation de Haiku se dĂ©coupe en 3 parties principales : un manuel de l’utilisateur, une documentation d’API, et une documentation interne pour les dĂ©veloppeurs qui travaillent sur les composants du systĂšme.

Ces documents sont complĂ©tĂ©s par de nombreuses pages et articles sur le site Internet, et deux livres pour apprendre Ă  programmer en C++ avec Haiku, ou encore un document de rĂ©fĂ©rence pour la conception d’interfaces graphiques et un autre pour le style graphique des icĂŽnes.

Documentation d’API

La documentation d’API de BeOS Ă©tait assez complĂšte et de bonne qualitĂ©. L’entreprise Access Co Ltd qui a hĂ©ritĂ© de la propriĂ©tĂ© intellectuelle de BeOS a autorisĂ© le projet Haiku Ă  la rĂ©utiliser et Ă  la redistribuer. Malheureusement, cette autorisation est faite avec une licence Creative Commons n’autorisant pas les modifications. Cette documentation ne peut donc pas ĂȘtre mise Ă  jour, ni pour corriger les erreurs, ni pour ajouter des informations sur toutes les nouvelles fonctions ajoutĂ©es par Haiku ou les diffĂ©rences entre les deux systĂšmes.

Il est donc nĂ©cessaire de rĂ©Ă©crire une nouvelle documentation Ă  partir de zĂ©ro. Ce travail est assez ingrat lorsqu’il s’agit de re-dĂ©crire ce qui est dĂ©jĂ  trĂšs bien expliquĂ© dans la documentation existante. La nouvelle documentation a donc tendance Ă  se concentrer sur les nouvelles fonctions, et il faut souvent jongler entre les deux documentations, le contenu des fichiers .h, et des exemples de code d’applications existantes pour dĂ©couvrir toutes les possibilitĂ©s offertes.

Il ne semble pas utile de lister chaque fonction ou mĂ©thode qui a Ă©tĂ© documentĂ©e. On peut mentionner une page d’explications sur la bibliothĂšque C standard, comprenant des liens vers les spĂ©cifications POSIX qui documentent dĂ©jĂ  la plupart des choses, et quelques dĂ©tails sur les diffĂ©rences avec d’autres systĂšmes.

Une autre nouvelle page documente les primitives de synchronisation qui sont disponibles pour le code s’exĂ©cutant dans le noyau.

Documentation interne

La documentation interne Ă©tait Ă  l’origine simplement une accumulation de fichiers dans divers format dans un dossier « docs » du dĂ©pĂŽt Git de Haiku. Depuis 2021, ces fichiers ont Ă©tĂ© rassemblĂ©s et organisĂ©s Ă  l’aide de Sphinx, qui permet de mettre Ă  disposition une version navigable en HTML et de donner une meilleure visibilitĂ© Ă  ces documents.

D’autres pages sont petit Ă  petit migrĂ©es depuis le site web principal de Haiku, qui n’est pas un trĂšs bon support pour de la documentation, et bĂ©nĂ©ficiera un jour d’une refonte pour ĂȘtre plus tournĂ© vers les utilisateurs que vers les dĂ©veloppeurs.

Quelques nouvelles pages ajoutées cette année:

  • Une documentation sur l’utilisation de divers outils de complĂ©tion de code automatique avec le code source de Haiku
  • Une page prĂ©sentant l’organisation du code source et les principaux dossiers et sous-dossiers
  • La documentation de l’outil rc utilisĂ© pour compiler les « resources » attachĂ©es aux exĂ©cutables a Ă©tĂ© intĂ©grĂ©e
  • Le systĂšme de fichier FAT a reçu Ă©galement une page de documentation Ă  l’occasion de sa rĂ©Ă©criture

Un point sur le financement

L’association Haiku inc qui gĂšre le compte en banque de Haiku publie chaque annĂ©e un rapport financier.

Le financement provient principalement de dons des utilisateurs et soutiens de Haiku. Le projet reçoit Ă©galement une compensation financiĂšre de Google pour le temps passĂ© Ă  encadrer les participants du Google Summer of Code (voir le paragraphe suivant). La contribution de Google cette annĂ©e est de 3 300$.

Les plateformes de don les plus utilisĂ©es sont Paypal et Github sponsor. Ce dernier est recommandĂ© car, pour les dons reçus via Github, c’est Microsoft qui paie les frais bancaires de la transaction. 100% de l’argent donnĂ© arrive donc sur le compte de Haiku. Tous les autres opĂ©rateurs ont un coĂ»t, soit fixe lors des retraits, soit un pourcentage de chaque don, soit un mĂ©lange des deux.

En 2023, l’association a reçu 25 422$ de dons et a dĂ©pensĂ© 24 750$. Elle dispose d’une rĂ©serve confortable de 100 000$ (accumulĂ©s avant 2021, alors qu’il n’y avait pas de dĂ©veloppeur salariĂ©) ainsi que d’environ 150 000$ en cryptomonnaies.

Les dons en cryptomonnaies sont pour l’instant bloquĂ©s sur un compte Coinbase suite Ă  des problĂšmes administratifs (le compte n’est pas correctement dĂ©clarĂ© comme appartenant Ă  une association, il faudrait donc payer un impĂŽt sur le revenu lors de la conversion en vraie monnaie). Il semble difficile de contacter Coinbase pour rĂ©gler ce problĂšme.

Du cĂŽtĂ© des dĂ©penses, le poste le plus important est le paiement de 21 000$ Ă  Waddlesplash, dĂ©veloppeur employĂ© par Haiku inc pour faire avancer le projet Haiku. Il travaille Ă  temps partiel et avec un salaire trĂšs bas par rapport au marchĂ©, comme cela a Ă©tĂ© fait pour les prĂ©cĂ©dents contrats entre Haiku inc et d’autres dĂ©veloppeurs. Les finances de l’association ne permettent pas encore d’assurer un emploi Ă  plein temps avec un salaire correct sur le long terme (c’est faisable sur le court ou moyen terme Ă  condition de puiser dans les rĂ©serves de trĂ©sorerie).

Le reste des dĂ©penses concerne principalement le paiement de l’infrastructure (serveurs pour le site Internet, l’intĂ©gration continue, hĂ©bergement cloud pour les dĂ©pĂŽts de paquets) pour environ 3 000$.

Il faut enfin compter environ 500$ de frais Paypal, puis quelques dĂ©penses administratives (dĂ©claration de changement d’adresse de l’association, dĂ©claration d’embauche) pour des montants nĂ©gligeables (moins de 10$ au total).

En 2024, l’objectif fixĂ© en janvier Ă©tait de rĂ©colter 20 000$ de dons supplĂ©mentaires. Cet objectif a Ă©tĂ© atteint dĂšs le mois de juillet, et a donc Ă©tĂ© rĂ©visĂ© pour tenter d’atteindre les 30 000$. Cela permettra de rĂ©munĂ©rer Waddlesplash pour un plus grand nombre d’heures cette annĂ©e, ou bien d’envisager l’embauche d’une deuxiĂšme personne si un ou une candidate se prĂ©sente parmi les personnes contribuant au projet (l’embauche d’une personne extĂ©rieure ne se fera pas tant que l’association ne peut pas se permettre de proposer une rĂ©munĂ©ration raisonnable).

Google Summer of Code

Haiku participe au Google Summer of Code depuis 2007. Il s’agit d’un programme oĂč des Ă©tudiants (et d’autres participants pas forcĂ©ment Ă©tudiants, ces derniĂšres annĂ©es) sont payĂ©s par Google pendant deux mois pour dĂ©couvrir la contribution Ă  des projets de logiciels libres.

Ce programme a Ă©tĂ© montĂ© par « l’Open source program office » de Google. Leur intĂ©rĂȘt est de dĂ©fendre leur image d’entreprise sympathique (bien mise Ă  mal ces derniĂšres annĂ©es, c’est devenu un gĂ©ant de la publicitĂ© en ligne et de l’aspiration des donnĂ©es personnelles), et de contribuer Ă  la richesse d’un Ă©cosystĂšme de logiciels libres dont ils bĂ©nĂ©ficient beaucoup. Cela permet aussi d’encourager des personnes Ă  s’essayer au dĂ©veloppement logiciel, facilitant indirectement le recrutement chez Google en augmentant le nombre de candidats. Ces justifications peuvent sembler hypothĂ©tiques ou trĂšs indirectes, mais elles ont convaincu Google d’attribuer un budget de quelques millions de dollars Ă  ce programme.

Une Ă©quipe de Google choisit les projets de logiciel libres participants parmi de nombreuses candidatures. Chaque projet participant propose une liste Â«â€Żd’idĂ©es » (un peu sous la forme d’un sujet de stage) et a ensuite la responsabilitĂ© de choisir parmi les candidats qui ont rĂ©pondu Ă  cette offre (en respectant les critĂšres de non-discrimination imposĂ©es par Google ainsi que les embargos imposĂ©s par les USA), et d’assurer l’encadrement des personnes sĂ©lectionnĂ©es. Google rĂ©munĂšre les participants, et dĂ©dommage les projets participants pour le temps investi.

Cette année les développeurs de Haiku encadrent cinq participants :

Calisto Mathias — Re-design de la fenĂȘtre de recherche de fichiers

Le systĂšme de fichier BFS utilisĂ© par Haiku permet l’exĂ©cution de requĂȘtes (comme une base de donnĂ©es) exploitant les attributs Ă©tendus des fichiers, qui peuvent ĂȘtre indexĂ©s.

Ce systĂšme permet de faire beaucoup de choses, et la fenĂȘtre de recherche du navigateur de fichier essaie d’en tirer parti. Cependant, l’interface rĂ©sultante est trop complexe, et peu de personnes prennent le temps de concevoir des requĂȘtes amĂ©liorant leur façon de travailler, se cantonnant aux quelques exemples fournis.

L’objectif de ce projet est de refondre l’interface de cette fenĂȘtre pour obtenir quelque chose de plus intuitif, et Ă©galement d’afficher en temps rĂ©el les rĂ©sultats de la requĂȘte dĂšs qu’elle est modifiĂ©e, pour encourager les utilisateurs Ă  expĂ©rimenter avec des requĂȘtes plus complexes.

Daniel Martin — Virtualisation matĂ©rielle accĂ©lĂ©rĂ©e avec NVMM

Haiku n’est pas encore parfait, et certaines tĂąches nĂ©cessitent encore l’utilisation d’autres systĂšmes d’exploitation. Une partie des utilisateurs ont donc une configuration en double boot, ou bien lancent Haiku dans une machine virtuelle.

L’objectif de ce projet est de permettre d’utiliser Haiku comme systĂšme principal, et de lancer les autres systĂšmes dans des machines virtuelles. Cela sera rĂ©alisĂ© Ă  l’aide d’un portage de NVMM, qui a Ă©tĂ© dĂ©veloppĂ© Ă  l’origine par NetBSD et Dragonfly BSD. Cette bibliothĂšque a l’avantage d’ĂȘtre bien documentĂ©e et conçue pour faciliter son adaptation vers d’autres systĂšmes.

NVMM sera complĂ©tĂ©e par l’utilisation de QEMU qui pourra fournir un « front-end » Ă  cette mĂ©canique.

Diego Roux — Pilote pour les cartes sons virtuelles VirtIO

Pour les personnes utilisant Haiku dans une machine virtuelle, il est intĂ©ressant d’utiliser autant que possible la famille de pĂ©riphĂ©riques VirtIO.

Il s’agit de pĂ©riphĂ©riques virtuels conçus sans s’inspirer de matĂ©riel existant, et plutĂŽt pour avoir l’interface la plus simple possible entre la machine virtualisĂ©e et son hĂŽte.

Haiku dispose dĂ©jĂ  d’un jeu de pilote Virtio relativement complet (rĂ©seau, stockage de masse, affichage graphique). Le but de ce projet est de complĂ©ter cet ensemble avec un pilote pour les cartes son VirtIO.

trungnt2910 — Portage de GDB

Haiku dispose de son propre dĂ©bugger (appelĂ© Debugger, de façon assez peu originale). Ce dernier prĂ©sente une interface graphique confortable, mais une interface en ligne de commande beaucoup plus limitĂ©e. Il souffre Ă©galement de quelques problĂšmes de performances et d’un manque de prise en charge des fichiers exĂ©cutables et bibliothĂšques compilĂ©s avec autre chose que GCC. Il est Ă©galement incapable de faire du debug Ă  distance ou de s’intĂ©grer dans une interface graphique existante (par exemple au sein d’un IDE).

L’objectif de ce projet est de ressusciter la version de GDB ciblant Haiku. Cette version trĂšs ancienne Ă©tait utilisĂ©e avant l’apparition du Debugger natif. Le projet est en bonne voie, le code d’interfaçage a Ă©tĂ© entiĂšrement rĂ©Ă©crit pour s’adapter aux versions modernes de GDB, et plusieurs Ă©volutions et corrections ont Ă©tĂ© intĂ©grĂ©es dans le systĂšme de debugging de Haiku (par exemple, pour mettre en pause tous les threads nouvellement crĂ©Ă©s afin que le debugger puisse les intercepter).

Zardshard — Migration du navigateur web WebPositive vers WebKit2

Le navigateur WebPositive utilise le moteur de rendu webKit. Actuellement, il s’interface avec ce moteur via l’API WebKitLegacy. Cette API exĂ©cute tout le moteur de rendu web dans un seul processus, et ne fournit pas les garanties d’isolation nĂ©cessaires pour les navigateurs web modernes (que ce soit en termes de sĂ©curitĂ©, ou en termes de fiabilitĂ©).

L’objectif de ce projet est de reprendre les travaux dĂ©jĂ  entamĂ©s en 2019 pour migrer WebPositive vers la nouvelle API « WebKit2 », et bĂ©nĂ©ficier d’une sĂ©paration entre l’interface graphique, la communication rĂ©seau, et le rendu HTML/CSS/JavaScript dans des applications sĂ©parĂ©es. Ainsi, un crash d’un de ces composants peut ĂȘtre rĂ©cupĂ©rĂ© de façon transparente sans faire disparaĂźtre toute l’application (et les donnĂ©es non enregistrĂ©es de l’utilisateur avec).

Le projet est Ă©galement en bonne voie, un navigateur de test permet dĂ©jĂ  d’afficher quelques pages ce qui montre que les bases sont en place. Il reste Ă  rĂ©gler de nombreux problĂšmes de rendu de texte, ainsi qu’à implĂ©menter la gestion des entrĂ©es (clavier et souris) pour avoir un navigateur web utilisable. Il faudra ensuite migrer WebPositive vers ces nouvelles APIs.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Haiku a 23 ans - Haiku R1 bĂȘta 5 (partie 1 : applications)

Haiku est un systĂšme d’exploitation libre destinĂ© aux ordinateurs personnels ou de bureau (pas de serveurs, pas de systĂšmes embarquĂ©s, pas de tablettes ni de tĂ©lĂ©phones). Il s’agit au dĂ©part d’une rĂ©Ă©criture libre de BeOS, prĂ©servant la compatibilitĂ© binaire avec ce dernier (les applications BeOS peuvent tourner sur certaines versions de Haiku).

Le projet Haiku (au dĂ©part nommĂ© OpenBeOS) a dĂ©marrĂ© officiellement le 18 aoĂ»t 2001 avec le premier message sur la liste de diffusion : Ok, let's start (OK, allons-y). Cet anniversaire est l’occasion de faire un point sur les dĂ©veloppements de l’annĂ©e dans Haiku et ce qui est en prĂ©paration.

La dĂ©pĂȘche a Ă©tĂ© un peu retardĂ©e cette annĂ©e, pour ĂȘtre synchronisĂ©e avec la version R1 bĂȘta 5 de Haiku, publiĂ©e le vendredi 13 septembre 2024.

Le projet emploie un dĂ©veloppeur presque Ă  plein temps depuis 2021 et le reste de l’équipe contribue bĂ©nĂ©volement. La derniĂšre version bĂȘta a Ă©tĂ© publiĂ©e fin 2023 et la BĂȘta 5 est dĂ©sormais disponible : l’occasion de revenir en trois parties sur ce que propose Haiku, d’abord des applications, un noyau et des amĂ©liorations de la documentation.

Sommaire

PrĂšs de 350 tickets ont Ă©tĂ© clos dans le cadre du travail sur la version R1 bĂȘta 5. Il y a bien sĂ»r de trĂšs nombreuses corrections de bugs, qui ne seront pas listĂ©es dans cet article. On se concentrera plutĂŽt sur les nouveautĂ©s, sauf dans les cas oĂč la correction est vraiment importante ou permet d’ouvrir de nouvelles possibilitĂ©s d’utilisation.

Applications

Haiku est un systĂšme d’exploitation complet, fourni avec un certain nombre d’applications permettant d’accomplir les tĂąches les plus courantes. En plus de ces applications de base, le gestionnaire de paquets HaikuDepot, alimentĂ© principalement par le travail du projet HaikuPorts, apporte Ă  la fois des applications portĂ©es depuis d’autres systĂšmes et des applications dĂ©veloppĂ©es spĂ©cifiquement pour Haiku.

De façon gĂ©nĂ©rale, on trouve cette annĂ©e dans les applications de Haiku des amĂ©liorations sur le rendu des nombres, l’utilisation d’un symbole de multiplication Ă  la place d’une lettre x lĂ  oĂč c’est pertinent, et de nombreuses petites corrections et amĂ©liorations sur la mise en page des fenĂȘtres, des corrections de problĂšmes de traduction et ainsi de suite.

AboutSystem

AboutSystem est la fenĂȘtre d’information sur le systĂšme Haiku. Elle fournit quelques informations sur la machine sur laquelle le systĂšme fonctionne (quantitĂ© de RAM, marque et modĂšle du CPU, uptime) ainsi que les noms des dĂ©veloppeurs et autres logiciels libres ayant participĂ© au dĂ©veloppement de Haiku.

Cette application reçoit tout d’abord une mise Ă  jour cosmĂ©tique : si le systĂšme est configurĂ© en « mode sombre », le logo Haiku correspondant (avec un lettrage blanc et des dĂ©gradĂ©s de couleurs un peu diffĂ©rents) sera utilisĂ©. Sinon, ce sera le logo avec lettrage noir.

AboutSystem en mode clair
AboutSystem en mode sombre

Elle reçoit Ă©galement quelques mises Ă  jour de contenu : en plus de l’ajout de quelques nouveaux contributeurs qui ont rejoint le projet, on trouvera maintenant un lien vers la page web permettant de faire un don Ă  Haiku. Plusieurs liens vers des bibliothĂšques tierces utilisĂ©es dans Haiku, qui ne fonctionnaient plus, ont Ă©tĂ© soit supprimĂ©s, soit remplacĂ©s par des liens mis Ă  jour.

Enfin, il est dĂ©sormais possible d’utiliser AboutSystem comme un « rĂ©plicant », c’est-Ă -dire de l’installer directement sur le bureau pour avoir en permanence sous les yeux les statistiques sur l’utilisation mĂ©moire et l’uptime ainsi que le numĂ©ro de build de Haiku en cours d’exĂ©cution (ce qui peut ĂȘtre utile par exemple lorsqu’on lance beaucoup de machines virtuelles avec des versions diffĂ©rentes de Haiku pour comparer un comportement, ou si on veut stocker des captures d’écran de plusieurs versions et s’y retrouver facilement).

CharacterMap

L’application « table de caractĂšres » permet d’étudier de prĂšs les diffĂ©rents glyphes et symboles prĂ©sents dans une police de caractĂšres. En principe, elle permet de choisir une police spĂ©cifique, mais le serveur graphique de Haiku substitue automatiquement une autre police si on lui demande d’afficher un caractĂšre qui n’est pas disponible dans la police demandĂ©e.

Cela peut ĂȘtre gĂȘnant dans certains contextes, par exemple si on envisage d’embarquer une police dans un fichier PDF, il est difficile de savoir quelle police contient vraiment les caractĂšres qu’on veut utiliser.

L’application a Ă©tĂ© amĂ©liorĂ©e pour traiter ce cas et affiche maintenant ces caractĂšres en grisĂ©.

CharacterMap affichant des caractĂšres manquants

CodyCam

CodyCam est une application permettant de tester une webcam et de l’utiliser pour envoyer pĂ©riodiquement des images vers un serveur HTTP.

L’évolution principale a Ă©tĂ© la mise Ă  jour de l’icĂŽne de l’application. L’utilitĂ© de CodyCam est limitĂ©e par le manque de pilotes : il faudra soit trouver une webcam Sonix du dĂ©but des annĂ©es 90, seul modĂšle USB Ă  disposer d’un pilote fonctionnel, soit utiliser un ordiphone Android Ă©quipĂ© d’un logiciel permettant de le transformer en camĂ©ra IP (ou encore une vraie camĂ©ra IP).

Le pilote pour les WebCams UVC — standard utilisĂ© pour les camĂ©ras USB modernes — n’est pas encore au point et n’est pas inclus dans les versions publiĂ©es de Haiku.

Debugger

Debugger est, comme son nom l’indique, le debugger de Haiku. Il est dĂ©veloppĂ© spĂ©cifiquement pour le projet sans s’appuyer sur les outils existants (gdb ou lldb). Il dispose Ă  la fois d’une interface graphique et d’une interface en ligne de commande, plus limitĂ©e. Cette derniĂšre est surtout utilisĂ©e pour investiguer des problĂšmes dans les composants de Haiku qui sont nĂ©cessaires pour l’utilisation d’une application graphique : app_server, input_server ou encore registrar.

La version en ligne de commande a reçu quelques petites amĂ©liorations, mais la principale nouveautĂ© est la prise en charge des formats DWARF-4 et DWARF-5 pour les informations de debug. Cela permet de charger les informations gĂ©nĂ©rĂ©es par les versions modernes de GCC, sans avoir besoin de forcer la gĂ©nĂ©ration d’une version plus ancienne du format DWARF.

Le dĂ©sassembleur udis86, qui n’est plus maintenu et ne reconnaĂźt pas certaines instructions ajoutĂ©es rĂ©cemment dans les processeurs x86, a Ă©tĂ© remplacĂ© par Zydis.

Enfin, un bug assez gĂȘnant a Ă©tĂ© corrigé : si une instance de Debugger Ă©tait dĂ©jĂ  en train de dĂ©bugger une application et qu’une deuxiĂšme application venait Ă  planter, il n’était pas possible d’attacher une deuxiĂšme instance de Debugger Ă  cette application. Les problĂšmes impliquant plusieurs processus pouvaient donc ĂȘtre un peu compliquĂ©s Ă  investiguer. C’est maintenant rĂ©solu.

Deskbar

L’application DeskBar fournit la « barre des tĂąches » de Haiku. Elle permet de naviguer entre les fenĂȘtres et applications ouvertes, de lancer de nouvelles applications via un menu (similaire au « menu dĂ©marrer » de Windows), ou encore d’afficher une horloge et des icĂŽnes fournis par d’autres applications (sous forme de rĂ©plicants).

Elle fait partie, avec le Tracker, des applications qui ont Ă©tĂ© publiĂ©es sous license libre lors de l’abandon de BeOS par Be Inc.

Quelques changements dans la DeskBar :

  • Tous les menus utilisent maintenant la police « menu » choisie dans les prĂ©fĂ©rences d’apparence du systĂšme. Auparavant, la police « menu » et la police « plain » Ă©taient mĂ©langĂ©es. Ces deux polices Ă©tant identiques dans la configuration par dĂ©faut, le problĂšme n’avait pas Ă©tĂ© repĂ©rĂ©.
  • Si un nom de fenĂȘtre est tronquĂ© dans la liste des fenĂȘtres, le nom complet peut ĂȘtre affichĂ© dans une infobulle.
  • L’icĂŽne pour les fenĂȘtres dans la DeskBar a Ă©tĂ© remplacĂ©e. La nouvelle icĂŽne indique plus clairement si une fenĂȘtre se trouve dans un autre bureau virtuel (dans ce cas, activer cette fenĂȘtre provoquera un changement de bureau).

GLTeapot

GLTeapot est une application permettant de tester le rendu OpenGL, en affichant un modĂšle 3D de la thĂ©iĂšre de l’Utah.

En plus de la thĂ©iĂšre, cette application affiche un compteur du nombre d’images affichĂ©es par secondes. Bien que les chiffres affichĂ©s ne soient pas du tout reprĂ©sentatifs des performances d’un rendu 3D rĂ©aliste, certains utilisateurs insistent lourdement pour pouvoir faire le concours de gros chiffres de nombre d’images par seconde.

Il est donc Ă  nouveau possible de dĂ©sactiver la synchronisation sur le rafraĂźchissement de l’écran, et demander au processeur de rĂ©afficher la thĂ©iĂšre plusieurs centaines de fois par seconde, bien que l’écran soit incapable de suivre le rythme. Par dĂ©faut, la synchronisation est activĂ©e et le rafraĂźchissement ne dĂ©passera jamais 60 FPS, si toutefois le pilote graphique implĂ©mente les fonctions de synchronisation nĂ©cessaires.

HaikuDepot

HaikuDepot est un hybride entre un gestionnaire de paquets et un magasin d’applications.

Il se compose d’un serveur (dĂ©veloppĂ© en Java) fournissant une API REST et permettant de collecter les informations sur les applications (icĂŽnes, captures d’écrans, catĂ©gories, votes et revues des utilisateurs, choix de la rĂ©daction pour les applications mises en avant
), d’un frontend web minimaliste et d’une application native C++ permettant d’afficher ces donnĂ©es.

La principale nouveautĂ© est l’intĂ©gration du systĂšme de single-sign-on (SSO) permettant d’utiliser un compte utilisateur commun avec d’autres services en ligne de Haiku. Actuellement, l’outil de revue de code Gerrit
utilise ce mĂȘme compte, mais ce n’est pas encore le cas pour Trac (outil de suivi des bugs) ni pour le forum. Ce sera mis en place plus tard.

De façon peut-ĂȘtre moins visible, mais pas moins importante, le code C++ de l’application a reçu de nombreuses amĂ©liorations et optimisations « sous le capot », rendant l’application plus rapide et plus fiable, mais qui sont un peu difficiles Ă  rĂ©sumer dans le cadre de cette dĂ©pĂȘche.

Enfin, l’apparence de l’application a Ă©tĂ© lĂ©gĂšrement retravaillĂ©e pour mieux s’adapter aux Ă©crans Ă  haute dĂ©finition (ce qui nĂ©cessite d’avoir des marges et espacements de taille dynamique en fonction de la taille de texte choisie par l’utilisateur).

Icon-O-Matic

Capture d’écran de l’éditeur d’icĂŽnes

Icon-O-Matic est un Ă©diteur d’icĂŽnes. Il permet d’exporter les fichiers au format HVIF, un format vectoriel compact qui permet de stocker les icĂŽnes dans l’inode d’en-tĂȘte des fichiers pour un chargement et un affichage rapide.

Cette application a bĂ©nĂ©ficiĂ© du travail de Zardshard pendant le Google Summer of Code 2023, elle a donc reçu plusieurs Ă©volutions et corrections importantes (dont certaines sont mentionnĂ©es dans la dĂ©pĂȘche anniversaire de l’annĂ©e derniĂšre).

Citons en particulier l’ajout d’un nouveau type de transformation, « perspective », qui permet de facilement dĂ©former un ensemble de chemins vectoriels selon une projection de perspective, ce qui est assez utile pour concevoir plus facilement une icĂŽne avec un aspect tridimensionnel (bien qu’en pratique l’apparence habituelle des icĂŽnes de Haiku soit un intermĂ©diaire entre une projection perspective et une vue isomĂ©trique, ne se prĂȘtant pas forcĂ©ment Ă  l’utilisation de cette opĂ©ration de transformation purement mathĂ©matique).

Une autre petite amĂ©lioration est l’ajout d’une vĂ©rification pour empĂȘcher la fenĂȘtre de Icon-O-Matic de se positionner en dehors de l’écran, par exemple si on a dĂ©placĂ© la fenĂȘtre vers le bas de l’écran, enregistrĂ© cette position, puis relancĂ© l’application dans une rĂ©solution d’écran plus rĂ©duite. Dans ce cas, la fenĂȘtre sera automatiquement ramenĂ©e dans la zone visible de l’affichage.

Magnify

L’application Magnify permet d’afficher une vue zoomĂ©e d’une partie de l’écran. Elle peut servir pour amĂ©liorer l’accessibilitĂ© (mais n’est pas idĂ©ale pour cet usage), mais aussi pour les dĂ©veloppeurs d’interfaces graphiques qui ont parfois besoin de compter les pixels pour s’assurer que leurs fenĂȘtres sont bien construites.

En plus de l’affichage zoomĂ©, l’application permet d’afficher l’encodage RGB de la couleur d’un pixel, ou encore de placer des « rĂšgles » permettant de vĂ©rifier l’alignement des objets. Ces derniĂšres ont reçu une petite mise Ă  jour, avec une amĂ©lioration de l’affichage de leur largeur et hauteur pour les rendre plus lisibles.

Magnify avec une 'rĂšgle'

MediaPlayer

L’affichage des sous-titres ne fonctionnait pas correctement, il manquait une partie du texte. C’est maintenant corrigĂ©.

PowerStatus

Capture d’écran de PowerStatus: fenĂȘtre principale et icĂŽne de la DeskBar avec son menu

L’application PowerStatus permet de surveiller l’état de la batterie pour les ordinateurs qui en disposent.

Elle a reçu plusieurs améliorations importantes :

Une notification a Ă©tĂ© ajoutĂ©e pour un niveau de dĂ©charge trĂšs faible (en plus du niveau faible dĂ©jĂ  prĂ©sent). Ces deux niveaux peuvent ĂȘtre paramĂ©trĂ©s Ă  un pourcentage choisi de dĂ©charge de la batterie, et associĂ© Ă  des sons d’alerte spĂ©cifiques. Avant ces changements, il Ă©tait facile de ne pas voir le message d’alerte (affichĂ© seulement pendant quelques secondes) ou de se dire qu’avec 15% de batterie on a encore le temps de faire plein de trucs, puis se retrouver un peu plus tard avec une batterie vide sans autre avertissement.

L’état « not charging » est maintenant dĂ©tectĂ© et correctement affichĂ©, pour une batterie au repos : ni en train de se charger, ni en train d’alimenter la machine. C’est en particulier le cas d’une batterie dĂ©jĂ  chargĂ©e Ă  100%, si la machine reste connectĂ©e au rĂ©seau Ă©lectrique.

L’icĂŽne de statut de la batterie s’installe automatiquement dans la DeskBar au premier dĂ©marrage de Haiku sur les machines disposant d’une batterie.

Le rĂ©glage du mode « performance » ou « économie d’énergie" est enregistrĂ© et rĂ©-appliquĂ© lors des prochains dĂ©marrages (ces modes configurent l’ordonnanceur du noyau pour exĂ©cuter un maximum de tĂąches sur tous les cƓurs du processeur, ou bien au contraire pour essayer de garder ces cƓurs en veille autant que possible s’ils ne sont pas nĂ©cessaires).

SerialConnect

SerialConnect est une application de terminal série, utile principalement aux développeurs de systÚmes embarqués et autres gadgets électroniques.

Elle est encore en cours de dĂ©veloppement et propose pour l’instant les fonctions les plus basiques. Il est maintenant possible de coller du texte depuis le presse-papier pour l’envoyer sur un port sĂ©rie, ce qui est pratique si on veut envoyer plusieurs fois la mĂȘme sĂ©quence de commandes.

ShowImage

ShowImage est la visionneuse d’images de Haiku. Elle utilise les traducteurs, des greffons avec une API standardisĂ©e qui permettent de convertir diffĂ©rents formats de fichiers entre eux.

L’interface graphique de ShowImage a Ă©tĂ© mise Ă  jour pour utiliser le « layout system ». Historiquement, dans BeOS, tous les Ă©lĂ©ments des interfaces graphiques devaient ĂȘtre positionnĂ©s manuellement avec des coordonnĂ©es en pixels, ce qui est pĂ©nible Ă  faire, surtout si on doit traiter tous les cas (polices de caractĂšres de diffĂ©rentes tailles, remplacement des textes lors de traductions, utilisation de thĂšme d’interfaces diffĂ©rents), et aussi lors d’évolution de l’application (si on veut insĂ©rer un Ă©lĂ©ment en plein milieu, il faut souvent dĂ©caler tout ce qui se trouve autour).

Le « layout system » fournit un ensemble d’outils pour automatiser ce travail, soit Ă  l’aide d’élĂ©ments prĂ©dĂ©finis (grilles, groupes, « cartes » superposĂ©es), soit Ă  l’aide d’un systĂšme de dĂ©finition de contraintes et de programmation linĂ©aire.

D’autre part, ShowImage dispose maintenant d’un menu permettant d’ouvrir l’image affichĂ©e dans un Ă©diteur d’images.

Terminal

Le Terminal de Haiku permet d’exĂ©cuter un shell (c’est bash par dĂ©faut) et toutes les applications conçues pour un affichage en console.

Les principaux changements cette annĂ©e sont la correction d’un problĂšme sur la configuration des couleurs utilisĂ©es par le Terminal (il y avait un mĂ©lange entre le nom anglais et le nom traduit des couleurs, empĂȘchant d’enregistrer et de relire correctement le fichier de configuration), ainsi que des modifications sur les raccourcis clavier utilisĂ©s par le Terminal lui-mĂȘme (en particulier pour naviguer entre plusieurs onglets) qui entraient en conflit avec ceux utilisĂ©s par les applications lancĂ©es dans le terminal.

Le terminal est Ă©galement capable de traiter les « bracketed paste », c’est-Ă -dire que les applications en console sont informĂ©es que des caractĂšres en entrĂ©e proviennent du presse-papier. Cela permet par exemple Ă  bash de ne pas exĂ©cuter directement des commandes qui sont collĂ©es, mais de les mettre en surbrillance et d’attendre que l’utilisateur valide cette saisie.

D’un point de vue plus bas niveau, les pilotes TTY utilisĂ©s pour les ports sĂ©rie et pour le Terminal, qui Ă©taient indĂ©pendants, ont Ă©tĂ© unifiĂ©s afin d’éviter de devoir corriger tous les bugs deux fois dans deux versions du code presque identiques.

Tracker

Tracker est le navigateur de fichiers de Haiku. Tout comme la DeskBar, il fait partie des quelques rares morceaux de BeOS qui ont Ă©tĂ© publiĂ©s sous licence libre par Be et ont donc pu ĂȘtre repris directement par Haiku. Contrairement Ă  la DeskBar, la publication du code du Tracker avait conduit Ă  l’apparition de nombreux forks, chacun amĂ©liorant Ă  sa façon le logiciel. La version utilisĂ©e par Haiku provient principalement du projet OpenTracker, mais a rĂ©intĂ©grĂ© ou rĂ©implĂ©mentĂ© au fil du temps les modifications faites dans d’autres variantes.

Le Tracker est un composant central de l’interface de Haiku et a donc reçu un nombre assez important d’évolutions :

La taille des fichiers est maintenant affichĂ©e Ă  l’aide de la fonction string_for_size qui s’adapte aux conventions de la langue et du pays choisi par l’utilisateur.

Les brouillons de courrier Ă©lectronique disposent maintenant de leur propre type MIME et de l’icĂŽne associĂ©e. Ils s’ouvriront dans un Ă©diteur de mail plutĂŽt que dans une fenĂȘtre de lecture de message.

Pour les fichiers qui disposent d’un attribut « rating » (Ă©valuation), ce dernier est affichĂ© avec des Ă©toiles pleines ou vides selon la note attribuĂ©e. La note va de 0 Ă  10 mais il n’y a que 5 Ă©toiles. Le caractĂšre demi-Ă©toile permet d’afficher la note exacte avec les versions rĂ©centes d’Unicode (depuis 2018 en fait, mais il a fallu attendre la disponibilitĂ© dans une police de caractĂšres).

Une fenĂȘtre du Tracker, montrant la colonne taille et la colonne rating

La gestion des dossiers en lecture seule a Ă©tĂ© amĂ©liorĂ©e. Ils sont affichĂ©s sur fond gris (au lieu d’un fond blanc pour les dossiers modifiables) et tous les menus correspondant Ă  des opĂ©rations non autorisĂ©es sont dĂ©sactivĂ©s (au lieu d’ĂȘtre activĂ©s, mais d’aboutir sur une erreur car le dossier est en lecture seule).

Dans le mĂȘme esprit, le bouton « ouvrir » des boĂźtes de dialogues d’ouverture de fichier est dĂ©sactivĂ© si le fichier sĂ©lectionnĂ© ne peut pas ĂȘtre ouvert (c’était dĂ©jĂ  le cas, mais tous les cas possibles n’étaient pas bien pris en compte).

Un problĂšme d’affichage sur le systĂšme de fichier packagefs a Ă©tĂ© corrigĂ© : les dossiers n’ont pas de taille et affichent donc - au lieu d’une taille fixe de 4 Kio qui n’a aucune signification.

La fenĂȘtre de recherche a reçu quelques Ă©volutions, voir plus bas dans la section dĂ©diĂ©e au Google Summer of Code, qui dĂ©taille le travail rĂ©alisĂ© Ă  ce sujet.

Le menu « templates », utilisĂ© quand on fait un 'clic droit -> Nouveau
' et qui permet de crĂ©er diffĂ©rents types de fichiers et de dossiers Ă  partir de fichiers de rĂ©fĂ©rence, peut maintenant contenir des sous-dossiers, pour les personnes qui utilisent beaucoup cette possibilitĂ©, avec par exemple des modĂšles de documents prĂ©-remplis pour diffĂ©rents usages.

Enfin, un peu de nettoyage interne : les classes NavMenu et SlowContextPopup, qui permettent la navigation dans les sous-dossiers via des menus popup, ont Ă©tĂ© fusionnĂ©es en une seule classe car elles sont toujours utilisĂ©es ensemble. Cela simplifie le code pour l’affichage de ces menus, qui a quelques particularitĂ©s pour permettre une navigation confortable mĂȘme sur un disque dur un peu lent.

TV

L’application TV utilisĂ©e pour recevoir la TNT Ă  l’aide d’un tuner appropriĂ© a Ă©tĂ© dĂ©placĂ©e dans le paquet haiku_extras et n’est donc plus installĂ©e par dĂ©faut. La plupart des gens ne disposant pas d’un tuner compatible sur leur ordinateur, cette application Ă©tait source de confusion et de nombreuses questions sur le forum.

WebPositive

WebPositive est le navigateur web de Haiku. Il utilise le moteur WebKit développé conjointement par Apple, Igalia et Sony principalement.

En dehors de la mise Ă  jour du moteur vers une version plus rĂ©cente, WebPositive reçoit actuellement peu d’évolutions, les dĂ©veloppeurs Ă©tant malheureusement trop occupĂ©s par ailleurs. On peut toutefois mentionner une correction sur la barre de signets : celle-ci ne s’affichait jamais lorsque la langue du systĂšme Ă©tait autre chose que l’anglais.

Zip-O-Matic

Zip-O-Matic est un outil permettant de crĂ©er une archive zip facilement depuis le Tracker. Il a reçu une amĂ©lioration qui est en fait une correction d’un problĂšme qui existait depuis longtemps : l’archive crĂ©Ă©e est maintenant automatiquement sĂ©lectionnĂ©e dans le navigateur de fichier Ă  la fin du processus, ce qui permet de facilement la retrouver pour la renommer, la dĂ©placer ou l'envoyer Ă  son destinataire.

Haikuports

Haikuports est un projet indĂ©pendant de Haiku, il se charge d’alimenter le dĂ©pĂŽt de paquets. Au dĂ©part il s’agissait principalement d’un projet pour le portage de bibliothĂšque et de programmes venant d’autres systĂšmes (d’oĂč son nom), mais il est Ă©galement utilisĂ© pour la plupart des applications natives dĂ©veloppĂ©es pour Haiku.

Le dĂ©pĂŽt de paquets contient actuellement 4193 paquets, il est mis Ă  jour en continu par une petite Ă©quipe de bĂ©nĂ©voles qui ne sont pas forcĂ©ment tous dĂ©veloppeurs, mais tout de mĂȘme capables de faire les tĂąches de maintenance ainsi que le dĂ©veloppement de quelques patchs simples.

Il est impossible de lister toutes les mises à jour et ajouts, le projet HaikuPorts étant trÚs actif. Donc voici une sélection arbitraire de quelques nouveautés et mises à jour.

Applications natives

  • Mises Ă  jour de Renga (client XMPP), PonpokoDiff (outil de diff), 2pow (clone de 2048), StreamRadio (lecteur de podcasts), NetSurf (navigateur web lĂ©ger)

  • Genio, un IDE pour Haiku avec gestion de la complĂ©tion de code via le protocole LSP (compatible avec les outils dĂ©veloppĂ©s pour VS Code par exemple).
  • Ajout de HaikuUtils, un ensemble d’outils de dĂ©veloppement et de debug divers.
  • WorkspaceNumber, un replicant pour afficher le numĂ©ro du bureau actif dans la DeskBar.
  • KeyCursor, un outil pour contrĂŽler le curseur de souris Ă  l’aide du clavier.
  • BatchRename, un outil pour renommer automatiquement des fichiers par lot.

HaikuUtils

WorkspaceNumber

PonpokoDiff

PecoRename

2pow

BatchRename

Applications portées

  • Un gros travail a Ă©tĂ© fait sur le portage de KDE Frameworks et des applications l’utilisant. De trĂšs nombreuses applications Qt et KDE sont donc disponibles.
  • Du cĂŽtĂ© de GTK, il n’existait pas de version de GTK pour Haiku, le problĂšme a Ă©tĂ© rĂ©solu Ă  l’aide d’une couche de compatibilitĂ© avec Wayland qui n’implĂ©mente pas le protocole Wayland mais rĂ©implĂ©mente l’API de la libwayland. Les applications GTK arrivent petit Ă  petit, mais l’intĂ©gration est pour l’instant beaucoup moins bonne qu’avec Qt, qui dispose lui d’un vrai port utilisant les APIs natives directement. L’apparence des applications est trĂšs visiblement diffĂ©rente, certaines touches du clavier ne fonctionnent pas. C’est donc encore un peu expĂ©rimental.
  • Enfin, pour complĂ©ter les possibilitĂ©s d’outils graphiques, la bibliothĂšque Xlibe implĂ©mente les APIs de la libx11 (mais pas le protocole de communication de X) et permet de porter les applications FLTK par exemple, ainsi que celles utilisant directement la libx11. Il reste encore des problĂšmes avec les applications utilisant Tk (si vous connaissez Tk ou X, les dĂ©veloppeurs de Xlibe aimeraient bien un petit coup de main). En attendant, les applications Tk sont utilisables Ă  travers un portage de undroidwish, mais ça reste peu confortable.

Du cĂŽtĂ© des compilateurs et des langages de programmation : LLVM a Ă©tĂ© mis Ă  jour en version 17. GCC est disponible en version 13 et peut maintenant ĂȘtre utilisĂ© pour compiler du FORTRAN et de l’Objective-C. Les derniĂšres versions de Python sont disponibles, et en plus avec des performances amĂ©liorĂ©es. Node.JS est Ă©galement mis Ă  jour, ou si vous prĂ©fĂ©rez le langage R, vous le trouverez Ă©galement, avec son IDE associĂ© rkward.

Bien sĂ»r, la plupart des bibliothĂšques et outils disponibles sur d’autres systĂšmes sont aussi disponibles : ffmpeg (en version 6), Git, libreoffice, Wireshark


Mentionnons enfin un pilote FUSE pour monter des volumes réseau NFS, qui vient compléter les deux implémentations de NFS présentes dans le noyau (une obsolÚte qui implémente NFS2, et une plus récente implémentant NFS4, mais qui est instable et pas activement maintenue actuellement).

GCompris

DrawTerm

KDE Mah Jong

NetBeans

Frogatto

CudaText

Cantor

Panneaux de préférences

Appearance

Les prĂ©fĂ©rences « Appearance » permettent de configurer l’apparence du systĂšme et des applications : principalement les polices de caractĂšres et les choix de couleurs.

C’est ce dernier qui reçoit une mise Ă  jour en profondeur, avec l’ajout d’un mode automatique. Auparavant, chaque couleur utilisĂ©e par le systĂšme devait ĂȘtre configurĂ©e manuellement, ce qui permet un contrĂŽle trĂšs fin, mais demande de passer un certain temps Ă  faire des ajustements. Le mode automatique permet de configurer seulement 3 couleurs : le fond des fenĂȘtres, les barres de titres, et une couleur d’« accentuation ». Les autres couleurs et nuances sont calculĂ©es automatiquement Ă  partir de cette palette de base.

En particulier, il devient beaucoup plus facile de choisir un fond sombre pour se retrouver avec un systÚme en mode sombre, trÚs à la mode chez certain·e·s utilisateurices de Haiku.

Il est toujours possible d’activer le mode avancĂ© pour affiner les rĂ©glages si nĂ©cessaire (ou si vous aimez les interfaces graphiques bariolĂ©es et multicolores).

Le mode automatique dans l’application Appearance

La mĂȘme capture d’écran avec une configuration « mode sombre »

Keymap (disposition clavier)

L’application Keymap permet de configurer la disposition de touches du clavier. Le point qui a reçu un peu d’attention est la gestion de la configuration des touches modificatrices.

Haiku est un dĂ©rivĂ© de BeOS qui lui-mĂȘme a Ă©tĂ© au dĂ©part inspirĂ© de Mac OS. On conserve de cet hĂ©ritage l’utilisation des touches commande et option au lieu de meta et alt sur les claviers de PC. Mais BeOS et Haiku sont conçus pour ĂȘtre utilisĂ©s avec des claviers de PC. La touche commande qui prend la place de la touche ALT est donc celle utilisĂ©e pour la plupart des raccourcis claviers. Cela se complique si on essaie d’utiliser un clavier fabriquĂ© par Apple (les codes de touches renvoyĂ©s par le clavier pour des touches situĂ©es au mĂȘme endroit ne sont pas les mĂȘmes), ou encore si on a besoin d’une touche AltGr (historiquement utilisĂ©e comme touche option par BeOS, mais aujourd’hui ce rĂŽle est plutĂŽt attribuĂ© Ă  la touche windows apparue un peu plus tard). Une page sur le wiki de dĂ©veloppement de Haiku tente de rĂ©sumer l’historique et la situation actuelle.

La configuration des touches modificatrices est donc un sujet complexe, et il est probable que le comportement sera Ă  nouveau modifiĂ© plus tard. Quoi qu’il en soit, en attendant, l’application Keymap permet toutes les permutations possibles de configuration de ces touches.

Screen (Affichage)

Les prĂ©fĂ©rences d’affichage, en plus de permettre de changer la rĂ©solution d’écran, affichent quelques informations essentielles sur la carte graphique et l’écran en cours d’utilisation. Pour les Ă©crans, ces informations sont gĂ©nĂ©ralement extraites des donnĂ©es EDID, mais il y a une exception : les dalles d’affichage des PC portables n’implĂ©mentent en gĂ©nĂ©ral pas ce protocole. Les informations sont donc rĂ©cupĂ©rĂ©es par d’autres moyens parfois moins bien normalisĂ©s. Par exemple, l’identifiant du fabricant est un code Ă  3 lettres. En principe, les fabricants doivent s’enregistrer auprĂšs d’un organisme qui attribue ces codes, afin d’en garantir l’unicitĂ©.

Cependant, certains fabricants ne l’ont pas fait, et se sont choisi eux-mĂȘmes un code qui semblait inutilisĂ©. La base de donnĂ©es officielle rĂ©serve donc ces codes et en interdit l’utilisation, afin d’éviter des conflits. Il arrivait donc que le fabriquant d’un Ă©cran soit affichĂ© comme Ă©tant « DO NOT USE », ce qui a inquiĂ©tĂ© quelques utilisateurs de Haiku se demandant s’ils risquaient d’endommager leur matĂ©riel.

Ces entrĂ©es de la liste sont maintenant filtrĂ©es et remplacĂ©es par les noms des fabricants de panneaux d’affichages concernĂ©s (lorsqu’on sait de qui il s’agit).

Outils en ligne de commande

Haiku est fourni avec un terminal et un shell bash (par dĂ©faut, d’autres shells peuvent Ă©galement ĂȘtre utilisĂ©s). Les outils dĂ©finis dans la spĂ©cification POSIX sont fournis, ainsi que des complĂ©ments permettant d’utiliser les fonctionnalitĂ©s supplĂ©mentaires de Haiku.

df

La commande df affiche l’espace disque disponible sur chaque volume de stockage actuellement montĂ©.

Les colonnes de l’affichage ont Ă©tĂ© rĂ©organisĂ©es, pour ĂȘtre plus lisibles, et se rapprocher un peu du format spĂ©cifiĂ© par POSIX (mais pas complĂštement lorsqu’on lance la commande sans options particuliĂšres : des informations supplĂ©mentaires sont alors affichĂ©es).

filteredquery

L’outil filteredquery permet d’effectuer une requĂȘte sur les attributs Ă©tendus du systĂšme de fichiers (permettant de requĂȘter le systĂšme de fichiers comme une base de donnĂ©es, plutĂŽt que de naviguer de façon hiĂ©rarchique dans les dossiers), puis de filtrer le rĂ©sultat pour ne conserver que les rĂ©ponses contenues dans un sous-dossier spĂ©cifique. En effet, les requĂȘtes Ă©tant indĂ©pendantes de l’organisation des dossiers, il est nĂ©cessaire de faire ce filtrage par post-traitement des rĂ©sultats (ce qui reste tout de mĂȘme gĂ©nĂ©ralement plus rapide que de faire l’inverse : parcourir tous les fichiers d’un dossier pour trouver ceux correspondant Ă  un critĂšre particulier).

Cet outil n’a pas reçu de nouvelles fonctionnalitĂ©s, mais de nombreuses corrections et nettoyages qui le rendent vĂ©ritablement utilisable.

ping, traceroute, telnet, ftpd

Ces commandes liĂ©es Ă  des opĂ©rations sur le rĂ©seau ont Ă©tĂ© remplacĂ©es par les derniĂšres versions dĂ©veloppĂ©es par FreeBSD, permettant de bĂ©nĂ©ficier d’une version moderne, avec plus de fonctionnalitĂ©s et moins de bugs.

La commande ping6 est supprimĂ©e, car ping peut maintenant utiliser l’IPv6 aussi bien que l’IPv4.

pkgman

L’outil pkgman permet de tĂ©lĂ©charger et d’installer des logiciels et des mises Ă  jour.

Il a peu Ă©voluĂ©, mais on peut tout de mĂȘme noter l’utilisation d’un algorithme de tri « naturel » pour l’affichage des rĂ©sultats dans l’ordre alphabĂ©tique (par exemple, llvm12 sera affichĂ© aprĂšs llvm9).

Une fonction qui n’est toujours pas disponible dans pkgman est le nettoyage des dĂ©pendances non utilisĂ©es. Un script fourni dans le dĂ©pĂŽt Git de Haiku permet de rĂ©aliser manuellement une analyse des paquets installĂ©s sur le systĂšme pour dĂ©tecter ceux qui n’ont pas de dĂ©pendances, il faudra pour l’instant se contenter de cette solution.

strace

L’outil strace permet d’afficher les appels systĂšmes effectuĂ©s par une application, pour comprendre son interfaçage avec le noyau et investiguer certains problĂšmes de performances ou de mauvais comportements.

L’interfaçage avec le noyau pour extraire ces informations Ă©tant assez spĂ©cifique, l’implĂ©mentation de strace est faite Ă  partir de zĂ©ro, et ne partage pas de code avec la commande du mĂȘme nom disponible par exemple sous Linux.

strace est mis Ă  jour rĂ©guliĂšrement et en fonction des besoins des dĂ©veloppeurs de Haiku pour dĂ©coder et afficher de plus en plus d’informations. Par exemple, elle peut maintenant afficher le contenu des iovec (par exemple pour les fonctions readv ou writev), ainsi que les objets manipulĂ©s par wait_for_object et event_queue.

Un exemple de sortie de strace (traçant l’ouverture d’un fichier et le chargement d’une bibliothĂšque partagĂ©e) avant ces changements:

open(0x5, "plaintext", 0x2042, 0x0) = 0x8000000f () (49 us)
map_file("libicuuc.so.66 mmap area", 0x7f04c2675228, 0x6, 0x1ababd0, 0x1, 0x0, true, 0x3, 0x0) = 0x329a0 () (108 us)

et aprĂšs :

open(0x5, "plaintext", O_RDWR|O_NOTRAVERSE|O_CLOEXEC, 0x0) = 0x8000000f Operation not allowed (57 us)
map_file("libicuuc.so.66 mmap area", [0x0], B_RANDOMIZED_ANY_ADDRESS, 0x1ababd0, B_READ_AREA, 0x0, true, 0x3, 0x0) = 0x73e8 ([0x6392223000]) (135 us)

whence

La commande whence permettait de trouver dans le PATH un exĂ©cutable Ă  partir de son nom. Elle Ă©tait implĂ©mentĂ©e sous forme d’une fonction bash dans le fichier profile par dĂ©faut. Cependant, cette implĂ©mentation posait problĂšme pour charger le fichier profile avec d’autres shells, elle a donc Ă©tĂ© supprimĂ©e. La commande which peut ĂȘtre utilisĂ©e Ă  la place, puisqu’elle remplit un rĂŽle Ă©quivalent.

Serveurs

Les serveurs sont l’équivalent des daemons pour UNIX ou des services sous Windows : il s’agit d’applications lancĂ©es par le systĂšme pour rendre diffĂ©rents services et coordonner l’ensemble des applications.

app_server

app_server est le serveur graphique de Haiku, Ă©quivalent de X ou de Wayland. Il se distingue par un rendu graphique fait principalement cĂŽtĂ© serveur (pour les applications natives), ce qui permet de l’utiliser de façon fluide Ă  travers une connexion rĂ©seau.

Bien que ce soit le serveur graphique, et qu’il ait reçu plusieurs amĂ©liorations importantes, les diffĂ©rences sont subtiles. Elles sont toutefois importantes pour proposer un systĂšme qui semble rĂ©actif et confortable Ă  utiliser.

Un premier changement est une rĂ©architecture du code qui traite le rafraĂźchissement de l’écran. Ce rafraĂźchissement se fait en gĂ©nĂ©ral en plusieurs Ă©tapes, par exemple, si on dĂ©place une fenĂȘtre :

  • Le contenu de la fenĂȘtre dĂ©placĂ©e peut ĂȘtre directement recopiĂ© de l’ancienne position vers la nouvelle,
  • La zone oĂč se trouvait la fenĂȘtre auparavant doit ĂȘtre re-remplie avec ce qui se trouvait en dessous de la fenĂȘtre dĂ©placĂ©e. Cela peut ĂȘtre plusieurs morceaux de fenĂȘtres d’autres applications, qui vont devoir chacune rĂ©-afficher une partie de cette zone.

Le problĂšme Ă©tant que certaines applications peuvent mettre un peu de temps Ă  rĂ©pondre Ă  cette demande de rĂ©-affichage (par exemple parce qu’elles sont occupĂ©es ailleurs, ou alors parce que la zone Ă  redessiner est relativement complexe).

DiffĂ©rentes stratĂ©gies peuvent ĂȘtre mises en place dans ce cas : laisser Ă  l’écran le contenu obsolĂšte, ou remplir la zone en blanc en attendant que les donnĂ©es deviennent disponibles, par exemple. Ou encore, tout simplement ne rien mettre Ă  jour du tout tant que tout l’écran n’est pas prĂȘt Ă  ĂȘtre affichĂ©. Il faut faire un compromis entre la rĂ©activitĂ© (dĂ©placer la fenĂȘtre tout de suite), la fluiditĂ© (Ă©viter les clignotements de zones blanches) et la prĂ©cision (affichage d’information cohĂ©rente et Ă  jour).

Plusieurs modifications ont permis d’obtenir un meilleur compromis.

Dans un autre domaine, la police de caractĂšres par dĂ©faut « Noto Sans Display » a Ă©tĂ© remplacĂ©e par « Noto Sans », ce qui donne un affichage du texte lĂ©gĂšrement diffĂ©rent. La police « display » avait Ă©tĂ© choisie suite Ă  une mauvaise comprĂ©hension de la signification de ce mot en typographie : il signifie que c’est une police de caractĂšres Ă  utiliser pour des gros titres et autres textes courts. Il ne signifie pas que c’est une police Ă  utiliser sur un Ă©cran d’ordinateur. De toutes façons la police Noto Display n’est plus maintenue par Google et a disparu des derniĂšres versions du jeu de polices Noto.

Toujours dans le domaine des polices de caractĂšres, app_server sait maintenant charger les fichiers « variable fonts ». Ces fichiers contiennent plusieurs polices de caractĂšres dĂ©finies Ă  partir de glyphes de base, et d’algorithmes de transformation et de dĂ©formation (pour rendre une police plus ou moins grasse, plus ou moins italique
). Pour l’instant, app_server sait charger les valeurs de ces paramĂštres qui sont prĂ©configurĂ©es dans le fichier. Cela permet de rĂ©duire la place utilisĂ©e par les polices de caractĂšres sur le media d’installation de Haiku (c’est l’un des plus gros consommateurs d’espace disque, qui nous empĂȘche de faire tenir une version complĂšte de Haiku sur un CD de dĂ©monstration par exemple).

Plus tard, il sera Ă©galement possible de configurer plus finement ces paramĂštres pour gĂ©nĂ©rer des variantes intermĂ©diaires des polices de caractĂšres, ainsi que d’exploiter certaines polices qui offrent des paramĂštres configurables supplĂ©mentaires.

input_server

L’input_server se charge de lire les donnĂ©es venant des pĂ©riphĂ©riques d’entrĂ©e (clavier et souris) et de les convertir en Ă©vĂšnements distribuĂ©s aux applications. Il est extensible par des add-ons qui peuvent gĂ©nĂ©rer ou filtrer des Ă©vĂšnements, ce qui peut ĂȘtre utilisĂ© pour de l’accessibilitĂ© (Ă©muler une souris Ă  partir de touches du clavier), de l’automatisation (envoi de commandes prĂ©-enregistrĂ©es), du confort d’utilisation (bloquer le touchpad d’un ordinateur portable lorsque le clavier est en cours d’utilisation) et bien d’autres choses.

L’input_server a reçu des corrections de problĂšmes sur la gestion des rĂ©glages de souris, permettant en particulier d’utiliser des rĂ©glages diffĂ©rents pour plusieurs pĂ©riphĂ©riques (souris, touchpad), et que ceux-ci soient bien enregistrĂ©s.

registrar

Le serveur registrar suit les applications en cours de fonctionnement, et leur permet de communiquer entre elles au travers de l’envoi de messages. Il assure Ă©galement le suivi de la base de donnĂ©es des types MIME et des associations de types de fichiers avec les applications correspondantes.

L’implĂ©mentation de BMessageRunner, qui permet d’envoyer des messages pĂ©riodiques (par exemple pour faire clignoter le curseur des zones de texte Ă  la bonne vitesse), autorise maintenant des intervalles de rĂ©pĂ©tition en dessous de 50 millisecondes. Cela permet d’utiliser ce systĂšme pour des animations fluides de l’interface graphique, par exemple.

D’autre part, la liste des applications et documents rĂ©cemment lancĂ©s est maintenant limitĂ©e Ă  100 entrĂ©es. Cela Ă©vite un fichier qui grossit indĂ©finiment et finit par contenir surtout des vieilles informations sans intĂ©rĂȘt.

Kits

Le systĂšme Haiku fournit les mĂȘmes APIs que BeOS. Elles couvrent les usages basiques d’une application, et sont dĂ©coupĂ©es (dans la documentation de BeOS et de Haiku, au moins) en « kits » qui prennent chacun en charge une partie spĂ©cifique (interface graphique, multimĂ©dia, jeux vidĂ©os, accĂšs au matĂ©riel, etc).

Interface

L’interface kit est la partie de la bibliothùque standard qui se charge des interfaces graphiques.

 BColumnListView

BColumnListView est un ajout de Haiku par rapport Ă  BeOS. Il s’agit d’un Ă©lĂ©ment d’interface permettant de prĂ©senter une liste avec plusieurs colonnes, de trier les lignes selon le contenu de ces colonnes, et aussi d’avoir des items hiĂ©rarchisĂ©s avec la possibilitĂ© de plier et dĂ©plier une partie de l’arborescence.

Cette classe remplace avantageusement BListView et surtout BColumnListView, les classes historiques de BeOS, qui sont beaucoup plus limitées.

Un certain nombre de type de colonnes prĂ©dĂ©finis sont Ă©galement disponibles, ce qui facilite la construction d’interfaces prĂ©sentant les donnĂ©es de diffĂ©rentes applications avec le mĂȘme formatage.

La classe BColumnListView elle-mĂȘme n’a pas changĂ©. Par contre, les colonnes de type « taille » (pour afficher une taille en Kio, Mio, Gio
) et « date » utilisent la langue choisie dans les prĂ©fĂ©rences systĂšme au lieu d’un format anglais par dĂ©faut.

BTextView

BTextView est une classe permettant d’afficher une zone de texte Ă©ditable. Elle implĂ©mente les fonctionnalitĂ©s de base (curseur, sĂ©lection, retour Ă  la ligne automatique) ainsi que quelques possibilitĂ©s de mise en forme (couleurs, polices de caractĂšres).

BTextView peut Ă©galement ĂȘtre utilisĂ©e pour des zones de textes non Ă©ditables, souvent plus courtes. Cela permet de rĂ©utiliser une partie des algorithmes de mise en page et de formatage du texte dans diffĂ©rents contextes. Dans le cadre de l’utilisation du « layout system », une vue doit pouvoir indiquer sa taille minimale, maximale et optimale. Le « layout system » va ensuite calculer la meilleure disposition de fenĂȘtre possible pour satisfaire ces contraintes.

Le cas des zones de texte est particulier, car la hauteur optimale dĂ©pend du nombre de lignes de texte, qui lui-mĂȘme peut ĂȘtre plus ou moins grand si la largeur de la vue oblige Ă  ajouter des retours Ă  la ligne. Le « layout kit » prend en compte ce cas particulier, mais les algorithmes ne sont pas encore tout Ă  fait au point et peuvent conduire Ă  des rĂ©sultats inattendus dans certains cas. Un de ces cas particuliers sur les zones de texte non Ă©ditables a Ă©tĂ© corrigĂ©.

BMenu

La classe BMenu permet d’afficher un menu. Elle est utilisĂ©e de plusieurs façons, puisqu’on trouve des menus dans des barres de menu, dans des contrĂŽles de type « popup », ou encore en faisant un clic droit sur certains Ă©lĂ©ments de l’interface.

Les menus sont Ă©galement particuliers parce qu’ils peuvent d’étendre en dehors de la fenĂȘtre dont ils sont originaires. Ils sont donc implĂ©mentĂ©s sous forme de fenĂȘtres indĂ©pendantes. Mais cela pose un autre problĂšme : dans Haiku, chaque fenĂȘtre exĂ©cute son propre thread et sa propre boucle d’évĂšnements. Si on navigue dans un grand nombre de menus et de sous-menus, cela peut causer quelques problĂšmes de synchronisation et de performances.

Le code contient Ă©galement un grand nombre de cas particuliers pour, par exemple, aligner les raccourcis claviers et les flĂšches indiquant la prĂ©sence de sous-menus ente les diffĂ©rents items d’un menu, ou encore dĂ©tecter si un dĂ©placement de souris a pour but de sĂ©lectionner un autre menu (en dessous ou au-dessus de celui actif), ou bien plutĂŽt de naviguer vers un sous-menu.

Les nouveautés suivantes sont apparues cette année:

  • Correction de problĂšmes de race condition lors de l’ajout d’items dans un menu pendant qu’il est affichĂ© Ă  l’écran. Ce problĂšme se manifestait par exemple dans les menus affichant la liste des rĂ©seaux Wifi, qui sont mis Ă  jour en temps rĂ©el.
  • Finalisation de l’implĂ©mentation de la navigation au clavier (avec les flĂšches directionnelles) dans les menus.
  • Affichage des symboles graphiques UNICODE pour « backspace » (⌫) et « delete » (〈) si ces touches sont utilisĂ©es comme raccourcis clavier pour un item de menu.
  • Utilisation d’un algorithme de tri stable pour la fonction SortItems. Ce type d’algorithme prĂ©serve l’ordre relatif des items qui sont Ă©gaux d’aprĂšs la fonction de comparaison. Ce n’est pas le cas de certains algorithmes de tri classiques, notamment le quicksort. La consĂ©quence Ă©tait que trier un menu dĂ©jĂ  triĂ© pouvait changer l'ordre des items. C’était visible encore une fois sur le menu listant les rĂ©seaux Wifi, qui est triĂ© par puissance du signal reçu.

 BSpinner

BSpinner est un contrĂŽle permettant de choisir une valeur numĂ©rique, soit Ă  l’aide de boutons +/- pour modifier la valeur par incrĂ©ments, soit en entrant directement la valeur dans une zone de texte.

Il s’agit d’une extension de Haiku par rapport Ă  BeOS qui ne proposait pas cette fonctionnalitĂ©.

Cette classe est encore en cours de développement. Elle a reçu des améliorations pour désactiver correctement les boutons +/- lorsque la valeur atteint le minimum ou le maximum autorisé, et aussi une correction sur le message de notification envoyé lors des changements de valeurs du spinner, qui ne contenaient pas la bonne valeur.

rgb_color

La structure rgb_color permet de reprĂ©senter une couleur par la valeur de ses composantes rouge, vert, bleu (comme son nom l’indique) et alpha (comme son nom ne l’indique pas). Elle fournit Ă©galement un certain nombre de fonctions pour mĂ©langer des couleurs, les Ă©claircir ou les assombrir.

La mĂ©thode Brightness() dans la classe rgb_color implĂ©mentante maintenant l’algorithme perceptual brightness documentĂ© par Darel Rex Finley, qui donne des meilleurs rĂ©sultats que l’algorithme utilisĂ© prĂ©cĂ©demment (qui Ă©tait celui de la luminositĂ© dans l’espace de couleurs Y'IQ. La fonction perceptual_brightness devenue redondante est supprimĂ©e.

Cette mĂ©thode permet en particulier de dĂ©terminer si une couleur est « sombre » ou « claire », et ainsi de dĂ©cider si du texte affichĂ© par-dessus doit ĂȘtre blanc ou noir (comme dĂ©montrĂ© ici par exemple).

Locale

Le locale kit se charge de tous les aspects liés à la localisation : traductions des applications, formatage des messages en utilisant les rÚgles de pluralisation de chaque langue, formatage de dates, de nombres avec et sans unités, de pourcentages, nom des fuseaux horaires


Il utilise ICU pour implĂ©menter la plupart de ces fonctionnalitĂ©s, mais fournit une surcouche avec une API s’intĂ©grant mieux avec les autres kits.

La principale Ă©volution cette annĂ©e est l’implĂ©mentation de BNumberFormat, qui permet de formater des nombres. Elle permet de choisir une prĂ©cision (nombre de dĂ©cimales - pour les langues qui utilisent un systĂšme dĂ©cimal), d’afficher ou non des sĂ©parateurs de groupes (de milliers en français, mais par exemple en Inde la sĂ©paration se fait traditionnellement par multiples de 10 000).

Media

Le media kit se charge de tous les aspects multimedia.

Il se compose de deux parties. D’une part, un systĂšme de gestion de flux mĂ©dia temps rĂ©el, permettant de transfĂ©rer des donnĂ©es multimĂ©dia (son ou flux vidĂ©o par exemple) entre diffĂ©rentes applications qui vont les manipuler, le tout avec un certain contrĂŽle du temps de traitement ajoutĂ© par chaque opĂ©ration, pour tenter de minimiser la latence tout en Ă©vitant les vidages de tampons qui produiraient une interruption dans le flux. D’autre part, des classes permettant d’encoder et de dĂ©coder des fichiers mĂ©dia et d’en extraire des flux de donnĂ©es (encodĂ©es ou dĂ©codĂ©es).

C’est surtout cette deuxiĂšme partie qui a reçu quelques Ă©volutions. La version de ffmpeg utilisĂ©e pour le dĂ©codage de presque tous les formats audio et video est maintenant la derniĂšre version ffmpeg 6. Quelques autres problĂšmes (erreurs d’arrondis, gestion des tampons partiels en fin de fichier) ont Ă©galement Ă©tĂ© corrigĂ©s, ce qui permet de faire fonctionner Ă  nouveau le jeu BePac Deluxe qui est extrĂȘmement intolĂ©rant au moindre Ă©cart de comportement par rapport Ă  l’implĂ©mentation du Media Kit dans BeOS.

Support

Le support kit contient un ensemble de classes basiques mais indispensables : gestion des chaßnes de caractÚres, des tampons en mémoire, etc. Il fournit les briques de bases utilisées par les autres kits.

BDataIO

BDataIO est une classe abstraite avec des fonctions de lecture et d’écriture. Plusieurs autres classes sont des instances de BDataIO, par exemple BFile (reprĂ©sentant un fichier), mais aussi BMemoryIO (permettant d’accĂ©der Ă  une zone mĂ©moire).

Plusieurs autres classes acceptent BDataIO (ou sa sous-classe BPositionIO, qui ajoute la possibilitĂ© de se dĂ©placer Ă  une position donnĂ©e dans le flux) comme entrĂ©e ou comme sortie. Il est donc facilement possible de rĂ©aliser les mĂȘmes opĂ©rations sur un fichier, une zone de donnĂ©es en mĂ©moire, un socket rĂ©seau, ou tout autre objet susceptible de fournir une interface similaire.

BDataIO elle-mĂȘme n’a pas Ă©voluĂ©, mais deux de ses implĂ©mentations, BBufferedDataIO et BAdapterIO, ont Ă©tĂ© amĂ©liorĂ©es. Ces deux classes permettent de construire un objet BDataIO Ă  partir d’un autre, en ajoutant un cache en mĂ©moire pour accĂ©lĂ©rer les opĂ©rations ou encore pour rendre compatible avec BPositionIO un objet qui ne l’est pas.

Ces classes sont en particulier utilisĂ©es par l’application StreamRadio, qui implĂ©mente la lecture de podcasts en connectant directement le rĂ©sultat d’une requĂȘte HTTP (effectuĂ©e grace au network kit) dans un dĂ©codeur audio (via la classe BMediaFile du media kit). La mise en tampon permet de revenir en arriĂšre dans la lecture d’un Ă©pisode, de tĂ©lĂ©charger en avance les donnĂ©es qui vont ĂȘtre lues, et d’éviter de conserver inutilement en mĂ©moire les donnĂ©es qui sont dĂ©jĂ  lues par l’application.

BibliothĂšques C

Les « kits » mentionnĂ©s ci-dessus sont l’API en C++ utilisĂ©e par les applications Haiku.

Il existe aussi des APIs en C, en grande partie implémentant la bibliothÚque C standard et les fonctions décrites dans la spécification POSIX.

Libroot

Libroot implĂ©mente la bibliothĂšque standard C. Elle regroupe entre autres la libc, la libm, et la libpthread, qui sont parfois implĂ©mentĂ©es comme 3 bibliothĂšques diffĂ©rentes pour d’autres systĂšmes. Les Ă©volutions consistent Ă  complĂ©ter l’implĂ©mentation de la spĂ©cification POSIX, et Ă  suivre les Ă©volutions de cette derniĂšre ainsi que des nouvelles versions du langage C. On trouve Ă©galement des corrections de bugs dĂ©couverts en essayant de faire fonctionner de plus en plus d’applications sur Haiku, ce qui permet de mettre en Ă©vidence des diffĂ©rences de comportement avec d’autres systĂšmes.

  • Ajout de getentropy pour initialiser les gĂ©nĂ©rateurs de nombres alĂ©atoires
  • Correction de problĂšmes de locks au niveau de l’allocateur mĂ©moire lors d’un fork
  • Plusieurs corrections sur l’implĂ©mentation de locale_t, remplacement de code Ă©crit pour Haiku ou provenant de FreeBSD par une implĂ©mentation simplifiĂ©e mais suffisante, provenant de la bibliothĂšque C musl.
  • Ajout de static_assert en C11
  • Correction d’un crash lors de l’utilisation de certaines fonctions XSI
  • Ajout de stpncpy
  • La fonction open utilisĂ©e sur un lien symbolique pointant vers un fichier non existant peut maintenant crĂ©er le fichier cible.
  • Il est possible d’utiliser mmap sur un fichier plus grand que la mĂ©moire disponible sans avoir besoin de spĂ©cifier le flag MAP_NORESERVE
  • Utiliser rename pour renommer un fichier vers lui-mĂȘme ne retourne plus d’erreur (conformĂ©ment Ă  la spĂ©cification POSIX).
  • Ajout de pthread_sigqueue

Libnetwork

La libnetwork implĂ©mente les APIs nĂ©cessaire pour se connecter au rĂ©seau (sockets, rĂ©solution DNS
). Elle est sĂ©parĂ©e de la bibliothĂšque C pour des raisons historiques : l’implĂ©mentation de TCP/IP pour BeOS avait Ă©tĂ© rĂ©alisĂ©e entiĂšrement en espace utilisateur (le noyau n’offrant qu’une interface pour envoyer et recevoir des paquets ethernet sur la carte rĂ©seau). Cela a posĂ© des problĂšmes de compatibilitĂ© avec d’autres systĂšmes, et des problĂšmes de performance. Haiku est donc compatible avec la version "BONE" de BeOS, qui implĂ©mente la pile rĂ©seau dans le noyau.

  • Mise Ă  jour du rĂ©solveur DNS Ă  partir du code de NetBSD 9.3. PrĂ©cĂ©dement le code utilisĂ© Ă©tait celui du projet netresolv de NetBSD, mais ce projet n’a pas connu de nouvelles publications et le code est Ă  nouveau maintenu directement dans NetBSD sans publication sĂ©parĂ©e.
  • Correction d’un crash lors de l’utilisation de multicast IPv4

LibBSD

La libbsd implĂ©mente plusieurs extensions fournies par la libc de certains systĂšmes BSD. Elle est sĂ©parĂ©e de la bibliothĂšque C principale pour limiter les problĂšmes de compatibilitĂ©: certaines applications prĂ©fĂšrent fournir leur propre version de ces fonctions, ou d’autres fonctions avec le mĂȘme nom mais un comportement diffĂ©rent. Elles peuvent alors s’isoler en n’utilisant pas la libbsd pour Ă©viter toute interfĂ©rence.

LibGNU

De façon similaire à la libbsd, la libgnu fournit des fonctions qui sont disponibles dans la glibc (la bibliothùque C du projet GNU) mais ne font pas partie d’un standard (C ou POSIX).

  • Ajout de sched_getcpu pour savoir sur quel cƓur de CPU le thread appelant est en train de s’exĂ©cuter.
  • Ajout de pthread_timedjoin_np, pour attendre la fin de l’exĂ©cution d’un thread (comme pthread_join mais avec un timeout.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie de CrĂšme CRM en version 2.6

Le 5 août 2024 est sortie la version 2.6 du logiciel de gestion de la relation client CrÚme CRM (sous licence AGPL-3.0), environ 11 mois aprÚs Creme 2.5 (11 septembre 2023).

IcĂŽne de CrĂšme CRM

Au programme notamment, un systĂšme de notification, des amĂ©liorations pour le calendrier ou des filtres rĂ©servĂ©s aux rapports. Les nouveautĂ©s sont dĂ©taillĂ©es dans la suite de la dĂ©pĂȘche.

Sommaire

Description du logiciel

CrĂšme CRM est un logiciel de gestion de la relation client, gĂ©nĂ©ralement appelĂ© CRM (pour Customer Relationship Management). Il dispose Ă©videmment des fonctionnalitĂ©s basiques d’un tel logiciel :

  • un annuaire, dans lequel on enregistre contacts et sociĂ©tĂ©s : il peut s’agir de clients, bien sĂ»r, mais aussi de partenaires, prospects, fournisseurs, adhĂ©rents, etc. ;
  • un calendrier pour gĂ©rer ses rendez‐vous, appels tĂ©lĂ©phoniques, confĂ©rences, etc. ; chaque utilisateur peut avoir plusieurs calendriers, publics ou privĂ©s ;
  • les opportunitĂ©s d’affaires, gĂ©rant tout l’historique des ventes ;
  • les actions commerciales, avec leurs objectifs Ă  remplir ;
  • les documents (fichiers) et les classeurs.

CrĂšme CRM dispose en outre de nombreux modules optionnels le rendant trĂšs polyvalent :

  • campagnes de courriels ;
  • devis, bons de commande, factures et avoirs ;
  • tickets, gĂ©nĂ©ration des rapports et graphiques


L’objectif de CrĂšme CRM est de fournir un logiciel libre de gestion de la relation client pouvant convenir Ă  la plupart des besoins, simples ou complexes. À cet effet, il propose quelques concepts puissants qui se combinent entre eux (entitĂ©s, relations, filtres, vues, propriĂ©tĂ©s, blocs), et il est trĂšs configurable (bien des problĂšmes pouvant se rĂ©soudre par l’interface de configuration) ; la contrepartie est qu’il faudra sĂ»rement passer quelques minutes dans l’interface de configuration graphique pour avoir quelque chose qui vous convienne vraiment (la configuration par dĂ©faut ne pouvant ĂȘtre optimale pour tout le monde). De plus, afin de satisfaire les besoins les plus particuliers, son code est conçu pour ĂȘtre facilement Ă©tendu, tel un cadriciel (framework).

Du cÎté de la technique, CrÚme CRM est codé notamment avec Python/Django et fonctionne avec les bases de données MySQL, SQLite et PostgreSQL.

Principales nouveautés de la version 2.6

Voici les changements les plus notables de cette version :

Le nouveau systĂšme de notification

Depuis toujours CrĂšme possĂšde un systĂšme de MĂ©mentos (Reminders), qui permet de recevoir des e-mails pour vous prĂ©venir d’une Ă©chĂ©ance. Ce systĂšme est utilisĂ© par les Alertes & les ToDos ; par exemple vous recevez un e-mail lorsqu’une Alerte qui vous est attribuĂ©e va expirer dans 30 minutes. Et comme vous pouvez crĂ©er des Alertes dont la date d’expiration est un champ date de la fiche associĂ©e, cela permet par exemple d’ĂȘtre prĂ©venu qu’une activitĂ© importante Ă  laquelle vous participez va bientĂŽt avoir lieu.

Le nouveau systÚme de notification qui a été introduit amÚne 2 avancées principales :

  • les notifications envoyĂ©es ne sont pas limitĂ©es Ă  des e-mails, vous pouvez aussi les voir dans votre navigateur (donc sans quitter CrĂšme).
  • si les mĂ©mentos ont Ă©tĂ© retravaillĂ©s pour utiliser ce nouveau systĂšme, d’autres parties de CrĂšme en profitent aussi. Par exemple, une notification vous est envoyĂ©e si un administrateur a changĂ© votre mot de passe ; ou bien quand un job d’import CSV vient de s’achever.

Une notification web est arrivée

Chaque notification est associĂ©e Ă  un canal, et vous pouvez configurer les canaux pour savoir si la notification est envoyĂ©e dans le navigateur, par e-mail ou bien les 2. Si le canal n’est pas obligatoire, vous pouvez aussi choisir de ne pas recevoir les notifications du tout. Chaque utilisateur peut utiliser sa propre configuration si la configuration gĂ©nĂ©rale du canal ne lui convient pas.

La configuration des canaux

Améliorations du calendrier

  • Le composant JavaScript FullCalendar est passĂ© Ă  la version 5. MĂȘme si ce n’est pas la toute derniĂšre version (il faut dire qu’il y a pas mal de changements cassants entre chaque version), on profite de pas mal d’amĂ©liorations diverses.
  • Il est maintenant possible de configurer graphiquement le calendrier (premier jour de la semaine, plage horaire, jour travaillĂ©s
). Il y a une configuration globale utilisĂ©e par tout le monde, mais comme presque toujours dans Creme, il est possible de crĂ©er des configurations par rĂŽle.

La configuration des calendriers du module « ActivitĂ©s »

Filtres spécifiques aux Rapports

Les Rapports utilisent gĂ©nĂ©ralement un filtre, afin d’affiner leurs rĂ©sultats. Ces filtres sont les mĂȘmes que ceux qu’utilisent les vues en liste ; par exemple si vous faites un Rapport sur les Devis, il peut utiliser les filtres disponibles sur la liste des Devis.

Un problĂšme que cela entraĂźne est que beaucoup d’utilisateurs crĂ©ent des filtres un peu spĂ©cifiques afin de les utiliser dans leurs Rapports, mais ces filtres viennent « polluer » la vue en liste correspondante (car la sĂ©lection de filtres proposent de nombreux filtres non pertinents). Afin de corriger ce souci, il est dĂ©sormais possible de crĂ©er des filtres utilisables uniquement dans les Rapports. Les Rapports peuvent bien sĂ»r continuer Ă  utiliser les filtres classiques, mais les filtres spĂ©cifiques aux Rapports ne sont pas utilisables dans les vues en liste Ă©videmment.

La crĂ©ation d’un rapport avec un filtre spĂ©cifique sĂ©lectionnĂ©

Quelques autres améliorations notables

  • Python 3.12 est officiellement gĂ©rĂ©.
  • Dans le module facturation, vous pouvez maintenant configurer les statuts sĂ©lectionnĂ©s par dĂ©faut (dans les formulaires), ainsi que les statuts utilisĂ©s par les Factures lorsque leur numĂ©ro est gĂ©nĂ©rĂ©.
  • Un nouveau bouton, qui peut ĂȘtre mis sur la vue dĂ©taillĂ©e des Contacts, est disponible: « CrĂ©er un appel non abouti » (dĂ©tails).
  • La configuration des blocs d’un rĂŽle peut maintenant ĂȘtre crĂ©Ă©e en clonant la configuration d’un autre rĂŽle (les rĂŽles pouvant avoir des configurations assez proches, ça peut ĂȘtre un gain de temps apprĂ©ciable).
  • Les blocs basĂ©s sur OpenStreetMap sont maintenant utilisĂ©s dans l’installation par dĂ©faut (Ă  place de ceux basĂ©s sur GoogleMaps).
  • Un rĂŽle «Utilisateur normal» est crĂ©Ă© dans les nouvelles installations. Dans la mesure oĂč c’est une bonne chose que tout le monde ne soit pas connectĂ© en tant que super-utilisateur, ce rĂŽle devrait permettre de gagner du temps et servir au moins de base de travail.
  • Un bouton permettant de transformer un simple Contact en utilisateur a Ă©tĂ© ajoutĂ©. Auparavant il fallait fusionner ce Contact avec le Contact automatiquement crĂ©Ă© Ă  la crĂ©ation d’un utilisateur.
  • Les Graphes ont reçu de nombreuses amĂ©liorations : plus de champs sont disponibles en abscisse, plus de champs sont disponibles pour le filtrage, les couleurs associĂ©es aux petits modĂšles auxiliaires (du genre « Statut ») sont utilisĂ©es

  • La validation des URLs est dĂ©sormais moins stricte dans les champs informatifs. Cela posait pas mal de problĂšmes notamment lors des imports, les gens mettant rarement le « http:// Â» dans leur base de donnĂ©es.

Le futur

La prochaine version marquera notamment le passage Ă  Django 5.2, la future LTS qui sortira en avril 2025. À l’annĂ©e prochaine !

Commentaires : voir le flux Atom ouvrir dans le navigateur

24 ans de libcurl

Curl est un outil en ligne de commande destinĂ© Ă  rĂ©cupĂ©rer le contenu d’une ressource accessible par un rĂ©seau informatique et gĂ©rant de nombreux protocoles.

Curl est un outil essentiel pour de nombreux usages, pris en charge par une gamme trĂšs large de systĂšmes d’exploitation, d’architectures matĂ©rielles, de l’objet connectĂ© Ă  l’embarquĂ© spatial en passant par l’informatique classique ou les consoles de jeux. Il Ă©volue rapidement et frĂ©quemment, voir par exemple l’arrivĂ©e prochaine de HTTP3 pour curl dans Debian unstable (avec le backend gnutls). Son domaine d’utilisation pourrait encore s’étendre avec l’apparition de wcurl dans Debian et bientĂŽt dans le monde entier ?

Il y a 24 ans, une division du code entre une interface ligne de commande et une bibliothÚque a été faite.

(Cette dĂ©pĂȘche est principalement basĂ©e sur l’annonce anglophone par Daniel Stenberg, auteur principal de curl et libcurl ; dĂ©pĂȘche rĂ©digĂ©e sur un tĂ©lĂ©phone embarquant curl 7.80, pas vraiment la derniĂšre version
).

La premiĂšre version de libcurl, baptisĂ©e 7.1, date du 7 aoĂ»t 2000. La version de curl prĂ©cĂ©dente, la 6.5.2, pas encore sĂ©parĂ©e entre une interface ligne de commande et une bibliothĂšque. Il s’agit de l’écart le plus long entre deux versions de curl. La crĂ©ation de la bibliothĂšque a Ă©tĂ© trĂšs largement rĂ©alisĂ©e par Daniel Stenberg seul.

Il dĂ©crit son choix de division ainsi : c'Ă©tait juste une intuition et une conjecture. Je ne savais pas. Je n’avais pas fait de recherches sur cela ou autre chose. Je me suis juste lancĂ© en me disant qu’on verrait plus tard si j’avais raison ou tort.

Le nom de la bibliothĂšque a Ă©tĂ© choisi faute d’une meilleure idĂ©e. L’API a Ă©tĂ© dĂ©finie comme Ă©tant bas niveau (on peut toujours ajouter une API de plus haut niveau par-dessus), en observant ioctl(), fcntl() et les fonctions du genre. Le code est en C, langage de prĂ©dilection de l’auteur principal.

L’API a bien vieilli : 17 fonctions encore prĂ©sentes proviennent de la 7.1 ; elle est passĂ©e de 17 000 lignes Ă  171 000 ; elle a survĂ©cu aux rĂ©volutions HTTP/2 (transferts multiples multiplexĂ©s) et HTTP/3 (passer de TCP Ă  UDP).

L’usage a aussi bien progressĂ© depuis l’entrĂ©e dans PHP 4.0.2 comme premier binding (ici rendre utilisable en langage PHP), moins d’un mois aprĂšs la publication de la bibliothĂšque.

En 2002 a Ă©tĂ© ajoutĂ©e une API multi pour gĂ©rer des transferts parallĂšles concurrents de façon illimitĂ©e dans un mĂȘme thread.

Puis en 2006 vient en surplus le multi_action avec des mécanismes orientés événements, avec une boucle événementielle (comme epoll).

Les premiers changements douloureux sur l’interface binaire (ABI) ont entraĂźnĂ© une volontĂ© de stabilitĂ©, de ne jamais casser volontairement cette interface, et ce depuis 2006.

libcurl possĂšde des bindings vers au moins 65 langages de programmation, fonctionne sur au moins 103 systĂšmes d’exploitation et 28 architectures de processeur, est prĂ©sent dans les bibliothĂšques standard de langages de programmation (Python, Java, Rust ou .Net). Son ancien concurrent principal libwww n’est plus dĂ©veloppĂ©. Bref 18 ans de stabilitĂ© d’API et d’ABI.

L’utilisation de libcurl continue de croĂźtre (de plus en plus d’objets connectĂ©s notamment). Et curl de maniĂšre gĂ©nĂ©rale supporte rapidement les nouveaux protocoles et leurs Ă©volutions. À noter que l’auteur principal ne mentionne pas dans ses projections ce qui me semble le plus gros risque pour Curl/libcurl, la difficultĂ© d’avoir une personne prĂȘte Ă  lui succĂ©der si quand cela s’avĂ©rera nĂ©cessaire.

Commentaires : voir le flux Atom ouvrir dans le navigateur

SPIP 4.3 : une sortie estivale

Ne redoutant pas la canicule, le sympathique outil de gestion de contenu de sites web (CMS) Ă  l’écureuil, SPIP, vient de sortir en version 4.3. Au menu, entre autres : des amĂ©liorations de l’interface privĂ©e, de la conformitĂ© HTML5 et des performances des filtres pour les images.

Logo de SPIP

Petite sélection des changements apportés par cette version.

Sortie, versions et php

SPIP 4.3 est sortie le 26 juillet 2024, suivie quelques jours aprùs d’une version de maintenance, la 4.3.1 qui est celle que vous devez adopter pour votre site. Elle est compatible de PHP 7.4 à PHP 8.3.

Les versions antĂ©rieures suivantes bĂ©nĂ©ficient encore de correctifs de sĂ©curitĂ© :

  • SPIP 4.2.15, versions de PHP supportĂ©es 7.4 Ă  8.3,
  • SPIP 4.1.17, versions de PHP supportĂ©es 7.4 Ă  8.1.

Si votre site est sous une version encore plus antĂ©rieure, il est trĂšs fortement recommandĂ© de le passer en SPIP 4.3.1. Si vous ne savez pas trop comment procĂ©der, n’hĂ©sitez pas Ă  lancer un appel Ă  l’aide sur le site discuter.spip.net. Vous trouverez sĂ»rement des gens pour vous aider.

SPIP pense aux webmestres et aux personnes qui animent un site Internet

La version 4.3 voit l’apparition, dans la barre du haut de l’interface privĂ©e, d’un bouton CrĂ©er qui ouvre un menu dĂ©roulant pour crĂ©er un nouveau contenu, article, rubrique, site rĂ©fĂ©rencĂ©, etc.

Haut de l’interface privĂ©e et son menu dĂ©roulant.

Cette barre est aussi rĂ©organisĂ©e, la zone de recherche est Ă  cĂŽtĂ© du nouveau bouton tandis que l’aide et le nom de la personne connectĂ©e passe Ă  droite. Si vous rĂ©digez vos articles avec LibreOffice et utilisez le superbe plugin ODT2SPIP, ce bouton ne vous servira Ă  rien. Il est prĂ©fĂ©rable de continuer logiquement Ă  passer par Édition > Rubrique > Nom de la rubrique > Nouvel article.

Le formulaire de changement de statut d’un article a Ă©tĂ© revu. On ne risque plus d’oublier d’appuyer sur le bouton Changer par exemple, car il est intĂ©grĂ© au formulaire.

Le nouveau formulaire de changement de statut d’article dans SPIP 4.3
À gauche la version 4.2, à droite le formulaire de la 4.3.

Il est possible d’indiquer le fuseau horaire du site au niveau de Configuration > IdentitĂ© du site.

Le menu dĂ©roulant d’indication de fuseau horaire

Et enfin, si on peut dire, la sortie des mises Ă  jour fera l’objet d’un message aux webmestres dans l’interface privĂ©e avec un bouton pour y procĂ©der via spip_loader, et mĂȘme d’un courriel. Plus aucune excuse pour ne pas mettre un site Ă  jour ! Si la notification par courriel vous ennuie, c’est dĂ©sactivable. Pas trĂšs facilement, cela demande de modifier la constante _MAJ_NOTIF_EMAILS dans le fichier config/mes_options.php, mais c’est tout l’intĂ©rĂȘt du systĂšme justement.

Corrections et améliorations

La conformité HTML5 est améliorée.

Les performances du plugin-dist (plugin de la distribution de SPIP) Filtre Images ont Ă©tĂ© optimisĂ©es : certains des filtres images sont dix fois plus rapides grĂące Ă  l’utilisation des fonctions natives de PHP GD. Il y a aussi des nouveaux filtres d’images, |image_oriente_selon_exif, |image_recadre qui permettent de rĂ©orienter une image selon son exif.

Sinon, tirĂ© des notes de version :

  • ecrire_fichier() a Ă©tĂ© revu,
  • il est possible de combiner les critĂšres {pagination} et {limit},
  • (#PRODUIRE_FOND) permet de ne pas conserver un double des fichiers calculĂ©s inchangĂ©s,
  • la bibliothĂšque mediaelement a Ă©tĂ© mise Ă  jour.

Les notes de version sont plus disertes.

Mettre Ă  jour, plugins, etc.

Avant de mettre Ă  jour le site, il faut commencer par mettre Ă  jour les plugins : Configuration > Gestion des plugins ce qui rendra la tĂąche plus facile. Vos plugins seront ainsi compatibles avec la nouvelle version de SPIP. La bibliothĂšque des plugins compatibles SPIP 4.3 recense environ sept-cent plugins.

Pour la mise Ă  jour, le plus simple est de passer par spip_loader.php qui doit ĂȘtre installĂ© Ă  la racine du site. Il faut ĂȘtre connectĂ© au site pour faire la mise Ă  jour. Si vous n’avez pas spip_loader, c’est peut-ĂȘtre le moment de l’ajouter Ă  votre site.

Sinon, la procĂ©dure lourde : tĂ©lĂ©charger SPIP 4.3.1, le dĂ©compresser et ensuite le tĂ©lĂ©verser sur le serveur non sans avoir fait les sauvegardes nĂ©cessaires.

Si la version de votre site est ancienne, il faudra sans doute procĂ©der Ă  une montĂ©e en version progressive, et vĂ©rifier que le squelette du site est compatible avec les versions plus rĂ©centes. Mais cela peut aussi ĂȘtre le moment de modifier l’interface publique de votre site. Ne pas oublier de sauvegarder, les dossiers img et squelette ainsi que la base avant !

Un grand merci à celles et à ceux qui font de SPIP un outil si agréable à utiliser.

Commentaires : voir le flux Atom ouvrir dans le navigateur

S.M.A.R.T. badblocks badblocks2

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) est un systĂšme de surveillance intĂ©grĂ© aux disques durs modernes et aux disques SSD. Il Ă©value en continu le bien-ĂȘtre du pĂ©riphĂ©rique tout en anticipant les Ă©ventuels dysfonctionnements. Il utilise une rĂ©serve de secteurs de rechange pour rĂ©parer quand il dĂ©tecte un secteur en anomalie.
Le programme Linux badblocks teste les blocs d’un mĂ©dia par Ă©criture+relecture+comparaison. À l’origine il servait Ă  mettre les blocs mauvais en liste noire dans le file-system.

Est-il utile de nos jours de vĂ©rifier ses mĂ©dias ?
Comment se situe S.M.A.R.T. par rapport Ă  l’outil badblocks ?
Comment vĂ©rifier un mĂ©dia en tenant compte de sa surveillance par S.M.A.R.T. ?

C'est ce que nous allons voir dans la suite de la dĂ©pĂȘche.

smart-drive

Sommaire

Préambule

Quelle prĂ©caution prendre vis-Ă -vis du risque de mauvaise qualitĂ© du stockage, quand je viens d’acheter un mĂ©dia (disque SSD, disque rotatif, clĂ© USB, carte SD) ou un appareil sous Linux Ă©quipĂ© d’un espace de stockage dont j’ignore la technologie ?
Sans ĂȘtre parano, je me dis qu’avant d’envoyer des donnĂ©es prĂ©cieuses sur l’espace de stockage, c’est le moment de faire certaines vĂ©rifications. Mais quelles vĂ©rifications ? Qu’est-il possible de faire ?

Sur un média connectable, tout est possible.
Sur un appareil neuf sans systÚme ni données, tout est possible en utilisant une distrib Live.
Sur les autres, ça dĂ©pend, il y en a oĂč on n’a mĂȘme pas un accĂšs root pour lancer une vĂ©rification « dure » ou « molle » (Android, routeur
).

En Ă©crivant cet article, je me suis rendu compte que je ne me suis jusqu’ici jamais posĂ© de questions sur l’opportunitĂ© de vĂ©rifier les espaces de stockage de mes tĂ©lĂ©phones, PC portables, routeurs, box
 bref tous les appareils vendus prĂȘts Ă  ĂȘtre utilisĂ©s. Pourtant, que sais-je de la vĂ©rification faite par celui qui a installĂ© le systĂšme ? Rien, et j’utilise, sans penser que l’espace de stockage de l’appareil n’est ni plus ni moins robuste que celui du PC Linux que j’ai installĂ© derniĂšrement, mais que j’ai vĂ©rifiĂ© consciencieusement.

S.M.A.R.T.

S.M.A.R.T. est un systĂšme de surveillance intĂ©grĂ© aux disques durs modernes et aux disques SSD. Il Ă©value en continu le bien-ĂȘtre du pĂ©riphĂ©rique tout en anticipant les Ă©ventuels dysfonctionnements. Il surveille un maximum de paramĂštres (tempĂ©rature, temps de fonctionnement, vitesse de rotation pour les disques magnĂ©tiques, nombre de dĂ©marrages et d’arrĂȘts
) et dĂ©pend de l’expĂ©rience du fabricant. La rĂ©paration de secteurs utilise une rĂ©serve de secteurs et le mapping entre secteurs logiques et secteurs physiques.

On pourrait se dire que, de nos jours, les supports sont fiables et testĂ©s par les intĂ©grateurs. D’autres considĂšrent que la technologie S.M.A.R.T. suffit
 et c’est bien commode de ne plus se soucier de la fiabilitĂ© des supports de stockage. Mais Ă  la premiĂšre galĂšre due Ă  un mĂ©dia dĂ©faillant, tu Ă©volueras dans ta confiance.

Sais-tu seulement sur lesquels de tes mĂ©dias S.M.A.R.T. est installĂ© et actif ?
Si tu utilises un RaspberryPi, ton mĂ©dia systĂšme est
 une carte SD. Elle n’a pas S.M.A.R.T.. Idem pour l’extension de mĂ©moire que tu as ajoutĂ©e Ă  ton tĂ©lĂ©phone.

Je t’invite Ă  lire la page Wikipedia sur S.M.A.R.T. et son paragraphe « Standard, implĂ©mentation et limitations ». Que fait et que ne fait pas le S.M.A.R.T. qui fonctionne sur le disque du PC qui te permet de lire cet article ? Difficile de savoir. Comment est-il configurĂ© ? Fais un sondage autour de toi Ă  ce sujet et tu seras pris pour un parano.

Sur ton PC, sais-tu qu’il y a une option S.M.A.R.T. dans le BIOS (ou UEFI) ? Sais-tu qu’il y a un service smartd dans ton Linux ? As-tu compris aussi qu’avec du RAID il n’est pas toujours opportun d’activer S.M.A.R.T. ? Les communications entre S.M.A.R.T. RAID et l’O.S. peuvent se passer plus ou moins bien selon la qualitĂ© de ces Ă©lĂ©ments. Il te faut bien comprendre ce qu’il est possible de paramĂ©trer et deviner comment ça marche derriĂšre.

Si tu demandes une vĂ©rification Ă  S.M.A.R.T. par smartctl, sais-tu ce qu’il fait ? Se contente-t-il de lire ou fait-il un test en Ă©criture ?

Enfin, quand S.M.A.R.T. dĂ©tecte qu’un secteur est devenu dĂ©fectueux, il ne peut pas deviner quels bits sont dĂ©faillants, aussi il renseigne le secteur de secours avec ce qu’il peut, qui est l’état du secteur aprĂšs dĂ©faillance. S.M.A.R.T. a ses limites, il rĂ©pare comme il peut. S’il est configurĂ© pour, il alerte quand il prĂ©voit de la dĂ©faillance, mais sais-tu reconnaĂźtre ses alertes ? As-tu compris ce que tu dois faire en rĂ©ponse aux alertes ?

Je t’invite Ă  apercevoir la complexitĂ© de prise en main de S.M.A.R.T. en faisant quelques recherches sur ces listes de mots :

smartctl howto
smartctl configure self test
smartd howto

et tu verras que ce n’est pas simple à comprendre et à configurer.

Tu peux te dire naĂŻvement que tout est bien configurĂ© par dĂ©faut et que tes mĂ©dias seront toujours impeccables. Sinon, il va falloir investir en temps et faire quelques essais. À toi de choisir.

S.M.A.R.T. est une belle avancée technologique, mais il est dangereux de lui attribuer des mérites indus.

BADBLOCKS

Le programme Linux badblocks a Ă©tĂ© crĂ©Ă© en mĂȘme temps que le paquetage e2fsprogs (mkfs.ext2, mkfs.ext3, mkfs.ext4, fsck.ext2
). À l’époque S.M.A.R.T. n’existait pas et il n’y avait pas de mapping entre les adresses logiques et physiques. C’est le file-system qui devait tout gĂ©rer quand il dĂ©tectait un bloc dĂ©fectueux, notamment la mise du bloc en liste noire. C’est pour cela que mke2fs et e2fsck lancent un badblocks « dur » quand on leur spĂ©cifie deux fois l’option -c. Cela dure trÚÚÚs longtemps car les paramĂštres par dĂ©faut ne sont plus bien optimisĂ©s.

Depuis l’arrivĂ©e de S.M.A.R.T., certains considĂšrent badblocks comme obsolĂšte. Mais qui peut affirmer que TOUS les mĂ©dias utilisĂ©s par TOUS les usages de Linux sont Ă©quipĂ©s de S.M.A.R.T. ?
Peut-ĂȘtre qu’au M.I.T. avec un rĂ©seau de classe A, on ne s’abaisse pas Ă  utiliser une clĂ© USB ou un RaspberryPi. Je me demande dans quel type de bulle vivent ceux qui pensent que S.M.A.R.T. est sur tous les mĂ©dias de stockage.

Quand j’achĂšte une clĂ© USB, je lui passe badblocks dessus et s’il y a des mauvais blocs, je la rends et je me fais rembourser.
J’ai essayĂ© d’interroger les fonctionnalitĂ©s S.M.A.R.T. de diverses clĂ©s USB et je n’ai rien obtenu, comme si cette utilitĂ© n’y Ă©tait pas installĂ©e :

# smartctl --scan-open
# smartctl -x /dev/sdc
# smartctl -i -d scsi -T verypermissive /dev/sdc

Mes recherches sur Internet n’ont abouti Ă  rien qui me permette de voir une rĂ©ponse de la part de clĂ©s USB. Peut-ĂȘtre que si j’achetais (cher) des clĂ©s USB de trĂšs haute qualitĂ©, j’y trouverais S.M.A.R.T. ?

Comme l’intervenant du message #25 de ce rapport de bug (en), je pense que badblocks est loin d’ĂȘtre obsolĂšte.
J’ai envie d’imiter le message #20 juste au-dessus en disant : « Je dois demander --- ***pourquoi*** vous (et d’autres personnes) mettez de l’essence dans vos voitures en 2024 ? L’essence en tant que chose a commencĂ© Ă  devenir inutile pour les voitures vers 2011, lorsque la voiture Ă©lectrique s’est rĂ©pandue, et que les batteries sont devenues suffisamment Ă©nergĂ©tiques pour faire rouler des vĂ©hicules sur des centaines de km Â».

Je t’invite aussi Ă  une recherche sur la liste de mots « courbe en baignoire composants Ă©lectroniques Â». Le programme badblocks peut servir au dĂ©verminage. On sait en dĂ©tail ce qu’il fait. Son rĂ©sultat est clair, contrairement aux implĂ©mentations propriĂ©taires de S.M.A.R.T..
Sans dĂ©verminage (rodage) on court le risque de subir trop tĂŽt une rĂ©paration discrĂšte incomplĂšte : le secteur rĂ©parĂ© sera physiquement bon mais son contenu sera corrompu. La consĂ©quence peut ĂȘtre catastrophiquement discrĂšte. Par exemple, un fichier LibreOffice est une archive zip (compressĂ©e), la corruption d’un seul bit y a des consĂ©quences imprĂ©visibles.

De mon cĂŽtĂ©, j’utilise badblocks pour tester les mĂ©dias nouvellement acquis et pour effacer ceux bons Ă  rĂ©former. Ce programme permet aussi la chasse aux mĂ©dias « fake-size », du genre carte SD de 1To qui accepte de recevoir 1To de fichiers, mais qui ne stocke en rĂ©alitĂ© que 8Go. On trouve de nos jours (juin 2024) des clĂ©s USB de 16To vendues au prix de 5 € ! L’application h2testw sous windows et son Ă©quivalent f3 sous linux sont spĂ©cialement conçus pour cette chasse. Le microprogramme de ces clĂ©s USB ou de ces disques a Ă©tĂ© dĂ©tournĂ© pour dĂ©clarer un espace de stockage falsifiĂ©. C’est de l’escroquerie.

BADBLOCKS2

Mon usage du badblocks du paquetage e2fsprogs-1.47.0 m’a amenĂ© Ă  y caractĂ©riser un bug reproductible en novembre 2023. J’ai eu l’intention de remonter le bug aux Ă©quipes ad hoc de ma distribution (Mageia) mais je me suis d’abord mis Ă  regarder le source.

J’y ai trouvĂ© l’origine du bug, et j’ai trouvĂ© d’autres bugs. En ajoutant des instructions de traçage et de simulation d’erreurs du mĂ©dia, j’ai mis en Ă©vidence encore d’autres bugs. De fil en aiguille, j’ai fini par retoucher profondĂ©ment certains algorithmes, et j’ai appelĂ© badblocks2 cette nouvelle version. J’y ai ajoutĂ© diverses options faciles Ă  programmer et commodes Ă  l’usage. J’ai copieusement testĂ©.

Si tu veux essayer badblocks2 et/ou prendre connaissance de ma dĂ©marche, je livre tout sur mon site. Tu verras pourquoi je me suis rabattu sur la crĂ©ation d’une nouvelle version, plutĂŽt que de faire remplacer l’ancienne (ce qui aurait profitĂ© Ă  tous).
Tu peux te faire une idée des fonctionnalités ajoutées en consultant les *.8.txt .
Tu peux t’inspirer des tests dĂ©crits dans le fichier Alire.txt, tester diverses valeurs pour -c -t et voir l’effet sur la vitesse de traitement. Tu peux mĂȘme jouer Ă  arracher la clĂ© en cours de test (Ctrl-C pour arrĂȘter) !

J’espùre que ce programme servira à d’autres que moi.

En pratique

Voici une suggestion d’actions Ă  faire lors de l’acquisition d’un nouveau mĂ©dia (disque SSD, disque rotatif, clĂ© USB, carte SD
). Les commandes doivent ĂȘtre lancĂ©es par l’opĂ©rateur root.
Avec cela, quand dans quelques années tu satureras le média, tu seras sûr que le dernier secteur utilisé aura été déverminé avant la mise en production.

ATTENTION : les usages de badblocks proposés sont destructifs pour les données présentes sur le média. Le mode non-destructif du badblocks actuel comporte des bugs (version e2fsprogs-1.47.0). Celui de badblocks2 a été corrigé.
ATTENTION : la liste des mauvais blocs renvoyée par le badblocks actuel est fausse (version e2fsprogs-1.47.0). Le nombre de mauvais blocs est correct. La liste renvoyée par badblocks2 est correcte.
ATTENTION : le paramĂštre device du mĂ©dia est supposĂ© ĂȘtre /dev/sdc. Ne pas se tromper, au risque d’effacer un autre mĂ©dia en cours d’usage.

D’abord dĂ©terminer le block-size du noyau, c’est une bonne valeur Ă  prendre comme block-size du file-system :

# blockdev --getbsz /dev/sdc

Dans ce qui suit, je suppose que la valeur 4096 a été renvoyée.

Ensuite dĂ©terminer si S.M.A.R.T. est sur le mĂ©dia :

# smartctl --scan-open
# smartctl -x /dev/sdc
# smartctl -i -d scsi -T verypermissive /dev/sdc

Si S.M.A.R.T. n’est pas sur le mĂ©dia

Passer badblocks2 pour voir s’il y a 0 ou peu de mauvais blocs :

# badblocks2 -b 4096 -c 32768 -wrrvvss -t r -t r -e 40 -o /tmp/sdc.bb /dev/sdc

L’option -e peut ĂȘtre supprimĂ©e ou modifiĂ©e selon la limite du nombre de mauvais blocs considĂ©rĂ©e acceptable ; les options -t peuvent ĂȘtre diffĂ©rentes selon la sĂ©vĂ©ritĂ© souhaitĂ©e (voir le man).

S’il y a trop de mauvais blocs, refuser d’utiliser le mĂ©dia (->garantie ?).

S’il y a 0 mauvais bloc on peut formater en toute tranquillitĂ© (partitionner Ă©ventuellement avant) :

# mkfs.ext? -b 4096 ... /dev/sdc

S’il y a quelques mauvais blocs, sans que la limite -e soit atteinte, on pourra formater en utilisant la liste sauvĂ©e de mauvais blocs :

# mkfs.ext? -b 4096 -l /tmp/sdc.bb ... /dev/sdc

Si l’on veut partitionner, il faudra recalculer la liste des mauvais blocs de chaque partition avant de formater (remplacer sdc par sdc1 dans les commandes badblocks2 et mkfs.ext? ci-dessus).

Si l’on veut formater en vfat exfat ou f2fs (clĂ©s USB en gĂ©nĂ©ral), il n’est pas possible d’utiliser la liste des mauvais blocs dĂ©tectĂ©s ; la seule solution est de refuser d’utiliser le mĂ©dia s’il y a des mauvais blocs (ou alors de restreindre l’usage Ă  une zone saine
 Ă  localiser)

Si S.M.A.R.T. est sur le média

On peut vĂ©rifier son activation par smartctl :

# smartctl -i /dev/sdc

Ensuite, il faut interroger le mĂ©dia sur l’état et les capacitĂ©s de son S.M.A.R.T. :

# smartctl -a /dev/sdc

Noter le nombre de rĂ©allocations faites et prĂ©vues :

# smartctl -a /dev/sdc | grep -i _sector

Puis faire une passe de dĂ©verminage, en Ă©criture+lecture car on ne sait pas si l’écriture seule suffit ; ne pas utiliser l’option -p de badblocks ; les options -t peuvent ĂȘtre diffĂ©rentes selon la sĂ©vĂ©ritĂ© souhaitĂ©e (voir le man) :

# badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb1 /dev/sdc

Faire une passe de vĂ©rification, il ne devrait plus y avoir de mauvais blocs :

# badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb2 /dev/sdc

S’il y a encore des mauvais blocs, c’est soit que le dĂ©verminage n’est pas terminĂ©, soit que le mĂ©dia et/ou son S.M.A.R.T. sont foireux (il ne dĂ©tecte pas les mauvais secteurs vus par badblocks2 ou les secteurs de rĂ©serve sont mauvais ou
 pire) ; relancer des passes une par une jusqu’à ce qu’il n’y ait plus de mauvais bloc dĂ©tectĂ©.

Re-interroger S.M.A.R.T. pour voir l’évolution des rĂ©allocations :

# smartctl -a /dev/sdc | grep -i _sector

Ensuite on peut formater (partitionner Ă©ventuellement avant) en considĂ©rant que le mĂ©dia a remappĂ© tous ses mauvais secteurs et est donc impeccable pour l’utilisation :

# mkfs.ext? -b 4096 ... /dev/sdc

Par la suite, on pourra de temps en temps consulter l’état de santĂ© du mĂ©dia en service :

# smartctl -H /dev/sda

Si on est courageux, on peut lancer de temps en temps un contrÎle du média par son S.M.A.R.T.
Si on est encore plus courageux, on configurera smartd pour que ces vérifications soient automatiques et pour que les alertes soient envoyées par courriel.

Attention à la communication entre l’O.S., S.M.A.R.T. et RAID (niveau carte mùre / niveau OS / contrîleurs bas de gamme), voir la page Wikipedia sur S.M.A.R.T..

Que l’esprit « aware » soit en toi, sur tes donnĂ©es et sur ton espace de stockage

Commentaires : voir le flux Atom ouvrir dans le navigateur

EnquĂȘte de l’UE sur Microsoft pour abus de position dominante avec Teams

La Commission europĂ©enne a publiĂ© un avis prĂ©liminaire selon lequel Microsoft aurait enfreint les rĂšgles antitrust de l’UE en liant Teams Ă  ses suites bureautiques, Office 365 et Microsoft 365, avec pour effet de limiter la concurrence sur le marchĂ© des outils de communication et de collaboration.

La Commission a constatĂ© que Microsoft est en position dominante sur le marchĂ© mondial des suites bureautiques SaaS pour un usage professionnel. Elle s’inquiĂšte du fait que, depuis au moins avril 2019, Microsoft inclut Teams dans ses suites bureautiques en SaaS, restreignant ainsi la concurrence sur le marchĂ© des produits de communication et de collaboration. Cette stratĂ©gie empĂȘche les concurrents de Teams de rivaliser efficacement, rĂ©duisant ainsi l’innovation au dĂ©triment des clients dans l’Espace Ă©conomique europĂ©en.

La Commission juge insuffisants les changements apportĂ©s par Microsoft Ă  la distribution de Teams aprĂšs l’ouverture de l’enquĂȘte en juillet 2023. Si ces accusations sont confirmĂ©es, elles constitueraient une violation de l’article 102 du TraitĂ© sur le fonctionnement de l’Union europĂ©enne (TFUE), qui interdit l’abus de position dominante. La Commission pourrait alors interdire ces pratiques et imposer une amende pouvant atteindre 10 % du chiffre d’affaires annuel mondial de l’entreprise, ainsi que des remĂšdes pour rĂ©tablir la concurrence.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie du logiciel de généalogie Ancestris version 12

Le logiciel gratuit et illimité de généalogie Ancestris vient de sortie en version 12. Il est placé sous licence GPL.

La v12 en quelques chiffres : plus de 1700 commits, trois ans de dĂ©veloppement, et elle fonctionne sur tous les systĂšmes d’exploitation qui permettent d’installer Java de la version 8 Ă  la version 22.

NouveautĂ©s, Ă©volutions, corrections et traductions sont dĂ©taillĂ©es en seconde partie de dĂ©pĂȘche.

Logo

Nouveautés

  • Gestion du GEDCOM 7 (complet pour l’éditeur GEDCOM et l’éditeur Cygnus).
  • Affiche toutes les entitĂ©s (mĂȘme les entitĂ©s non conformes) dans l’explorateur de GEDCOM et dans l’éditeur GEDCOM.
  • Nouvelle traduction en hongrois
  • Enregistrer sous : copie exacte ou partielle
  • PossibilitĂ© de choisir l’inhumation Ă  la place de la date de dĂ©cĂšs pour les affichages.
  • Ajout d’une option pour zoomer l’ensemble de l’application.
  • Choix du rĂ©pertoire de sauvegarde
  • Imports spĂ©cifiques pour : Elie, Aldfaer, RootsMagic, Ancestry.com, Brother's Keeper
  • Ajout d’un gestionnaire de mĂ©dia
  • Ajout d'un convertisseur de GEDCOM
  • Refonte du module de recherche de doublons
  • RĂ©Ă©criture du rapport calendrier
  • RĂ©Ă©criture du rapport narratif
  • RĂ©Ă©criture du rapport circulaire 10 gĂ©nĂ©rations avec sortie SVG.
  • Ajout d’un rapport de ligne de vie individuel.
  • Ajout d’un tri des entitĂ©s Ă  la sauvegarde et la possibilitĂ© de trier les propriĂ©tĂ©s d’une entitĂ© par date.
  • PossibilitĂ© de crĂ©er un nouveau GEDCOM directement Ă  partir des entitĂ©s affichĂ©es dans une vue (Arbre, Graphe, time-line, Carte, Recherche, Groupes de famille)
  • RĂ©Ă©criture du module de groupes familiaux avec nouvelles fonctionnalitĂ©s (marquage, regroupements
)
  • Ajout d’une possibilitĂ© d’ignorer les vĂ©rifications automatiques.
  • Nouveau calcul de consanguinitĂ© et dĂ©tection de boucles.
  • Ajout d’une liste de dĂ©pĂŽts d’archives par dĂ©faut.
  • Export pour Genealogieonline.nl

Évolutions et corrections

  • Ajout d’un symbole pour les divorces dans l’arbre graphique
  • AmĂ©liorations de Cygnus
  • AmĂ©liorations d’AriĂšs
  • AmĂ©lioration de l’éditeur GEDCOM
  • AmĂ©liorations du module d’ancĂȘtres communs
  • Ouverture d’un nouveau fichier provenant d’Ancestris sur le SOSA 1
  • Ajout par dĂ©faut du tag FILE des entitĂ©s mĂ©dias dans la table des entitĂ©s
  • Conserve l’ordre de tri dans les Ă©crans de recherche d’AriĂšs
  • Recherche sans accents
  • Correction du tutoriel de prĂ©sentation s’il y a plusieurs Ă©crans.
  • Ajout de la recherche par Ă©poux dans la recherche avancĂ©e
  • Ajout du marquage par chromosome X
  • AmĂ©lioration de l’exploitation des liens des mĂ©dias dans les Ă©diteurs.
  • AmĂ©lioration de l’import Geneanet, geneatique et Heredis
  • AmĂ©liorations de l’export Livre Web
  • AmĂ©liorations de l’export Site Web
  • Tri sur les dates dans la table des entitĂ©s
  • Ajout de sĂ©parateurs pour la gestion des marque-pages
  • AmĂ©liorations et corrections de la carte gĂ©ographique
  • Ajout de filtres dans la vue graphe
  • Permet de choisir une date de changement dans l’explorateur pour ne voir que les modifications postĂ©rieures.
  • AmĂ©liorations du rapport d’arbre graphique multi-gĂ©nĂ©ration
  • AmĂ©liore l’ouverture de fichier pour dĂ©tecter et expliquer au mieux les problĂšmes rencontrĂ©s.
  • AmĂ©liorations de l’export Geneanet
  • Ajout d’un bouton de remise aux valeurs par dĂ©faut pour les rĂ©glages de la table des entitĂ©s.
  • Affichage de la premiĂšre page des pdf Ă  la place d’une image neutre.
  • Conservation des options d’enregistrement d’un fichier d’une fois Ă  l’autre.
  • Ajout de l’impression de la vue en cours dans le menu « Outils ».
  • Affiche les images de type JFIF
  • AmĂ©lioration de la vue graphe sur les Ă©crans Ă  large rĂ©solution
  • PossibilitĂ© de marquer les individus Ă  partir de toutes les vues.
  • AmĂ©liorations du module RelevĂ©
  • Ajout d’une prĂ©fĂ©rence de durĂ©e maximale d’attente pour la vĂ©rification des liens internet
  • Ajout d’icĂŽnes pour distinguer l’ajout d’une numĂ©rotation de l’affichage du Sosa 1.
  • Correction de l’affichage en langue diffĂ©rente des rapports par rapport Ă  l’interface.
  • Utilisation des options des rapports avant de les lancer Ă  partir du menu contextuel.
  • Ajout d’un Ă©cran d’assistant pour la comparaison de gĂ©nĂ©alogies.
  • PossibilitĂ© de choisir le nombre de gĂ©nĂ©ration d’ascendants et de descendants sĂ©parĂ©ment dans l’arbre dynamique.
  • Ajout d’un nouveau template GedArt.
  • Ajout d’un dĂ©gradĂ© par date dans la carte gĂ©ographique
  • Ajout d’un paramĂštre pour limiter la longueur d’un champ dans un calque.
  • Ajout d’un menu avec les derniers fichiers ouverts
  • Ajout de la possibilitĂ© de souligner des champs dans les calques.
  • AmĂ©lioration de la gestion des almanachs.

Mise Ă  jour de traduction

  • Allemand
  • Anglais
  • Castillan
  • Catalan
  • Danois
  • Français
  • Grec
  • Hongrois
  • Italien
  • NĂ©erlandais
  • Polonais
  • Portugais
  • TchĂšque
  • Turc

Merci Ă  tous les traducteurs pour leur travail constant, si important pour l’ensemble de la communautĂ©.

Pour conclure, merci Ă  toute la communautĂ© par vos remarques, vos demandes, vos remontĂ©es d’anomalies, vous permettez de faire vivre et embellir ce logiciel.
On compte sur vous dans la suite pour nous crĂ©er du buzz, des tutoriels, des idĂ©es et de l’enthousiasme.

Commentaires : voir le flux Atom ouvrir dans le navigateur

XL-Converter 1.0, billet d'humeur et plaidoyer

XL-Converter est un utilitaire graphique pour convertir vos images en formats utilisables sur Internet. Outre les classiques JPEG et PNG il y a donc AVIF, WEBP et JPEG-XL. L’outil se veut ergonomique avec un minimum d’options pratiques. Par exemple on peut indiquer une dimension ou un poids maximum pour les images. À mes yeux, l’intĂ©rĂȘt d’XL-Converter c’est surtout le format Jpeg. Pourquoi ? parce que ce format est loin d’ĂȘtre mort : tout en travaillant sur Jpeg-XL, les chercheurs suisses de Google ont dĂ©veloppĂ© un nouvel algorithme d’encodage du Jpeg classique, et cet algo est trĂšs performant.

Jpegli, le nouvel algo, tire son nom du jargon suisse, tout comme guetzli, butteraugli, etc. par la mĂȘme Ă©quipe. Il est inclus dans la version 0.10 de la libjxl, la bibliothĂšque de rĂ©fĂ©rence pour Jpeg-XL (c’est normal il en rĂ©utilise du code). Et par lĂ , il se retrouve l’encodeur Jpeg de XL-Converter.

Jpeg est un format de compression qui date des annĂ©es 80. C’est grĂące Ă  lui qu’on voit le web en couleur. On a souvent tentĂ© de le remplacer, il rĂ©siste. C’est normal, non content d’offrir un bon rapport qualitĂ©/poids, il y a belle lurette que nos puces dĂ©codent les images Jpeg en un Ă©clair. Jpeg est donc efficace et rapide, sa compression avec perte n’enlĂšve que des dĂ©tails invisibles Ă  nos yeux. Enfin il a des dĂ©fauts quand mĂȘme : pour gagner encore plus de poids, il gomme encore plus de dĂ©tails et nous laisse des artefacts bien visibles, qui ressemblent Ă  des saletĂ©s dans l’Ɠil, celles qu’on dĂ©couvre en regardant un mur blanc. En principe je ne vous apprends rien, vous ĂȘtes habituĂ©s Ă  optimiser le poids de vos images sur Internet et vous savez jouer du curseur pour obtenir le meilleur compromis pour la meilleure image Jpeg possible (© Voltaire).

Nos accĂšs Internet deviennent sans cesse plus rapides, la puissance et la Ram sur nos ordis augmentent de mĂȘme, les nuisances Ă©nergĂ©tiques itou. Ça m’importe. Et mĂȘme si les nuisances vous indiffĂšrent, vous vous ĂȘtes peut-ĂȘtre dĂ©jĂ  retrouvĂ© pris au piĂšge d’une zone blanche, ou bien sur une Ăźle surpeuplĂ©e de touristes en Ă©tĂ©, ou bien dans un pays lointain aux prises avec un vieil ordi malmenĂ© par les dĂ©bits inconstants et la lourdeur de votre site web prĂ©fĂ©rĂ©, bref dans ma peau. La situation est tout de mĂȘme assez commune pour qu'un des critĂšres majeurs de bon rĂ©fĂ©rencement des pages web sur Google soit le temps de chargement et d’affichage1.

Normalement vous savez qu’il y a plusieurs facteurs lĂ -dedans, matĂ©riels, logiciel et humain. Humain, voilĂ  ce qui nous intĂ©resse. C’est l’humain qui fait l’effort de soigner son code, d’utiliser un format qui dĂ©compresse vite, de redimensionner ses images et de compresser suffisamment, en acceptant des pertes que l’autre internaute ne verra jamais sur un Ă©cran non calibrĂ©, salis par les doigts, sous un Ă©clairage douteux et le plus souvent colorĂ© (dans les villes).

Il y a quelques mois, je pensais vous dĂ©crire les merveilles de Mozjpeg : les premiĂšres versions de Webp n’avaient pas convaincu Mozilla qui avait proposĂ© un nouvel algo et un nouvel outil, plutĂŽt efficace. En remplaçant purement et simplement la libjpeg, les gains en compression Ă©tait du mĂȘme niveau que Webp (Ă  l’époque), mais pour ceux qui aimaient jongler avec les paramĂštres2, les gains Ă©taient et sont toujours bien meilleurs. Tout le monde n’étant pas imageo-technophile, les feignants pouvaient se contenter d’utiliser ImageOptim pour un rĂ©sultat Ă©quivalent.

Aujourd’hui, mĂȘme les feignants n’ont pas d’excuses : Jpegli est super simple Ă  utiliser3, plus rapide et meilleur que Webp ou Avif, produit beaucoup moins d’artefacts classiques du Jpeg et se dĂ©code Ă  la vitesse de l’éclair puisque c’est du Jpeg normal. Et au sein d’XL-Converter c’est de la balle.

Je n’ai rien de plus à dire. En attendant Jpeg-XL dans tous nos navigateurs, Jpeg à la sauce Jpegli c’est trop bon, mangez-en.

En apéritif, goûtez donc cette petite note du divin Jon Sneyers :

More recently, the JPEG-XL team at Google has built yet another JPEG encoder, jpegli, which is both faster and better than even mozjpeg. It is based on lessons learned from guetzli and libjxl, and offers a very attractive trade-off: it is very fast, compresses better than WebP and even high-speed AVIF, while still producing good old JPEG files that are supported everywhere.


  1. voir ce paragraphe dans la doc sur les Core Web Vitals de Google. â†©

  2. les paramĂštres sont dans la source, use the force luke, read the code â†©

  3. disons plutĂŽt qu’il n’y a pas besoin d’autre paramĂštres que le niveau de compression pour ĂȘtre bien meilleur que Webp. â†©

Commentaires : voir le flux Atom ouvrir dans le navigateur

Transférer sa licence Windows dans une VM

N. D. M. : nlgranger nous explique dans le journal qui est repris pour cette dĂ©pĂȘche comment virtualiser un systĂšme prĂ©-installĂ©. Son expĂ©rience personnelle est relatĂ©e ici Ă  la premiĂšre personne (je). Rappelons aussi Ă  tout hasard que si la licence de ce systĂšme d’exploitation propriĂ©taire permet apparemment une utilisation dans le cadre d’une telle virtualisation, celle-ci doit ĂȘtre faite sur une seule instance et sans utilisation comme serveur (ce que rappelle aussi le tutoriel mentionnĂ© plus loin, mais sur une version prĂ©cĂ©dente du systĂšme). Et qu’il n’est possible de faire qu’une « seule copie du logiciel Ă  des fins de sauvegarde Â».

Je viens d’acheter un PC et bien que j’aie fouillĂ© et patientĂ© longtemps, aucune offre sans OS n’arrivait ou ne convenait donc j’ai cĂ©dĂ© Ă  la vente forcĂ©e d’un PC avec Windows.
Dans ce petit tutoriel, je vous explique comment dĂ©placer cette licence Windows OEM vers une machine virtuelle (VM) sur le mĂȘme PC. Si vous avez dĂ©jĂ  une licence achetĂ©e Ă  part, il vous suffit de la spĂ©cifier Ă  l’installation, on s’intĂ©resse ici au cas des licences OEM prĂ©installĂ©es sur la carte mĂšre.
L’intĂ©rĂȘt de dĂ©placer Windows dans une VM, c’est de ne pas bloquer une partie de l’espace disque avec une partition qui ne servira quasiment jamais. LĂ  on peut dĂ©placer l’image disque vers un stockage externe (disque ou clĂ© USB) ou recrĂ©er la VM au besoin.
Dans ce tutoriel j’utilise libvirt via le GUI virt-manager, mais je me suis largement appuyĂ© sur cet excellent tutoriel pour Proxmox d’Oliver Poncet que je vous invite Ă  consulter.
Je prĂ©cise immĂ©diatement qu’il n’est pas nĂ©cessaire d’avoir gardĂ© le Windows prĂ©installĂ© sur la machine, ni mĂȘme de l’avoir dĂ©marrĂ© une seule fois.

DĂ©pendances

Pour parvenir Ă  vos fins, il vous faudra les dĂ©pendances suivantes (en espĂ©rant ne rien oublier) :

  • dmidecode pour lire les infos de la carte mĂšre
  • libvirt
  • qemu/KVM
  • swtpm pour Ă©muler un TPM
  • edk2-ovmf pour Ă©muler un UEFI avec Secure Boot
  • Le fichier.iso de Windows 11 disponible sur le site de microsoft.

Sous ArchLinux : pacman – S dmidecode libvirt dnsmasq qemu-desktop swtmp

J’ai utilisĂ© virt-manager pour me faciliter la vie, j’imagine qu’on peut s’en sortir en ligne de commande directement avec qemu.

Installation

Récupérer les informations utiles

Pour valider automatiquement votre licence, Windows utilise des informations disponibles depuis la carte mĂšre.

D’abord, le numĂ©ro de sĂ©rie, modĂšle, etc. :

$ sudo dmidecode


BIOS Information
    Vendor : LENOVO
    Version : NCCN16WW
    Release Date : 02/02/2024


    BIOS Revision : 1.16
    Firmware Revision : 1.16


System Information
    Manufacturer : LENOVO
    Product Name : 83E3
    Version : Yoga Pro 7 14AHP9
    Serial Number : 9F5OEMTZ
    UUID : a0a73af8-a886-4fbf-8f0d-5fd32c264a16
    SKU Number : LENOVO_MT_83E3_BU_idea_FM_Yoga Pro 7 14AHP9
    Family : Yoga Pro 7 14AHP9

(j’ai Ă©ditĂ© le serial et l’uuid)

Ensuite des informations enregistrĂ©es dans des tables ACPI :

sudo cat /sys/firmware/acpi/tables/MSDM > ~/VMs/MSDM.bin
sudo cat /sys/firmware/acpi/tables/SLIC > ~/VMs/SLIC.bin

Créer la VM

La procĂ©dure dĂ©marre comme d’habitude, on suit l’assistant de virt-manager jusqu’au moment oĂč il faut bien demander Ă  modifier la configuration avant de dĂ©marrer.

Dans les options du BIOS, choisissez la config avec Secure Boot activĂ©, chez moi le fichier se nomme OVMF_CODE.secboot.4 m.fd.

Ensuite il faut Ă©diter directement le code XML qui dĂ©crit la configuration de la machine. Si c’est la premiĂšre fois dans virt-manager, il faut cocher une case dans les paramĂštres de l’appli pour le rendre Ă©ditable.

Pour commencer, modifiez le nƓud racine XML pour spĂ©cifier le schĂ©ma, sinon certaines options seront rejetĂ©es :

<domain type=“kvm” xmlns: qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

Mettez aussi Ă  jour l’uuid pour qu’il corresponde Ă  celui indiquĂ© par dmidecode:

<uuid>a0a73af8-a886-4fbf-8f0d-5fd32c264a16</uuid>

Ensuite, il faut indiquer Ă  qemu d’intĂ©grer les tables ACPI :

<qemu: commandline>
<qemu: arg value='-acpitable'/>
<qemu: arg value='file=/home/ngranger/VMs/MSDM.bin'/>
<qemu: arg value='-acpitable'/>
<qemu: arg value='file=/home/ngranger/VMs/SLIC.bin'/>
</qemu: commandline>

Puis il faut ajouter les informations de la carte mĂšre :

<sysinfo type=“smbios”>
<bios>
<entry name=“vendor”>LENOVO</entry>
<entry name=“version”>NCCN16WW</entry>
<entry name=“date”>02/02/2024</entry>
<entry name=“release”>1.16</entry>
</bios>
<system>
<entry name=“manufacturer”>LENOVO</entry>
<entry name=“product”>83E3</entry>
<entry name=“version”>Yoga Pro 7 14AHP9</entry>
<entry name=“uuid”>a0a73af8-a886-4fbf-8f0d-5fd32c264a16</entry>
<entry name=“serial”>9F5OEMTZ</entry>
<entry name=“family”>Yoga Pro 7 14AHP9</entry>
<entry name=“sku”>LENOVO_MT_83E3_BU_idea_FM_Yoga Pro 7 14AHP9</entry>
</system>
</sysinfo>

Installation de Windows

La procédure est désormais habituelle.

Pour Ă©viter d’avoir Ă  utiliser un compte Microsoft, vous pouvez couper Internet au moment oĂč Windows redĂ©marre pour la configuration du systĂšme. Lorsque l’assistant en arrive Ă  la connexion au rĂ©seau, tapez Maj-F10 pour ouvrir le terminal et exĂ©cutez la commande oobe\BypassNRO. Le PC redĂ©marrera sur un assistant qui rend la connexion facultative.

Au démarrage, vous pourrez remettre Internet et vérifier que la licence est bien activée.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Les langues peu documentées et le libre : quelques enjeux scientifiques

Comme beaucoup de domaines scientifiques, la documentation de la diversitĂ© linguistique entretient une relation forte avec les mondes du Libre. Dans cette dĂ©pĂȘche, je vous propose de dĂ©couvrir ce domaine Ă  travers la prĂ©sentation de plusieurs logiciels et ressources libres ou en accĂšs ouvert. La documentation des langues Ă©tant un thĂšme peu courant sur LinuxFr.org, on commencera par une prĂ©sentation de cette problĂ©matique. Nous continuerons par une description des deux ressources principales existantes pour cataloguer et se repĂ©rer au sein de cette diversitĂ© linguistique. Je parlerai ensuite d’ELAN et de FLEX, deux logiciels utilisĂ©s pour annoter des enregistrements audio-visuels, une Ă©tape clef dans l’analyse linguistique, et qui permet le partage et la rĂ©utilisation de ces enregistrements. Enfin, aprĂšs un court passage sur la question de l’archivage, je prĂ©senterai deux compilations de corpus de documentation en accĂšs libre, une pratique rĂ©cente qui permet de nouveaux questionnements quantitatifs sur les langues orales peu documentĂ©es, et qui contribue Ă©galement Ă  la transparence et la traçabilitĂ© des analyses linguistiques.

    Sommaire

    L’étude des langues Ă  travers le monde

    Actuellement, environ 7000 langues ont Ă©tĂ© recensĂ©es Ă  travers le monde. Ce chiffre ne peut ĂȘtre qu’une approximation car, il n’y a pas de consensus sur la dĂ©finition de ce qu’est une langue. Une difficultĂ© par exemple est de dĂ©finir Ă  quel moment une langue est distincte d’une autre. Lorsqu’il y a variation, mais intercomprĂ©hension, de nombreux linguistes s’accordent Ă  dire qu’il s’agit alors de dialectes d’une mĂȘme langue, et donc, lorsqu’il n’y a pas intercomprĂ©hension, alors il s’agit diffĂ©rentes langues. Cette perspective considĂšre que tout le monde parle un dialecte (que ce soit celui de rĂ©fĂ©rence, ou un plus rĂ©gional comme celui de Paris, de Marseille, du QuĂ©bec), la langue n’étant qu’une abstraction permettant de regrouper les diverses pratiques langagiĂšres. En ce qui concerne l’intercomprĂ©hension, ce critĂšre n’est malheureusement pas absolu car elle peut varier selon les personnes et leur parcours personnel. Et lorsqu’on considĂšre l’évolution d’une langue Ă  travers le temps, sa diachronie, dĂ©finir ce qu’est une mĂȘme langue Ă  travers ses Ă©volutions temporelles se complexifie d’autant plus.

    Si certaines langues ont Ă©mergĂ© rĂ©cemment, on pense assez souvent aux langues dites crĂ©oles (le Bichelamar, les crĂ©oles malais, Ă  Madagascar ou au Cap Vert), ou Ă©galement lorsque certains dialectes se distinguent suffisamment pour ne plus ĂȘtre intercomprĂ©hensibles, la tendance actuelle est surtout Ă  la disparition massive des langues. Cette disparition est souvent rapportĂ©e Ă  travers la mort des derniers locuteurs et locutrices, on peut aussi considĂ©rer qu’une langue meurt lorsqu’elle n’est plus parlĂ©e d’une part, et qu’elle disparait si elle n’est pas documentĂ©e. Si certains aujourd’hui se questionnent sur la corrĂ©lation entre la diversitĂ© culturelle et la diversitĂ© Ă©cologique, il est Ă©vident que la disparition des langues correspond Ă©galement Ă  des inĂ©galitĂ©s et des tensions socio-politiques.

    Bref, la documentation des langues, c’est un sujet actuel, et d’un point de vue scientifique, la perte de cette diversitĂ© aura de tristes consĂ©quences sur la connaissance des langues et de l’univers des possibles languagiers, encore souvent sous-estimĂ© :

    • l’article The myth of language universals : Language diversity and its importance for cognitive science d’Evans donne un bel aperçu du dĂ©bat qui existe entre les linguistes fonctionnalistes, notamment les approches gĂ©nĂ©rativistes telles que proposĂ©es par Noam Chomsky. Pourtant, rĂ©guliĂšrement Ă  travers la documentation des langues, des catĂ©gories cognitives jusque-lĂ  non-soupçonnĂ©s, voire rejetĂ©es car non-observĂ©es, sont identifiĂ©s. Nous nous sommes rendu compte rĂ©cemment qu’un quart des langues grammaticalisaient l’emploi d’évidentiels, ces morphĂšmes qui indiquent la source d’une information. Au niveau de l’odorat, des neurologistes pensaient que si nous n’avions pas de termes abstraits pour catĂ©goriser les odeurs, c’était liĂ© au fait que notre cerveau ne le permettait pas. La description des termes liĂ©s Ă  l’odorat en Jahai (par ici si vous souhaitez Ă©couter du Jahai), qui possĂšde donc des termes spĂ©cifiques pour catĂ©goriser les odeurs, a montrĂ© le contraire.
    • accĂ©der Ă  des facettes non-matĂ©rielles de la prĂ©histoire, non-accessibles Ă  travers l’archĂ©ologie. La documentation des langues nous permet d’accĂ©der, dans une certaine mesure, aux termes et aux concepts utilisĂ©s durant les diffĂ©rentes prĂ©histoires Ă  travers la comparaison des langues et de leurs structures. Les travaux sont nombreux et anciens en ce qui concerne les langues europĂ©ennes, mais les recherches en linguistique historique (ou comparĂ©e) portent Ă©galement sur toutes les langues connues Ă  travers le monde. Les chercheurs et chercheuses de ce domaine collaborent assez rĂ©guliĂšrement avec les archĂ©ologues pour retracer les mouvements de population.
    • mettre au point des systĂšmes d’écriture pour les langues orales, ou simplement des traitements de texte adaptĂ© aux Ă©critures existantes. Parfois, certaines personnes savent Ă©crire dans la ou les langues officielles du pays, mais ne connaissent pas d’écriture pour une de leurs langues rĂ©gionales. C’est ainsi souvent le cas pour les personnes au Vanuatu. Le pays reconnait mĂȘme le droit d’enseigner les langues locales Ă  l’école, mais il n’existe que trĂšs rarement des ressources (que ce soit les personnes ou les manuels) pour cela. Parfois, les gens ne connaissent tout simplement pas de systĂšme d’écriture.

    Quelques concepts et termes liés à la documentation des langues

    Comme tout domaine de recherche, la terminologie et les concepts linguistiques Ă©voluent au grĂ© des discussions et peut se distinguer de l’usage attendu des termes. Une Ă©tape importante dans la documentation d’une langue est la production d’une grammaire dĂ©crivant les structures linguistiques de cette langue. De nombreux linguistes estiment alors qu’on peut dire que cette langue est dĂ©crite. Il ne faut pas se tromper cependant, aucun linguiste ne considĂšre qu’une langue est alors complĂštement dĂ©crite. Une grammaire ne contient que quelques aspects estimĂ©s actuellement essentielles par les linguistes de terrain. Ces points sont, le plus souvent, une description du systĂšme phonologique d’une langue (c’est-Ă -dire comment les sons d’une langue sont organisĂ©s les uns vis-Ă -vis des autres), des morphĂšmes et des processus morphologiques associĂ©s (la conjugaison, l’expression de la possession, les dĂ©clinaisons, les genres, les classifications, etc.) d’une langue et souvent un dĂ©but de description des processus syntaxiques. Il existe de nombreuses approches pour dĂ©crire les faits linguistiques, et la description d’une langue se fait souvent en dialogue avec les pratiques et terminologies qui ont Ă©tĂ© employĂ©es dans l'aire linguistique concernĂ©e.

    Depuis l’article Documentary and descriptive linguistics de Nicholaus Himmelman, qui a promu la distinction entre la documentation linguistique et la description linguistique, on accorde beaucoup plus d’importance Ă  la production d’un corpus d’enregistrements annotĂ©s. On dit alors d’une langue qu’elle est documentĂ©e si des enregistrements annotĂ©s, de prĂ©fĂ©rences audio-visuels, de cette langue existe. Enfin, il existe la problĂ©matique de l’outillage d’une langue, c’est-Ă -dire si ses locuteurs et locutrices ont accĂšs ou non aux outils informatisĂ©s, du traitement texte aux dictionnaires informatisĂ©s en passant par la reconnaissance vocale, la transcription automatique, voire aujourd’hui aux modĂšles de langues et autres ressources nĂ©cessitant des corpus beaucoup plus grands.

    Les catalogues et base de donnĂ©es pour l’identification des langues

    Une problĂ©matique rĂ©currente dans le domaine des langues est de clairement identifier la langue sur laquelle on travaille. Cependant, identifier une langue, ce qui relĂšve ou non de cette langue, oĂč elle est parlĂ©e, est l’enjeu de nombreux dĂ©bats, souvent politique, et n’est pas une tĂąche simple. Quoi qu’il en soit, il existe des ressources, bases de donnĂ©es, qui proposent d’associer Ă  des noms de langues, endonymes ou exonymes, des codes pour rendre leur identification univoque.

    L’Ethnologue et l’ISO 639 : une norme gĂ©rĂ©e par le Summer Institute of Linguistics (SIL)

    Ethnologue, Languages of the World, ou plus simplement l’Ethnologue, est une base de donnĂ©es dĂ©veloppĂ©e et maintenu par l’organisme Ă©vangĂ©lique SIL, Summer Institute of Linguistic depuis 1951. Elle vise Ă  recenser toutes les langues du monde. L’ISO 639 est une norme issue de ce catalogue, Ă©galement maintenue par le SIL. Cet organisme est trĂšs actif au niveau de la documentation des langues et de la crĂ©ation d’écritures, car un de ses objectifs est de traduire la Bible dans toutes les langues du monde. Historiquement, l’Ethnologue est un des premiers catalogues dont l’objet a Ă©tĂ© de recenser les langues. Si cette norme semble le plus souvent suffisamment exhaustive pour les besoins liĂ©s Ă  l’informatique, aprĂšs tout, les internautes consultent Internet en trĂšs peu de langue, d’un point de vue linguistique, il possĂšde de nombreuses lacunes.

    La liste SIL des langues

    Un premier souci est la nĂ©cessitĂ© d’avoir une granularitĂ© plus importante que simplement la langue. Les linguistes travaillent sur des dialectes et des variĂ©tĂ©s, sur des familles de langues, et parfois ont travaillĂ© sur des distinctions qui n’ont parfois plus cours. Afin de pouvoir associer ces ressources Ă  des langues, ou des entitĂ©s linguistiques particuliĂšres, l’approche du SIL ne suffit pas.

    Enfin, la gestion du catalogue par un organisme religieux, donc avec parfois d’autres enjeux qu’uniquement scientifiques, le fait qu’il s’agisse d’une norme, donc la nĂ©cessitĂ© de collaborer avec l’ISO, et le fait que seule une partie du catalogue est accessible (il faut un abonnement pour accĂ©der Ă  la totalitĂ© de la ressource) rend la ressource moins pertinente pour de nombreux linguistes. Ces limites ont poussĂ© des linguistes Ă  proposer une ressource alternative.

    Glottocode : par le Max Planck Institute for Evolutionary Anthropology.

    Le projet Glottolog, initialement dĂ©veloppĂ© par Sebastian Nordhoff et Harald Hammarström, catalogue non seulement les langues du monde actuelles et passĂ©s, les familles de langues et leurs diffĂ©rentes branches, mais Ă©galement « les restes Â» des hypothĂšses de langues ou de regroupements historiques. Cette granularitĂ© permet de retrouver les documents associĂ©s Ă  chacun de ces objets. Si le catalogue est dĂ©diĂ© aux langues moins connues, les langues les plus centrales sont elles aussi rĂ©pertoriĂ©es. Il s’agit actuellement du catalogue mis en avant par les linguistes documentant les langues Ă  travers le monde. L’application Glottolog est disponible via la licence MIT.

    Aperçu du Glottolog à travers la liste des langues

    Si aux premiers abords, la liste des langues du Glottolog ne se distingue pas franchement de celle de l’ISO 639, c’est parce qu’il faut regarder plus en dĂ©tail pour comprendre les diffĂ©rences essentielles entre les deux ressources. Notons tout de mĂȘme la colonne « Child dialects » : « Dialectes enfants », et les champs vides au niveau des colonnes Top-level-family et pour la langue Abai Tubu-Abai Sembuak dans la colonne « ISO-639-3 Â». La colonne « Child dialects » reprĂ©sente une information qui n’est pas documentĂ© dans l’ISO 639, ce n’est pas son objet aprĂšs tout, mais qui est intĂ©ressant pour les linguistes travaillant sur cette langue, indiquant qu’un minimum de donnĂ©es sociolinguistiques sont disponibles. Les champs vides dans la colonne « Top-level family » sont dus au fait que ces langues sont des isolats, c’est-Ă -dire que la linguistique comparĂ©e ne trouve pas de correspondances significatives entre cette langue et d’autres langues qui permettraient de les regrouper en une famille. Enfin, le vide dans la colonne ISO-963-3 rĂ©vĂšle que la langue Abai Tubu-Abai Sembuak ne possĂšde pas d’entrĂ©e dĂ©diĂ©e dans la norme.

    Ainsi, lorsque l’on consulte une langue en particuliĂšre, ici le Nisvai, on voit apparaitre tous les embranchements existants associĂ©s Ă  cette langue :

    La langue Nisvai dans le Glottolog

    Cette vue de l’arborescence associĂ©e Ă  une langue particuliĂšre rĂ©vĂšle tous les embranchements auxquels peut⁻ĂȘtre associĂ©e une langue. Et Ă  chacun de ces embranchements, si des ressources linguistiques ont Ă©tĂ© identifiĂ©es par les mainteneurs du Glottolog, celles peuvent ĂȘtre proposĂ©es. Cette fonction permet aux linguistes de trouver des ressources sur les langues proches, non pas gĂ©ographiquement (mĂȘme si en pratique c’est le plus souvent le cas), mais d’un point de vue gĂ©nĂ©alogique.

    Les autres

    Il existe d’autres initiatives pour cataloguer les langues du monde, que ce soit la liste proposĂ©e par Wikipedia, la liste de la CIA ou encore The Linguasphere Register, mais ces initiatives ne sont pas aussi pertinentes du point de vue de la documentation des langues.

    Documenter les langues

    ELAN : des schĂ©mas d’annotation flexibles

    ELAN est un des logiciels libres (GPL3) les plus utilisĂ©s par les linguistes pour annoter des enregistrements audio et vidĂ©o. Il permet d’élaborer des structures d’annotation complexes permettant ainsi de rendre compte des analyses que les linguistes souhaitent associer Ă  un enregistrement. Ces couches d’annotation sont reliĂ©es les unes aux autres par des relations logiques, avec le plus souvent une couche de rĂ©fĂ©rence indexĂ©e temporellement Ă  l’enregistrement. Les annotations les plus courantes sont une transcription, une traduction et une annotation morphologique. Mais des nombreuses autres analyses peuvent ĂȘtre incluses, que ce soit les parties du discours, les rĂ©fĂ©rences et anaphores, l'animĂ©itĂ©, mais aussi les gestes, la structuration du discours, les signes pour les sourds et malentendants.

    Extrait d’une narration prĂ©sente dans DoReCo, et vue sur les diffĂ©rentes couches d’annotation pouvant ĂȘtre associĂ©s Ă  un enregistrement.

    Dans cette capture d’écran issu d’un texte de DoReCo retravaillĂ© par l’auteur, on aperçoit un extrait de quelques secondes d’une narration nisvaie. Il s’agit d’un des modes de visualisation des annotations proposĂ©es par ELAN pour reprĂ©senter les diffĂ©rentes couches d’annotation. Certaines de ces annotations ont Ă©tĂ© rĂ©alisĂ©es Ă  la main par l’auteur, d’autres ont Ă©tĂ© retravaillĂ©es par les algorithmes mis en place par DoReCo, puis manuellement corrigĂ©s. Enfin, il y a Ă©galement des couches d’annotation de la prosodie par le biais de SLAM+.

    FLEX : gĂ©rer un projet de documentation

    FLEX est un logiciel dĂ©veloppĂ© par le SIL et dont le code source est rĂ©gie par la licence LGPL 2.1. Il est conçu davantage pour coordonner l’ensemble d’une documentation linguistique, de la gestion des textes Ă  l’élaboration d’un dictionnaire, en passant par les analyses linguistiques. En revanche, il ne gĂšre pas rĂ©ellement l’annotation d’enregistrements. De nombreux linguistes l’utilisent en complĂ©ment d’ELAN.

    Si le logiciel est prometteur sur le papier, Ă  chaque fois que je l’ai essayĂ©, j’ai Ă©tĂ© rebutĂ© par son cĂŽtĂ© usine Ă  gaz, et surtout ses nombreux plantages notamment lorsqu’on essaie de gĂ©rer des fichiers multimĂ©dia avec. Et il en est de mĂȘme pour les autres logiciels dĂ©veloppĂ© par le SIL, tel que SayMore pour gĂ©rer les mĂ©tadonnĂ©es des enregistrements, WeSay pour faire des dictionnaires en collaboration avec les locuteurs et locutrices, Ă  chaque fois que je les ai essayĂ©s, enthousiasmĂ© par leurs fonctionnalitĂ©s, j’ai Ă©tĂ© déçu par le fait qu’ils ne fonctionnaient pas correctement sur mon ordinateur.

    Aperçu de Flex

    Cette capture d’écran illustre un des modes de saisie de FLEX, ici la vue tabulaire du lexique, qui permet de rentrer et gĂ©rer les dĂ©finitions des lexĂšmes (les entrĂ©es du dictionnaire) de maniĂšre assez rapide. On aperçoit dans la partie en haut Ă  gauche les autres modes d’édition du lexique, et en dessous les autres catĂ©gories liĂ©es Ă  la gestion d’un projet de documentation : Texts & Words, Grammar, Notebook et Lists. C’est Ă  travers la catĂ©gorie Texts & Words que l’on peut par exemple importer des textes transcrits, voire des fichiers ELAN pour peupler la base de donnĂ©es lexicales. Grammar permet de dĂ©crire les paradigmes grammaticaux, FLEX propose d’ailleurs quelques algorithmes qui aident Ă  la construction des paradigmes grammaticaux. Notebook et Lists servent Ă  la gestion du projet, le premier pour prendre des notes diverses, et le second pour crĂ©er des listes, en particulier des tĂąches encore Ă  rĂ©aliser.

    Et il y en a bien d’autres encore

    Il existe de nombreux autres logiciels similaires, tels qu’EXmaralda pour l’annotation des enregistrements (surtout utilisĂ© en Allemagne Ă  ma connaissance), Sonal (non libre, et dont le dĂ©veloppement semble arrĂȘtĂ©) qui est utilisĂ© par les sociologues et les anthropologues pour une annotation thĂ©matique de leurs entretiens, Anvil, qui semble intĂ©ressant mais que je n’ai jamais rĂ©ellement vu utilisĂ©, ou enfin le vieux Transcriber qui lui Ă©tait encore employĂ© par certains projets il y a quelques annĂ©es. Rentrer dans le dĂ©tail de tous ces logiciels dĂ©passerait le cadre d’une dĂ©pĂȘche comme celle-ci, mais Ă©numĂ©rer la diversitĂ© logicielle montre qu’il s’agit d’un secteur un minimum dynamique, d’ailleurs la question de la transcription et de l’annotation des enregistrements ne se limite pas du tout qu’au domaine de la documentation des langues du monde.

    L’archivage et la compilation de corpus

    Afin de conserver et partager les corpus et donnée enregistrées par les linguistes, chercheurs voire simplement les personnes ayant documenté une langue, il existe des archives, le plus souvent en ligne. Il y a en France par exemple Pangloss, géré par le LACITO, dédié aux langues orales, ou ORTOLANG, plus générique, pour les corpus de langue. En Océanie, il y a Paradisec. Il y a aussi ELAR, autrefois à Londres, et qui a déménagé récemment à Berlin récemment.

    Ces archives proposent diverses interfaces pour dĂ©poser, gĂ©rer et parfois mĂȘme consulter les enregistrements et les annotations rĂ©alisĂ©s par les linguistes et leurs collaborateurs·e·s. À noter que pour ces archives, Ortolang dĂ©crit son architecture logicielle qui repose sur des briques ouvertes, en revanche concernant Paradisec et Pangloss, bien que leur statuts soient sĂ»rement similaires du fait de la dĂ©marche gĂ©nĂ©rale de ses ingĂ©nieurs, je n’ai pas trouvĂ© de liens vers les logiciels employĂ©s. Quant Ă  ELAR, le logiciel utilisĂ© est Preservica, une solution propriĂ©taire qui, quand on a le malheur de devoir l’utiliser, fonctionne bien lentement.

    La compilation de corpus, si elle se rapproche de l’archivage en ce qu’il s’agit Ă©galement de recueillir, conserver et publier les corpus des linguistes, correspond Ă©galement Ă  une Ă©dition particuliĂšre de ces corpus. La compilation de corpus est rĂ©alisĂ© Ă  travers la mise en place de processus de qualitĂ©, d’annotations et de conventions particuliĂšres. Les deux compilations de corpus prĂ©sentĂ©es ici sont des compilations de corpus de documentation de langues orales. Les enregistrements ont Ă©tĂ© systĂ©matiquement annotĂ©s en utilisant une convention nommĂ©e les gloses interlinaires (le nom fait en fait rĂ©fĂ©rence Ă  la pratique ancienne d’insĂ©rer des explications entre les lignes d’un texte. En pratique aujourd’hui, ce n’est plus vraiment ce que font les linguistes, puisque le travail est informatisĂ© et les annotations ne sont plus entre les lignes, mais, le terme a cependant Ă©tĂ© conservĂ©).

    DoReCo

    DoReCo est une compilation de 52 corpus en accĂšs ouvert (NdR : auquelle l’auteur a contribuĂ©). La compilation a nĂ©cessitĂ© la mise en place de processus de qualitĂ© afin d’assurer la cohĂ©rence de l’ensemble et de fournir un certain nombre de garanties quant aux qualitĂ©s du corpus.

    Les langues dans DoReCo

    Une premiĂšre qualitĂ©, et l’une des originalitĂ©s de DoReCo, est de proposer un alignement temporel est trĂšs fin. La durĂ©e de chaque phonĂšme, de chaque morphĂšmes, de chaque mot (ici suivant la dĂ©finition de la personne Ă  l’origine du corpus, car la dĂ©finition d’un mot n’a rien d’une Ă©vidence) et enfin de chaque groupe de souffle est fournie. Une deuxiĂšme qualitĂ© a Ă©tĂ© de s’assurer que pour l’ensemble des retranscriptions, chacun des termes et des morphĂšmes possĂšde une glose, c’est-Ă -dire qu’ils possĂšdent une explication linguistique.

    La compilation totalise une centaine d’heures d’enregistrements audio, en grande majoritĂ© des narrations monologiques. À noter que les corpus de la compilation sont accĂšs ouvert, via une licence Creative Commons, mais que les droits d’utilisation varient d’un corpus Ă  l’autre. Les donnĂ©es sont accessibles aux formats d’ELAN : .eaf, de Praat : . TextGrid, TEI.xml, et.csv.

    Multi-CAST

    Multi-CAST est Ă©galement une compilation de 18 corpus de documentation de langues diffĂ©rentes. Les textes annotĂ©s via le logiciel ELAN. Contrairement Ă  DoReCo, l’alignement temporel des annotations n’est pas rĂ©alisĂ© de maniĂšre prĂ©cise, mais manuellement, par les personnes Ă  l’origine du corpus, Ă  l’échelle de l’énoncĂ©. Les textes sont Ă©galement en grande majoritĂ© des narrations monologiques. L’originalitĂ© de cette compilation de corpus vient du fait que les textes contiennent trois couches d’annotation particuliĂšres : GRAID, Grammatical Relations and Animacy in Discourse, (voir), puis RefIND et ISNRef (Referent Indexing in Natural Language Discourse, voir Schiborr et al. 2018).

    La page d’accueil de Multi-Cast

    Cette compilation de corpus est aussi disponible dans plusieurs formats. XML Ă©videmment, puisque c’est le format natif d’ELAN, mais aussi TSV et il existe Ă©galement un paquet pour R. Tout cela est disponible via la licence CC-BY 4.0.

    Conclusion

    J’espĂšre que vous avez apprĂ©ciĂ© cette introduction Ă  la documentation des langues Ă  travers les logiciels libres. L’idĂ©e est surtout d’attiser la curiositĂ©, car il reste Ă©videmment encore de nombreux aspects ou points Ă  discuter et Ă  approfondir. La prochaine fois que j’aborderai le thĂšme de la documentation linguistique ici, j’espĂšre que ça sera pour prĂ©senter mon application basĂ©e sur Django pour faire de la lexicographie.

    Il y a Ă©galement un autre sujet sur lequel j’aimerais bien Ă©changer ici prochainement : la question des licences des donnĂ©es collectĂ©s et la nĂ©gociation lorsque l’on travaille avec des personnes Ă  tradition orale. Si ouvrir l’accĂšs aux donnĂ©es de recherche et aux corpus peut sembler ĂȘtre une Ă©vidence pour certains, il ne faut pas oublier que souvent, les chercheurs et chercheuses de terrain collectent des informations personnelles, que la connaissance n’est pas forcĂ©ment considĂ©rĂ©e comme un bien public et les enregistrements, notamment les narrations, qui ne sont pas forcĂ©ment perçues comme des fictions, sont souvent couverts par des droits locaux. Enfin, ouvrir ses donnĂ©es de recherche, si c’est permettre Ă  d’autres de rĂ©utiliser ses donnĂ©es, requiert beaucoup de travail de la part des linguistes, c’est une tĂąche longue, ingrate et surtout peu valorisĂ©e. Alors qu’il est de plus en plus prĂ©caire d’ĂȘtre chercheur en sciences humaines, il est aussi difficile de demander Ă  ces chercheurs et chercheuses de consacrer une grande partie de leur temps Ă  des tĂąches qui ne leur permettront pas de se constituer un CV, nĂ©cessaire si l’on souhaite avoir un poste stable (c’est-Ă -dire plus de deux ans).

    Label sans IA : ce texte a Ă©tĂ© rĂ©digĂ© sans aucun aide de la part d’une LLM.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    RootDB - une application web de reporting, auto-hebergée

    Logo de RootDB
    PrĂ©sentation rapide de RootDB, une application auto-hĂ©bergeable open-source (AGPLv3), permettant de gĂ©nĂ©rer des rapports Ă  base de requĂȘtes SQL.

    Dashboard

    Sommaire

    GenĂšse du projet

    Pour les besoins d'un client, il fallait que je génÚre rapidement des statistiques d'usage diverses et variées (à bases de tableaux et graphiques), à partir de plusieurs base de données relationnelles classiques et que j'intÚgre ces rapports dans un backoffice.

    Le premier rĂ©flexe fut de me tourner vers une solution que j'ai utilisĂ©e pendant une dizaine d'annĂ©es auparavant et qui se nomme MyDBR. Cela rĂ©pondait parfaitement Ă  son besoin tout en Ă©tant abordable. MyDBR, bien maitrisĂ©, permet de faire Ă©normĂ©ment de choses, mais l'interface est vraiment datĂ©e et l'accĂšs aux fonctionnalitĂ©s des bibliothĂšques graphiques se fait par l’intermĂ©diaire de wrappers en SQL.

    J'ai cherchĂ© des alternatives, auto-hĂ©bergeables, simples Ă  mettre en place, maintenues et avec la mĂȘme logique pour la crĂ©ation de rapport mais je n'ai pas trouvĂ© mon bonheur. Il y a, Ă©videmment, pleins de solutions qui existent mais il y avait toujours quelque chose qui n'allait pas aprĂšs essai, que ce soit dans la maniĂšre de gĂ©nĂ©rer des rapports ou bien les prĂ©-requis, parfois compliquĂ©s, pour l'hĂ©bergement.

    D'ou l'idée de créer, avec un collÚgue, notre propre solution de reporting - parce que pourquoi pas, finalement.

    Open-source

    Ce projet n'Ă©tait pas open-source Ă  la base et nous pensions simplement vendre des licences d'utilisation.

    Sauf qu’aujourd’hui beaucoup de monde utilise le cloud, et ce dernier vient avec ses solutions intĂ©grĂ©es de reporting, limitant de fait l'intĂ©rĂȘt de ce genre de projet. Pour faire bref, je reste convaincu que tout le monde n'est pas sur le cloud et que ce genre de solution peut encore intĂ©resser quelques personnes.
    À cause des doutes sur la pertinence mĂȘme du projet, je n'ai jamais sĂ©rieusement cherchĂ© du financement, ce qui ne m'a jamais permis d'ĂȘtre Ă  temps plein dessus. Nous avons donc mis du temps avant de produire quelque chose d'exploitable dans un environnement de production : un an et demi environ.
    À cela s'ajoute le fait que ce projet n'existerait pas sans toutes les briques open-source sur lesquelles il se base. Et comme c'est l'open-source qui me fait vivre depuis un certain nombre d'annĂ©es, il me semblait finalement bien plus naturel de rendre ce projet open-source (licence AGPLv3) que d'essayer de le vendre en chiffrant le code source.

    RootDB ?

    Étant familier du SQL et du JavaScript, nous voulions avoir une solution qui ne mette pas de bĂątons dans les roues du dĂ©veloppeur, Ă  savoir :

    • utiliser principalement le SQL pour la rĂ©cupĂ©ration et le traitement des donnĂ©es ;
    • avoir un accĂšs intĂ©gral Ă  la bibliothĂšque graphique choisie ;

    Ce choix de prĂ©fĂ©rer un environnement de dĂ©veloppement de rapport orientĂ© dĂ©veloppeur est assumĂ©, d'oĂč le nom du projet.

    Fonctionnalités

    Je ne vais pas vous présenter toutes les fonctionnalités car le site web principal et l'instance de démonstration les présentent déjà correctement. Je vais donc plutÎt mettre en avant les spécificités du projet.

    Websocket

    Les requĂȘtes SQL peuvent prendre du temps Ă  tourner, surtout si les tables ne sont pas correctement optimisĂ©es. Par consĂ©quent l'interface repose lourdement sur les websockets afin d'Ă©viter les problĂšmes de timeout. Quand un rapport est exĂ©cutĂ©, l'exĂ©cution des diffĂ©rentes requĂȘtes est dispatchĂ©e de maniĂšre asynchrone et les vues affichent des rĂ©sultats uniquement quand les donnĂ©es arrivent sur le websocket du rapport.
    D'une maniÚre générale toute l'interface est rafraichie par websocket.

    BibliothĂšques graphiques au choix

    Nous donnons accÚs à Chart.js ou D3.js, sans limitation, sans wrapper. Il est donc possible de se référer directement à la documentation officielle de ces deux bibliothÚques.

    Onglets & Menu

    Nous aimons bien les menus. :)
    C'est simple, élégant et permet d'accéder à beaucoup d'options de maniÚre claire.
    L'interface repose sur une barre de menu principale dynamique et une barre d'onglets dans lesquels s'affiche les diffĂ©rentes parties de l'application. Il est donc possible d'ouvrir plusieurs rapports (ou le mĂȘme) dans le mĂȘme onglet du navigateur web.

    Cache

    Il existe deux niveaux de cache :

    • un cache utilisateur, pratique pour cacher des rĂ©sultats de maniĂšre temporaire afin de partager des rĂ©sultats avec un autre utilisateur.
    • un cache systĂšme (jobs) ou il est possible de gĂ©nĂ©rer du cache de maniĂšre pĂ©riodique. NĂ©cessaire pour des rapports qui utilisent de trĂšs grosses tables qu'il n'est parfois pas possible d'optimiser.

    ParamÚtres en entrée

    Il est trÚs facile de générer ses propres paramÚtres afin de filtrer les rapports, que ce soit sur une plage de date, une liste d'options sortie d'une base de données, des cases à cocher etc.

    Liens entre rapports

    Que ce soit avec Chart.js ou bien un tableau, vous pouvez crĂ©er des liens entre vos rapports ou bien sur le mĂȘme rapport pour faire des rapports de type drill-down.

    HĂ©bergement

    CÎté API, RootDB est une application Laravel qui fonctionne sur du PHP en version 8.2.x (voir 8.3.x, mais pas encore bien testé) et utilise Memcached pour la gestion du cache.
    Le serveur de websocket est propulsé par Laravel Reverb.
    CĂŽtĂ© Frontend, il s'agit d'une application React classique, en TypeScript, qui utilise PrimeReact pour la suite de composants prĂȘt-Ă -l'emploi.

    Conclusion

    Concernant les fonctionnalités que nous aimerions mettre en place petit à petit :

    • une interface de configuration pour Chart.js - afin de, quand mĂȘme, rendre plus simple la configuration des charts, tout en laissant la libertĂ© au dĂ©veloppeur de coder en javascript les fonctionnalitĂ©s avancĂ©s ;
    • un nouveau type de connecteur pour supporter Microsoft SQL Server ;
    • une fonctionnalitĂ© d'auto-rafraichissement des rapports ;
    • l'import asynchrone de gros fichiers CSV ou Excel.

    Nous pouvons aider Ă  l'utilisation, par l’intermĂ©diaire :

    • d'un salon discord mais ce n'est pas forcĂ©ment idĂ©al pour ce genre de projet. Je suis donc entrain de regarder du cĂŽtĂ© de Matrix, Ă©ventuellement ;
    • un forum classique.

    Voilà, c'était une brÚve présentation de RootDB.
    C'est un projet qui n'a pas encore Ă©tĂ© testĂ© par beaucoup de monde, d’oĂč cette prĂ©sentation pour le faire connaitre un peu plus.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Codeberg, la forge en devenir pour les projets libres ?

    Face aux risques que fait peser GitHub sur le monde des logiciels libres suite Ă  son rachat par Microsoft en 2018, une alternative semble avoir percĂ©. Cette dĂ©pĂȘche propose un tour d'horizon des problĂšmes posĂ©s par GitHub et expose comment Codeberg pourrait y rĂ©pondre.
    Logo Codeberg

      Sommaire

      Les points forts de Codeberg

      L'association Codeberg e.V. 1 et son projet Codeberg.org ont été fondés en janvier 2019, suite au rachat par Microsoft de GitHub. En plus d'un statut associatif à but non lucratif, ce qui limite les risques de disparition du jour au lendemain, Codeberg est basé en Europe (à Berlin), ce qui est un plus pour nos données personnelles.

      Son logo reprĂ©sente un sommet enneigĂ© sur fond de ciel bleu. En effet, en Allemand, der Berg veut dire la montagne et on pourrait donc traduire Codeberg par une « montagne de code Â». Et effectivement, la communautĂ© compte fin avril 2024 plus de 102 000 utilisateurs et plus de 129 000 projets y sont hĂ©bergĂ©s. L'association qui dirige le projet compte plus de 400 membres. Le financement s'effectue par les dons (dĂ©ductible des impĂŽts en Allemagne) et/ou contributions aux projets sous-jacents Ă  la forge.

      La forge est basĂ©e sur Forgejo, logiciel libre sous licence MIT, dont le nom vient de l'Esperanto forĝejo, ce qui est cohĂ©rent avec l'attention portĂ©e Ă  la langue de l'utilisateur et aux problĂšmes de traduction (service Weblate). Comme avec GitLab, la licence libre implique qu'un projet peut possĂ©der sa propre instance s'il le souhaite. On notera que Forgejo est un fork de Gitea, lui-mĂȘme fork de Gogs, et est donc Ă©crit en langage Go, langage sous licence BSD avec un brevet. Le projet Forgejo, Ă©videmment hĂ©bergĂ© sur Codeberg, est trĂšs actif avec plus de 900 Pull Requests acceptĂ©es depuis un an.

      La problématique du tout GitHub

      GitHub, lancĂ© en 2008, est devenu la plus grosse plateforme d'hĂ©bergement de codes sources, utilisĂ©e par un grand nombre de projets majeurs du monde du libre (Firefox, Matrix, Yunohost
). Ce qui par effet d'attraction — et de rĂ©seau centralisant, contraire au choix de git dĂ©centralisĂ© par nature — conduit souvent Ă  faire de Github un choix par dĂ©faut, facilitant les interactions avec les autres projets et permettant d'accĂ©der Ă  une large base de contributeurs potentiels. Quand on cite une URL GitHub dans un rĂ©seau social, on peut d'ailleurs voir apparaĂźtre ce genre de message :

      Contribute to Someone/my_project development by creating an account on GitHub.

      Cependant, si ce service fourni par Microsoft est actuellement encore gratuit, il est soumis à son bon-vouloir, avec le risque de voir se répéter l'épisode SourceForge (publicités trompeuses, installateurs modifiés, usurpation d'identité de projets partis ailleurs, etc.).

      Par ailleurs, derriĂšre une communication favorable Ă  l'open source, le code de la forge GitHub est volontairement fermĂ©. Vous ne pouvez donc pas avoir votre propre instance de GitHub. En outre, cela laisse un flou sur l'exploitation de nos donnĂ©es (au sens large, le code lui-mĂȘme et nos donnĂ©es personnelles, l'hĂ©bergement Ă©tant dĂ©lĂ©guĂ©). Avec l'arrivĂ©e du projet Copilot, il est cependant certain que nos codes servent Ă  alimenter un outil d'IA, permettant Ă  Microsoft de monĂ©tiser des suggestions de code en faisant fi des questions de licence. Une partie d'un code sous licence libre pourrait potentiellement se retrouver injectĂ©e dans un projet avec une licence incompatible et de surcroĂźt sans citation de l'auteur.

      Des alternatives possibles

      On pense tout d'abord à GitLab, logiciel lancé en 2011, qui permet d'avoir sa propre instance serveur pour maßtriser l'ensemble (client et serveur sont libres). Parmi les grands projets libres, on trouve en particulier GNOME et Debian qui utilisent leur propre instance GitLab CE (Community Edition), logiciel sous licence MIT. Mais il faut nuancer : la forge GitLab.com utilise GitLab EE (Enterprise Edition) qui est propriétaire et propose des fonctionnalités supplémentaires. GitLab suit donc un modÚle dit open core. GitLab compterait plus de 30 millions d'utilisateurs inscrits et l'entreprise GitLab Inc., lancée en 2014, génÚre plusieurs centaines de millions de dollars de revenus. On notera enfin qu'en 2018, le site migre de Microsoft Azure à Google Cloud Platform (USA), ce qui a posé des problÚmes d'accÚs dans certains pays.

      Autres projets de forges libres plus modestes :

      • Codingteam.net (une initiative française, service clĂŽturĂ© en 2019).
      • SourceHut http://sr.ht (et https://sourcehut.org/), initiĂ© par Drew DeVault.
      • Disroot basĂ© sur Forgejo comme Codeberg, mais il ne semble pas avoir attirĂ© de projets d'envergure (le portail, sorte de Framasoft nĂ©erlandais, est nĂ©anmoins Ă  recommander).
      • Chez un Chaton (GitLab ou Gitea pour la plupart).
      • L'auto-hĂ©bergement : chez-vous, dans un fablab, en datacenter sur serveur dĂ©dié 

      Pour vous faire venir sur Codeberg

      PremiĂšres impressions

      La page principale est accueillante et annonce que Codeberg.org ne vous piste pas et n'utilise pas de cookies tiers. Les statistiques actuelles sont affichĂ©es : nombre de projets, d'utilisateurs et de membres de l'association. Chose agrĂ©able, vous avez la possibilitĂ© de choisir le français parmi les nombreuses langues proposĂ©es pour l'interface. Petite icĂŽne qui attire l'attention : l'activitĂ© de chaque dĂ©pĂŽt peut ĂȘtre suivie grĂące Ă  un flux RSS. Sinon, l'organisation gĂ©nĂ©rale est trĂšs semblable Ă  celle de GitHub ou GitLab et la prise en main de Codeberg se fait donc sans effort.

      Fonctionnalités avancées

      • Codeberg pages : permet de disposer d'un site web statique pour le projet
      • Forgejo actions : pour dĂ©rouler automatiquement les actions nĂ©cessaires Ă  l'intĂ©gration continue (CI/CD)
      • Weblate : pour gĂ©rer les traductions de votre projet. On peut d'ailleurs y constater que parmi les traductions de Forgejo, le Français est dans le peloton de tĂȘte.

      Projets ayant migré ou ayant un miroir sur Codeberg

      Un certain nombre de projets importants utilisent désormais Codeberg, ce qui est à la fois un gage de confiance et assure une base de contributeurs a minima :

      • libreboot : remplacement libre de BIOS/UEFI.
      • Conversations : le client majeur XMPP sur Android.
      • WideLands : jeu libre basĂ© sur le concept de Settlers II.
      • LibreWolf : fork de Firefox axĂ© sur la vie privĂ©e.
      • F-Droid : magasin d'applications libres pour Android.
      • FreeBSD : miroir de https://cgit.freebsd.org/
      • FreeCAD : miroir officiel.
      • Forgejo : fork communautaire de Gitea suite Ă  la privatisation de celui-ci en 2022.
      • Fedilab : client Android pour le Fediverse.
      • irssi : client IRC.
      • Peppermint OS : une distribution Linux avec bureau minimaliste.
      • DivestOS : un fork de LineageOS orientĂ© sur la protection de la vie privĂ©e.
      • VeggieKarte : un service pour trouver des restaurants vĂ©gĂ©tariens/vĂ©gĂ©taliens.
      • 


      Comment migrer vers Codeberg ?

      Migrer le code source et l'éventuel Wiki associé ne devrait pas poser de problÚme particulier. Il suffit de configurer git pour pusher vers la nouvelle forge. Cette page décrit comment migrer l'ensemble de votre projet (incluant les issues, le wiki, les Pull Request, etc.) vers Codeberg : https://docs.codeberg.org/advanced/migrating-repos/

      Concernant les Workflows (CI), bien qu'il n'y ait pas de garantie de compatibilité avec les Actions Github, la syntaxe se veut similaire pour faciliter la transition : https://forgejo.org/2023-02-27-forgejo-actions/

      Au-delĂ  de l'aspect technique, il reste aussi Ă  faire migrer la communautĂ© d'utilisateurs (la prĂ©sence fortement suivie sur Mastodon peut ĂȘtre un avantage).

      Conclusion

      Codeberg est un outil prometteur. Il reste pour la communauté du logiciel libre à le faire grandir. Rappelons les statistiques : 100 millions de développeurs sur GitHub, 30 millions utilisant GitLab et 100 000 pour Codeberg. Le potentiel est grand, l'un des enjeux est de financer l'association pour accompagner la croissance de la communauté, tout en faisant monter en puissance l'infrastructure informatique.

      Sources / Liens

      Controverse GitHub

      Forges diverses

      Codeberg


      1. e.V. est l'abrĂ©viation de eingetragener Verein (association dĂ©clarĂ©e). â†©

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      ❌