❌

Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraĂźchir la page.
À partir d’avant-hierFlux principal

🏆 Meilleures contributions LinuxFr.org : les primĂ©es de dĂ©cembre 2024

Par : Florent Zara
10 janvier 2025 Ă  04:05

Une nouvelle annĂ©e dĂ©marre, mais en 2025, nous continuons sur notre lancĂ©e de rĂ©compenser celles et ceux qui chaque mois contribuent au site LinuxFr.org (dĂ©pĂȘches, commentaires, logo, journaux, correctifs, etc.). Vous n’ĂȘtes pas sans risquer de gagner un livre des Ă©ditions Eyrolles, ENI et D-Booker. Voici les derniers gagnants de 2024 avant d'attaquer la promotion 2025 :

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

Les livres 📚 sĂ©lectionnĂ©s

Bandeau LinuxFr.org

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

Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
     

Commentaires : voir le flux Atom ouvrir dans le navigateur

GIMP 3.0 RC2 est sorti

Note : cette dĂ©pĂȘche est une traduction de l'annonce officielle de la sortie de GIMP 3.0 RC2 du 27 dĂ©cembre 2024 (en anglais).

AprĂšs la premiĂšre sĂ©rie de retours de la communautĂ©, nous sommes heureux de partager la deuxiĂšme version candidate de GIMP 3.0 ! Les gens nous ont donnĂ© des commentaires trĂšs utiles sur la premiĂšre version candidate et nous avons pu corriger de nombreux bugs.

C’est notre petit cadeau sous le sapin 🎄 pour vous tous ! (NdM: disons fourrĂ© dans la galette/le gĂąteau des rois dĂ©sormais ?)

GIMP 3.0 RC2: écran de démarrage

Écran de dĂ©marrage de la nouvelle version candidate, par Sevenix (CC by-sa 4.0) - GIMP 3.0 RC2

Sommaire

Corrections de bugs importantes

Plusieurs correctifs ont été apportés depuis la version RC1. Nous souhaitons mettre en évidence les bugs les plus importants afin que les utilisateurs en soient informés et puissent effectuer des tests supplémentaires. Pour plus de détails sur les autres correctifs de bugs, veuillez consulter notre page NEWS sur GitLab.

Migration des paramĂštres de la 2.10

Lors des tests communautaires, nous avons dĂ©couvert que les paramĂštres des utilisateurs de la 2.10 n’étaient pas migrĂ©s vers GIMP 3.0 en raison de certaines hypothĂšses incorrectes dans le code d’importation. Étant donnĂ© que la plupart des dĂ©veloppeurs utilisent exclusivement GIMP 3.0 depuis un certain temps, nous n’avions pas remarquĂ© ce problĂšme. Le bug devrait maintenant ĂȘtre corrigĂ©, nous demandons donc des rapports de bugs si des prĂ©fĂ©rences 2.10 ne sont pas importĂ©es correctement dans RC2. Notez que si vous avez dĂ©jĂ  utilisĂ© 3.0 RC1, vous devrez d’abord supprimer ces configurations, sinon RC2 n’essaiera pas d’importer les prĂ©fĂ©rences 2.10 (assurez-vous de sauvegarder vos paramĂštres bien sĂ»r !).

Console Windows

Dans les versions de dĂ©veloppement 2.99, les versions Windows lançaient automatiquement un affichage de console en plus de GIMP lui-mĂȘme. C’est trĂšs utile pour les dĂ©veloppeurs Windows pour voir les messages de dĂ©bogage, mais la console n’était pas destinĂ©e Ă  ĂȘtre affichĂ©e pendant les versions stables. Comme nous avons modifiĂ© notre processus de construction pour utiliser Meson au lieu d’Autotools, nous avons appris que nous devions apporter des modifications supplĂ©mentaires pour empĂȘcher l’affichage de la console. Cela devrait ĂȘtre corrigĂ© maintenant grĂące Ă  Jehan - si vous voyez toujours la console sous Windows, veuillez remplir un nouveau rapport de bogue !

Problùmes de polices d’interface utilisateur manquantes sur macOS

Il y a un problĂšme de longue date oĂč certains utilisateurs de macOS ne voyaient que des symboles « Unicode manquants Â» au lieu des textes d’interface dans GIMP (Ă  la fois dans la version 2.10 et dans la version 3.0). Cela Ă©tait dĂ» Ă  un bug dans Pango, la bibliothĂšque que nous utilisons pour les mises en page de texte. Ce problĂšme a Ă©tĂ© rĂ©solu avec la rĂ©cente version Pango 1.55.0, nous encourageons donc tous les empaqueteurs macOS tiers Ă  mettre Ă  jour vers cette version lorsqu’ils construisent GIMP pour le distribuer.

GIMP 3.0.0 RC2 : le package officiel de macOS contient dĂ©sormais Pango sans polices cassĂ©es

Si vous aviez ce problĂšme de polices cassĂ©es sur macOS (Ă  gauche), il est dĂ©sormais rĂ©solu (Ă  droite) - captures d’écran de rapporteurs de bug - GIMP 3.0.0 RC2

Intégration de darktable

AprĂšs la sortie de la version 3.0 RC1, nous avons reçu des rapports de certains utilisateurs indiquant qu’ils ne pouvaient toujours pas importer et exporter d’images entre GIMP et darktable. Nous avons travaillĂ© avec les dĂ©veloppeurs de darktable pour Ă©liminer les bugs restants, de sorte que l’intĂ©gration entre darktable 5.0.0 et GIMP 3.0 RC2 devrait dĂ©sormais fonctionner pour tout le monde. Cependant, veuillez dĂ©poser un nouveau rapport de bogue si vous continuez Ă  rencontrer des problĂšmes pour connecter les deux !

Améliorations

Bien que l’objectif principal du dĂ©veloppement de la version 3.0 RC2 ait Ă©tĂ© la correction de bugs et le peaufinage, certaines nouvelles fonctionnalitĂ©s ont Ă©galement Ă©tĂ© implĂ©mentĂ©es.

API de filtre GEGL

De nombreux anciens wrappers d’API pour les opĂ©rations GEGL ont Ă©tĂ© supprimĂ©s dans la version RC1. Bien que cela ait rĂ©duit la dette technique, cela a Ă©galement causĂ© des problĂšmes Ă  de nombreux dĂ©veloppeurs de greffons et de scripts tiers qui souhaitaient porter leurs greffons vers la version 3.0. Alors que notre plan initial Ă©tait d’implĂ©menter la nouvelle API publique de filtre aprĂšs la sortie de la version 3.0, les commentaires de la communautĂ© nous ont convaincu de l’ajouter pour la version 3.0 RC2.

Applying filters through libgimp 3.0.0 API (Script-fu et al.) - GIMP 3.0.0 RC2

Application de filtres via l’API libgimp 3.0.0 (Script-fu et al.) - GIMP 3.0.0 RC2

Le travail de Jehan permet aux dĂ©veloppeurs d’appliquer des effets de filtre soit immĂ©diatement, soit de maniĂšre non destructrice. Vous pouvez voir des exemples de la maniĂšre de procĂ©der en C, Python et Script-Fu dans la requĂȘte de fusion, ou en recherchant gimp-drawable-filter dans le navigateur de procĂ©dures de GIMP. Nous avons Ă©galement commencĂ© Ă  utiliser l’API de filtre dans nos scripts Python pour crĂ©er automatiquement des effets d’arriĂšre-plan flou pour le programme d’installation Windows, et avec cette mĂȘme API en C, Alx Sa a ajoutĂ© la prise en charge de l’importation de l’ancien style de calque Color Overlay de Photoshop.

Nous sommes preneurs des retours et des rapports de bugs d’auteurs de greffons et de scripts qui utilisent la nouvelle API de filtrage dans leur travail ! Nous avons Ă©galement prĂ©vu d’autres mises Ă  jour pour GIMP 3.0.

Espaces de fusion de calques et composition dans les fichiers XCF

Les discussions entre les experts en science des couleurs Elle Stone et Øyvind KolĂ„s ont rĂ©vĂ©lĂ© un autre domaine nĂ©cessitant des amĂ©liorations dans le cadre de notre projet Color Space Invasion. Plus prĂ©cisĂ©ment, les images avec des profils de couleurs qui ont des courbes de reproduction des tons non perceptives peuvent ne pas ĂȘtre rendues correctement lorsqu’elles sont dĂ©finies sur certains modes de calque.

Øyvind a implĂ©mentĂ© une correction pour ce problĂšme en ajoutant un espace perceptuel appropriĂ© par dĂ©faut Ă  des modes de calque spĂ©cifiques. Bien que nous pensions que cette amĂ©lioration ne devrait pas avoir d’impact sur les fichiers XCF plus anciens, n’hĂ©sitez pas Ă  rapporter tous problĂšmes de compatibilitĂ© avec la version 3.0 RC2 !

Paquets

AppImage

GrĂące aux efforts continus de Bruno Lopes et avec l’aide de Samueru et de la communautĂ© AppImage, notre AppImage expĂ©rimentale fonctionne dĂ©sormais sur la plupart des distributions Linux. Nous souhaitons encourager davantage de tests, dans l’espoir de pouvoir la proposer comme une autre version Linux en plus de notre Flatpak. Vous pouvez consulter les instructions pour installer les paquets expĂ©rimentaux AppImage sur notre page de tĂ©lĂ©chargement des versions de dĂ©veloppement.

Flatpak

Notre flatpak journalier a maintenant un App-ID dĂ©diĂ© org.gimp.GIMP.Nightly. Cela signifie principalement qu’il peut ĂȘtre installĂ© cĂŽte Ă  cĂŽte avec le flatpak stable tandis que les deux sont visibles dans vos menus (plus besoin de sĂ©lectionner quelle version doit ĂȘtre affichĂ©e avec flatpak make-current).

Mais cela signifie Ă©galement que tous ceux qui avaient le flatpak journalier jusqu’à prĂ©sent ne verront pas de mise Ă  jour arriver de sitĂŽt. Afin de continuer Ă  utiliser le flatpak journalier, dĂ©sinstallez celui existant et installez le nouveau avec ces commandes :

flatpak uninstall org.gimp.GIMP//master
flatpak install https://nightly.gnome.org/repo/appstream/org.gimp.GIMP.Nightly.flatpakref

