Haiku R1 beta 3 - Haiku a 20 ans !
-
Ça y est, la troisième version bêta de Haiku est disponible, juste à temps pour fêter les vingt ans du projet le mois prochain !
- lien nᵒ 1 : Dépêche pour la version R1 beta 2
- lien nᵒ 2 : Dépêche pour les 19 ans de Haiku
- lien nᵒ 3 : Site de Haiku
- lien nᵒ 4 : Télécharger Haiku
Sommaire
- Un peu d’histoire
- Statistiques de contribution
- Nouveautés de la version bêta 3
- Plans pour la suite
- Le retour de la « promotion team »
- Portage de Haiku sur RISC-V
- Le Google Summer of Code
- Migration des canaux de discussion IRC de Freenode vers OFTC
Haiku est un système d’exploitation inspiré par BeOS. L’objectif est de construire un système léger, facile à utiliser tout en permettant des usages plus avancés.
Une particularité est le choix de réutiliser assez peu de composants existants. L’idée étant d’avoir une seule équipe de développement en charge de tout le code source, ce qui permet de réaliser les modifications nécessaires aux bons endroits, et pas d’ajouter des couches d’abstraction et d’adaptation entre de multiples composants pas prévus pour fonctionner ensemble.
Le projet est actuellement en version bêta, ce qui signifie que toutes les fonctionnalités prévues ont été implémentées, mais qu’il reste encore de nombreux bugs à corriger.
Cette dépêche comporte des informations générales sur le projet, ainsi qu’une section présentant les principales nouveautés de la version bêta 3 qui vient d’être publiée.
Un peu d’histoire
Le projet Haiku (au départ nommé OpenBeOS) a démarré officiellement le 18 août 2001 avec le premier message sur la liste de diffusion: Ok, let’s start (OK, allons-y).
L’idée était de donner une suite à BeOS, un système d’exploitation non libre développé par Be Inc. Au début de l’année précédente, Be avait annoncé la mise en téléchargement gratuit de son système BeOS et un focus shift pour se concentrer sur les « internet appliances », ce qu’on appellerait aujourd’hui l’internet des objets. Un certain nombre d’utilisateurs et de développeurs de BeOS ne souhaitaient pas voir ce système disparaître, et se sont rassemblés pour essayer d’y donner suite.
En 2004, le projet était renommé pour éviter de potentiels problèmes de marques déposées avec BeOS.
En 2005, pour la première fois il était possible de lancer « Tracker » (le navigateur de fichiers de BeOS) sous Haiku.
En 2008, pour la première fois, il était possible de compiler Haiku depuis Haiku (self-hosting), ce qui était l’objectif de l’entrée en phase « alpha » et de la publication d’une première version. Trois autres versions alpha suivront jusqu’en 2012.
En 2010, un sondage auprès des développeurs et utilisateurs définit les objectifs de la version R1 de Haiku, donnant la direction à suivre pour les 10 années suivantes.
En 2013, Haiku fonctionne sur les architectures x86 64 bits.
En 2018, c’est l’entrée en phase « bêta » de la version R1. On considère que toutes les fonctionnalités prévues dans la version 1 de Haiku sont présentes, mais il reste de nombreux bugs à corriger avant d’avoir une version finale. L’objectif est de publier de nouvelles versions assez souvent pour permettre aux utilisateurs de tester le système, et aux développeurs de commencer à porter ou écrire leurs applications.
Statistiques de contribution
Statistiques détaillées pour Haiku
Au total, 305 personnes ont participé à Haiku avec au moins un commit dans le dépôt Git. Ce nombre est sous-estimé, en effet avant 2011, Haiku utilisait Subversion, et les correctifs envoyés par des personnes n’ayant pas accès en écriture au dépôt Git n’étaient pas correctement attribués. De plus, il n’y a pas d’historique pour la première année d’existence du projet pendant laquelle il n’y avait pas du tout d’outil de gestion de code.
Après un pic d’activité entre 2008 et 2010 avec plus de 5 000 commits par an, les choses ont ralenti et depuis 2016, c’est seulement environ 1 400 changements qui sont intégrés chaque année. Haiku utilise Gerrit pour recevoir les correctifs des contributeurs et la plupart des changements sont relus attentivement avant d’être intégrés, afin de s’assurer de la cohésion dans le style de formatage du code, et d’éviter de rajouter trop de bugs.
Le contributeur le plus actif est Axel Dörfler, présent depuis le tout début et encore actif aujourd’hui, qui est l’auteur de 16,63 % des commits intégrés dans Haiku.
Chaque année, environ une soixantaine de personnes contribuent à au moins un changement. Chaque mois, ce sont quinze à vingt personnes.
Aujourd’hui le projet comporte environ 8 000 fichiers sources C et C++ (et autant d’en-têtes .h) qui représentent quatre millions de lignes de code.
Haikuports, les dépôts de paquets
Statistiques détaillées pour Haikuports
Bien sûr, un système d’exploitation ne serait pas très utile sans logiciels à faire fonctionner dessus.
Haikuports est le principal dépôt de logiciels pour Haiku. Le projet a démarré en 2008, d’abord brièvement sous le nom de BePorts, avant d’abandonner BeOS pour se concentrer sur Haiku. Il s’agit d’un projet indépendant de Haiku, même si un grand nombre de contributeurs sont en fait impliqués dans les deux projets (le monde est petit).
Le projet est devenu très actif en 2013, lorsque Haiku s’est doté d’un gestionnaire de paquets. Auparavant, HaikuPorts pouvait être utilisé soit pour installer directement des logiciels compilés à partir des sources sur le système local, soit pour générer des archives .zip permettant de redistribuer ces logiciels. Il n’y avait pas vraiment de gestion des dépendances, ce qui limitait fortement son utilité.
Les années 2017 et 2018 ont été les plus actives, avec 2 500 puis 2 900 commits respectivement. Les choses semblent se stabiliser avec autour de 1 600 commits par an.
Au total, 250 personnes ont participé à Haikuports, soit entre 60 et 70 personnes chaque année depuis 2017.
Actuellement le dépôt contient 2 971 recettes donnant chacune les instructions pour compiler un paquet, ainsi que 1 257 correctifs nécessaires pour compiler certains projets. Le nombre de recettes augmente assez régulièrement depuis le début du projet.
La taille moyenne des recettes est de 88 lignes (incluant une description du logiciel, la liste des dépendances et de ce qui est fourni par le paquet, et les instructions de compilation et d’installation).
Un système d’intégration continue est en place, qui permet de compiler automatiquement les paquets à partir des recettes dès qu’elles sont ajoutées dans le dépôt git. Les utilisateurs de Haiku peuvent ainsi télécharger et installer directement les paquets pré-compilés.
Nouveautés de la version bêta 3
Processus d’installation
L’un des objectifs de Haiku est d’être un système peu gourmand en ressources et facile à utiliser. Cela commence dès le premier démarrage depuis un DVD (ou une clé USB) d’installation, en essayant de guider l’utilisateur et de faciliter ses premiers pas.
Suite à la publication de la version bêta 2, une étude d’expérience utilisateur empirique (en visionnant de nombreuses vidéos de personnes testant Haiku sur Youtube) a permis de constater plusieurs problèmes d’utilisabilité et quelques bugs dans le processus d’installation. Cela a donc été un des aspects qui ont été améliorés dans cette nouvelle version :
- il est possible d’utiliser l’application Installeur pour réinitialiser proprement un disque contenant déjà une installation de Haiku, en conservant les fichiers de l’utilisateur (mais pas les applications et la configuration) ;
- il est possible de quitter l’Installeur et de revenir à l’écran d’accueil permettant de choisir entre l’installation et le mode « live DVD » pour essayer Haiku ;
- l’outil de partitionnement et de formatage des disques DriveSetup a reçu de nombreuses corrections de bugs et de petits changements d’interface pour éviter les confusions les plus fréquentes.
Gestionnaire de paquets
Haiku est fourni avec un gestionnaire de paquets disposant de fonctionnalités peu souvent rencontrées sur d’autres systèmes, telles que l’installation et la désinstallation de paquets par simple déplacement dans un dossier dédié, et la possibilité de démarrer le système dans un état antérieur, si une mise à jour se passe mal, ou à des fins de tests :
- les mises à jour de paquets sont capables de reprendre un téléchargement là où il s’était arrêté si le processus est interrompu ;
- la désinstallation de paquets peut exécuter des scripts de nettoyage inclus dans le paquet ;
- amélioration des performances de HaikuDepot, l’interface graphique du gestionnaire de paquets. En particulier, optimisation de la façon de stocker les icônes des applications, en les regroupant dans un seul fichier pour limiter le gaspillage d’espace disque ;
- nombreuses améliorations de la stabilité et de l’expérience utilisateur de HaikuDepot ;
- remplacement de Python 2 par Python 3.7 comme version par défaut fournie avec Haiku (des versions plus récentes et plus anciennes sont également disponibles dans le gestionnaire de paquets et peuvent être installées si nécessaire).
Interface utilisateur
- La classe BTextView affiche correctement le texte centré ou aligné à droite. De nombreuses corrections ont été faites dans la classe BTextControl pour corriger son comportement lors de déplacements du curseur et de l’édition de texte.
- Amélioration de l’apparence de Haiku lors de l’utilisation de thèmes de couleurs à dominante sombre (texte plus clair que la couleur de fond).
- Intégration de l’outil PadBlocker dans la configuration des périphériques d’entrée. Il permet de désactiver le touchpad lorsque le clavier est utilisé, évitant ainsi de déclencher involontairement des clics ou déplacements du pointeur de souris.
- Mise à l’échelle des barres de défilement en fonction de la taille de police choisie pour le système (permettant de s’adapter aux écrans à très haute résolution simplement en augmentant le réglage de taille du texte).
- Multiples changements dans la gestion des chaînes de caractères pour améliorer l’internationalisation et faciliter la traduction de Haiku dans d’autres langues.
- Possibilité d’afficher la charge CPU dans ProcessController pour les processeurs avec plus de huit cœurs.
- L’application Pulse affiche le vrai logo du fabricant du CPU (auparavant seul le logo d’Intel était utilisé).
- Améliorations de la stabilité et de la compatibilité de MediaPlayer avec divers formats audio et vidéo.
- La fenêtre d’attente lors de l’arrêt du système affiche une icône animée lorsqu’une application est occupée et ne répond pas à la demande de fermeture.
Serveur graphique app_server
- Plusieurs corrections de problèmes de clipping et de clignotements dans l’affichage des fenêtres.
- Possibilité de dessiner une image bitmap avec une répétition horizontale et/ou verticale (« tuiles »).
- Ajout de nouvelles opérations de composition graphique, utilisées entre autres dans le navigateur web pour implémenter les canvas JavaScript.
- Correction du système de substitution de polices de caractères, ajout dans la liste des polices de remplacement de Noto Sans Symbols 2 et Noto Emoji pour couvrir la plupart des caractères fréquemment utilisés.
- Refonte de la gestion de la mémoire et correction de plusieurs problèmes de dépassement de mémoire qui pouvaient conduire à un plantage du serveur graphique.
Navigateur web
- L’en-tête « Accept-Language » n’était pas envoyé dans les requêtes HTTP(S), ce qui empêchait certains sites web de s’afficher.
- Le menu contextuel « Rechercher sur le web » fonctionne à nouveau.
- Il est possible de sélectionner facilement un moteur de recherche parmi une liste prédéfinie.
- Le moteur de recherche par défaut est DuckDuckGo, en remplacement de Google (pour des raisons de protection des données des utilisateurs, mais surtout de problèmes de compatibilité avec le navigateur des pages de Google et de l’affichage de messages d’avertissement désagréables).
- Raccourcis de recherche dans la barre d’adresse, par exemple taper « w Haiku » recherchera Haiku sur Wikipedia.
- Mise à jour de HaikuWebKit à la version 612.1.21 de WebKit (version datant de juin 2021).
- Affichage des pages en utilisant leur mode sombre (spécifié via des feuilles de styles CSS) si le système est configuré pour utiliser un thème sombre.
APIs
- Nouvelle version de l’API « net services » (clients HTTP et Gopher). Cette API est maintenant fournie sous forme d’une bibliothèque statique, ce qui permettra d’effectuer des changements sans casser les applications existantes. Les applications compilées avec la version bêta 2 de la bibliothèque restent utilisables pour l’instant, mais il est recommandé de les recompiler avec la nouvelle version dès que possible.
- La nouvelle version augmente les performances des téléchargements, et corrige de nombreux problèmes (par exemple il est possible de charger des fichiers de plus de 2 Go).
Systèmes de fichiers
La cohabitation et l’interopérabilité avec d’autres systèmes sont importants pour Haiku. Aussi, de nombreux systèmes de fichiers conçus initialement pour d’autres systèmes peuvent être lus et parfois écrits depuis Haiku :
- améliorations de la lecture du système de fichiers XFS ;
- correction d’un plantage du noyau dans le pilote NFS ;
- lecture des tables de partitions Sun VTOC (format utilisé sur les machines SPARC) ;
- correction de bugs dans la lecture des systèmes de fichiers ext4.
Les systèmes de fichiers disponibles
En lecture et écriture :
- BFS (le système de fichiers de BeOS), en versions gros-boutiste et petit-boutiste ;
- ext2, 3, et 4 ;
- FAT ;
- netfs (système de fichiers en réseau spécifique à Haiku) ;
- NFS versions 2 et 4 ;
- NTFS ;
- Reiserfs.
En lecture seule :
- btrfs ;
- cdda (permet d’accéder aux pistes d’un CD audio sous forme de fichiers WAV) ;
- exfat ;
- ISO 9660 ;
- UDF.
D’autres systèmes de fichiers peuvent être utilisés via FUSE et userlandfs : SMB et sshfs par exemple. Ils sont disponibles dans le gestionnaire de paquets.
Compatibilité avec BeOS
La possibilité d’exécuter des applications compilées pour BeOS reste un des objectifs du projet. Bien que cela n’ait aujourd’hui plus un grand intérêt au quotidien (la plupart des applications ont été remplacées ou bien leurs sources ont été publiées et elles peuvent être mises à jour), tester ces applications permet de découvrir de nombreux cas particuliers dans le comportement du système et de corriger les bugs les plus tordus :
- correction d’un problème d’inter-blocage entre le Locale Kit (localisation dans différentes langues) et le Translation Kit (conversion de formats de fichiers) qui avaient indirectement une dépendance circulaire entre eux. Cela empêchait certaines applications de démarrer (par exemple BeLive, et Tracker) ;
- implémentation du drapeau B_OUTLINE_RESIZE qui permet à certaines fenêtres de ne dessiner que leur contour lorsqu’elles sont en cours de redimensionnement (utile si le tracé du contenu de la fenêtre est particulièrement long) ;
- ajout d’un « Control Look » qui ressemble autant que possible à BeOS R5 (l’apparence par défaut de Haiku reste inchangée). Cela permet d’assurer une compatibilité avec les applications dont l’interface graphique est codée en dur avec des positions en pixels, sans tenir compte de la taille réelle de la police de caractères et des contrôles.
Compatibilité avec POSIX
En plus des applications écrites pour BeOS, Haiku permet d’utiliser des applications venues du monde UNIX (ou plutôt GNU/Linux et BSD de nos jours). Par exemple, un grand nombre d’applications utilisant la bibliothèque Qt sont disponibles. Haiku essaie autant que possible de suivre strictement le standard POSIX, mais implémente également des fonctions supplémentaires sur lesquelles il y a un consensus parmi les autres systèmes :
- ajout des fonctions mlock et munlock, permettant d’empêcher une zone de mémoire d’être évacuée dans le fichier swap (pour des raisons de performance ou surtout de sécurité) ;
- retrait d’une limitation sur le nombre de threads « joinable » par application ;
- correction du comportement de pselect() lors de l’utilisation de signaux ;
- correction du code de retour de fsync() lorsqu’il est appelé sur un pipe FIFO 0 ;
- déplacement de la fonction asprintf dans la libbsd, car ce n’est pas une fonction standard POSIX ;
- ajout des fonctions exp10, exp10f et exp10l dans math.h (seulement en mode _GNU_SOURCE) ;
- correction du comportement de write() en mode O_APPEND
- ajout de la fonction posix_fallocate() ;
- ajout de ut_host dans utmpx.h ;
- ajout de ppoll() (qui ne fait pas encore partie du standard POSIX, mais arrive dans la prochaine version) ;
- traitement d’une séquence d’échappement permettant d’insérer plusieurs répétitions d’un même caractère dans le Terminal (par exemple pour tracer une bordure dans une application ncurses)
Amélioration des performances
- Optimisation de la fonction create_area pour éviter un algorithme de complexité O(n2).
- Optimisation de la fonction BMenuItem::RemoveItem pour être en complexité O(1) au lieu de O(n).
- Amélioration du pilote cpufreq permettant de mesurer la charge CPU bas niveau et d’ajuster la fréquence de fonctionnement du CPU.
- Amélioration de la mémoire tampon de MediaPlayer permettant la lecture de vidéos 4K.
- Implémentation des acquittements sélectifs (SACK) dans le protocole TCP, pour limiter les retransmissions de paquets sur les liens réseaux avec des pertes de paquets (par exemple en Wifi).
Internationalisation
- Ajout d’une traduction en tchèque, ce qui fait que Haiku est maintenant utilisable dans vingt-huit langues différentes.
Matériel et pilotes
Son
Amélioration des pilotes pour les cartes son à base de chipsets es1370 et intel HDA.
Stockage
- Nouveaux pilotes pour les lecteurs de cartes SD connectés sur le bus PCI (SDHCI).
- Amélioration de la stabilité du système de fichier en mémoire ramfs.
- Amélioration des performances du pilote NVMe.
Réseau
- Amélioration des performances du pilote réseau virtio (utilisé lorsque Haiku est exécuté dans certaines machines virtuelles).
- Mise à jour des pilotes de cartes réseau à partir de ceux de FreeBSD 13.
- Suppression du pilote réseau Wavelan, qui ne concerne que des cartes Wifi depuis longtemps obsolètes (principalement des cartes PCMCIA, sans possibilité d’utiliser des réseaux chiffrés en WPA).
USB
- Correction de problèmes dans les pilotes USB3
Cartes Graphiques
- Mise à jour du pilote Intel_Extreme pour les générations de cartes 4 à 7 (chipset Sandy Bridge et suivants). Début de travail sur l’affichage multi-écrans, en mode « clone » pour l’instant.
- Amélioration du pilote NVIDIA GeForce 6200-6400.
Plans pour la suite
Après vingt ans passés à développer le système, on peut se poser des questions sur l’absence de version R1 stable pour l’instant. Cependant, il faut se souvenir que le développement de Haiku est effectué en grande majorité par des volontaires sur leur temps libre, en jonglant souvent avec un emploi à plein temps et d’autres activités informatiques ou non.
En parallèle du travail des développeurs sur les versions bêta 2 et 3, du tri a été fait dans les rapports de bugs pour essayer de dégager une feuille de route pour les prochaines versions. Beaucoup de tickets ont été déplacés dans les jalons « Unscheduled » (qui signifie que ce n’est pas nécessaire pour la version R1) et R1.1 (pour les bugs les moins importants, pour lesquels on considère qu’ils ne justifient pas de bloquer la version R1).
Durant l’année de travail sur la bêta 3, ce sont environ 250 bugs qui ont été corrigés. Actuellement, le jalon R1 contient plus de 600 bugs, et cela va probablement augmenter après la publication de la nouvelle version bêta, car de nombreuses personnes vont essayer Haiku et découvrir de nouveaux problèmes.
Il reste donc encore au moins trois ans de travail sur la version R1 au rythme actuel. C’est beaucoup. En fait, c’est trop. La solution pour aller plus vite consiste à embaucher une ou plusieurs personnes pour travailler à plein temps sur le projet. Cela a déjà été fait plusieurs fois depuis 2010, d’abord avec des contrats ponctuels de quelques semaines ou quelques mois, puis un contrat plus long en 2014 avec un développeur qui a pu travailler à plein temps sur Haiku pendant environ un an.
Ces emplois sont financés entièrement par les dons reçus par l’association Haiku inc. Ces dons proviennent en partie de particuliers, et en partie de sponsoring de Google pour la participation au Google Summer of Code et au Google Code In. De plus, Haiku inc a reçu certains dons en bitcoins qui ont été oubliés sur un portefeuille électronique quelque temps et leur cours a pas mal augmenté.
Le budget est donc suffisant à présent pour embaucher un développeur pendant un ou deux ans avec un salaire raisonnable. Le problème restait de trouver une personne compétente et volontaire pour se lancer dans l’aventure. En effet, la plupart des développeurs actifs de Haiku ne souhaitaient pas quitter leurs emplois actuels. La situation va peut-être changer puisque Waddlesplash, un des développeurs les plus actifs, vient de quitter son emploi et est en discussion avec Haiku inc pour établir un contrat.
Après les versions R1 et R1.1, il est logiquement prévu une version R2. Dans celle-ci, des changements d’API et d’ABI seront faits (en plus, probablement, d’autres changements). Il n’est pas encore décidé si cette version assurera toujours la compatibilité avec les applications BeOS, et de quelle façon elle pourra le faire. Concrètement, on verra si l’un des développeurs qui souhaitent conserver cette compatibilité se propose pour effectivement implémenter quelque chose.
Le retour de la « promotion team »
Durant les cinq dernières années et suite au départ de Matt Madia, il n’y avait plus vraiment d’équipe chargée de la publicité et du marketing. Une nouvelle équipe a été formée cette année et travaille sur plusieurs sujets : réorganisation du site web et de la documentation, amélioration de « l’onboarding » (accueil, embarquement) pour les nouveaux contributeurs, interviews des développeurs, remise en place d’une boutique de produits dérivés pour financer le projet, etc.
Portage de Haiku sur RISC-V
Une autre grosse nouveauté cette année est le portage de Haiku sur une nouvelle architecture de CPU. Jusqu’à présent, seule la version x86 (32 ou 64bits) était fonctionnelle.
Ceci a été possible principalement grâce au travail de Kallisti5 et X512. Ces deux développeurs ont chacun reçu une station de travail RISC-V offerte par Haiku inc pour les aider à poursuivre leurs efforts (après avoir réussi à faire fonctionner le système dans qemu).
Les corrections faites dans le cadre de ce portage ont également permis de débloquer la situation pour la version ARM de Haiku, qui pourrait elle aussi devenir bientôt utilisable. À moins que la version SPARC soit prête avant.
Tous les changements pour la version RISC-V n’ont pas encore été intégrés dans le dépôt Git. Certains ont besoin d’être mis au propre afin de ne pas casser les autres architectures, d’autres sont en cours de revue et de relecture.
Le Google Summer of Code
Haiku participe régulièrement au Google Summer of Code depuis 2006. Ce programme financé par Google permet d’accueillir des étudiants en tant que contributeurs à des projets open source, sous la forme d’un stage avec un développeur du projet servant de tuteur.
Cette année, quatre étudiants contribuent à Haiku dans ce cadre :
- Saloni Goyal et Hrithik Kumar travaillent sur l’intégration de clang-format dans l’infrastructure d’intégration continue, afin de signaler automatiquement les erreurs de formatage de code sur les patchs soumis. Ceci nécessite également d’adapter clang-format pour implémenter les conventions de formatage utilisées par Haiku ;
- Xiaojie Yi améliore la prise en charge du système de fichiers XFS ;
- Jaidyn Levesque développe un client de messagerie instantanée multi-protocoles.
Tous les quatre ont passé avec succès la première évaluation après un mois de développement.
Migration des canaux de discussion IRC de Freenode vers OFTC
Dans la dépêche de l’année dernière, on parlait de la fermeture du service d’archivage de conversations IRC Echelog. Malheureusement, moins d’un an après, c’est tout le réseau IRC Freenode qui a été fermé. L’ensemble des canaux de discussion de Haiku (à l’exception de certains canaux dans différentes langues qui ont choisi d’utiliser d’autres protocoles de communication) ont donc migré sur le réseau OFTC, un autre réseau IRC accueillant les projets de logiciels libres. L’enregistrement des conversations est maintenent fait par le service irclog de whitequark
Télécharger ce contenu au format EPUB
Commentaires : voir le flux Atom ouvrir dans le navigateur
Sauf mention contraire, le site est placé sous double licence Creative Commons BY-SA et GNU Free Documentation License propulsé par NodeBB