5 ms·
We need more Plan 9-likes! But more seriously, the Unix/POSIX-like OS is a pretty good model, but IMO we could do better, especially in the microkernel front.
by packetlost 3y ago
We need more Plan 9-likes!
But more seriously, the Unix/POSIX-like OS is a pretty good model, but IMO we could do better, especially in the microkernel front.
- o8vm 3y agoI would like to implement a plan9-like OS someday!
- bakul 3y agoI'd love to see an OS with a Unix API but plan9 like kernel! I will never get around to writing one myself though!
- boricj 3y agoThere are a lot of things wrong with plain standard POSIX: - it's hopelessly out of date and incomplete w.r.t. modern expectations - fork() is very problematic for multiple reasons, especially in a modern environment (https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf https://www.microsoft.com/en-us/research/uploads/prod/2019/0...) - process management functions take PIDs and not capabilities, which can cause race conditions - POSIX hasn't standardized anything better than poll(), yes it works fine in a hobby context but it's not 1987 anymore (and don't get me started on select(): https://github.com/SerenityOS/serenity/pull/11229 https://github.com/SerenityOS/serenity/pull/11229) - signals are a mess - Unix processes have a huge amount of ambient authority, which is problematic when trying to isolate them (chroot(), https://fuchsia.dev/fuchsia-src/concepts/filesystems/dotdot https://fuchsia.dev/fuchsia-src/concepts/filesystems/dotdot, ...) - the C POSIX library has a lot of cruft while also missing stuff what programmers actually need (for example, POSIX took nearly 6 years to standardize strlcat()/strlcpy(), the process itself starting 17 years after OpenBSD introduced those functions: https://www.austingroupbugs.net/view.php?id=986 https://www.austingroupbugs.net/view.php?id=986) - ... Granted, modern production-grade Unix-like operating systems have extensions to deal with most of these issues (posix_spawn, kqueue, pidfd_open...), but they are often non-standard and can be quite janky at times (dnotify, SIGIO...). It also doesn't fix the huge amount of code out there using the legacy facilities like it's still the 1980s. There are other models out there (Plan 9, Windows, Fuchsia...), but what we really need is to stop putting Unix/POSIX on a pedestal like some holy scripture that shall not be questioned. It's the pinnacle of 1970s operating system designs and it has fossilized so much it's actively turning into oil. Or at the very least, please stop teaching the next generation that fork() is the greatest thing ever. It's a 50 year old hack kept alive through gratuitous amounts of copy-on-write that should've been scrapped the day Unix was ported to computers with virtual memory and paging.
- yjftsjthsd-h 3y agoThis feels contradictory; unix isn't good enough, so nobody implements standard unix, but people need to stop putting unix on a pedestal?
- pasc1878 3y agoYes - Putting UNIX on a pedestal means that it is basically correct and you just need additions rather than looking at it and saying that UNIX does this badly or even incorrectly and so make incompatabler chnages to improve things.
- themoonisachees 3y agoI think part of the issue is that unix does some things correctly (everything is a file comes to mind) and that implementing them without implementing the rest of unix just means you've made a unix-like that's not compatible with normal unix, as opposed to making something new and using the good parts of things you encouter.
- cdcarter 3y ago> Or at the very least, please stop teaching the next generation that fork() is the greatest thing ever. Who is saying this? fork() is widely maligned.
- 3y ago
- pkphilip 3y agoRedox OS implemented in Rust aims to be Plan-9-like: https://www.redox-os.org/faq/#how-redox-is-inspired-by-other-systems https://www.redox-os.org/faq/#how-redox-is-inspired-by-other...