Hello everyone,
My name is Rob James, and I wanted to introduce myself and an OS I’ve been developing called **StarshipOS**.
StarshipOS is a unique hybrid operating system built on top of the L4Re microkernel framework. It combines:
- A Forth-based core powered by **gForth** - A lightweight persistent **object memory model** that completely replaces the traditional filesystem - Embedded **OpenJDK 21** services for high-level logic and tooling
The system is non-POSIX by design. Instead of files, everything lives in a dynamic memory graph of interactive objects. You interact with your system through a Forth-based REPL that evolves and mutates this object universe in real time. No shell scripts, no /etc, no /usr — just memory objects and messaging.
The ultimate goal is to make the **REPL the new shell**, and the **memory graph the new filesystem**.
Here’s what’s already in place: - A full Maven-driven build system that compiles Fiasco.OC, L4Re, OpenJDK, and gForth from source - A `starship-maven-plugin` that automates ROMFS image generation and ISO boot layout
coming soon: - A sandboxed REPL environment that boots directly into gForth and supports mounting JVM modules as interactive bundles - Early support for memory graph ACLs, entropy-based object lifespan, and “bubbles” — user-defined isolated memory regions
Right now, I’m focused on integration, getting the system to boot into the gForth REPL with full JVM runtime support, and beginning to layer in userland services via custom dictionary words.
Source is available (in-progress) here: 👉 **https://github.com/rajames440/StarshipOS**
I’ve been programming since the 1970s, mostly in userland, and I’m diving deep into kernel space and L4 internals for the first time. I’d love to hear from others doing low-level work on L4Re, especially anyone who's extended the build system or tackled non-POSIX boot flows.
Thanks again to everyone who’s contributed to L4Re and Fiasco.OC — it’s a hell of a foundation to build a new kind of OS on.
All the best, Rob James
On 2025-07-09 13:56, Robert James wrote:
My name is Rob James, and I wanted to introduce myself and an OS I’ve been developing called **StarshipOS**.
Sorry not to follow up with more encouraging words much earlier!
StarshipOS is a unique hybrid operating system built on top of the L4Re microkernel framework. It combines:
- A Forth-based core powered by **gForth**
- A lightweight persistent **object memory model** that completely
replaces the traditional filesystem
- Embedded **OpenJDK 21** services for high-level logic and tooling
The system is non-POSIX by design. Instead of files, everything lives in a dynamic memory graph of interactive objects. You interact with your system through a Forth-based REPL that evolves and mutates this object universe in real time. No shell scripts, no /etc, no /usr — just memory objects and messaging.
The ultimate goal is to make the **REPL the new shell**, and the **memory graph the new filesystem**.
This is certainly a different approach, although it is reminiscent of various language-based and/or image-based systems from the past. It would be interesting to hear more about your choices and what could be regarded as an unusual combination of technologies. It isn't every day Java and Forth are combined prominently in a system, at least not these days.
[...]
I’ve been programming since the 1970s, mostly in userland, and I’m diving deep into kernel space and L4 internals for the first time. I’d love to hear from others doing low-level work on L4Re, especially anyone who's extended the build system or tackled non-POSIX boot flows.
I have been experimenting with L4Re components for some time, and I have implemented a framework for the demand paging of files residing in filesystems, such as those supported by libext2fs, along with the execution of program files in customisable filesystem environments. In conjunction with hardware-specific support for various single-board computers, it is possible to use these components to access filesystems and programs stored using memory card devices on "real" hardware.
My efforts have largely been focused on addressing the shortcomings of the uClibc-based C library in L4Re and exploring an alternative approach, filling out the missing or truncated implementations in L4Re's C library in my own library implementation based on Newlib. That might lead in the direction of POSIX, but there are some rather undesirable characteristics of POSIX that I would rather ignore or replace with more ergonomic functionality. Process spawning is one area where the basic C library standard is inadequate but where POSIX is baroque and presumably unduly influenced by various Unix implementations and their quirks.
It would certainly be of interest to share experiences and techniques in this general area. It seems that very little discussion is had in public about the development of components for entire systems built with L4Re: what people might have called "multi-server" systems a few decades ago. Instead, the focus appears to be on hosting Linux and other "rich" operating systems, as I believe the prevailing terminology describes them. For me, hosting or virtualising Linux is of relatively little interest.
It seems to me that regardless of the paradigm, there are still underlying "patterns" that need to be understood and introduced in order to provide a general-purpose computing environment, with more or less familiar concepts and abstractions, using L4Re and other microkernel-based systems. More discussion and sharing of such material and associated experiences would be very welcome!
Thanks for telling us about your project!
Paul
l4-hackers@os.inf.tu-dresden.de