Interview with Andreas Kling of Serenity OS (2022)

Enthusiasm for hobbyist operating systems is fueling debate over what a “from scratch” OS could do differently from Unix-style designs, from transactional filesystems and unified event subscription APIs to database-backed or object-centric storage. Commenters trade resources and war stories on how to get started with kernels, bootloaders, and low‑level programming, while contrasting this hands-on learning with simply customizing Linux or other existing systems. Underneath the technical ideas runs a tension between nostalgia-driven projects and efforts that aim to genuinely rethink OS architecture, performance, and user experience.

Motivations for New / Toy OSes

  • Several commenters are tempted to build “toy” or experimental OSes to explore ideas that don’t fit well into existing kernels (especially Linux).
  • Motivations include educational value, the visceral fun of low-level work, and dissatisfaction with current abstractions (POSIX, “everything is a file,” byte-stream pipes).
  • Some would instead base work on existing kernels/distros and innovate primarily in userland APIs and UX.

Filesystem, Databases, and Transactions

  • Strong interest in filesystem semantics better suited to databases and crash-safety:
    • Write barriers or transactional I/O to avoid fsync overhead and data corruption.
    • Kernel-level structured persistence instead of raw file I/O for most apps.
  • Debate over DB vs filesystem:
    • Some argue large databases should use raw devices or dedicated partitions; others note this doesn’t help ubiquitous “small DBs” inside apps.
    • Proposals to implement filesystems on top of real databases (rich metadata, tags, triggers, fast search); past attempts like WinFS and various mainframe / AS/400 models are mentioned.
    • Others warn that earlier transactional filesystems had terrible performance and deadlocks, suggesting DB semantics may be ill-suited to general filesystems.

Unified Event and Subscription APIs

  • Desire for a single, coherent kernel API to “get state and subscribe to changes” for any resource (files, devices, processes, etc.), instead of today’s heterogeneous mix (procfs polling, inotify, bespoke syscalls).
  • Concerns about TOCTOU races; ideas include reserving access to resources or snapshot-style event streams.
  • Pushback notes that synchronous authorization and reservation mechanisms (as in some security products) can stall the system; any design must avoid user-visible slowdowns.
  • Related suggestions: Fuchsia-style signals, io_uring-like command queues (with awareness of their security pitfalls), speculative execution with transactional commit/rollback.

Execution Model and Isolation

  • One idea: run all userspace as WebAssembly in ring 0, using software bounds checks instead of hardware isolation; avoids TLB flushes/context switches but likely slower for compute-heavy code.
  • Discussion on when this might outperform native processes, and on sharing a single address space.

Difficulty and On-Ramps to OS Development

  • Consensus: writing some OS is feasible; the hard part is avoiding an unmaintainable mess and reaching the sophistication of modern systems.
  • Suggested resources and paths: OSDev wiki, bare-metal “hello world” tutorials, xv6, Rust-on-Raspberry-Pi tutorials, Linux From Scratch (for system assembly, not kernel design), QEMU/Bochs for safe experimentation.
  • Some advocate starting from simple hardware or existing kernels; others push for greenfield designs.

Alternative OS Models and Inspirations

  • References to Plan 9, BeOS, seL4, capability systems, Inferno, Haiku, Redox, Fuchsia, Nix/Guix, and language-as-OS ideas (Smalltalk, Forth, Lisp-like systems).
  • Proposals to rethink files as smart objects, spatial/3D-first desktops, and stateless, Git-like system images with transactional upgrades and rollbacks.

Debate on Value, Nostalgia, and UX

  • Enthusiasts see hobby OSes as valuable learning and a way to explore fresh models.
  • Skeptics view retro Win95-like projects as nostalgia-driven and low societal value, arguing effort should go to more forward-looking or impactful work.
  • Ongoing side debate about whether desktop UX has meaningfully improved since the 90s; some see regressions, others highlight search-driven launchers, tiling/snapping, and general stability as real gains.