Impressive! I like the goal of making a hobby OS viable as a daily driver.
I've been working on my own hobby OS for half a decade. It does a lot less, but it has helped me realize that we can remove much of the complexity of a generic mainstream OS while still meeting our personal computing needs. I know I'm just poorly reinventing something between DOS and Unix/Plan 9 in an extremely limited fashion, but it's absolutely perfect for experimentation!
While I like the idea of starting a hobby OS, but the most despairing thing about it that to be useful it would always have to implement 'legacy' interfaces of other OSes. That is, it cannot stand on its own and create a new ecosystem, instead it has to interface to the world and implement TCP, POSIX, know formats widely used files and such.
You end up with an OS kernel that talks Linux/Win32 and takes on a lot of compat code, protocols, and other paradigms.
I wonder what a hobby OS would have looked like it if it assumed nothing, that is, as a thought experiment, as if aliens on another planet invented computing and started writing OSes from scratch. Imagine we discover software from another planet that would not even work with 8-bit bytes, for instance.
You probably do want to speak IP, but if you want to do all the work, you don't need to use BSD sockets.
POSIX and other such things will let you use more of other people's software... but that's a choice.
You can also do a lot of reuse if you just want to focus on some parts. There's no need to write a bootloader unless you want to. You can pull in lwIP for the IP stack. You can do a lot of interesting (I think) things with barely any userland if you want.
If it's supposed to be a general purpose OS, you end up looking a lot like existing general purpose OSes though, cause it's hard to build everything and the closer you get to existing OSes, the more existing software you can leverage.
If you only want to run a subset of existing software, you might not need to cover that many of the syscalls from whatever OS it was targetted at. My hobby OS runs one specific FreeBSD executable, and it doesn't take that many syscalls to do it.
> Imagine we discover software from another planet that would not even work with 8-bit bytes, for instance.
8-bit bytes didn't become fully dominant until maybe the 1970s. It's a bit hard to find software older than that, but it's around somewhere.
I’d love to see a new operating system that explores radically different APIs for applications. The trouble is writing an operating system is a large effort. Barring market effects, OS has to be heads-and-shoulders better than existing ones in order to convince application developers to write software for it. Windows, macOS, and Linux are good enough for most people, even techies. Additionally, it is often easier to modify an existing operating system such as Linux than to go through the trouble of writing a brand new operating system.
I've been working on my own hobby OS for half a decade. It does a lot less, but it has helped me realize that we can remove much of the complexity of a generic mainstream OS while still meeting our personal computing needs. I know I'm just poorly reinventing something between DOS and Unix/Plan 9 in an extremely limited fashion, but it's absolutely perfect for experimentation!
Pretty impressive, you've gotten much farther than I ever did (I didn't have the patience to implement all the borderline boilerplate an OS needs).
You end up with an OS kernel that talks Linux/Win32 and takes on a lot of compat code, protocols, and other paradigms.
I wonder what a hobby OS would have looked like it if it assumed nothing, that is, as a thought experiment, as if aliens on another planet invented computing and started writing OSes from scratch. Imagine we discover software from another planet that would not even work with 8-bit bytes, for instance.
You probably do want to speak IP, but if you want to do all the work, you don't need to use BSD sockets.
POSIX and other such things will let you use more of other people's software... but that's a choice.
You can also do a lot of reuse if you just want to focus on some parts. There's no need to write a bootloader unless you want to. You can pull in lwIP for the IP stack. You can do a lot of interesting (I think) things with barely any userland if you want.
If it's supposed to be a general purpose OS, you end up looking a lot like existing general purpose OSes though, cause it's hard to build everything and the closer you get to existing OSes, the more existing software you can leverage.
If you only want to run a subset of existing software, you might not need to cover that many of the syscalls from whatever OS it was targetted at. My hobby OS runs one specific FreeBSD executable, and it doesn't take that many syscalls to do it.
> Imagine we discover software from another planet that would not even work with 8-bit bytes, for instance.
8-bit bytes didn't become fully dominant until maybe the 1970s. It's a bit hard to find software older than that, but it's around somewhere.
http://herpolhode.com/rob/utah2000.pdf
I’d love to see a new operating system that explores radically different APIs for applications. The trouble is writing an operating system is a large effort. Barring market effects, OS has to be heads-and-shoulders better than existing ones in order to convince application developers to write software for it. Windows, macOS, and Linux are good enough for most people, even techies. Additionally, it is often easier to modify an existing operating system such as Linux than to go through the trouble of writing a brand new operating system.