12 points par xguru 2021-10-12 | 1 commentaires | Partager sur WhatsApp
  • Un OS qui donne l’impression de combiner l’interface de Windows/Mac de la fin des années 1990 avec un cœur *nix de la fin des années 2000

  • Démarré comme un projet solo, il continue de grandir depuis 3 ans grâce au soutien de la communauté

  • Du noyau au navigateur web et à l’IDE, tout est « développé à la main depuis zéro, sans bibliothèques externes »

  • Le système lui-même est développé en Serenity C++.

→ une variante moderne du C++ avec sa propre bibliothèque standard

Repo : https://github.com/SerenityOS/serenity

  • Fonctionnalités du noyau

→ noyau x86 (32 bits) / x86_64 (64 bits) prenant en charge le multithreading préemptif

→ pile IPv4 (ARP, TCP, UDP, ICMP)

→ système de fichiers ext2

→ prise en charge des signaux POSIX

→ prise en charge du système de fichiers /proc

  • Services système

→ daemon de lancement/session (SystemServer)

→ serveur de fenêtres avec composition (WindowServer)

→ gestionnaire de console texte (TTYServer)

→ client DNS (LookupServer)

→ serveur de protocoles réseau (RequestServer and WebSocket)

→ daemon audio avec mixage logiciel (AudioServer)

→ notifications de bureau (NotificationServer)

→ serveur HTTP (WebServer)

→ serveur Telnet (TelnetServer)

→ client DHCP (DHCPClient)

  • Bibliothèques

→ templates et conteneurs C++ (AK)

→ boucle d’événements et utilitaires (LibCore)

→ bibliothèque graphique 2D (LibGfx)

→ bibliothèque compatible OpenGL 1.x (LibGL)

→ toolkit GUI (LibGUI)

→ bibliothèque de communication interprocessus (LibIPC)

→ moteur HTML/CSS (LibWeb)

→ moteur JavaScript (LibJS)

→ Markdown (LibMarkdown)

→ audio (LibAudio)

→ chaînes de traitement du signal numérique/synthétiseur (LibDSP)

→ base de données PCI (LibPCIDB)

→ émulation de terminal (LibVT)

→ E/S de protocoles réseau hors processus (LibProtocol)

→ fonctions mathématiques (LibM)

→ gestion des fichiers ELF (LibELF)

→ threading POSIX (LibPthread)

→ threading de plus haut niveau (LibThreading)

→ sécurité de la couche transport (LibTLS)

→ HTTP et HTTPS (LibHTTP)

→ IMAP (LibIMAP)

  • Fonctionnalités userland

→ libc et userland de type Unix

→ shell avec pipes et redirection d’E/S

→ système d’aide en ligne (versions terminal et GUI)

→ navigateur web (Browser)

→ IDE C++ (HackStudio)

→ synthétiseur de bureau (Piano)

→ client e-mail (Mail)

→ diverses applications desktop et jeux

→ thèmes de couleurs

1 commentaires

 
xguru 2021-10-12

Je pense que c’est l’un des OS développés en hobby les plus singuliers. C’est aussi impressionnant de voir qu’ils ont implémenté et intégré toutes ces nombreuses bibliothèques et applications.

À l’origine, c’est un projet qu’Andreas Kling a commencé en 2018 pour s’occuper, après avoir terminé un programme de réhabilitation de trois mois contre une addiction aux drogues, ce qui lui avait laissé beaucoup de temps libre.

Auparavant, c’était un développeur qui travaillait sur WebKit chez Apple et Nokia. On dit que son expérience chez Apple l’a amené à privilégier le développement de tout en interne, sans paquets externes.

Depuis le mois de mai de cette année, les dons sont désormais suffisants pour qu’il développe SerenityOS à plein temps.

Actuellement, 232 personnes le soutiennent via GitHub Sponsors. https://github.com/sponsors/awesomekling

Sur Patreon, ils sont 279 : https://www.patreon.com/serenityos

Le nombre de contributeurs a dépassé les 500, et des mises à jour mensuelles de l’OS sont publiées sur la chaîne YouTube.

https://youtube.com/playlist/?list=PLMOpZvQB55bfp6ykOLayLqLrjcpv_Sw3P

Début 2019, ces vidéos duraient une dizaine de minutes, mais aujourd’hui les mises à jour s’étendent plutôt sur 30 à 40 minutes.

La vidéo montrant le portage en une heure sur SerenityOS de Devilution, la rétro-ingénierie de Diablo 1, est elle aussi bien connue.

https://github.com/diasurgical/devilution

https://www.youtube.com/watch?v=ZOzZ8R4gphE