SerenityOS (Eigenschreibweise, engl. serenity „Gelassenheit“) ist ein freies Desktop-Betriebssystem für die x86-64-Architektur, das sich seit 2018 in der Entwicklung befindet. Das Projekt wurde vom schwedischen Entwickler Andreas Kling begonnen und inzwischen ist eine Community an Hobbyprogrammierern daran beteiligt. Das System baut auf einem monolithischen präemptiblen Kernel auf. Seine Benutzeroberfläche versucht, die Ästhetik der Oberflächen der späten 1990er-Jahre nachzubilden, und es gibt (mit Ausnahme des Compilers) keine Abhängigkeit von externer Software.[1][2]

SerenityOS
Entwickler Andreas Kling und die Entwickler des SerenityOS-Projekts
Lizenz(en) BSD-Lizenz
Erstveröff. 10. Oktober 2018
Kernel Monolithischer Kernel
Architektur(en) x64 (x86-64)
Kompatibilität POSIX
Installations­medium keine; muss vom Benutzer selbst kompiliert werden
Sprache(n) Englisch
serenityos.org
Banner des Betriebssystems

Im Unterschied zum Beginn im Jahr 2018, als der Fokus stark auf dem Betriebssystem selbst lag, gehört zum SerenityOS-Projekt inzwischen auch Software, die unter anderen Betriebssystemen eingesetzt werden kann. Das sind z. B. der Browser Ladybird, die Programmiersprache Jakt (siehe unten) und die Bibliotheksportierungen, die zusammengefasst „Lagom“ genannt werden.

Geschichte

Bearbeiten

Projektgründer Andreas Kling begann das Projekt im Oktober 2018, nachdem er eine Drogenrehabilitation erfolgreich beendet hatte und nach einer Möglichkeit suchte, seine Suchterholung zu unterstützen und sich sinnvoller zu beschäftigen. Der Name „Serenity“ leitet sich daher vom Gelassenheitsgebet, englisch Serenity Prayer, her.[3] SerenityOS begann als eine Sammlung an Einzelkomponenten, die er im Oktober 2018 zu einem System zusammenfügte.[4]

Im Januar 2019 begann Kling,[5] Videos seiner Arbeit am System und später monatliche Änderungsberichte auf YouTube hochzuladen. Die relative Bekanntheit seines Projekts rührt auch maßgeblich von der relativen Bekanntheit seines YouTube-Kanals und seiner Videos her.

Seit Mai 2021 ist Kling, der damals angab, durch freiwillige Spenden etwa 2200 US-Dollar im Monat zu verdienen, in Vollzeit mit der Entwicklung des Systems beschäftigt.[3] Um die Entwicklung des Browsers zu vereinfachen, wurde ab Frühjahr 2022 unter dem Namen Ladybird der Browser auf Linux und macOS portiert.

Am 28. Dezember 2022 wurde die Unterstützung für die i386-Architektur (IA-32) aus Kernel und Projekt entfernt[6], womit das System seit diesem Zeitpunkt nur eine Prozessorarchitektur (x86-64) vollständig unterstützt. Seitdem ist auch die Aarch64-Portierung und seit August 2023[7] außerdem die RISC-V-Portierung in Arbeit.

Am 3. Juni 2024 kündigte Andreas Kling an, dass Ladybird künftig als eigenständiges Projekt weitergeführt wird. Dies soll auch dazu dienen, dass Betriebssystem und Browser sich nicht gegenseitig den Fokus stehlen.[8][9]

Aufbau und Softwarephilosophie

Bearbeiten

SerenityOS ist vollständig (Ausnahme: Teile der Startsequenz) in einer Untermenge von C++ 20 geschrieben, die von den Entwicklern als „Serenity C++“ bezeichnet wird.[10] Ein modifizierter Compiler (momentan: GCC oder Clang) kommt zum Einsatz. Es werden keine Ausnahmen verwendet und statt der normalen C++-Standardbibliothek wird eine eigene Bibliothek namens AK benutzt. Dies gilt in ähnlicher Weise für das gesamte Projekt: Jede einzelne Komponente des Betriebssystems, vom Kernel über die Bibliotheken bis zum Webbrowser, wird vom SerenityOS-Projekt selbst erstellt.[2] Kling begründet dies mit der Art und Weise, wie er die Softwareentwicklung bei Apple erlebt habe: enge Integration, Flexibilität der Entwickler und die Experten für jeden bestimmten Teil der Software seien schnell erreichbar.[3] Zugleich werden jedoch existierende Standards verwendet: Der Kernel zielt auf POSIX-Kompatibilität ab, der Terminal-Emulator ist teilweise ANSI-kompatibel, es werden ELF für Kompilationseinheiten und das Ext2-Dateisystem genutzt.

