It's a hobby project! Be bold and creative and make something nobody has ever seen!
It's a hobby project! Be bold and creative and make something nobody has ever seen!
axle is fundamentally organised around structured messages. This mechanism is used both for interaction between userspace applications, and for nearly all interaction between kernel and userspace.
For example, creating a process, allocating virtual memory regions, profiling the system and registering process hooks, are all just special messages that are sent to the kernel, rather than to another userspace app. Want to transmit a packet? If you have the rights, send a message to the NIC. Want to create a window on the desktop, or update its contents? Send a message to the window manager. It'll send some messages back to you when the user interacts with your content. The GUI toolkits use custom idioms. It's certainly true that axle reuses some common ideas (like featuring a desktop environment, and a process model), but I'm happy to go my own way from there!
It's also true, as pjmlp mentioned, that some level of POSIX compatibility is necessary if you want to run external software, which I certainly do! DOOM, for example, requires read() and write(), among other common syscalls. If you want to run, say, GCC, you need fork().
https://en.wikipedia.org/wiki/QNX
It’s quite successful in the embedded space.
One thing that really set it apart at the time, is that you could have a fully functional desktop environment boot off a single diskette. So much power in so little space. And it had features I still never see in current OS's. (For example, in QPaint you could save graphical images as a C header file. Weird perhaps, but awesome if you were making a graphical application.)
It's all arguable nowadays I suppose, but I've grown so much with Unix-like OS's that it's a very hard sell.
As for “why posix”. Any OS gains decades and decades of work by simply adhering to posix. It might not be perfect with only that but doing only that does have huge benefits. It might be boring to some, but it’s not like there’s a Windows standard a new OS can easily target and at no financial cost.
For example, read() is a function implemented in an optional userspace library that's available for programs to link against. When invoked, it constructs and sends a message with the right parameters to the filesystem server, and awaits its response: https://github.com/codyd51/axle/blob/paging-demo/programs/su...
We need new BeOs, Inferno, Xerox like workstations,...
Naturally the answer to why is clear, reuse existing UNIX software.
However Apple and Google OSes also show that one can innovate, even at the bottom there is an UNIX like kernel.
POSIX can be added as a layer on top of (or besides) the native interface. macOS/Darwin does just that, with Mach as the microkernel.
It creates opportunities for applications to use a non-standard, but more powerful or simpler interface (e.g. some sort of SpawnProcess, than can be more lightweight or less quirky than fork+exec). Unfortunately that's a tough call to make for applications that want to remain portable, and the world is already too fed up just dealing with Windows+Mac+Linux (+Android+iOS+Web+...).
Edit: found it, turns out its an msdos, freedos and maybe? linux gui called “qube”:
https://archive.org/details/DOS-GUI-DOS-QUBE-2001#ia-carouse...
https://www.osnews.com/story/75/enter-the-qube-a-new-graphic...