3 points par GN⁺ 2023-09-28 | 1 commentaires | Partager sur WhatsApp
  • Projet d’OS de bureau full stack qui développe ensemble le noyau, les pilotes, les applications et les composants du bureau, avec une portée plus large qu’une simple expérimentation sur le noyau
  • Les tests peuvent commencer via la build nightly Essence.tar.xz, Essence.ova pour VirtualBox, ou la commande d’exécution QEMU
  • Les builds publiques sont fournies uniquement pour émulateur afin de faciliter les tests, et les builds pour matériel réel sont encore à venir
  • Le noyau inclut des éléments clés comme un gestionnaire de cache indépendant du système de fichiers, un gestionnaire de mémoire, une pile réseau TCP/IP, un système de fichiers virtuel et un gestionnaire de fenêtres
  • Le bureau comprend une bibliothèque UI personnalisée, un moteur de rendu vectoriel logiciel, des fenêtres à onglets, ainsi que le rendu de texte multilingue basé sur FreeType et Harfbuzz

Exécution et moyens de participer

Test et build

  • La dernière build nightly est disponible sur build-essence releases
    • Télécharger Essence.tar.xz puis le décompresser
    • Dans VirtualBox, importer Essence.ova
    • Dans QEMU, exécuter la commande ci-dessous
      • qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
  • Les builds actuellement fournies sont réservées aux émulateurs pour faciliter les tests
  • La méthode de build et de test se trouve dans help/Building.md

Composants de l’OS

  • Noyau

    • Gestionnaire de cache indépendant du système de fichiers
    • Gestionnaire de mémoire prenant en charge la mémoire partagée, les fichiers mappés en mémoire, le zeroing de pagination multithread et l’équilibrage du working set
    • Pile réseau TCP/IP
    • Ordonnanceur gérant plusieurs niveaux de priorité et la priority inversion
    • Chargement de modules à la demande
    • Système de fichiers virtuel
    • Gestionnaire de fenêtres
    • Mixeur audio
      • En cours de réécriture
    • Sous-système POSIX optionnel
      • Peut exécuter GCC et certains outils Busybox
  • Applications

    • File Manager
    • Text Editor
    • IRC Client
    • System Monitor
  • Composants portés

    • Bochs
    • GCC et Binutils
    • FFmpeg
    • Mesa pour OpenGL en rendu logiciel
    • Musl
  • Pilotes

    • Gestion de l’alimentation : ACPI basé sur ACPICA
    • Stockage secondaire : IDE, AHCI, NVMe
    • Graphiques : BGA, SVGA
    • Système de fichiers en lecture/écriture : EssenceFS
    • Systèmes de fichiers en lecture seule : Ext2, FAT, NTFS, ISO9660
    • Audio : HD Audio
    • NIC : 8254x
    • USB : XHCI, bulk storage devices, human interface devices
  • Bureau

    • Bibliothèque d’interface utilisateur personnalisée
    • Moteur de rendu vectoriel logiciel prenant en charge des animations complexes
    • Fenêtres à onglets
    • Rendu et mise en page de texte multilingue basés sur FreeType et Harfbuzz