⚠ Rappel : le flatpak journalier contient le code de dĂ©veloppement actuel tel qu’il se prĂ©sente dans le dĂ©pĂŽt source. Parfois, il peut mĂȘme ĂȘtre trĂšs cassĂ© ou rendre vos fichiers de projet invalides. Nous ne le recommandons pas pour la production ! Utilisez cette version pour nous aider Ă  dĂ©boguer en signalant les problĂšmes ou si vous aimez vraiment les risques pour tester les derniĂšres fonctionnalitĂ©s.

Améliorations du greffon BMP

Le nouveau contributeur Rupert Weber a Ă©tĂ© trĂšs occupĂ© depuis la derniĂšre mise Ă  jour avec de nouvelles mises Ă  jour de notre greffon BMP. Quelques points de son travail Ă  mettre en avant :

  • Les fichiers BMP sont dĂ©sormais importĂ©s sans perte dans leur prĂ©cision d’origine, plutĂŽt que d’ĂȘtre convertis en prĂ©cision entiĂšre de 8 bits.
  • Le greffon prend dĂ©sormais en charge le chargement de fichiers BMP avec compression RLE24 et Huffman.
  • Nous chargeons dĂ©sormais les fichiers BMP par morceaux plutĂŽt que d’essayer de charger l’image entiĂšre en une seule fois. Des travaux connexes nous permettent Ă©galement de charger des fichiers BMP beaucoup plus volumineux.
  • Rupert a Ă©galement effectuĂ© beaucoup de nettoyage et de maintenance du code, afin de rendre le greffon plus facile Ă  maintenir Ă  l’avenir.

Mises Ă  jour diverses

  • Jehan a apportĂ© quelques amĂ©liorations d’usage de la console Python. Vous pouvez dĂ©sormais utiliser les raccourcis Ctrl+R et Ctrl+S pour parcourir votre historique de commandes, et Page prĂ©cĂ©dente et Page suivante vous permettent dĂ©sormais de faire dĂ©filer l’historique en plus des touches flĂ©chĂ©es Haut et Bas.

History search in Python Console - GIMP 3.0.0 RC2
Recherche dans l’historique de commande (console Python) - GIMP 3.0.0 RC2

  • Alx Sa a implĂ©mentĂ© le chargement des fichiers CMJN PAM dans le greffon PNM.

  • Sous Windows, nous avons Ă©galement ajoutĂ© la possibilitĂ© d’ouvrir des images via des raccourcis Windows (fichiers .lnk) directement depuis la boĂźte de dialogue de sĂ©lection de fichiers. Ce travail est Ă©galement rĂ©alisĂ© par Alx Sa.

  • D’autres modifications et amĂ©liorations ont Ă©tĂ© apportĂ©es au thĂšme. En particulier, le style du « curseur compact » a Ă©tĂ© considĂ©rablement amĂ©liorĂ© aprĂšs les commentaires et le travail de Denis Rangelov. Denis a Ă©galement crĂ©Ă© de nouvelles icĂŽnes pour la boĂźte de dialogue de navigation ancrable, remplaçant les doublons par des symboles distincts. Anders Jonsson a Ă©galement rĂ©visĂ© le thĂšme et supprimĂ© certaines solutions de contournement qui Ă©taient nĂ©cessaires dans GIMP 2.10, mais qui ne sont plus nĂ©cessaires avec nos nouveaux thĂšmes 3.0.

  • Idriss Fekir a apportĂ© des amĂ©liorations Ă  notre code de chargement de polices XCF, pour amĂ©liorer la compatibilitĂ© lors de l’importation d’anciens fichiers XCF.

Aperçu des changements depuis la version 2.10

Pour ceux qui n’ont pas suivi de prĂšs le dĂ©veloppement de GIMP, cet article ne couvre que les changements progressifs depuis la derniĂšre version. Ils ne rĂ©pertorient pas tous les changements ou amĂ©liorations apportĂ©s Ă  GIMP 3.0 - ce serait un article trĂšs long !

Bien que nous aurons des notes de version complĂštes pour la version finale 3.0, nous avons pensĂ© qu’il serait utile de rĂ©sumer quelques-uns des changements majeurs apportĂ©s au cours du processus de dĂ©veloppement de la version 2.99 :

  • Le travail initial de portage de GIMP vers GTK3 a eu lieu dans 2.99.2. Cette version a Ă©galement introduit la sĂ©lection multi-calque, ainsi que des modifications initiales de l’API et des amĂ©liorations de la gestion de l’espace colorimĂ©trique.
  • D’autres mises Ă  jour de l’API ont Ă©tĂ© effectuĂ©es dans 2.99.4, notamment la possibilitĂ© de gĂ©nĂ©rer automatiquement des interfaces utilisateur de greffon en fonction des entrĂ©es de l’utilisateur. Diverses amĂ©liorations de convivialitĂ© ont Ă©galement Ă©tĂ© apportĂ©es, ainsi que l’introduction de l’outil expĂ©rimental Paint Select.
  • 2.99.6 a apportĂ© davantage de mises Ă  jour de l’API et de travaux internes. D’autres fonctionnalitĂ©s destinĂ©es Ă  l’utilisateur incluent la possibilitĂ© de placer des guides en dehors du canevas, une meilleure prise en charge du pavĂ© tactile et une meilleure prise en charge des diffĂ©rentes mĂ©tadonnĂ©es de couleur PNG.
  • Le pipeline de dĂ©veloppement a Ă©tĂ© considĂ©rablement amĂ©liorĂ© dans 2.99.8, permettant des temps de construction et une automatisation plus rapides. La prise en charge de nouveaux formats de fichiers tels que PSB et JPEGXL a Ă©tĂ© ajoutĂ©e dans cette version, ainsi que la prise en charge des pilotes Windows Ink de tablette graphique.
  • 2.99.10 a introduit des « ensembles de calques Â», remplaçant l’ancien concept de calques liĂ©s. La dynamique de peinture a Ă©tĂ© rationalisĂ©e dans cette version, ainsi que la premiĂšre version de la boĂźte de dialogue de bienvenue.
  • La prise en charge de la liaison anticipĂ©e CMJN a Ă©tĂ© implĂ©mentĂ©e dans 2.99.12. Les thĂšmes de l’interface graphique CSS ont Ă©galement fait l’objet d’une refonte majeure dans cette version, ainsi que davantage de prise en charge de formats de fichiers et d’amĂ©liorations majeures de Script-Fu.
  • 2.99.14 a vu l’introduction de contours non destructifs pour l’outil de texte. L’outil d’alignement a Ă©galement Ă©tĂ© rĂ©visĂ©, la mise Ă  l’échelle des thĂšmes et des icĂŽnes a Ă©tĂ© amĂ©liorĂ©e et les sĂ©lections flottantes ont Ă©tĂ© largement remplacĂ©es dans le flux de travail.
  • Le portage GTK3 a finalement Ă©tĂ© achevĂ© dans 2.99.16. La fenĂȘtre contextuelle de recherche / a Ă©tĂ© mise Ă  jour pour afficher le chemin du menu pour toutes les entrĂ©es, ainsi que pour permettre de chercher parmi les filtres.
  • Les filtres non destructifs ont Ă©tĂ© introduits pour la premiĂšre fois dans 2.99.18. Des amĂ©liorations majeures de la gestion des couleurs ont Ă©galement Ă©tĂ© apportĂ©es, et de nouvelles options d’extension automatique des limites de calque et d’accrochage ont Ă©galement Ă©tĂ© implĂ©mentĂ©es.

GEGL

Tout comme pour GIMP, la version 0.4.52 de GEGL a Ă©tĂ© corrigĂ©e. Øyvind KolĂ„s a corrigĂ© certaines Ă©tiquettes gĂ©nĂ©riques « EntrĂ©e auxiliaire Â» pour qu’elles soient plus significatives. Elles seront Ă©galement visibles dans les filtres de GIMP. Il a Ă©galement amĂ©liorĂ© la prĂ©cision du traitement des couleurs de certains filtres. Thomas Manni, contributeur de longue date, a Ă©galement corrigĂ© les plantages lorsque certains filtres Ă©taient exĂ©cutĂ©s sur de trĂšs petits calques.

Statistiques de sortie

Depuis GIMP 3.0 RC1, dans le dĂ©pĂŽt principal de GIMP :

  • 73 rapports ont Ă©tĂ© fermĂ©s comme CORRIGÉS.
  • 71 demandes de fusion ont Ă©tĂ© acceptĂ©es.
  • 277 commits ont Ă©tĂ© poussĂ©s.
  • 18 traductions ont Ă©tĂ© mises Ă  jour : bulgare, catalan, chinois (Chine), chinois (TaĂŻwan), danois, finnois, gĂ©orgien, islandais, italien, letton, lituanien, norvĂ©gien nynorsk, persan, portugais, russe, slovĂšne, suĂ©dois, ukrainien.

35 personnes ont contribuĂ© Ă  des modifications ou des correctifs Ă  la base de code de GIMP 3.0.0 RC2 (l’ordre est dĂ©terminĂ© par le nombre de commits ; certaines personnes sont dans plusieurs groupes) :

  • 12 dĂ©veloppeurs pour le code principal : Jehan, Alx Sa, Michael Schumacher, Anders Jonsson, Lloyd Konneker, Øyvind KolĂ„s, Idriss Fekir, Andre Klapper, Jacob Boerema, Michael Natterer, Rupert Weber, Thomas Manni.
  • 11 dĂ©veloppeurs de plug-ins ou modules : Jehan, Lloyd Konneker, Alx Sa, Rupert Weber, Daniel NovomeskĂœ, Jacob Boerema, Aki, Bruno, Ryan Sims, Simon Munton.
  • 19 traducteurs : Alan Mortensen, Cheng-Chia Tseng, KolbjĂžrn StuestĂžl, RĆ«dolfs Mazurs, Jiri Grönroos, Sveinn Ă­ Felli, Alexander Shopov, Aurimas Černius, Marco Ciampa, Danial Behzadi, Hugo Carvalho, Jordi Mas, Anders Jonsson, Ekaterine Papava, Julia Dronova, Luming Zh, Martin, Michael Schumacher, Youri Chornoivan.
  • 2 concepteurs de thĂšmes : Alx Sa, Anders Jonnson.
  • 2 contributeurs Ă  la documentation : Jehan, Bruno.
  • 5 contributeurs pour la compilation, l’empaquetage ou l’intĂ©gration continue : Bruno, Jehan, Lloyd Konneker, Alx Sa, Jacob Boerema, Rupert Weber.