Der Kernel ist ein monolithischer Kernel mit präemptiblem Multitasking; Benutzerprozesse kommunizieren mittels Systemaufrufen mit dem Betriebssystem.[11] Zwischen Benutzerprozessen dient ein eigenes IPC- bzw. RPC-Protokoll basierend auf Unix Domain Sockets zur Kommunikation. Die Systemdienste werden „Server“ genannt und von einem init-System namens „SystemServer“ gestartet und verwaltet.

Die Benutzeroberfläche ist von der Ästhetik der Betriebssysteme der späten 1990er-Jahre inspiriert und es gibt eine Vielzahl an Designs, die spezielle Oberflächen wie Windows 2000 oder System 7 nachzubilden versuchen. Das Betriebssystem beabsichtigt gemäß POSIX-Ideen, dem Benutzer möglichst viel Kontrolle über die Hardware und den Systembetrieb zu erlauben.

Die Entwicklung folgt keinem Veröffentlichungszyklus; demnach gibt es keine Veröffentlichungen oder Versionen. Weiterhin werden keine vorkompilierten Softwarepakete zur Verfügung gestellt und von Interessenten wird erwartet, dass sie das System selbst bauen.

Funktionen und Anwendungen

Bearbeiten
 
Liste der (meisten) Anwendungen von SerenityOS.

Die eigenen GUI-Programme gruppieren sich zum aktuellen Zeitpunkt um die Aufgaben Systemverwaltung und Softwareentwicklung. Die komplexesten Anwendungen sind der eigene Browser, der inzwischen auch komplexe Webseiten laden und gut darstellen kann, sowie eine integrierte Entwicklungsumgebung mit einem C++-Unterstützungs-Sprachserver. Eine Reihe an Werkzeugen existieren, die größtenteils Befehlszeilenprogramme sind und übliche POSIX-Tools implementieren oder nachbilden (z. B. pls für sudo, sdb für gdb).

Bezüglich Binärdateiformaten gibt es Unterstützung für viele übliche Formate, darunter die meisten Bildformate (PNG, JPEG, GIF u. a.), einige häufige Audioformate (MP3, WAV, FLAC), einzelne Videoformate (VP9), Archivdateien wie TAR und ZIP sowie PDF. Mit Ausnahme von Bildern und Archiven ist eine Erstellung oder Bearbeitung vieler dieser Dateitypen jedoch nicht oder kaum möglich. Für einige Anwendungsgebiete, so z. B. das eigene Tabellenkalkulationsprogramm, werden eigens entworfene Dateiformate eingesetzt.

Eine Reihe an portierter Software mit variierender Funktionalität ist verfügbar.[12] Darunter befinden sich auch eine Vielzahl an Computerspielen insbesondere aus der Ära, deren Desktopoberflächen das System nachzubilden versucht, z. B. Doom oder Quake.

Programmiersprache Jakt

Bearbeiten

Im Mai 2022 kündigte Andreas Kling in einem Blogpost an, dass er mit der Entwicklung einer eigenen Programmiersprache mit dem Namen Jakt für SerenityOS begonnen hat.[13] Der Grund dafür ist, dass die bisher in SerenityOS eingesetzte Programmiersprache C++ auf lange Sicht ungeeignet für das Projekt sei, da sie keine Speicher- oder Typsicherheit bietet. Von den existierenden Programmiersprachen, die Speichersicherheit bieten, wie z. B. Rust, sei keine so richtig für SerenityOS geeignet. Die zukünftige Programmiersprache für SerenityOS sollte unter anderem eine sehr gute Interoperabilität mit C++ bieten, damit die Codebasis Stück für Stück portiert werden könne. Jakt versucht, bestehende erfolgreiche Konzepte aus anderen Programmiersprache zu übernehmen, darunter vor allem Swift, Rust und C++. Es handelt sich um eine Multiparadigmensprache mit Fokus auf objektorientierte und generische Programmierung.

