En ce mardi XX avril, les utilisateurs du Projet Fedora seront ravis d'apprendre la disponibilité de la version Fedora 32.
Fedora est une distribution communautaire développée par le projet Fedora et sponsorisée par Red Hat, qui lui fournit des développeurs ainsi que des moyens financiers et logistiques. Fedora peut se voir comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.
Fedora garde un rôle central dans le développement de ces nouveautés via le développement en amont. En effet, les développeurs de la distribution contribuent également directement au code d’un certain nombre de logiciels libres contenus dans la distribution, dont le noyau Linux, GNOME, NetworkManager, PackageKit, PulseAudio, X.Org, systemd, la célèbre suite de compilateurs GCC, etc. Cliquez ici pour voir l’ensemble des contributions de Red Hat.
Cela a été aussi abordé dans une série d'articles ici et là.
Expérience utilisateur
Passage à GNOME 3.36. Cette version apporte de nombreuses petites améliorations dont voici un extrait :
- refonte de l'interface de connexion (GDM) et du verrouillage de l'écran ;
- GNOME affiche un bouton pour afficher le mot de passe du champ de saisie si nécessaire pour le vérifier ;
- les boutons du menu de GNOME Shell ont été remaniés pour laisser apparaître la mise en veille sans utiliser une touche du clavier au préalable comme avant ;
- une nouvelle application GNOME Extensions pour les configurer et les gérer plutôt que via votre navigateur web ;
- un nouveau bouton Ne pas déranger est disponible dans la zone de notifications pour les désactiver temporairement pour l'utilisateur ;
- le centre de configuration a été réarrangé rendant la navigation plus simple quand la section Vie privée liste désormais les applications qui ont obtenu des autorisations pour accéder aux services de localisation, à la caméra et au micro. L’accès peut être révoqué individuellement pour chaque application ;
- GNOME Logiciels détecte les connections limitées (via le téléphone ou une puce 4G interne par exemple) pour désactiver le téléchargement automatique des mises à jour dans ce cas ;
- un système de contrôle parental fait son apparition pour autoriser ou non l'accès à des applications ;
- le navigateur web peut afficher les fichiers PDF directement ;
- les utilisateurs de pilotes propriétaires NVIDIA peuvent désormais lancer les applications en utilisant la carte graphique dédiée depuis GNOME Shell, avec le menu consacré.
Une nouvelle image alternative Comp Neuro Lab est disponible pour proposer par défaut des paquets relatifs aux neuro-sciences et qui est prête à l'emploi. Une documentation officielle est par ailleurs fournie pour voir les paquets proposés nativement comme octave, numpy ou encore neurord.
Plusieurs polices bitmaps sont converties en OpenType pour être exploitables par des applications plus modernes qui reposent sur la nouvelle version de la bibliothèque pango. En effet ce dernier depuis Fedora 31 utilise la bibliothèque HarfBuzz au lieu de FreeType pour effectuer le rendu des caractères et qui oblige de fait l'usage de polices vectorielles. Cette conversion a reposé principalement sur l'usage de l'outil fonttosfnt. Cela augmente de fait la diversité des polices prises en charge.
Gestion du matériel
Le service fstrim.timer est activé par défaut. Il est exécuté de façon hebdomadaire pour signaler la liste des secteurs effacés au contrôleur de mémoires flash compatibles pour améliorer leur gestion d'un point de vue performance. Par défaut il est exécuté chaque lundi à minuit, ou au prochain redémarrage ou sorti de veille survenant après cette date si la machine était inactive.
Cela pourrait sur quelques rares matériels quelques problèmes de performances durant l'opération (soit quelques secondes). Cela est également actif depuis quelques années chez Ubuntu ou OpenSUSE ce qui a conforté le projet Fedora dans la fiabilité d'un tel changement.
Internationalisation
Migration de la plateforme de traduction de Zanata vers Weblate pour le projet Fedora. Le premier n'était plus vraiment maintenu depuis 2018 et souffrait de sérieux défauts comme l'impossibilité de voir les dernières traductions d'une langue en particulier pour les vérifier.
En plus Weblate est déjà utilisé depuis un moment pour la traduction de GNOME ce qui facilitera la possibilité de traduire pour ces différents projets pour un contributeur donné.
Un grand merci à notre responsable de la traduction francophone Jean-Baptiste Holcroft qui a été l'initiateur et le moteur de ce changement.
Administration système
Le paquet earlyoom est installé par défaut. En cas de mémoire insuffisante (RAM et swap utilisés à plus de 90%), un signal SIGTERM sera envoyé au processus ayant le plus gros score OOM. À plus de 95% d'utilisation, c'est le signal SIGKILL qui est envoyé.
Le but est d'essayer de sauver la machine en cas de problèmes de disponibilité de mémoire et quand la partition d'échange est très sollicitée. Une situation où un redémarrage brutal matériel était souvent nécessaire jusqu'ici même sur les machines puissantes disposant d'un SSD.
Contrairement à l'OOM du noyau (qui s'active plus tard), le signal SIGTERM est envoyé pour donner une chance au processus de se terminer proprement.
Pour revenir à la situation précédente vous pouvez exécutez la commande
# systemctl disable earlyoom.service
Ou configurer earlyoom pour correspondre à vos besoins.
Le redémarrage des services après une mise à niveau est centralisé. Jusqu'alors dès qu'un paquet était mis à jour et que ce dernier contenait un service, un scriptlet redémarrait le dit service en question. Cela signifie qu'il faut maintenir ces scriptlets mais aussi qu'un service pouvait être relancé quand certaines dépendances n'étaient pas encore à jour. Ce qui est source de bogues plutôt pénible à identifier et corriger.
Maintenant l'ensemble des services sont redémarrés à la fin d'une transaction RPM, c'est-à-dire après la mise à jour complète de tous les logiciels concernés par cette transaction.
Les utilisateurs systèmes adoptent le format sysusers.d. En effet de nombreux paquets pour améliorer la sécurité et la gestion des droits d'accès créent un utilisateur spécifique lors de leur installation et de leur exécution. Ces utilisateurs sont donc crées par une procédure non unique.
Passer à ce format permet d'unifier les procédures entre les paquets mais aussi avec OpenSUSE en cas de RPM communs. Pour l'administrateur système il est plus facile de lister quels paquets créent un nouveau utilisateur et éventuellement de surcharger le fichier correspondant pour que le logiciel exploite un autre utilisateur.
Enfin cela permet aussi d'utiliser systemd-sysusers si l'administrateur le souhaite et de faciliter son inclusion par défaut dans un futur proche.
Vous pouvez d'ailleurs lister les utilisateurs systèmes et leur but avec la commande :
$ systemd-analyze cat-config sysusers.d/
Le pare-feu dynamique firewalld migre de iptables vers nftables. Ce changement a déjà été introduit dans le projet officiel depuis deux versions mineures et une fois n'est pas coutume dans RHEL 8 aussi !
L'intérêt de ce changement est de réduire le nombre de règles, car il fallait avant dupliquer les règles communes d'IPv4 et IPv6 pour iptables et iptables6. Cela permet aussi d'exploiter les espaces de nom, comme un utilisateur qui peut avoir des règles personnelles plus facilement. Et bien sûr comme le projet officiel a effectué ce changement, la maintenance sera plus aisée.
Par ailleurs la variante iptables par défaut devient iptables-nft. Il fournit des commandes alternatives et équivalentes pour iptables, ip6tables, ebtables et arptables. Ce que par ailleurs RHEL 8 encore une fois a déjà effectué. Cela permet de se focaliser sur nftables qui est devenu la référence. Il est possible via la commande alternatives de choisir l'ancienne implémentation si les paquets iptables, arptables-legacy et ebtables-legacy sont installés.
Le paquet apt va fournir le projet de Debian plutôt que apt-rpm. L'objectif de ce paquet est de faciliter la transition, les commandes apt étant traduites vers les commandes dnf pour éviter de perdre les débutants qui utilisent les commandes trouvées sur différentes documentations. Cependant apt-rpm n'était plus en phase avec les nouveautés de dnf comme les dépôts modulaires et n'est plus maintenu. L'objectif est aussi de maintenir dans Fedora des outils permettant de produire des paquets Debian.
Le gestionnaire de base de données MariaDB est mis à jour vers la version 10.4. Par défaut l'authentification repose sur les sockets UNIX pour utiliser le compte utilisateur de la machine pour accéder à la base de données. Cela étant bien sûr réversible.
Son alter-ego PostgreSQL passe quant à lui à la version 12. Outre les améliorations de performances qui l'accompagne, il est possible d'utiliser SQL/JSON path pour récupérer des données depuis le format JSON. L'authentification à plusieurs facteurs est aussi fourni avec le chiffrement de la connexion TCP/IP quand GSSAPI est utilisé. La compatibilité peut être rompue à certains endroits, la migration peut nécessiter quelques ajustements évidemment.
L'outil de sauvegarde rdiff-backup a été mis à jour vers sa dernière version 1.2.8 qui repose sur Python 3. La compatibilité des sauvegardes avec la version précédente a été conservée mais il n'est pas possible d'utiliser la nouvelle version avec l'ancienne dans le cas d'une sauvegarde distante, la même version doit opérer côté client et serveur. Par ailleurs cette version permet quelques optimisations supplémentaires en n'essayant pas de compresser plus de formats déjà compressé ou encore en autorisant de ne pas réaliser de synchronisation sur le système de fichiers via l'option -no-fsync pour augmenter la vitesse d'écriture au détriment de la fiabilité le temps du transfert.
Développement
La suite de compilateurs GCC 10 est proposée. Cette nouvelle version majeure propose une amélioration significative des performances du LTO pour lors de l'édition des liens. La prise en charge expérimentale des futures C20 et C++20 progresse. D'ailleurs pour C20, certaines nouveautés sont proposées pour les versions antérieurs avec les options qui vont bien. La spécification OpenACC 2.6 est proposée pour C, C++ et Fortran. Et bien sûr beaucoup de nouvelles options pour détecter certains comportements précis ou correctifs de bogues.
Son concurrent direct LLVM vient également dans sa version 10. Lui aussi progresse pour la prise en charge du futur C20. Outre les nombreuses nouvelles options proposées, on peut noter l'apparition d'une libc propre ou la gestion des opérations matricielles sur des types vectoriels.
À ce sujet, le paquet clang-libs ne proposera plus que la bibliothèque partagée libclang-cpp.so, les 37 autres fichiers ayant fusionné avec ce dernier. Cela permet de se rapprocher avec le fonctionnement du projet officiel et le LTO pourra obtenir des optimisations plus efficaces. Une amélioration possible du temps de démarrage des applications ayant besoin de cette bibliothèque est possible de même qu'une facilité de maintenance.
La bibliothèque GNU C Library progresse à la version 2.31. La prise en charge de la norme C20 continue. La fonction stime quant à elle n'est plus proposée, quand ftime sera supprimé la version prochaine.
Mise à jour de Binutils 2.33. Le format de débogue CTF est pris en charge de même que les instructions Armv8.1-M Mainline et M-profile Vector Extension (MVE).
La bibliothèque de calcul multi-précision flottant mpfr a une précision de 4.0.2. Un cache entre les fils d'exécution d'un programme a été activé pour améliorer les performances globales dans ce contexte. D'autres améliorations de performance pour certaines fonctions est possible, la conversion vers ou depuis un flottant 128 bits est également de la partie.
Le langage Python rampe vers la version 3.8. Il est possible d'assigner la valeur d'une variable directement dans une condition. Les arguments de fonctions peuvent être exclusivement positionnels. L'interpréteur peut aussi exploiter le module async pour gérer les coroutines. Et bien d'autres changements plus mineurs.
Tandis que Python 2 est retiré. Plus exactement, le paquet python2 est remplacé par celui de python27 pour des raisons de compatibilité. Les paquets qui dépendent de cette version de Python de même que les bibliothèques Python 2 sauf quelques exceptions sont quant à eux supprimés des dépôts. Cela met fin à la transition de Python 2 vers Python 3, ce premier n'étant plus maintenu officiellement depuis janvier 2020.
Python est compilé avec le drapeau -fno-semantic-interposition pour améliorer ses performances. L'ordre de grandeur est de 5% à 27% de gain. En contre partie il n'est pas possible pour les utilisateurs de surcharger les symboles de la bibliothèque Python via la variable d'environnement LD_PRELOAD. Cette fonctionnalité en fait a des répercutions sur l'efficacité du cache de niveau 1 du processeur
Le paquet python3-nose est déprécié en vue d'une suppression future. Les empaqueteurs ont été invités à utiliser python3-pytest ou python3-nose2 à la place pour les paquets qui en dépendaient. Cette version du projet n'est en effet plus maintenu officiellement depuis un moment déjà.
La boîte à outils Django 3 est disponible. Il est capable de tirer parti de MariaDB pour la gestion des bases de données. Il marque le début de la prise en charge du modèle Asynchronous Server Gateway Interface pour être pleinement asynchrone, en plus de WSGI qui prévalait jusqu'alors. Et bien d'autres changements plus mineurs.
Le compilateur Pascal libre, Free Pascal Compiler, passe à la version 3.2.0. Beaucoup de changement autour des tableaux dynamiques qui disposent maintenant d'un constructeur. Il est possible de supprimer une sous-partie d'un tel tableau, de concaténer deux tableaux dynamiques ensemble, de définir un tableau dynamique comme constant avec une valeur d'initialisation. Un espace de nom par défaut est également proposé.
Ruby brille de 2.7 feux. Le ramasse-miettes dispose d'une nouvelle méthode GC.compact pour défragmenter la mémoire vive utilisée afin de diminuer le nombre de pages mémoires utilisés. Les performances sont également améliorées. L'interpréteur irb prend en charge les opérations multi-lignes. Le filtrage par motif est quant à lui fourni à titre expérimental.
Le générateur de pages statiques Jekyll version 4 est exposé dans les dépôts. Le moteur de rendu markdown est maintenant Kramdown 2.1. La génération des pages doit être plus rapide en reposant sur un cache au niveau des templates et dans le module Sass.
Le gem Ruby Bundler passe quant à lui la 2e. Ils ont amélioré la compatibilité avec les versions récentes de Ruby au détriment des anciennes et les messages d'erreurs et autres avertissements sont maintenant affichés dans le flux stderr. Cependant la compatibilité ascendante a été préservée pour faciliter la migration.
Le langage Go quant à lui file vers la version 1.14. En dehors des habituelles améliorations de performance, les goroutines peuvent être préemptées de manière asynchrone pendant que l'allocateur de pages est lui plus efficient. La prise en charge du protocole SSLv3 a été supprimée pour des raisons de sécurité alors que UNICODE 12.0 est maintenant géré.
Haskell Stackage LTS va vers la version 14. Ainsi les derniers paquets de l'écosystème sont disponibles bien que le compilateur GHC n'a pas eu de mise à jour entre temps.
La pile .Net libre Mono évolue de la version 5.20 à 6.6. Globalement cela consiste en une amélioration de la prise en charge des évolutions de la pile .Net dont C#8 mais aussi de WebAssembly. Le compilateur croisé AOT permet maintenant de compiler du code pour x86 depuis un système x86_64 par exemple. Enfin l'outil de débogage Mono Crash Reporter sera plus fiable dans de nombreuses situations.
PHP écrase avec sa version 7.4. Les propriétés d'une classe peuvent être typées alors que l'opérateur ??= apparaît pour assigner une valeur à une table associative si ce dernier n'a pas encore de valeur pour une clé donnée. Comme d'autres langages, la lisibilité des nombre littéraux dans le code peuvent être plus lisible avec l'usage de l'underscore comme séparateur. En plus de tout cela quelques gains de performances sont à noter.
Le gestionnaire de versions Bazaar laisse place à son fork Breezy, qui est lui maintenu. En effet Bazaar n'a plus de mainteneur, n'est plus possible à compiler et installer sans correctifs maison en plus de ne prendre en charge que Python 2 qui a tiré récemment sa révérence.
La chaîne de compilation mingw32 change de systèmes d'exception de SJLJ vers dwarf-2. En effet, l'ancien système n'avait pas un coût nul en terme de performances, cela pouvait induire une pénalité de l'ordre de 15% dans certains cas. Mais en contre partie le nouveau système génère des binaires plus lourds de moins de 10%. Ce choix a aussi été fait car Rust sur les plateformes 32 bits ne prend en charge que ce nouveau système et qu'il commence à faire son entrée dans les bibliothèques de base comme librsvg2.
Projet Fedora
Le projet améliore la façon d'avoir des statistiques sur l'utilisation de Fedora. L'objectif est de connaître plus finement le nombre de machines employant Fedora, mais aussi avoir des informations sur la version utilisée, sa variante (comme le Spins), etc. Ce qui permet à l'équipe qualité mais aussi au projet dans son ensemble de baser leurs décisions sur des données factuelles.
Actuellement le tout reposait sur la collecte de données des différents miroirs pour connaître le nombre d'installation en vigueur ce qui n'était pas fiable, à cause du fait que derrière une adresse IP peut se cacher plusieurs installations. Et cette méthode était plutôt lente pour remonter les informations.
Et il fallait trouver un moyen qui garantisse un respect de la vie privée maximale. Et bien évidemment, il faut que le mécanisme fonctionne si l'utilisateur utilise dnf, GNOME Logiciels ou Cockpit par exemple pour gérer ses paquets.
Pour éviter cela, tous les 7 jours lors d'une requête vers un dépôt, libdnf va envoyer la chaîne libdnf/VERSION (NAME VERSION_ID; [VARIANT_ID; ]OS[.BASEARCH]) comme user agent et incrémenter un compteur interne qui est aussi envoyé. Cela permettra d'obtenir les informations suffisantes à savoir la version de Fedora, la variante utilisée, l'architecture mais aussi la durée de vie d'une Fedora (une semaine, un mois, deux ans ?). L'user agent peut être changé via l'option user_agent dans le fichier de configuration de dnf. Cette fonctionnalité est également désactivable avec l'aide de l'option countme dans ce même fichier qui est configuré à False. Cette option étant activée par défaut.
Pour éviter le risque de traquer une machine en particulier, le compteur n'est plus incrémenté au bout de 60 semaines soit la durée de support approximative d'une Fedora.
Cette nouveauté a été proposée pour Fedora 30 mais a été finalement reportée.
Un bogue sur les images Live sur CD ne sera plus bloquant. En cas de bogues spécifiques à ces images une nouvelle version de Fedora sera proposée malgré tout. Le correctif nécessaire pourra avoir lieu après la disponibilité officielle initiale. Cela permet de réduire la charge des tests pour finalement assez peu d'utilisateurs et d'allouer ce temps à élaborer et exécuter des tests plus pertinents comme pour Fedora Silverblue.
De manière similaire, l'image Xfce ARM 32 bits ne sera plus bloquante alors que l'image Workstation pour AArch64 le sera. L'objectif est de focaliser l'équipe QA sur les images prioritaires et plus utilisées pour le projet Fedora.
Un nouveau buildroot pour le projet Fedora voit le jour pour proposer de tester un changement dans la micro-architecture x86_64. Ceci afin d'évaluer les possibilités d'améliorer les performances et d'observer les éventuelles régressions en vue d'une mise à jour globale des exigences de l'image x86_64.
Cela fait suite à une proposition de changement rejetée récemment qui prévoyait de compiler les paquets x86_64 pour exploiter les instructions AVX2 ou SSE 4.2 par exemple. Ce qui aurait amélioré les performances globales de ces logiciels mais au détriment de la compatibilité des processeurs plus anciens. Le but ici est d'évaluer l'impact d'un tel changement en terme de performances et de tester la compatibilité des logiciels avec ces options.
Ainsi une éventuelle transition pourra s'opérer si les performances sont significativement améliorées et qu'il n'y a pas de régressions notables.
Le lien entre une langue couverte et une police d'écriture n'est plus dans le paquet de la police mais dans un paquet langpack spécifique nommé langpacks-core-font-code_langue.
En somme la macro font(:lang=xy) du paquet disparaît. Cette macro avait été ajoutée dans Fedora 11 pour que PackageKit puisse trouver une police d'écriture capable d'afficher une langue correctement si un logiciel en avait besoin. Cependant la première police compatible trouvée était installée ce qui était souvent une police de faible qualité et cela pouvait varier entre les machines pour une langue donnée.
Ici le résultat est plus prévisible et une police de qualité est fournie par ce biais.
Juste après la séparation entre Rawhide et une nouvelle version de Fedora, ici 32, une période de gel des paquets sera observée comme avant une Beta ou une sortie finale pour améliorer la stabilisation.
L'objectif est de consacrer ce temps après cette séparation pour corriger les bogues avant d'introduire des nouveautés supplémentaires. Cela permet de facilement produire des images testables et fiables bien avant la sortie de la version Beta. Pour Fedora 31, les difficultés rencontrées ont permis d'avoir une telle image testable seulement une semaine avant la Beta ce qui a laissé peu de temps pour tester et corriger ce qui était nécessaire.
L'ensemble des paquets qui gère des unités utilisateur pour systemd doivent recourir aux preset et non gérer cela à la main pour simplifier la maintenance et la cohérence. Cela reprend le même mécanisme proposé pour les services introduit dans Fedora 18.
Les paquets de base, qui sont notamment utilisés pour produire les images minimales pour conteneurs, réduisent leur nombre de scriptlets pour unifier les procédures et améliorer leur gestion.
La communauté francophone
L'association
Borsalinux-fr est l'association qui gère la promotion de Fedora dans l'espace francophone. Nous constatons depuis quelques années une baisse progressive des membres à jour de cotisation et de volontaires pour prendre en main les activités dévolues à l'association.
Nous lançons donc un appel à nous rejoindre afin de nous aider.
L'association est en effet propriétaire du site officiel de la communauté francophone de Fedora, organise des évènements promotionnels comme les Rencontres Fedora régulièrement et participe à l'ensemble des évènements majeurs concernant le libre à travers la France principalement.
Si vous aimez Fedora, et que vous souhaitez que notre action perdure, vous pouvez :
- Adhérer à l'association : les cotisations nous aident à produire des goodies, à nous déplacer pour les évènements, à payer le matériel ;
- Participer sur le forum, les listes de diffusion, à la réfection de la documentation, représenter l'association sur différents évènements francophones ;
- Concevoir des goodies ;
- Organiser des évènements type Rencontres Fedora dans votre ville.
Nous serions ravis de vous accueillir et de vous aider dans vos démarches. Toute contribution, même minime, est appréciée.
Si vous souhaitez avoir un aperçu de notre activité, vous pouvez participer à nos réunions hebdomadaires chaque lundi soir à 20h30 (heure de Paris) sur IRC (canal #fedora-meeting-1 sur Freenode).
La documentation
Depuis juin 2017, un grand travail de nettoyage a été entrepris sur la documentation francophone de Fedora, pour rattraper les 5 années de retard accumulées sur le sujet.
Le moins que l'on puisse dire, c'est que le travail abattu est important : près de 90 articles corrigés et remis au goût du jour. Un grand merci à Charles-Antoine Couret, Nicolas Berrehouc, Édouard Duliège, José Fournier et les autres contributeurs et relecteurs pour leurs contributions.
L'équipe se réunit tous les lundis soir après 21h (heure de Paris) sur IRC (canal #fedora-doc-fr sur Freenode) pour faire progresser la documentation par un travail collaboratif. Le reste de la semaine cela se passe sur les listes de diffusion.
Si vous avez des idées d'articles ou de corrections à effectuer, que vous avez une compétence technique à retransmettre, n'hésitez pas à participer.
Comment se procurer Fedora 32 ?
Si vous avez déjà Fedora 31 ou 30 sur votre machine, vous pouvez faire une mise à niveau vers Fedora 32. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.
Autrement, pas de panique, vous pouvez télécharger Fedora avant de procéder à son installation. La procédure ne prend que quelques minutes.
Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.
De plus, pour éviter les mauvaises surprises, nous vous recommandons aussi de lire au préalable les bogues importants connus à ce jour pour Fedora 32.