Contributions sur d’autres dĂ©pĂŽts du GIMPverse (l’ordre est dĂ©terminĂ© par le nombre de commits) :

  • GEGL 0.4.52 est composĂ© de 31 commits de 16 contributeurs : Øyvind KolĂ„s, Sam L, Thomas Manni, lillolollo, Alan Mortensen, Anders Jonsson, Ekaterine Papava, Hugo Carvalho, Jordi Mas, Juliano de Souza Camargo, KolbjĂžrn StuestĂžl, Lukas Oberhuber, Luming Zh, Marco Ciampa, Martin, Yuri Chornoivan.
  • ctx a enregistrĂ© 48 commits depuis la sortie de la RC1 par 1 contributeur : Øyvind KolĂ„s.
  • gimp-data a enregistrĂ© 6 commits de 5 contributeurs : Anders Jonsson, Jehan, Sevenix, Alx Sa et Denis Rangelov.
  • gimp-test-images (nouveau rĂ©fĂ©rentiel pour les tests de prise en charge des images) a enregistrĂ© 2 commits de 1 contributeur : Rupert.
  • La version gimp-macos-build (scripts d’empaquetage pour macOS) a reçu 5 commits de 1 contributeur : Lukas Oberhuber.
  • La version flatpak a reçu 4 commits de 2 contributeurs : Bruno Lopes, Jehan.
  • Notre site Web principal a reçu 29 commits de 3 contributeurs : Jehan, Alx Sa, Andrea Veri.
  • Notre site Web de dĂ©veloppement a reçu 16 commits de 2 contributeurs : Jehan, Bruno Lopes.
  • Notre documentation pour GIMP 3.0 a reçu 157 commits de 10 contributeurs : Andre Klapper, KolbjĂžrn StuestĂžl, Jacob Boerema, Alan Mortensen, Anders Jonsson, Marco Ciampa, Jordi Mas, Yuri Chornoivan, Alx Sa, Jiri Grönroos.

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

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

Autour de GIMP

Miroirs de téléchargement

GNOME a abandonnĂ© l’utilisation de miroirs lors de sa derniĂšre mise Ă  jour d’infrastructure. Comme nos miroirs de tĂ©lĂ©chargement sont hĂ©bergĂ©s par eux, on nous a demandĂ© si nous voulions Ă©galement faire la mĂȘme chose. En tant que projet communautaire, nous apprĂ©cions tous ceux qui contribuent un miroir pour rendre GIMP plus accessible dans leur rĂ©gion. Par consĂ©quent, nous avons dĂ©cidĂ© de continuer Ă  utiliser des miroirs pour distribuer GIMP.

Si vous souhaiter contribuer à un miroir pour votre région, voici la nouvelle procédure :

Comment devenir un miroir officiel (mise à jour de la procédure)

  1. Créez une demande de miroir sur le tracker gimp-web
  2. Dites-nous pourquoi vous souhaitez crĂ©er un miroir de GIMP, pour quels autres logiciels libres vous en contribuez dĂ©jĂ  un, quelle est votre configuration, l’emplacement du serveur

  3. Parlez-nous de vous : ĂȘtes-vous une organisation ou un particulier ? Donnez-nous le nom et l’URL spĂ©cifiques Ă  afficher dans la liste des sponsors de miroir.
  4. Une fois que nous aurons terminé de vérifier votre organisation, les identifiants rsync seront échangés de maniÚre sécurisée, vous permettant de synchroniser votre miroir avec le serveur source
  5. Il n’y a rien de particulier Ă  faire pour apparaĂźtre sur la page des sponsors qui sera mise Ă  jour rĂ©guliĂšrement via des scripts. Pourtant, cela peut prendre quelques jours, voire quelques semaines parfois. Ne vous inquiĂ©tez donc pas si le nom de votre organisation n’apparaĂźt pas immĂ©diatement !

🛈 Nous vĂ©rifions automatiquement Ă  intervalles alĂ©atoires que les miroirs sont mis Ă  jour suffisamment rapidement et que les donnĂ©es correspondent pour des raisons de sĂ©curitĂ© Ă©videntes.

Changements dans les miroirs

De plus, depuis la publication de la nouvelle 3.0RC1, un nouveau miroir a été ajouté :

  • Sahil Dhiman, Mumbai, Inde

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

Financer des exécuteurs ("runner") GitLab

Le dĂ©pĂŽt de code de GIMP est Ă©galement hĂ©bergĂ© sur la plateforme GitLab de GNOME. Andrea Veri a demandĂ© si nous pouvions financer un exĂ©cuteur [NDA: un "runner" est une sorte de serveur dĂ©diĂ© Ă  la compilation ou Ă  l’intĂ©gration continue de maniĂšre gĂ©nĂ©rale] sur la plateforme, ce qui permet Ă  tout projet sur la plateforme de tester la construction de son logiciel avant, pendant et aprĂšs les modifications de code. AprĂšs un vote du comitĂ© de GIMP, nous avons acceptĂ© et sommes dĂ©sormais les sponsors d’un exĂ©cuteur CI/CD x86 !

Télécharger GIMP 3.0 RC2

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

  • Paquets Linux flatpaks pour x86 et ARM (64 bits)
  • Installateur Windows universel pour x86 (32 et 64 bits) et pour ARM (64 bits)
  • Paquet MSIX (aperçu GIMP) pour x86 et ARM (64 bits)
  • Paquets macOS DMG pour le matĂ©riel Intel
  • Paquets macOS DMG pour le matĂ©riel Apple Silicon

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

🛈 Notes:

  • Les 2 paquets DMG macOS seront probablement en retard, car nous attendons la validation de la mise Ă  jour Apple par la Fondation GNOME avant de pouvoir signer nos paquets.
  • Le paquet MSIX prend gĂ©nĂ©ralement quelques jours ouvrables de validation par Microsoft. (le paquet MSIX est disponible)

Et ensuite ?

GrĂące au grand nombre de retours que nous avons reçus pour notre premier candidat Ă  la version finale, nous sommes en mesure de vous prĂ©senter cette deuxiĂšme version qui en est d’autant plus robuste. Comme vous l’avez vu, quelques surprises supplĂ©mentaires 🎁 sont arrivĂ©es avec les corrections de bugs, notamment la nouvelle API de filtre, qui a dĂ©clenchĂ© la prise en charge de l’importation de l’ancien effet Color Overlay de PSD, des modes de fusion et de composition amĂ©liorĂ©s, et plus encore. Nous avons pensĂ© que cela valait la peine de rompre le gel des fonctionnalitĂ©s pour ces changements et que cela fera toute la diffĂ©rence !

Avec cette deuxiĂšme version candidate, nous sommes plus proches que jamais de la version 3.0.0 de GIMP. Comme d’habitude, nous attendons avec impatience les nouveaux rapports de problĂšmes de la communautĂ© qui nous permettront de finaliser la version 3.0.0 ! đŸ€—

N’oubliez pas que vous pouvez faire un don et financer personnellement les dĂ©veloppeurs de GIMP, afin de donner en retour et d’accĂ©lĂ©rer le dĂ©veloppement de GIMP. L’engagement de la communautĂ© aide le projet Ă  se renforcer ! đŸ’ȘđŸ„ł

🎅🎄🎉 Et bien sĂ»r, toute l’équipe vous souhaite de joyeuses fĂȘtes de fin d’annĂ©e (MAJ de Jehan) nos meilleurs vƓux pour la nouvelle annĂ©e ! đŸ„łđŸ„‚đŸŽ†

Commentaires : voir le flux Atom ouvrir dans le navigateur

đŸȘ¶ Les journaux LinuxFr.org les mieux notĂ©s de dĂ©cembre 2024

Par : Florent Zara
6 janvier 2025 Ă  13:08

LinuxFr.org propose des dĂ©pĂȘches et articles, soumis par tout un chacun, puis revus et corrigĂ©s par l’équipe de modĂ©ration avant publication. C’est la partie la plus visible de LinuxFr.org, ce sont les dĂ©pĂȘches qui sont le plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanĂ©e, par courriel, ou encore via mĂ©dias sociaux.

BanniĂšre LinuxFr.org

Ce que l’on sait moins, c’est que LinuxFr.org vous propose Ă©galement de publier directement vos propres articles, sans validation a priori de lÊŒĂ©quipe de modĂ©ration. Ceux-ci s’appellent des journaux. Voici un florilĂšge d’une dizaine de ces journaux parmi les mieux notĂ©s par les utilisateurs et les utilisatrices
 qui notent. LumiĂšre sur ceux du dernier mois de 2024.

Commentaires : voir le flux Atom ouvrir dans le navigateur

La mort lente de TuxFamily : pensez à déplacer vos projets ailleurs

Une dĂ©pĂȘche de 2008 introduisait TuxFamily.org ainsi : « PrĂ©sent sur Internet depuis 1999, TuxFamily.org fournit gratuitement des services d’hĂ©bergement pour tous les projets sous licence libre et permet ainsi la promotion du libre sous toutes ses formes (art libre, logiciel libre, etc.). Â»

Logo Tux Family

RĂ©cemment, nous Ă©voquions un incident DNS chez TuxFamily.org avec perte de nos deux DNS (entre le 9 dĂ©cembre 2024 vers 23h ou minuit, et le 10 dĂ©cembre 08:38) et un besoin de bascule de DNS pour revenir en ligne. Sur le site de TuxFamily, la page des nouvelles ne remonte depuis 2019 que des incidents. Alors un utilisateur a fini par poser poliment la question (en anglais) « Est-ce que TuxFamily est en train de mourir lentement ? Â», car il y a eu de nombreux incidents, dont certains non mentionnĂ©s dans les nouvelles et qu’il y a des soucis d’accĂšs Ă  cause de bibliothĂšques de crypto trop anciennes laissĂ©s sans rĂ©ponse. Est-ce un problĂšme de motivation, un creux temporaire, comment aider ?