1 commentaires

 
GN⁺ 2023-09-28
Avis sur Hacker News
  • Au début, je pensais que c’était encore une distribution Linux avec un gestionnaire de fenêtres personnalisé par-dessus, mais en réalité c’était son propre système d’exploitation
    Il a même son propre noyau, et il a vraiment été construit depuis la base. Les projets qui créent un système d’exploitation ou un navigateur à partir de zéro ont beaucoup de valeur, même s’ils ne sont pas largement adoptés par le grand public, et j’ai envie d’applaudir les développeurs

    • De ce point de vue, je vois aussi d’un bon œil des distributions comme ElementaryOS. Parce qu’elles maintiennent, modifient et créent leurs propres logiciels pour que leur distribution donne vraiment l’impression d’être un environnement intégré unique
      D’autres distributions font aussi beaucoup d’efforts, mais j’aime particulièrement la façon dont les applis KDE s’intègrent bien comme applis par défaut d’un système d’exploitation. À l’inverse, Windows n’a presque pas cette unité, mélange d’anciennes approches, manque de cohérence dans ses applis essentielles, et ressemble de plus en plus à un système Linux bricolé. Si Microsoft ne laissait pas l’équipe marketing orienter Windows et se concentrait sur le polissage du système d’exploitation, cela aurait pu devenir un produit incroyablement excellent
    • Comme ce genre de distribution Linux avec seulement une couche cosmétique est tellement courant, il est facile de le supposer au départ
      Essence a été créé de zéro, et le fait qu’il ait une UI propre tout en n’étant pas « linuxienne » est assez impressionnant. Contrairement aux cas où l’on ajoute une apparence plus jolie et plus accueillante au-dessus d’une distribution existante, cela semble être une voie beaucoup plus rare, et il pourrait peut-être suivre les traces de ChromeOS
    • Ça m’a un peu rappelé Oberon OS : https://en.wikipedia.org/wiki/Oberon_(operating_system)
    • À l’inverse, j’ai cliqué en pensant critiquer un autre Linux qui prétendait être « créé de zéro », et j’ai trouvé ça drôle que ce ne soit pas le cas
  • La landing page est vraiment excellente. Elle donne presque immédiatement toutes les informations qu’on veut savoir
    De belles captures d’écran, la prise en charge du matériel basse consommation, un démarrage possible avec moins de 30 Mo de stockage et encore moins de RAM, aucune tâche en arrière-plan, d’excellentes performances, du code sous licence MIT publié, et même une vidéo de démo. Plusieurs usages susceptibles de devenir populaires dans des domaines que les systèmes d’exploitation desktop grand public ne couvrent pas me viennent immédiatement à l’esprit. J’aimerais en savoir plus sur la toolchain de développement et la manière de démarrer, mais les liens Discord/Patreon semblent couvrir cela dans une certaine mesure. Mettre en avant des fonctionnalités comme les interfaces tactiles comme support de premier ordre permettrait de mieux le différencier des systèmes d’exploitation desktop existants, et on peut aussi imaginer des appareils IoT qui ont besoin d’une UI

    • Exact. Parmi les pages de distributions façon années 2000, il y en avait beaucoup trop qui cachaient les captures d’écran dès le premier écran, comme si elles avaient honte de montrer le système
    • La toolchain et l’expérience de développement étaient un peu abordées dans la vidéo. Cela semblait être une assez bonne approche pour permettre aux utilisateurs de thématiser leur propre desktop
    • Cette combinaison de fonctionnalités ressemble à une plateforme assez intéressante pour des applications embarquées
      Si l’API de gestion des fenêtres est correcte, cela pourrait tout à fait servir de système de contrôle embarqué. En compilant vers WASM, on pourrait aussi créer une UI web plutôt correcte en exploitant un faux système de fenêtres
  • Il semble que la majeure partie du travail soit arrêtée depuis avril 2022 : https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...

    • Les commits après 2021 ressemblent à des corrections de bugs. Plutôt qu’arrêté, il est peut-être globalement terminé
    • Comme toujours, je ne vois pas pourquoi faire semblant que cela deviendra nécessairement un produit réaliste
      C’est un peu comme si je disais que je vais construire moi-même un gros porteur. Je pourrais assembler quelque chose comme un biplan rudimentaire, mais je ne peux pas fabriquer les moteurs ni un fuselage grandeur nature, et sans mécaniciens ni usine, au final personne n’utilisera ce jet
  • J’aime bien la structure de la fin du code du bloc de démarrage en assembleur
    La forme qui enchaîne times (0x1B4 - ($-$$)) nop, disk_identifier: times 10 db 0, quatre partition_entry_*: times 16 db 0, puis dw 0xAA55 est élégante. Elle montre comment l’identifiant du disque et les quatre partitions MBR classiques coexistent avec le code de démarrage dans les 512 premiers octets. La structure suppose qu’après avoir copié le bloc de démarrage sur le disque, un programme externe, par exemple un outil comme fdisk, définit les valeurs des partitions. J’ai vu beaucoup de code de bloc de démarrage, mais c’est la première fois que je vois une organisation de ce type

    • Ça fait penser à l’élégance, la simplicité et la performance que nous manquons à cause d’une concurrence limitée entre systèmes d’exploitation
    • Ça m’a aussi poussé à vérifier rapidement si c’était encore un projet stupidement génial de Justine Tunney
  • J’aimerais que ce type de système d’exploitation trouve sa place auprès des gens qui n’ont pas besoin de toute la rétrocompatibilité et des fonctionnalités serveur de Linux, et qui veulent aussi éviter Microsoft ou Apple
    Je veux quelque chose qui ressemble à ChromeOS, mais sans être aussi verrouillé

    • J’aimerais vraiment voir une approche avec une conception de sécurité fondée sur les permissions, conviviale, pour que les applis téléchargées depuis Internet ne puissent pas voler mes identifiants et mes documents
      C’est l’un des plus gros problèmes auxquels les gens sont confrontés aujourd’hui, mais à ma connaissance il ne semble pas y avoir beaucoup d’intérêt réel pour tenter une nouvelle approche au niveau du système d’exploitation
    • Je conçois et construis ce genre de chose depuis des années, mais le quotidien passe toujours en priorité
      S’il existait un modèle économique viable pour un système d’exploitation seul, plutôt que le modèle à la Apple reposant sur la vente de matériel, ou le modèle Android reposant sur la publicité — et Windows qui évolue de plus en plus dans ce sens — cela pourrait changer les choses. Peut-être que ce sera possible si je deviens un jour financièrement indépendant
    • Tu peux essayer haiku-os.org
    • Que penses-tu des systèmes de la famille BSD ou de 9front, un fork de Plan 9 ?
    • Sur ChromeOS, on peut facilement ajouter un environnement Linux à tout moment
  • Un démarrage en 0,7 seconde du BIOS au desktop, c’est impressionnant

    • Il y a quelques années, Intel avait présenté un démarrage Linux en 0,3 seconde sur une plateforme embarquée, de la mise sous tension jusqu’à une UI entièrement interactive
      C’était un cas d’usage automobile, visant des situations où des fonctions comme l’infodivertissement ou le tableau de bord doivent être disponibles juste après l’activation de l’alimentation des accessoires
  • Je me demandais comment un système d’exploitation dessine une interface graphique de qualité
    En développement bare metal, j’ai déjà dessiné des graphismes simples avec un framebuffer linéaire, mais je me demande comment sont générées les images qui représentent les composants d’UI, comme dans ce type d’interface ou dans Windows. Je ne vois pas de fichiers PNG pour les bordures de fenêtres, mais je vois du code qui définit les couleurs des pixels selon le thème. Je me demande si les composants d’UI d’un système d’exploitation sont généralement dessinés par programme, plutôt que créés dans un éditeur d’images puis tuilés.

    • Aujourd’hui, c’est presque toujours du graphisme vectoriel. Autrefois, on utilisait de simples bitmaps, et ce système d’exploitation en particulier utilise des graphismes vectoriels.
    • Si l’on part de zéro, les fichiers PNG peuvent au contraire être plus complexes, car ils nécessitent un décodage.
      En revanche, avec une API de dessin, il est plus facile de mapper un encodage de graphismes vectoriels sous forme d’appels aux commandes de dessin correspondantes. Cela résout aussi les problèmes de redimensionnement, et les assets vectoriels prennent généralement beaucoup moins de place.
    • Le lien ci-dessus indique aussi explicitement que l’interface utilisateur est entièrement basée sur le vectoriel.
      Il faut donc voir cela comme des descriptions de la manière de dessiner l’UI, plutôt que comme l’utilisation d’images raster.
    • De nos jours, c’est généralement basé sur des shaders OpenGL avec accélération matérielle.
    • Si vous êtes passé à côté de ce concept, ceci peut servir de référence : https://en.wikipedia.org/wiki/Vector_graphics
  • Article lié : Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - janvier 2022, 290 commentaires

  • D’habitude, les tentatives de nouveau système d’exploitation semblent trop irréalistes, du genre à vouloir faire bouillir l’océan, mais celui-ci me plaît. Il paraît immédiatement plausible.
    Quelques conseils : premièrement, ajouter tôt la virtualisation permettrait d’exécuter d’autres systèmes d’exploitation et des applications familières. À long terme, il serait possible d’explorer une virtualisation transparente, similaire à Parallels Coherence, pour exécuter des applications externes au-dessus de ce système hôte, ce qui pourrait être une solution à court et moyen terme au problème du « pas d’apps » qui pénalise les nouveaux OS. Deuxièmement, il vaudrait mieux limiter la prise en charge matérielle à quelques plateformes cibles, comme les fabricants de laptops orientés Linux tels que System76 et Framework, ainsi que Raspberry Pi. Troisièmement, il pourrait être utile d’étudier l’importation de pilotes Linux ou BSD via une API compatible, ce qui permettrait peut-être de gérer des périphériques notoirement difficiles à prendre en charge, comme les cartes Wi‑Fi.

  • Sur la page personnelle de nakst, l’auteur d’Essence, https://nakst.gitlab.io/, on trouve cette phrase :
    nakst's webpage // This site works best with JavaScript disabled — un type formidable.