On May 23 Francisco J. Ballesteros announced a new operating system on the 9fans mailing list. Clive is influenced by the Nix (not to be confused with NixOS) and Plan 9 operating systems, featuring “zx” – a universal resource access protocol conceptually similar to Plan 9. The system is written in a modified version of the Go language.
More details are available in the design paper and in the manual.
Interesting that an OS worked on by the developer of Go lang was reimplemented by someone else in Go lang.
He already did it once, perhaps he saw no point in doing it again
Let’s hope Go doesn’t end up like Plan 9.
I hope the front doesn’t fall off.
Wow, actual OS news in OSAlert. What is this blasphemy? Not to mention that the project talked about in the article is very interesting.
Edited 2014-05-26 13:16 UTC
As jockm pointed out elsewhere, it is the lack of a web browser. Interestingly and unfortunately enough, every major browser engine (Opera, Gecko, IE, Webkit) is written in C++.
I imagine a modern browser engine in C (or another supported language like OCaml or Go) would have to be written from scratch. Probably easier to port a C++ compiler to Plan9, though that would surely open its own can of worms for the Plan9 philosophers (well, apparently there was a C++ compiler in the 2nd edition).
Edited 2014-05-26 13:26 UTC
Thank you for that. I wouldn’t be too hard on Clive just yet though. It is a little research OS, intended to explore the Plan9 ideas in a somewhat different way, and with a more modern language. I don’t think the creator(s) are intending to attract users just yet.
I don’t think they even have a graphics layer just yet, but I could be wrong.
Plan9 however is presented as a complete, mature, market ready OS that users can/should use. The lack of a modern web browser there is a major limitation, as I pointed out.
There is no reason you can’t write a good modern web browser in Go, it would just be a lot of work. The Clive folk would also have to avoid the metaphor trap that seemed to stop the Plan 9 folk. So long as they stop at a HTTP driver/protocol and let the app process the HTML, etc internally they should be fine. However if they want to let the OS process the HTML then they will get nowhere.
Because as I pointed out elsewhere, metaphor based systems can’t handle everything the real world throws at them. Metaphors are lean, the world isn’t.
You’re right, I’m not really trying to be hard on Clive (it is impressive) – just wanted to point out that no particular progress has been made in this direction.
Also, while I agree C++ is not the best language for an OS, browser, or systems programming in general, I’m not really sure that Go is either … but that’s just my opinion. There are always trade-offs. It is probably a lot better than C and definitely C++ for this application, so it is exciting.
It seems to me Rust or better yet ATS would be more well suited. If I find the time, I’d like to try to port ATS to work on Plan9. It could be very easy, as it only needs a C compiler and it is known to work with GCC, clang, and TinyCC.
Yes, GCC 3.0 was ported to the second edition. I am not sure if the Plan 9 guys would be any happier with Rust. That would make Servo an option for the web browser I suppose.
https://github.com/mozilla/servo
I quite agree, a modern web browser, is practically unimplementable in a clean room environment. The codebase for Gecko engine (just the engine, not the browser itself), is about 10 millions lines. That does not include dependencies like OpenSSL.
So basically, if you want to write a web browser in a clean room way, using a language like Go, it’s not going to happen.
That’s not Clive’s fault, or Plan 9’s for that matter. The problem is with the colossal (over)complexity of the web. I think we’ll always see a lack if adoption of innovation in user-facing Operating Systems whilst the web is a dependency, as in reality, it’s not an open standard to be implemented. Really the modern web is a few black boxes like WebKit, Gecko etc. which you hope you can port to your new OS.
If you can’t, you’re not getting a good web browser on your platform.
In the PDF, he wrote “The Nix OS shows that
applications can run without interference from the OS in machine cores.”, I wonder if he is not confusing Nix OS and barrelfish?
Nix OS is a Linux distribution with a different packaging/configuration tool AFAIK it has nothing to do with ‘running without interference from the OS in machine cores’..
Do not confuse Nix OS with … other Nix OS. See this:
https://code.google.com/p/nix-os/
“Nix is a new multicore OS based on Plan9.”
Oh jeez, that’s going to be confusing, like having three different and unrelated operating systems (or operating system-like programs) named QubeOS, QubesOS, and QubeOS.
WHY???
Edited 2014-05-26 15:29 UTC
Perhaps because they didn’t go looking to see if the name was used by anyone else? The Go language creators were apparently unaware (or didn’t care) that there was another language with the same name.
Plan 9/Inferno used a number of terms for hell or the places of the dead. Inferno, Limbo, Dis, etc. Nix just follows in that tradition.
Tangentially related, but …
You can run plan9 as a unix process by using 9vx. First time I heard about this, despite it being around for many years.