Et la rĂ©ponse est arrivĂ©e, remerciant le demandeur de l’avoir posĂ©e : oui TuxFamily.org se meurt, oui la motivation est partie, tout est devenu vieux : les gens, les machines, les centres de donnĂ©es, l’architecture des services. TuxFamily.org ne serait plus pertinent techniquement et les efforts pour juste le maintenir ne sont plus suffisants. Et encore plus clairement dit : la vĂ©ritĂ© est que les meilleures choses Ă  faire sont : 1. migrer votre projet hors de TuxFamily.org (
) 2. parlez-en, ici ou en dehors de TuxFamily.org, pour que les autres projets restants aient une liste de suggestions d’hĂ©bergeurs.

Concernant LinuxFr.org: la gestion du DNS ne sera pas remise sur TuxFamily.org (voir l’entrĂ©e de suivi). Nous tenons Ă  remercier TuxFamily.org et les personnes derriĂšre pour les services rendus pendant des annĂ©es. Et nous arrĂȘtons Ă  regret de vanter cet hĂ©bergeur : il n’est plus listĂ© dans les projets amis dans notre bas de page et la banniĂšre affichĂ©e en rotation a Ă©tĂ© retirĂ©e.

TuxFamily.org utilise comme solution technique VHFFS (la derniÚre version présentée sur LinuxFr.org est la 4.4 et la derniÚre version parue est la 4.6 en octobre 2016).

Logo VHFFS

Souvenirs

TuxFamily.org est par exemple l'hébergeur de Kaos Fantasy, et était celui de Lent Ciné, et de bien d'autres projets. C'est aussi l'hébergeur de nombreuses listes de diffusion.

Nota bene : c'est loin d'ĂȘtre une premiĂšre, beaucoup d'autres forges logicielles ont fermĂ© et d'outils de forges ont disparu, comme Berlios.de, Google Code, Gitorious, Alioth (Debian), Betavine, CodeHaus, CodePlex, Fedora Hosted, Gna!, java.net, Phabricator, Tigris, Mozdev, LibreSource, Codendi, InDefero, CodingTeam, Django-Simple-Forge, Anvil, etc. (liste tirĂ©e de WikipĂ©dia et de la dĂ©pĂȘche « Forges logicielles et hĂ©bergement de projets libres Â»). On a d'ailleurs vu des migrations de Sourceforge Ă  TuxFamily.org par exemple.

Commentaires : voir le flux Atom ouvrir dans le navigateur

🏆 Meilleures contributions LinuxFr.org : les primĂ©es de novembre 2024

Par : Florent Zara
15 décembre 2024 à 18:07

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

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

Les livres 📚 sĂ©lectionnĂ©s

Bandeau LinuxFr.org

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

Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
     

🎄 Joyeux NoĂ«l 🎁

Commentaires : voir le flux Atom ouvrir dans le navigateur

đŸȘ¶ Les journaux LinuxFr.org les mieux notĂ©s de novembre 2024

Par : Florent Zara
10 décembre 2024 à 05:49

LinuxFr.org propose des dĂ©pĂȘches et articles, soumis par tout un chacun, puis revus et corrigĂ©s par l’équipe de modĂ©ration avant publication. C’est la partie la plus visible de LinuxFr.org, ce sont les dĂ©pĂȘches qui sont le plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanĂ©e, par courriel, ou encore via mĂ©dias sociaux.

BanniĂšre LinuxFr.org

Ce que l’on sait moins, c’est que LinuxFr.org vous propose Ă©galement de publier directement vos propres articles, sans validation a priori de lÊŒĂ©quipe de modĂ©ration. Ceux-ci s’appellent des journaux. Voici un florilĂšge d’une dizaine de ces journaux parmi les mieux notĂ©s par les utilisateurs et les utilisatrices
 qui notent. LumiĂšre sur ceux du mois de novembre passĂ©.

Commentaires : voir le flux Atom ouvrir dans le navigateur

DĂ©voilement de l'Ă©dition ConFoo 2025 !

10 décembre 2024 à 04:50

La confĂ©rence ConFoo est de retour pour sa 23e Ă©dition, du 26 au 28 fĂ©vrier 2025 Ă  l’HĂŽtel Bonaventure de MontrĂ©al !

logo confoo.ca

Avec plus de 190 prĂ©sentations offertes par une centaine d’experts de partout Ă  travers le monde, venez dĂ©couvrir pourquoi Confoo est devenu l’un des Ă©vĂ©nements phares pour les dĂ©veloppeurs en AmĂ©rique du Nord et de partout Ă  travers le monde.

Notre programmation officielle est d’ailleurs disponible dĂšs maintenant sur notre site web! Consultez nos toutes nouvelles prĂ©sentations axĂ©es sur le dĂ©veloppement FullStack OpenSource, l’intelligence artificielle, le devops et plus encore. OrganisĂ© au cƓur d’un environnement spĂ©cialement conçu pour les dĂ©veloppeurs, ConFoo est aussi l’endroit parfait pour rencontrer de potentiels employeurs et rĂ©seauter avec les meilleurs de l’industrie.

RĂ©servez vos billets dĂšs maintenant et profitez d’un rabais de 175$ sur votre inscription jusqu’au 13 dĂ©cembre !

Faites partie de l’aventure et dĂ©couvrez comment l’intelligence humaine façonne le milieu des hautes technologies!

Commentaires : voir le flux Atom ouvrir dans le navigateur

Venez nous retrouver à Open Source Experience les 4 et 5 décembre #OSXP2024

27 novembre 2024 Ă  02:57

La quatriÚme édition d'Open Source Experience (ou OSXP2024 pour les intimes) arrive à grand pas les 4 et 5 décembre prochains au Palais des CongrÚs de Paris. C'est un événement désormais rituel qui propose à la fois :

  • une centaine de confĂ©rences avec 125 confĂ©renciers, dont le programme est en ligne et dĂ©taillĂ© dans la suite de la dĂ©pĂȘche ;
  • une partie exposition avec 90 exposants, dont un village associatif un peu rĂ©duit cette annĂ©e (sept stands)

BanniĂšre OSXP24

Et LinuxFr.org rĂ©pond prĂ©sent comme d’habitude depuis de nombreuses annĂ©es. Vous pourrez donc nous y retrouver, stand A02 (tout en bas Ă  droite sur le plan). Une partie de l’équipe du site LinuxFr.org sera prĂ©sente au sein du village associatif pour vous faire dĂ©couvrir le site, discuter, rĂ©pondre Ă  toutes les questions que vous pourriez vous poser, vous donner des autocollants du site et vous faire gagner des kilos de livres, mais pas que (lisez plus bas, on renouvelle comme chaque annĂ©e).

Ce sera aussi l’occasion de se retrouver en chair et en os pour celles et ceux qui pourront faire le dĂ©placement et au vu du programme toujours trĂšs dense, on vous incite vraiment Ă  venir y faire un tour.

Sommaire

Programme des conférences

Le programme de cette 4e Ă©dition d'Open Source Experience a Ă©tĂ© publiĂ© par les organisateurs. Plus d'une centaine de confĂ©rences, tables rondes, workshops Ă  l'affiche, autour de trois thĂ©matiques qui veulent mettre en avant les enjeux et bĂ©nĂ©fices de l'open source pour les organisations avec des cas d’utilisation concrets, le tout autour de cinq thĂ©matiques.

Thématiques

  • IA, Machine Learning & Data ;
  • Cloud, Infra & IoT ;
  • CybersĂ©curitĂ© ;
  • Solutions d'entreprise ;
  • Business et enjeux.

Temps forts

En marge des conférences vous retrouverez plusieurs événements dans l'événement :

  • L'AssoLution, le temps fort associatif
  • Le concours des Acteurs du Libre dont nous avons remportĂ© le prix du numĂ©rique ouvert et Ă©thique en 2019
  • Les trophĂ©es Territoire NumĂ©rique Libre

Vous pourrez Ă©galement assister Ă  plusieurs animations : podcasts, jeux, concerts,


DĂ©couvrez le programme complet sur le site de OSXP !

Village associatif

Les associations présentes

Comme chaque année, un village associatif sera présent, mais il sera plus réduit cette année, suite à une réduction de l'espace exposition. Seront présents en plus de LinuxFr.org : Adullact, April, Framasoft, Libervia, MozFr, La Mouette, les Mongueurs de Perl, VLC et Wikimedia France.

Mais que vient faire LinuxFr.org Ă  Open Source Experience ?

Nous serons en A02, exilĂ©s au bout du village des associations lui mĂȘme dans le coin du salon, au plus loin des confĂ©rences et de l'espace VIP. Ferait-on trop de bruit avec notre mĂ©gaphone ? Une partie de l’équipe sera prĂ©sente pour :

  • rencontrer les personnes contributrices et notre lectorat ;
  • expliquer le principe de LinuxFr.org aux personnes qui ne connaissent pas (encore) (bien) le site ;
  • inciter notre lectorat Ă  contribuer : nous avons pu constater que certaines personnes ne se sentaient pas — Ă  tort, le plus souvent – le niveau pour passer la modĂ©ration (il y a les journaux aussi) et surtout affronter la communautĂ© de LinuxFr.org, qui peut ĂȘtre trĂšs exigeante ;
  • vous faire gagner des livres (nous nous sommes encore dĂ©menĂ©s pour vous ! Merci aux Ă©ditions D-Booker, Eyrolles et ENI pour les dons) ;
  • vous donner (oui, on est comme ça, on donne) des autocollants LinuxFr.org inspirĂ©s de nos logos passĂ©s ou actuels (encore un Ă©norme merci Ă  nos amis de Grafik plus pour les impressions Ă  un tarif proprement indĂ©cent) ;
  • parader avec nos nouveaux polos plus responsables ; polos LinuxFr
  • participer Ă  quelques-unes des 100 confĂ©rences dĂ©crites plus haut
  • Et surtout animer avec Bookynette, la prĂ©sidente de l'April, l'AssoLution, le temps fort associatif !
Le stand Linuxfr tirage au sort sur le stand

Merci Ă  tous ceux qui passeront nous saluer mercredi et jeudi sur le stand B10, nous vous attendons de pied ferme. Nous allons tenter de relayer les nouvelles de l’évĂ©nement via notre compte X @linuxfrorg et/ou BlueSky, en attendant un compte-rendu plus formel post-salon.

« L'AssoLution Â»

