r9: Plan 9 in Rust
github.com
github.com
There has to be more in the OS space than Unixes and MVS-derived OSs
Rio is a file system service providing GUI capabilities (kind of). You still need libraries to draw frames in windows etc.
The network stack is a file system.
HTTP clients can use a file system (webfs) to access servers.
And so on.
One could make a replacement for rio if they wanted to.
The protocol used to draw stuff on the screen isn’t 9p though, curiously.
See this[1] document for details on how that's done.
Pretty much as I expected, eg connections are directories with the parent directory being the protocol, and there's separate files for control messages and the data. Control files are read and written in ASCII to avoid endian issues.
How would you expose something like OpenGL though? I mean, would you serialize the individual GL calls into a custom RPC and feed it to a "gpu/0/opengl/data" file? Exposing the GL calls as separate files could work I guess, if there's guarantees that writes to separate files maintain order (can't seem to find any clear discussion on this right now), but given the number of calls available that seems like it might generate a lot of overhead.
edit: on the upside, exposing the calls as files means it's easy to expose GL extensions, either the respective files are there or they're not.
Plan 9 was built with the observation that high-resolution, bitmapped graphics displays were ubiquitous, and there was little motivation to keep the dated "tty" model as a basis for interaction. So you're expected to a graphical interface for working with the system, but it doesn't _need_ to be `rio`.
I wrote a bit about this a few years ago: http://pub.gajendra.net/2016/05/plan9part1 (I guess I should get around to actually supporting HTTPS here....)
My impression is that Plan 9 was a child of the technical workstation age - when we thought that the endgame was having ever more powerful desktops who did most things locally and connected over a network to send and receive files. In the end, our desktops and laptops have been fast enough for the past decade or so, while servers are becoming increasingly more like the mainframes we thought had their days counted and a lot of the heavy lifting is done remotely. A lot of what I do includes firing up a surreally large cloud machine, run a couple data transformations, and then unceremoniously delete that big workstation (that's actually a small slice of a humongous server). And, the rest, is mostly applications running on what I assume are clusters of cloud machines that expose an HTTP interface to my browser (a lot like the beloved 3278 terminal, but not nearly as clicky and tactile).
Haiku which comes from BeOS. I don't recall the linage of BeOS and the wikipedia entry is lacking but it is not Unix, anyone?
When I think of non-Unix and non-MVS i'm thinking more on the line of the IBM i, PalmOS, or the Newton OS. All three are quite alien under the hood to anyone who grew up on a Windows/Unix world.
The main _inspiration_ was the Amiga, but not really AmigaOS.
BeOS was built in the still-new C++ but AIUI predates a lot of standardisation of C++ which subsequently happened -- as was Psion's EPOC32 and its later rebranding as Symbian.
Same applies to cloud native development, when going serverless, or deploying language runtimes directly into cloud infrastructure.
So there is some hope beyond UNIX and MVS derived OSes.
Android has bsd-derived core utils on top of a souped up Linux kernel. That’s pretty much a textbook Unix-like. Meanwhile Darwin is Unix-certified and a significant part of XNU was originally lifted from BSD.
Unless you meant the Java based/NDK development experience? But then you can have the same thing on a Unix machine: once you are removed enough from the OS what it is doesn’t really matter.
In a way, I think I agree with you in that I also believe that what’s happening at the lower-level matters less and less for the majority of developers.
Without rooting devices.
Likewise, try the same on iOS/iPad OS/watchOS.
Only C and UNIX/POSIX APIs, nothing else.
"Transcending POSIX: The End of an Era?"
https://www.usenix.org/publications/loginonline/transcending...
"POSIX has become outdated"
https://www.usenix.org/publications/login/fall2016/atlidakis
Kind of. It constrains what you can do by constraining what you can represent by the semantic model the OS defines. Unix-like OSs think of processes, threads, files, networks, etc. Plan 9 unifies a lot of that - everything is represented as a file system and, in that sense, it frees one to think of networked resources as nothing more than files. Now think about the IBM i, where there is really no distinction between memory and disk storage - everything lives in a single address space. In that sense, the distinction between in-memory structures and files gets blurry. Or we can think of Smalltalk with something like the Roar VM hiding the OS the way Smalltalk always did.
The OS limits the approaches we take to solve problems because our programs must fit in their various fixtures to run.
We should probably one-up Steve Jobs and "Think Differenter".
Not now, but before Apple was sold to NeXT for a Steve Jobs minus $400 million, there was MkLinux. It was an interesting way to run Linux on beige PowerMacs and many places I've worked with gladly adopted it giving new life to abandoned Macs as X terminals and lightweight workstations.
Oddly enough, it has a newer Mach kernel than NeXT's OS.
Apple stuff is unrelated to Linux.
https://www.amazon.com/Mac-OS-iOS-Internals-Programmer/dp/11...
Basically the C, C++ and Objective-C stuff, nowadays Swift as well, completly unrelated to UNIX.
My original statement was,
> Android, ChromeOS, iOS and iPad OS have very little correlation to UNIX userspace, if any at all.
Those books show how iOS and iPad OS have very little UNIX across the whole stack, and how much was taken from OS X.
Not to diminish their accomplishment, but this is not Plan 9 just yet.
From what I can understand, Inferno was wanted by corporate to compete with Java, the original Bell Labs team kept working on Plan 9 until the last 4th edition released in 2002 (the year when Rob Pike left for Google).
[1] https://en.wikipedia.org/wiki/Inferno_(operating_system)
And porting the Dis VM to the Linux kernel, so that you could run Inferno binaries on Linux.
I wouldn't mind a Plan9-ish Rust compiler setup, though.