Die erste Implementierung des Jakt-Compilers wurde von Kling zusammen mit Sophia Turner in Rust entwickelt. Dieser diente als Bootstrap-Compiler, um die in Jakt selbst geschriebene Implementierung zu kompilieren. Seit Juli kann der Jakt-basierte Compiler sich selbst kompilieren,[14] somit gilt die Sprache als selfhosted. Der Rust-basierte Compiler wird seitdem nicht mehr benötigt und wurde aus dem Repository entfernt.

Der Jakt-Compiler erzeugt C++-Code (Transpiler), der anschließend von Clang in Maschinencode übersetzt wird. Stand September 2022 befinden sich die nicht spezifizierte Sprache und der Compiler in einem experimentellen instabilen Zustand.

Rezeption

Bearbeiten

Im August 2021 erhielt das Projekt einige Aufmerksamkeit durch einen Artikel von Jim Salter auf Ars Technica.[15] Salter kritisierte als ihm unliebsamsten Teil das Dateisystem, da Ext2 veraltet und unsicher sei. Das System sei weiterhin durch eine momentan fehlende Mehrprozessor-Unterstützung nicht für Anwendungen in der echten Welt geeignet. Er lobte die bessere Zugänglichkeit im Vergleich zu anderen Hobbysystemen wie TempleOS, wies aber darauf hin, dass es noch nicht für den täglichen Gebrauch geeignet sei.

Internationale mediale Resonanz gab es insbesondere nach oder in Antwort auf Klings Vollzeit-Ankündigung,[16][17][18][19][20][21] darunter Gnu/Linux.ch.[22][23][24] Kling und andere Entwickler erschienen bei diversen Podcasts,[25] so z. B. beim CppCast,[26][27] und bei Jonathan Turner[28].

Bereits mehrfach wurde SerenityOS auf Hacker News verbreitet[29][30][31][32][33] und erhielt dort – neben variierender Aufmerksamkeit – öfter zustimmende Kommentare. Häufig werden Design und Aussehen gelobt. Ein häufiger Kritikpunkt der Nutzer ist das Fehlen von vorkompilierten Systemabbildern, da ihnen das eigene Kompilieren zu schwer sei.[34] Es wird bemängelt, dass das System sich in einem instabilen, unfertigen Zustand befinde, durch welchen es kaum benutzbar sei. Zu einem solchen Schluss kommen auch viele der anderen hier genannten Kritiken: Das Projekt sei ein „Spielzeugprojekt“ ohne Aussicht auf praktische Anwendungsmöglichkeiten. Einige Benutzer kritisieren weiterhin, dass C++ an sich ein Sicherheitsrisiko darstelle und mit einem solchen neuen Projekt die Gelegenheit verpasst worden wäre, eine als sicherer geltende Sprache wie Rust einzusetzen.

Bearbeiten

Einzelnachweise