AprĂšs Section d’Assos , l’Assaut de Bien FĂȘteurs et la Zone Associative DĂ©jantĂ©e, OSXP propose cette annĂ©e L'AssoLution, l’absolution Ă  la dissolution ! Comme chaque annĂ©e, LinuxFr.org fait l’animation des associations, rĂ©unissant geeks, dĂ©cideurs et lutins pour un moment festif et dĂ©tendu. La partie musicale sera gĂ©rĂ©e par KPTN (aka ClĂ©ment Oudot) de Worteks. Un bon moment festif en perspective. ! Et nous avons encore vu les choses en grand pour s’assurer de votre prĂ©sence, moins de rĂ©barbatif et plus de fun. Au menu :

  • Discours d’absolution aux codeurs propriĂ©taires repentis
  • AprĂšs nos 25 ans l'annĂ©e passĂ©e, Framasoft viendra nous faire un rapide bilan de ses 20 ans cette annĂ©e (. Toujours une bonne occasion de cĂ©lĂ©brer !
  • Notre Quiz sympatico-ludique façon Burger Quizz avec plein de cadeaux et de goodies Ă  remporter grĂące Ă  nos sympathiques mĂ©cĂšnes (voir plus loin).
  • Vu que cela se dĂ©roule pendant la pause mĂ©ridienne, nos amis des Fondations AlmaLinux OS, Eclipse et Open Source Initiative fourniront les cupcakes (une fois n'est pas coutume) !

📅 Jeudi 5 dĂ©cembre 2024
⏰ 12h30
đŸ—ș Salle Laurent SĂ©guin

quiz à l’OSXP 2023, la scùne quizz à l’OSXP 2023, le public Les cupcakes de 2023

Des cadeaux en pagaille

C’est pas tout ça, mais on sait que vous venez aussi nous voir pour les cadeaux et les tirages au sort quotidien pour repartir avec votre dose de connaissance, mais aussi de joie et de bonne humeur !

L'annĂ©e derniĂšre, nous avions eu pas mal de succĂšs avec notre Fairphone et nos Lego. On remet donc ça, mais pour les remporter, il faudra se distinguer au quiz pour tenter de remporter :

  • un Fairphone 5 vert (de chez Murena avec /e/OS dessus) ;
  • un casque audio Fairbuds XL vert ;
  • un kit de dĂ©marrage Raspberry Pi 5 ;
  • le jeu de sociĂ©tĂ© "Les Aventuriers du Rail : LĂ©gendes de l’Ouest" ;
  • une boĂźte de Lego architecture Notre-Dame de Paris vu qu'elle va rouvrir sous peu !
  • et des abonnements Ă  la bibliothĂšque numĂ©rique des Ă©ditions ENI (en plus des livres, voir plus loin).

Liste des lots pour le quiz comprenant un Fairphone 5 vert (smartphone durable), un casque audio Fairbuds XL vert, un kit de dĂ©marrage Raspberry Pi 5, le jeu de sociĂ©tĂ© "Les Aventuriers du Rail : LĂ©gendes de l’Ouest", et une boĂźte LEGO reprĂ©sentant la cathĂ©drale Notre-Dame de Paris dans la collection Architecture.

Nous en profitons pour remercier les sociétés Passbolt et AdmanTIC qui ont financé ces cadeaux.

Merci Passbolt Merci Admantic

Il y aura aussi plus de 25 de livres Ă  gagner parmi 22 rĂ©fĂ©rences de nos partenaires habituels : les Ă©ditions ENI, les Ă©ditions Eyrolles et dĂ©sormais les Ă©ditions D-Booker.

Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
     

Soyez prĂ©sent, on remet en jeu tout lot non rĂ©clamĂ© sur place ! Et nous aurons des lots de consolation.

Livres Ă  gagner

Informations pratiques

ConcrĂštement, pour nous rejoindre sur place

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

AccÚs libre à la bibliothÚque numérique des éditions ENI les 22 et 23 novembre 2024

19 novembre 2024 Ă  05:07

Vous le savez sĂ»rement, les Ă©ditions ENI font partie des partenaires de LinuxFr.org qui permettent de motiver et rĂ©compenser chaque mois les meilleurs contributeurs du site (accompagnĂ©s en cela par les Ă©ditions Eyrolles et D-Booker). D’ailleurs, chacun de ces Ă©diteurs a dĂ©jĂ  mis en place des solutions d’accĂšs numĂ©rique Ă  ses livres et/ou revues, que ce soient des livres Ă©lectroniques au format EPUB, HTML, PDF ou des bases documentaires accessibles en ligne sous forme d’abonnement, ce qui est le cas d’ENI.

Logo Ă©ditions ENI

Ce type de solution a ses avantages et ses défauts, ses aficionados et ses détracteurs, mais pour vous faire une idée et afin de mieux faire connaßtre leur bibliothÚque numérique, les éditions ENI la mettent en libre accÚs pendant deux jours les 22 et 23 novembre prochains.

Vous aurez accĂšs Ă  l’ensemble de leur catalogue de livres, vidĂ©os, articles, etc. Comme il y en a pour tous les goĂ»ts (ou presque), vous devriez trouver votre bonheur, mĂȘme si vous ĂȘtes contre votre grĂ© aux prises avec un systĂšme d’exploitation propriĂ©taire ;-) On rappelle que parmi les auteurs, certains sont des lecteurs ou contributeurs de LinuxFr.org, comme SĂ©bastien Rohaut, par exemple. Ce qui fait que leur catalogue ne manque pas d’ouvrages sur les technologies libres et open source, que ce soit, en vrac, sur :

  • GNU/Linux, principalement Debian, Ubuntu et Red Hat ;
  • les langages de programmation : Python, Rust, Java, C, C++, Javascript, etc.
  • ou encore tous les sujets du moment, qu’ils soient techniques (Cloud, AI, Data, SĂ©curitĂ©) ou non (RGPD, gestion d’entreprises, marketing, etc.)
  • mais aussi du classique avec les environnements LAMP et les SGC / CMS qui tournent dessus : WordPress, Joomla, Drupal, etc. les bases de donnĂ©es relationnelles (MySQL, PostgreSQL, etc.) ;

Bref, vous avez deux jours (dont un sur le week-end) pour vous faire une idĂ©e sur le fond de leurs ouvrages, la forme de la bibliothĂšque numĂ©rique, voire choisir votre rĂ©compense pour votre prochaine contribution sur LinuxFr.org !

  • Capture d’écran d’une recherche du terme Linux
    Capture d’écran d’une recherche du terme Linux

  • Extrait d’un ouvrage (Expressions rĂ©guliĂšres — Syntaxe et mise en Ɠuvre (avec exercices et corrigĂ©s) (2e Ă©dition))
    Extrait d’un ouvrage

Commentaires : voir le flux Atom ouvrir dans le navigateur

🏆 Meilleures contributions LinuxFr.org : les primĂ©es d'octobre 2024

14 novembre 2024 Ă  01:25

Nous continuons sur notre lancĂ©e de rĂ©compenser celles et ceux qui chaque mois contribuent au site LinuxFr.org (dĂ©pĂȘches, commentaires, logo, journaux, correctifs, etc.). Vous n’ĂȘtes pas sans risquer de gagner un livre des Ă©ditions Eyrolles, ENI et D-Booker. Voici les gagnants du mois d'octobre 2024 :

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

Les livres 📚 sĂ©lectionnĂ©s

Bandeau LinuxFr.org

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

Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
     

Commentaires : voir le flux Atom ouvrir dans le navigateur

Compte-rendu de la conférence APELL - Quelles politiques européennes de soutien au logiciel libre?

La conférence 2024 de l'APELL avait rassemblé l'été dernier à Berlin des acteurs clés du logiciel libre et des décideurs politiques pour échanger sur l'avenir des politiques open source en Europe. Les discussions ont abordé, notamment, les thÚmes de la souveraineté numérique, du renforcement de la collaboration entre les pays et de l'adoption de politiques publiques favorisant le logiciel libre. Un compte-rendu détaillé de la conférence (PDF, 33 pages) est à présent disponible.

Les participants ont formulĂ© ou rappelĂ© de nombreuses propositions concrĂštes pour promouvoir et dynamiser la filiĂšre europĂ©enne de l'open source. Les participants ont notamment dĂ©battu d'initiatives visant Ă  harmoniser les politiques publiques, Ă  soutenir la formation, Ă  plus communiquer sur les rĂ©ussites. Le rĂŽle central de l'APELL, en tant que voix unifiĂ©e de l'open source professionnel en Europe, a Ă©tĂ© soulignĂ©, ainsi que l'importance de crĂ©er et de promouvoir standards ouverts et de dĂ©velopper des partenariats transfrontaliers. In fine, les participants ont appelĂ© Ă  une mobilisation collective pour ancrer l'open source au cƓur de la stratĂ©gie numĂ©rique europĂ©enne, garantissant rĂ©silience et innovation sur le continent.

Sommaire

La conférence APELL 2024 a été l'occasion de discuter des enjeux stratégiques et d'élaborer des propositions concrÚtes visant à renforcer l'open source en Europe.

Renforcer la souveraineté numérique par l'open source

Les discussions ont mis en avant l'importance de dĂ©passer les simples questions de conformitĂ© lĂ©gale pour intĂ©grer la souverainetĂ© numĂ©rique dans la culture et la pratique des institutions europĂ©ennes. Le logiciel libre a Ă©tĂ© reconnu comme un levier essentiel pour garantir la libertĂ© de choix et l'innovation technologique. Les participants ont proposĂ© que l'Union europĂ©enne fixe l'objectif ambitieux de ne financer que des solutions open source dans l'administration publique Ă  l'horizon 2035. Cette idĂ©e repose sur un engagement Ă  long terme soutenu par des financements ciblĂ©s et des stratĂ©gies de mise en Ɠuvre durable.

Cinq idées fortes

