I love the adjective "hand-written" and I'm gonna add it to my repositories.
Although I don't practice vibe coding, I'v observed that the first principle of vibe coding is to never look at the generated code. (You learn the code from external metrics, such output correctness and memory usage)
> Anos is a modern, opinionated, non-POSIX operating system (just a hobby, won't be big and professional like GNU-Linux®) for x86_64 PCs and RISC-V machines.
Love that Linus quip! Hopefully it will be. Non-POSIX sounds exciting
Haha that quote felt pretty much obligatory :D Non-POSIX is definitely keeping things fun, letting me explore different ideas without having to fit into an existing interface design :)
While not basing the OS on POSIX is good, if you ever want to use it for more than a hobby, i.e. if you ever want to use it for your main personal computer, you will also need a translation layer for the LINUX syscalls, which would enable you to compile and run any of the existing open-source programs, or even run existing binaries.
Porting the programs that you are more interested in from Linux or *BSD to your own OS is the best, but this is necessarily slow and also the work of porting rarely used applications may not be worthwhile.
An alternative to a syscall translation layer is for your OS to act as a hypervisor for Linux or other OSes VMs. However, this would have a lower performance than using natively your IPC-based OS.
In my opinion if you learned something from it, it was useful. Bonus points if others learn from it as well, but if not then as long as you did then it doesn’t matter. AI age or not.
I’ve always found hobby OS projects like this interesting, and I hope there’s never a shortage of them in the future
That's a good way to look at it, and on reflection I feel the same way.
It's certainly useful _to me_ and has helped me really nail down concepts I thought I already understood, but it turns out I didn't.
I just hope that, in an age where it feels like code, and maybe even deep technical knowledge have diminishing value, projects like this don't become completely anachronistic.
There's ideas in here from various other kernels - some of the capability stuff is inspired by (but simpler than) seL4, and the message passing IPC and how I'll avoid priority inversion is based on ideas from QNX. Generally as a learning process I've tried to keep as open a mind as possible, without trying to reinvent all the wheels at once...
SYSTEM has a tiny arch-specific assembly trampoline which just sets up the initial stack pointer for new processes that it creates and makes the jump, but other than that it's source-compatible across architectures.
The platform detail extraction isn't yet complete, such that devices management on non-ACPI platforms isn't finished, but the idea is the abstraction will be enough that drivers for (at least) MMIO devices will be trivially portable.
Thanks! I haven't thought much about long term to be honest, right now my immediate goal is to get enough USB HID to be able to make it interactive, with the medium term goal of porting enough software for it being self-hosting.
I love the adjective "hand-written" and I'm gonna add it to my repositories.
Although I don't practice vibe coding, I'v observed that the first principle of vibe coding is to never look at the generated code. (You learn the code from external metrics, such output correctness and memory usage)
> Anos is a modern, opinionated, non-POSIX operating system (just a hobby, won't be big and professional like GNU-Linux®) for x86_64 PCs and RISC-V machines.
Love that Linus quip! Hopefully it will be. Non-POSIX sounds exciting
Haha that quote felt pretty much obligatory :D Non-POSIX is definitely keeping things fun, letting me explore different ideas without having to fit into an existing interface design :)
While not basing the OS on POSIX is good, if you ever want to use it for more than a hobby, i.e. if you ever want to use it for your main personal computer, you will also need a translation layer for the LINUX syscalls, which would enable you to compile and run any of the existing open-source programs, or even run existing binaries.
Porting the programs that you are more interested in from Linux or *BSD to your own OS is the best, but this is necessarily slow and also the work of porting rarely used applications may not be worthwhile.
An alternative to a syscall translation layer is for your OS to act as a hypervisor for Linux or other OSes VMs. However, this would have a lower performance than using natively your IPC-based OS.
Going to take a guess the author is not a Spanish speaker :p
Ahem, well, that's embarrassing! :D
After Nvidia's cuLitho now we get Anos...
Ross Bamford doesn't sound spanish to me
In my opinion if you learned something from it, it was useful. Bonus points if others learn from it as well, but if not then as long as you did then it doesn’t matter. AI age or not.
I’ve always found hobby OS projects like this interesting, and I hope there’s never a shortage of them in the future
That's a good way to look at it, and on reflection I feel the same way.
It's certainly useful _to me_ and has helped me really nail down concepts I thought I already understood, but it turns out I didn't.
I just hope that, in an age where it feels like code, and maybe even deep technical knowledge have diminishing value, projects like this don't become completely anachronistic.
> I don't know how useful projects like Anos are any more
I get pretty excited when project like Anos come out, I love Anos. Long live all Anos.
Is this inspired by any particular micro-kernel design?
Looking at syscalls.h, it looks like it abstracts the platform details, for example.
Is SYSTEM for amd64 source-compatible with the riscv version?
There's ideas in here from various other kernels - some of the capability stuff is inspired by (but simpler than) seL4, and the message passing IPC and how I'll avoid priority inversion is based on ideas from QNX. Generally as a learning process I've tried to keep as open a mind as possible, without trying to reinvent all the wheels at once...
SYSTEM has a tiny arch-specific assembly trampoline which just sets up the initial stack pointer for new processes that it creates and makes the jump, but other than that it's source-compatible across architectures.
The platform detail extraction isn't yet complete, such that devices management on non-ACPI platforms isn't finished, but the idea is the abstraction will be enough that drivers for (at least) MMIO devices will be trivially portable.
> I don't know how useful projects like Anos are any more
They have the same utility they always have. They help you and the people you share it with learn. So it's exceedingly useful.
> given we now live in the age of AI coding
We live in an age of AI overinvestment. I would reserve judgement until they prove they actually have something.
> We live in an age of AI overinvestment. I would reserve judgement until they prove they actually have something.
Haha yes, that's a very fair comment!
Interesting project! When it is finished, what are your plans for it?
Thanks! I haven't thought much about long term to be honest, right now my immediate goal is to get enough USB HID to be able to make it interactive, with the medium term goal of porting enough software for it being self-hosting.
The comment in the "high level overview" section - "(just a hobby, won't be big and professional like GNU-Linux®)" is an amusing reference
unfortunate name in spanish...
In English, too.
impressive. how do you pronounce it?
Like the planet.
Roscopeco... also behind rosco-m68k.