Bearbeiten
  1. SerenityOS. Abgerufen am 7. Oktober 2021 (englisch).
  2. a b SerenityOS. In: GitHub. SerenityOS, 7. Oktober 2021, abgerufen am 7. Oktober 2021 (englisch).
  3. a b c Andreas Kling: I quit my job to focus on SerenityOS full time. 28. Mai 2021, abgerufen am 7. Oktober 2021 (englisch).
  4. Andreas Kling: Import all this stuff into a single repo called Serenity. · SerenityOS/serenity@5a30055. In: GitHub. 10. Oktober 2018, abgerufen am 7. Oktober 2021 (englisch).
  5. Andreas Kling: OS hacking: Implementing chmod(). In: YouTube. 29. Januar 2019, abgerufen am 7. Oktober 2021 (englisch).
  6. Everywhere: Remove i686 support by supercomputer7 · Pull Request #15467 · SerenityOS/serenity. Abgerufen am 6. Januar 2023 (englisch).
  7. Toolchain: Add (basic) support for riscv64 by spholz · Pull Request #20475 · SerenityOS/serenity. Abgerufen am 4. Januar 2024 (englisch).
  8. Heise Online: Komplett neuer Webbrowser: Ladybird jetzt ein eigenes Projekt. Abgerufen am 18. Juli 2024.
  9. I'm forking Ladybird and stepping down as SerenityOS BDFL. Abgerufen am 18. Juli 2024 (englisch).
  10. Documentation/CodingStyle.md. In: GitHub. SerenityOS, 7. Oktober 2021, abgerufen am 7. Oktober 2021 (englisch).
  11. Kernel/Syscall.cpp. In: GitHub. SerenityOS, 7. Oktober 2021, abgerufen am 7. Oktober 2021.
  12. serenity/Ports at master · SerenityOS/serenity. Abgerufen am 7. Oktober 2021 (englisch).
  13. Memory safety for SerenityOS. In: awesomekling.github.io. 19. Mai 2022, abgerufen am 18. September 2022.
  14. Celebrating jakt compiling itself. In: YouTube. 21. Juli 2022, abgerufen am 18. September 2022.
  15. Jim Salter: Not-a-Linux distro review: SerenityOS is a Unix-y love letter to the ’90s. 18. August 2021, abgerufen am 7. Oktober 2021 (amerikanisches Englisch).
  16. 2.5 Admins 53: Unexpected Root – 2.5 Admins. Abgerufen am 7. Oktober 2021 (amerikanisches Englisch).
  17. Lee Mathews: SerenityOS offers a Unix-like experience with 90s computing vibes. In: Liliputing. 17. August 2021, abgerufen am 7. Oktober 2021 (amerikanisches Englisch).
  18. SerenityOS: Unix-подобная операционная система с кастомным ядром и графическим интерфейсом в стиле 90-х. Abgerufen am 7. Oktober 2021 (russisch).
  19. Juan Ranchal: SerenityOS, un UNIX gráfico que transmite las sensaciones de los 90. 18. August 2021, abgerufen am 7. Oktober 2021 (spanisch).
  20. Rob Beschizza: A refined 90s-style operating system you can actually use. 17. August 2021, abgerufen am 7. Oktober 2021 (amerikanisches Englisch).
  21. TuxJam 91 - Stellar Serenity. In: TuxJam. 26. Oktober 2021, abgerufen am 28. Oktober 2021 (britisches Englisch).
  22. SerenityOS: Ein grafisches Unix-artiges Betriebssystem. Abgerufen am 7. Oktober 2021 (Schweizer Hochdeutsch).
  23. SerenityOS arbeitet an Multi-Monitor Unterstützung. Abgerufen am 7. Oktober 2021 (Schweizer Hochdeutsch).
  24. SerenityOS wird zum Vollzeit-Job. Abgerufen am 7. Oktober 2021 (Schweizer Hochdeutsch).
  25. Samantha: S14E26 – Amid Navigable Impulses. In: Ubuntu Podcast. 2. September 2021, abgerufen am 7. Oktober 2021 (britisches Englisch).
  26. CppCast Episode 278: SerenityOS with Andreas Kling. Abgerufen am 7. Oktober 2021 (deutsch).
  27. Learning C++ With Serenity. 2. September 2021, abgerufen am 7. Oktober 2021 (amerikanisches Englisch).
  28. Interview with Andreas Kling, creator of SerenityOS. Abgerufen am 7. Oktober 2021 (deutsch).
  29. SerenityOS: Graphical Unix-like operating system with classic 90s UI | Hacker News. Abgerufen am 7. Oktober 2021.
  30. SerenityOS – a graphical Unix-like OS for x86, with 90s aesthetics | Hacker News. Abgerufen am 7. Oktober 2021.
  31. Serenity: x86 Unix-like operating system for IBM PC-compatibles | Hacker News. Abgerufen am 7. Oktober 2021.
  32. I quit my job to focus on SerenityOS full time | Hacker News. Abgerufen am 7. Oktober 2021.
  33. SerenityOS: Writing a Full Chain Exploit | Hacker News. Abgerufen am 7. Oktober 2021.
  34. The author seems to be against providing ISOs, which is a shame, I'd love to try... | Hacker News. Abgerufen am 7. Oktober 2021.