Cinq points clés ont particuliÚrement marqué les débats et témoignent de la portée des discussions :

  1. Le passage Ă  l'open source pour la souverainetĂ© numĂ©rique : Le consensus parmi les participants Ă©tait clair : adopter et promouvoir les logiciels libres est une Ă©tape stratĂ©gique incontournable pour que l'Europe atteigne une vĂ©ritable souverainetĂ© numĂ©rique. Dans un monde oĂč les dĂ©pendances technologiques peuvent fragiliser des Ă©conomies entiĂšres, l'open source offre un moyen de regagner du contrĂŽle sur les infrastructures numĂ©riques.
  2. L'importance des logiciels libres dans les produits et services technologiques innovants : Les logiciels open source ne se limitent pas à représenter des alternatives à des solutions dominant le marché, mais sont présents dans 96 % des bases de code actuelles, selon les experts présents. Ils sont essentiels pour soutenir l'innovation dans des domaines aussi divers que le cloud, l'IoT, l'intelligence artificielle et l'analyse des données massives (big data). Selon Manuel Hoffman, économiste à la Harvard Business School, qui est intervenu pendant la conférence, sans les logiciels libres, les entreprises auraient besoin de tripler leurs dépenses en logiciels (cf. Hoffmann, Manuel, Frank Nagle, and Yanuo Zhou. "The Value of Open Source Software." Harvard Business School Working Paper, No. 24-038, January 2024.). Ce constat met en évidence le caractÚre irremplaçable des logiciels libres dans le développement technologique et économique.
  3. Les standards ouverts et le projet Sovereign Cloud Stack : Le projet Sovereign Cloud Stack (SCS) a Ă©tĂ© citĂ© en exemple pour illustrer la maniĂšre dont les standards ouverts peuvent servir de fondement Ă  la souverainetĂ© numĂ©rique. SCS combine les principes de libertĂ© de choix, d'innovation, de conformitĂ© et de concurrence, permettant aux utilisateurs de ne pas ĂȘtre enfermĂ©s dans un Ă©cosystĂšme unique. Cette approche favorise une plus grande rĂ©silience et rĂ©duit les coĂ»ts de transition entre solutions.
  4. Renforcer la coopération transfrontaliÚre : Un autre point crucial a été l'appel à intensifier les efforts de collaboration entre les pays européens. En unissant leurs forces et en coordonnant leurs efforts, ceux-ci peuvent sensibiliser davantage les décideurs à l'importance stratégique de l'open source et orienter les investissements publics et privés vers des initiatives qui soutiennent cet écosystÚme. Cette collaboration est essentielle pour maintenir la compétitivité de l'Europe face aux géants mondiaux de la technologie (e.g. les GAFAM).
  5. Le rĂŽle central de l'APELL : En tant qu'association europĂ©enne des entreprises de logiciel libre, l'APELL a rĂ©affirmĂ© son engagement Ă  dĂ©fendre et Ă  promouvoir des politiques qui soutiennent l'Ă©cosystĂšme open source. L'association se positionne comme une voix unifiĂ©e pour reprĂ©senter les intĂ©rĂȘts de la filiĂšre du logiciel libre Ă  l'Ă©chelle europĂ©enne, encourageant des actions politiques cohĂ©rentes et des initiatives qui renforcent l'innovation collective.

Initiatives et propositions concrĂštes

Plusieurs propositions et recommandations ont émergé des ateliers et des discussions :

  1. Harmonisation des politiques "Public Money, Public Code" : Inspirées des cadres législatifs existants en France et en Italie, les recommandations du groupe de travail appellent à une harmonisation de ces principes à l'échelle européenne, accompagnée de financements pour des programmes de formation et des études d'impact sur l'adoption de l'open source.
  2. DĂ©veloppement des compĂ©tences et formations : Pour rĂ©pondre au manque de main-d'Ɠuvre qualifiĂ©e, les participants ont suggĂ©rĂ© la crĂ©ation de partenariats entre les universitĂ©s et l'industrie pour dĂ©velopper et standardiser les enseignements spĂ©cifiques au logiciel libre, et des travaux de fin d'Ă©tudes axĂ©s sur des contributions aux projets open source. Le financement de formations spĂ©cialisĂ©es dans des domaines stratĂ©giques tels que la cybersĂ©curitĂ© a Ă©galement Ă©tĂ© discutĂ©.
  3. Collaboration transfrontaliĂšre : Afin de renforcer l'Ă©cosystĂšme open source, l'APELL a Ă©tĂ© invitĂ©e Ă  encourager la crĂ©ation d'associations professionnelles nationales lĂ  oĂč elles manquent, comme en Pologne et en RĂ©publique tchĂšque, ou encore d'aider Ă  la relance d'une association en Espagne. L'objectif est de crĂ©er un rĂ©seau europĂ©en plus intĂ©grĂ© capable de partager ressources et meilleures pratiques, et de peser au niveau des institutions de l'Union.
  4. Promotion de la transparence et de la confiance : Les participants ont recommandé de créer des outils et des campagnes de sensibilisation pour promouvoir la transparence et la fiabilité des solutions open source, particuliÚrement dans les secteurs réglementés tels que la finance et la santé.
  5. RĂ©glementation et standards ouverts : La confĂ©rence a plaidĂ© pour l'Ă©laboration de nouvelles rĂ©gulations favorisant l'interopĂ©rabilitĂ© et les standards ouverts, en s'appuyant sur des cadres tels que le cadre europĂ©en d'interopĂ©rabilitĂ© (EIF). L’adoption de solutions modulaires, permettant une flexibilitĂ© accrue et des coĂ»ts de migration rĂ©duits, a Ă©tĂ© recommandĂ©e pour soutenir la transformation numĂ©rique des administrations publiques de maniĂšre durable et pĂ©renne. Ces rĂ©glementations devraient Ă©galement inclure une obligation pour les administrations publiques de privilĂ©gier des solutions open source lorsque celles-ci rĂ©pondent aux besoins. Toutefois, l’expĂ©rience en France et en Italie montre qu’un cadre lĂ©gal ne suffit pas Ă  lui seul Ă  provoquer un changement durable. Pour que cette adoption soit efficace, un soutien actif Ă  la mise en Ɠuvre est essentiel, qui doit ĂȘtre l'objet de plan cohĂ©rents.
  6. Soutien aux initiatives de "proof of concept" : Pour surmonter les réticences des administrations, l'encouragement à financer des projets pilotes démontrant la valeur des solutions open source a été recommandé par les participants, afin de prouver l'efficacité et les avantages à long terme de ces solutions.

Redéfinir le message autour du logiciel libre

Un des thĂšmes centraux abordĂ©s lors de la confĂ©rence a Ă©tĂ© l’importance de choisir le bon message pour promouvoir l’open source. Les participants ont dĂ©battu de l’efficacitĂ© de mettre en avant la "mitigation des risques" – un argument souvent utilisĂ© pour justifier l’adoption des logiciels libres, en particulier auprĂšs des administrations publiques. Bien que pertinent, cet argument reste dans un "espace de problĂšme" plutĂŽt que de prĂ©senter l’open source comme un outil "d’opportunitĂ©s et d'innovation". Pour une communication plus impactante, les experts ont proposĂ© de recentrer le discours sur le potentiel de l’open source Ă  favoriser l'innovation et la collaboration.

L'open source ne se limite pas Ă  rĂ©duire les risques; il constitue aussi une source de croissance et de compĂ©titivitĂ©. Par exemple, dans l'industrie automobile, oĂč l’interopĂ©rabilitĂ© entre divers sous-systĂšmes est cruciale, l'open source permet aux grandes entreprises et Ă  leurs nombreux sous-traitants de collaborer plus efficacement et de garantir la compatibilitĂ© de leurs systĂšmes. Les dĂ©veloppeurs, en travaillant dans un Ă©cosystĂšme open source, peuvent ainsi obtenir des rĂ©sultats plus rapidement que s'ils travaillaient de maniĂšre isolĂ©e sur des solutions propriĂ©taires.

La voie Ă  suivre : une mobilisation collective

La confĂ©rence s'est conclue par un appel Ă  l'action pour une mobilisation collective et proactive afin de garantir que le logiciel libre devienne durablement un pilier de la politique numĂ©rique europĂ©enne. La mise en place de prix et de trophĂ©es europĂ©ens pour cĂ©lĂ©brer les rĂ©ussites open source (ex: Acteurs du Libre en France ou les EU Open Source Awards), la publication rĂ©guliĂšre d'Ă©tudes pour attirer l'attention des mĂ©dias (cf. les publications du CNLL ou celles de l'OSBA, etc.), et l'organisation d'Ă©vĂ©nements dĂ©diĂ©s ont Ă©tĂ© identifiĂ©s comme des moyens de stimuler l'intĂ©rĂȘt et l'engagement.

La confĂ©rence APELL 2025 aura vraisemblablement lieu Ă  Varsovie au dĂ©but de l'Ă©tĂ© 2025 et sera l'occasion de faire le bilan des actions en cours, au niveau des institutions europĂ©ennes comme des États membres.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Qui veut la peau des logiciels libres de caisse ?

6 novembre 2024 Ă  01:45

Dans l’objectif, certes lĂ©gitime, de lutter contre la fraude Ă  la TVA via des logiciels de caisse, l’AssemblĂ©e a votĂ© la fin du dispositif d’« attestation individuelle Â» qui permettait Ă  un Ă©diteur ou un intĂ©grateur de solution, d’attester de la conformitĂ© de son systĂšme. L’AssemblĂ©e impose ainsi une procĂ©dure lourde et onĂ©reuse de certification, qui impacterait tout particuliĂšrement les logiciels libres.

Afin d’alerter sur ce risque important pour les Ă©cosystĂšmes des logiciels libres intĂ©grant des fonctionnalitĂ©s de caisse, l'April a publiĂ© un communiquĂ©, oĂč elle revient plus en dĂ©tails sur le contexte et les enjeux, et oĂč elle appelle Ă  se mobiliser en vue des travaux Ă  venir au SĂ©nat : « Qui veut la peau des logiciels libres de caisse ? Â»

Supprimer la possibilitĂ© de « l’attestation individuelle Â» revient Ă  soumettre toute activitĂ© Ă©conomique autour des logiciels de caisse, libres ou non, Ă  une trĂšs importante pression financiĂšre et rĂ©glementaire, et Ă  imposer une responsabilitĂ© contractuelle auprĂšs de l’organisme certifiant.

L’amendement adoptĂ© Ă  l’AssemblĂ©e tĂ©moigne malheureusement Ă  nouveau d’un manque de comprĂ©hension de comment fonctionnent les diffĂ©rents modĂšles de dĂ©veloppement logiciel, notamment libre.

L’April ne manquera pas de contacter les sĂ©nateurs et sĂ©natrices pour les informer de la situation et les inviter Ă  rĂ©tablir l'article 286 3° bis du Code gĂ©nĂ©ral des impĂŽts dans sa rĂ©daction initiale. L’April appelle Ă©galement toutes les personnes concernĂ©es — dĂ©veloppeurs et dĂ©veloppeuses, utilisatrices et utilisateurs, entreprises, associations ou fondations en charge d’un projet de logiciel libre de caisse — Ă  faire de mĂȘme.

Si le sujet vous intĂ©resse, n’hĂ©sitez pas aussi Ă  rejoindre notre liste publique dĂ©diĂ©e Ă  ce sujet pour partager vos interrogations, vos rĂ©flexions et arguments, et participer Ă  cette mobilisation.

Commentaires : voir le flux Atom ouvrir dans le navigateur

epub, le convertisseur EPUB3 à la volée de LinuxFr.org

4 novembre 2024 Ă  03:57

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

Elle est nĂ©e d’une envie personnelle d’expliquer, documenter et montrer ce qui a Ă©tĂ© fait sur le convertisseur EPUB3 Ă  la volĂ©e de LinuxFr.org, et elle vient accompagner la prĂ©cĂ©dente sur img, le cache d’images sur LinuxFr.org.

    Sommaire

    Des EPUB de vos contenus et commentaires

    LinuxFr.org vous permet de lire les contenus et commentaires du site, au format EPUB3, par exemple dans votre liseuse préférée. Il y a une exception à cela, les liens, parce que certes ça ferait des EPUB tout mignons, mais surtout petits voire un poil inutiles. Le lien EPUB est présent automatiquement sur chaque contenu (hormis les liens donc).

    Le principe est simple : on donne un lien vers un contenu HTML Ă  epub, il le demande Ă  la partie Ruby on Rails du site, ainsi que les images associĂ©es, convertit le tout au format EPUB3 et le renvoie Ă  la personne qui l’a demandĂ©. Techniquement epub n'est pas exposĂ© frontalement mais se trouve derriĂšre un nginx.

    CÎté code Ruby on Rails

    C’est assez basique : on ajoute juste sur chaque contenu un lien pour tĂ©lĂ©charger au format EPUB. Ainsi, y compris sur cette dĂ©pĂȘche, vous allez trouver un lien Ă  la fin pour rĂ©cupĂ©rer le tout au format EPUB (et un autre pour rĂ©cupĂ©rer le source en Markdown mais c’est un autre sujet).

    app/views/news/_news.atom.builder:    epub = content_tag(:div, link_to("Télécharger ce contenu au format EPUB", "#{url}.epub"))
    app/views/polls/_poll.atom.builder:  epub = content_tag(:div, link_to("Télécharger ce contenu au format EPUB", "#{url}.epub"))
    app/views/posts/_post.atom.builder:  epub = content_tag(:div, link_to("Télécharger ce contenu au format EPUB", "#{url}.epub"))
    app/views/nodes/_actions.html.haml:    = link_to "EPUB", "#{path_for_content node.content}.epub", title: "Télécharger ce contenu au format EPUB", class: "action download"
    app/views/diaries/_diary.atom.builder:  epub = content_tag(:div, link_to("Télécharger ce contenu au format EPUB", "#{url}.epub"))
    app/views/wiki_pages/_wiki_page.atom.builder:  epub = content_tag(:div, link_to("Télécharger ce contenu au format EPUB", "#{url}.epub"))

    CÎté epub

    Le service est plutĂŽt simple, par rapport Ă  img, car il n’a pas de dĂ©pendance sur redis par exemple, et qu’il a, au final, peu de paramĂ©trage (un couple adresse+port d’écoute, un fichier de trace et un hĂŽte pour aller chercher les contenus).

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

    Sinon on lui demande une dĂ©pĂȘche, un journal, une entrĂ©e de forum, un sondage, une entrĂ©e de suivi ou une page wiki en prenant le chemin sur LinuxFr.org et ajoutant un petit .epub Ă  la fin, et il va renvoyer un fichier EPUB. Ou bien il va rĂ©pondre un contenu non trouvĂ© HTTP 404 s’il y a un souci. Et vu son fonctionnement, si on a un souci de HTML non valide ou si img a un problĂšme avec une image, alors derriĂšre epub pourrait avoir le mĂȘme souci.

    epub est un binaire dynamique en Go. Il impose le https pour l’hĂŽte (du coup on aura tous les liens en HTTPS en interne normalement). Il ne peut pas vraiment ĂȘtre compilĂ© statiquement (on a besoin de libxml2, libonig2 et de la mĂȘme version de la libc au dĂ©ploiement). Il ne gĂšre pas les images in-line.

    Dans les logs on va trouver des infos comme :

    2024/11/03 16:34:02 Status code of http:/example.invalid/exemple.png is: 404
    (
)
    2024/11/03 16:38:23 Fetch https://linuxfr.org/news/capitole-du-libre-2024-au-programme-du-16-et-17-novembre
    2024/11/03 16:38:24 Fetch https://linuxfr.org/users/liberf0rce/journaux/libreast-2006-is-out-of-order
    

    Historique

    epub a Ă©tĂ© crĂ©Ă© par Bruno Michel en 2013 et Bruno est le seul Ă  travailler dessus (48 commits) jusqu’en 2018. Comme img, on peut considĂ©rer que epub a fait le job pendant ce temps-lĂ , sans besoin de retouche.

    Mon premier commit de 2021 concerne la gestion d’un cas de collision de nommages des images.

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

    Bref je dĂ©cide de me plonger dans epub (2022-2024), dans la foulĂ©e de img, car a priori ce n’est pas un composant compliquĂ© du site (il vit dans son coin, il offre une interface, c’est du Go, donc on a un binaire seulement Ă  gĂ©rer - divulgĂąchage en fait non pas seulement).

    Le choix est le mĂȘme que pour img (cf la dĂ©pĂȘche prĂ©cĂ©dente) : ajouter un Dockerfile permettant de recompiler epub dans un conteneur, en contrĂŽlant la version de Go utilisĂ©e, en effectuant une dĂ©tection d’éventuelles vulnĂ©rabilitĂ©s au passage avec govulncheck. Cela me permet de valider que l’on sait produire le binaire d’une part, et que l’on offre Ă  tout le monde la possibilitĂ© de contribuer facilement sur ce composant. Et de dĂ©couvrir qu’une version statique n’est pas facilement envisageable.

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

    Les différents travaux effectués vont permettre de détecter et corriger quelques soucis :

    Et Ă  la fin, j’écris une dĂ©pĂȘche pour parler de tout cela.

    Évolutions rĂ©centes

    Dockerfile

    Le fichier Dockerfile du projet permet :

    • de partir d’une image officielle Go d’une version donnĂ©e, basĂ©e sur une distribution Debian (en raison des dĂ©pendances)
    • de l’utiliser pendant la construction en prenant la liste des dĂ©pendances de compilation, en les tĂ©lĂ©chargeant, en prenant l’unique fichier source epub.go et en le compilant dynamiquement avec l’option pour retirer les chemins de compilation
    • de rechercher les Ă©ventuelles vulnĂ©rabilitĂ©s avec govulncheck
    • de tester avec golangci/golangci-lint le code (fait Ă  la construction de l’image, car on dispose de toutes les dĂ©pendances Ă  ce moment-lĂ )
    • de repartir d’une base Debian en y mettant les autoritĂ©s de certification, les dĂ©pendances de fonctionnement et le binaire issus de la partie construction, de dĂ©clarer le port d’écoute et de lancer le binaire avec des variables disposant de valeurs par dĂ©faut.

    La suite de tests

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

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

    Rentrons un peu dans les détails.

    D’abord un fichier docker-compose.yaml qui dĂ©crit le rĂ©seau IPv4/IPv6 utilisĂ© pour les tests, l’image nginx-cert qui sera utilisĂ©e pour crĂ©er une autoritĂ© de certification et un certificat serveur de test, l’image nginx qui sera utilisĂ©e avec sa configuration et ses fichiers Ă  servir pour les tests, l’image epub et son paramĂ©trage (dont l’accĂšs au nginx) ainsi que le rĂ©pertoire de l’autoritĂ© de certification de tests et enfin l’image de la suite de tests qui est construit avec son Dockerfile et son rĂ©pertoire de dĂ©pĂŽt des fichiers EPUB.

    Le Dockerfile de tests est basĂ© sur une image Hurl (un outil pour faire des tests HTTP). On ajoute les fichiers de tests en .hurl, le script shell qui pilote le tout, on prĂ©voit d’avoir les paquets dont on aura besoin : bash (pas par dĂ©faut dans les Alpine), curl, openjdk17 (pour epubcheck), openssl, unzip (transitoirement), bind-tools et shellcheck. On installe epubcheck. Et on lance les tests par dĂ©faut.

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

    Dans les données de tests servies par nginx, on trouve des contenus du mauvais type, des contenus dans divers formats, une image trÚs grande et des images qui ne seront pas accessibles.

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

    • le test de vie et les chemins hors des contenus autorisĂ©s
    • les tests sur les contenus

    Vient enfin le script shell qui pilote le tout :

    • on dĂ©finit les variables pour les cibles IPv4/IPv6 que l’on veut utiliser dans les autres conteneurs Docker
    • on purge le stockage des EPUB sur disque
    • on lance les premiers tests (en IPv4 et IPv6, en HTTP 1.1 et en HTTP 2.0)
    • sur chaque EPUB produit, on lance epubcheck et on regarde si la validation donne le rĂ©sultat attendu (succĂšs ou Ă©chec)
    • si on est arrivĂ© jusque-lĂ  on Ă©crit que tout va bien et on dĂ©clenche un sourire de satisfaction.

    Les problématiques restantes

    Il y a quelques entrées encore ouvertes dans le suivi :

    • les images trop grandes (en octet), non rĂ©cupĂ©rables, de format inconnu, etc. : la suite de tests actuelle « couvre Â» le cas des images de plus de 5 MiB ou non rĂ©cupĂ©rables, avec des tests qui Ă©chouent, comme prĂ©vu, vu que c’est img qui est censĂ© faire le job de les Ă©viter. Cependant il pourrait ĂȘtre sympa de remplacer toute image non disponible/invalide par une image de remplacement « Image indisponible Â» du bon Content-Type et du bon nom (vu qu’elle est dĂ©clarĂ©e dans le MANIFEST).
    • les images trop grandes (en pixel) : globalement on revient Ă  la question des images que laisse passer img
    • les epub non fonctionnels en rĂ©daction et modĂ©ration : pour des questions de droits, la gĂ©nĂ©ration EPUB ne marche pas dans les espaces de rĂ©daction et de modĂ©ration, Ă  voir si on trouve un contournement ou si on Ă©vite de proposer le lien.

    Il y a la question habituelle de la montĂ©e de versions des dĂ©pendances (pour nous actuellement contraintes celles du code Ruby on Rails). Et des questions Ă  se poser sur l’avenir de nginx ?. Les dĂ©pendances pendant le fonctionnement amĂšnent aussi leur lot de contraintes.

    Conclusion ?

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

    epub rend la fonction que l’on attend de lui, mĂȘme si on pourrait faire un peu mieux. Plonger dans ce composant s’est avĂ©rĂ© assez intĂ©ressant et formateur (et nĂ©cessaire) : techniquement cela a Ă©tĂ© l’occasion de faire du Go, du docker et du docker-compose, du nginx, du hurl, de l’HTTP et de gĂ©rer des problĂ©matiques statique/dynamique et des dĂ©pendances. Il s’agissait encore de comprendre ce que faisait un code Ă©crit par une autre personne, de se poser des questions pour choisir les tests et le contenu de la documentation, de se demander pour quelles raisons tel ou tel choix a Ă©tĂ© fait, de rendre ce composant plus « contribuable Â», et de complĂ©ter le tout de façon dĂ©taillĂ©e avec une dĂ©pĂȘche.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Capitole du Libre 2024 - au programme du 16 et 17 novembre

    Le Capitole du Libre est un week-end dĂ©diĂ© au logiciel libre et Ă  la culture libre en Occitanie. Cette annĂ©e, la onziĂšme Ă©dition se tiendra les samedi 16 et dimanche 17 novembre 2024 Ă  l’ENSEEIHT, dans le centre‐ville de Toulouse (INP-N7).

    Capitole du Libre

    En quelques mots

    Le Capitole du Libre, c'est:

    • PrĂšs de 100 confĂ©rences
    • Une dizaine d'ateliers
    • Une trentaine de stands associatifs
    • Une communautĂ© prĂ©sente en nombre : plus de 1000 participants tous les ans
    • Tous les publics reprĂ©sentĂ©s, du curieux au dĂ©veloppeur noyau, en passant par les geeks et les supporters de la culture libre

    Présentation

    ComplÚtement gratuit, le Capitole du Libre regroupe un large ensemble d'activités:

    • des confĂ©rences, qui couvrent un large ensemble de sujets et permettront Ă  tous les publics de dĂ©couvrir ou d'approfondir des sujets techniques, leur maĂźtrise d'un logiciel, les actualitĂ©s relatives au numĂ©rique, etc.
    • des ateliers, pour dĂ©couvrir par la pratique des logiciels libres
    • une table ronde: cette annĂ©e, elle portera sur le thĂšme des modĂšles de gouvernance des projets libres

    Un village associatif sera également présent pour vous permettre de rencontrer et discuter avec de nombreux acteurs du monde libre.

    ⚠ L'accĂšs est gratuit, mais une inscription est obligatoire.

    Flyer de l'Ă©vĂšnement

    Keynotes

    Deux moments sont proposés pour cette édition:

    Ateliers

    Venez dĂ©couvrir le logiciel libre lors d’ateliers avec des experts pour vous assister.

    Les ateliers au programme cette année traiteront de logiciels de dessin, de réalisation de jeu vidéo, de réalisation physique d'objets, de développement, de résolution de problÚmes, d'éditeurs de textes, etc.

    Village associatif

    Retrouvez les associations qui Ɠuvrent pour le logiciel libre : Framasoft, April, Toulibre, CHATONS


    Install party

    Venez-vous faire aider pour installer Linux, pour corriger les problĂšmes que vous rencontrez avec votre installation ou pour toute question autour du logiciel libre.
    Un atelier permanent est dédié tout le week-end.

    Boutique

    Repartez avec un T-shirt de l’évĂ©nement, un sweatshirt d'un logiciel libre que vous apprĂ©ciez, un mug, 

    Les ventes permettent de financer le Capitole du Libre.

    LAN party

    Pour les jeunes (et moins jeunes) qui souhaiteraient s'amuser tout en restant dans le thĂšme du logiciel libre, venez jouer Ă  quelques jeux libres avec la LAN party.

    Cocktail

    Comme chaque année, un moment de convivialité ouvert à tous et toutes est prévu le samedi soir.

    MiniDebConf

    Logo de la MiniDebConf

    Cette année, une conférence MiniDebConf aura lieu en parallÚle du Capitole du Libre, accessible directement à partir du hall principal de l'école, et vous pourrez donc profiter des conférences des deux évÚnements à votre guise, rencontrer des développeurs Debian, etc.

    Pour plus d'information sur la MiniDebConf


    Informations pratiques

    Restauration

    Des food trucks sont à votre disposition les midis, directement à l'intérieur de l'établissement.

    Si vous préférez vous restaurer à l'extérieur, le quartier possÚde également de nombreux restaurants et boulangeries.

    Entrée

    Comme tous les ans, l’accĂšs Ă  l’évĂ©nement est totalement gratuit !

    ⚠ Attention, puisque l'Ă©tablissement qui nous accueille est une Ă©cole, une inscription en ligne est obligatoire et le personnel de sĂ©curitĂ© demandera Ă  inspecter vos sacs Ă  l'entrĂ©e.

    Les portes seront ouvertes:

    • le samedi 16 novembre 2024 de 9h30 Ă  22h
    • le dimanche 17 novembre 2024 de 10h Ă  16h30

    Nous vous attendons nombreux !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    Projets Libres ! Saison 3 Ă©pisode 3 : la fondation Eclipse

    Pour ce troisiÚme épisode du podcast Projets Libres depuis la rentrée, nous recevons Gaël Blondelle pour parler de la fondation Eclipse.

    Logos Podcast Projets Libres et Fondation Eclipse

    Avec Gaël, qui est un des dirigeants exécutifs de la fondation et membre du board de l'Open Source Initiative (OSI), nous parlons des sujets suivants :

    • l'histoire et la crĂ©ation de la fondation
    • les raisons de son dĂ©mĂ©nagement en Europe et sa forme juridique
    • Ă  quoi sert une fondation ?
    • Eclipse et la souverainetĂ© digitale europĂ©enne
    • les principaux projets hĂ©bergĂ©s par la fondation Eclipse
    • la collaboration avec les autres fondations dans le cadre du Cyber Resilience Act (CRA)
    • constituer un lobby europĂ©en de l'Open Source
    • le futur de la fondation

    Bonne Ă©coute !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    img, le cache d’images sur LinuxFr.org

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

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

      Sommaire

      Des images sur le site

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

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

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

      Exemple :

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

      Logo LinuxFr.org

      Buts du cache d’images

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

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

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

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

      À l’utilisation

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

      Ce qui donne à l’affichage :

      Logo LinuxFr.org

      Et cÎté code HTML :

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

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

      Ce qui donne à l’affichage :

      April - Campagne d’adhĂ©sion

      Et cÎté code :

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

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

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

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

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

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

      CÎté code Ruby on Rails

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

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

      CÎté img

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

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

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

      En se limitant aux requĂȘtes lĂ©gitimes, le comportement de img est le suivant :

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

      Le cache est rafraßchi réguliÚrement.

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

      Dans les logs on va trouver des infos comme :

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

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

      Historique

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

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

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

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

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

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

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

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

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

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

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

      Évolutions rĂ©centes

      Dockerfile

      Le fichier Dockerfile du projet permet :

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

      La suite de tests

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

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

      Rentrons un peu dans les détails.

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

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

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

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

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

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

      Vient enfin le script shell qui pilote le tout :

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

      L’audit interne

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

      Le binaire d’img peut donc ĂȘtre appelĂ© en mode audit et lancer des contrĂŽles internes.

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

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

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

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

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

      Le grand nettoyage

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

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

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

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

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

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

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

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

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

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

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

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

      Et un jour l’audit dit :

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

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

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

      Les problématiques restantes

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

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

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

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

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

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

      Conclusion ?

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

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

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      🏆 Meilleures contributions LinuxFr.org : les primĂ©es de septembre 2024

      Par : Florent Zara
      17 octobre 2024 Ă  08:13

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

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

      Les livres 📚 sĂ©lectionnĂ©s

      Bandeau LinuxFr.org

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

      Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
           

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      đŸȘ¶ Les journaux LinuxFr.org les mieux notĂ©s de septembre 2024

      Par : Florent Zara
      11 octobre 2024 Ă  00:59

      LinuxFr.org propose des dĂ©pĂȘches et articles, soumis par tout un chacun, puis revus et corrigĂ©s par l’équipe de modĂ©ration avant publication. C’est la partie la plus visible de LinuxFr.org, ce sont les dĂ©pĂȘches qui sont le plus lues et suivies, sur le site, via Atom/RSS, ou bien via partage par messagerie instantanĂ©e, par courriel, ou encore via mĂ©dias sociaux.

      BanniĂšre LinuxFr.org

      Ce que l’on sait moins, c’est que LinuxFr.org vous propose Ă©galement de publier directement vos propres articles, sans validation a priori de lÊŒĂ©quipe de modĂ©ration. Ceux-ci s’appellent des journaux. Voici un florilĂšge d’une dizaine de ces journaux parmi les mieux notĂ©s par les utilisateurs et les utilisatrices
 qui notent. LumiĂšre sur ceux du mois de septembre passĂ©.

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      🏆 Meilleures contributions LinuxFr.org : les primĂ©es de l'Ă©tĂ© 2024

      11 septembre 2024 Ă  03:34

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

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

      Les livres 📚 sĂ©lectionnĂ©s

      Bandeau LinuxFr.org

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

      Logo Ă©ditions ENI Logo Ă©ditions Eyrolles Logo Ă©ditions B-BookeR
           

      Commentaires : voir le flux Atom ouvrir dans le navigateur

      ❌
      ❌