Plan 9 ported to the Raspberry Pi
plan9.bell-labs.com
plan9.bell-labs.com
And here's a video of it being demonstrated: https://www.youtube.com/watch?v=O7ZELOUIyvw
https://ubuntuone.com/5k7x6BwtO1g3i643pyxhnf
(sha256sum: 015e5a8b5b8a438a0c30558708b4d05e610f2ef152174555a9e791596b3dd980)
There are lots of better alternatives to Unix out there. But with the incumbents strengths being what they are I think we'll be stuck with Unix for a long time to come.
Possibly the only thing that will change this is if it is ever deemed that the Unix model is inherently broken from a security point of view and one of these other alternatives provides a fix. Performance and conceptual models are not enough to ditch decades of investment in technology that is good enough.
There are so many parts of Linux that are far better than Plan 9, and polished for production work loads. Real life solutions are sometimes messy, and take many evolutions to get right.
Sure, elegant and simple maths is good. But if the maths is just wrong, and doesn't work, then the more complicated maths that actually works is better.
I'm using linux every day on both my desktop and a whole army of servers and I have some experience with both plan 9 and other (micro kernel based) systems. Linux (and in fact all Unix flavours) have some systemic problems that those other os variants attempt to address. That the user experience is less polished does not detract from that.
Maths don't enter into it.
To re-phrase your analogy: Linux is a crocodile, it is ancient, dangerous and well adapted to its environment. So well adapted that it is a force to be reckoned with, even if you're an advanced creature from the future.
Compared to really other systems, Plan 9 is still Unix. Don't think the designers would disagree...
Really, the superficial similarities should not overshadow the fundamental differences. QnX is also Unix by that definition, but in fact is a completely different system under the hood.
In the meantime, Unix users were using 64-bit multi-processor boxes since ages. Yet, there was no mainstream consumer 64-bit multi-processor architecture before there was no 64-bit multi-processor mainstream consumer OS.
The same applies here - most current improvement is directed towards making current x86 and ARM computer architectures faster because there is no popular corpus of software that could take advantage of different architectures. Sony, IBM and Toshiba tried with the Cell and failed. The Xeon Phi may prove to be an interesting stepping stone in that direction but it too uses a shared memory model.
I'd love to see some radical ideas tried, but, right now, I think I won't.
It's a bit tragic that the most popular OSs of today are the bastard descendants of the most popular mini-computer OSs of the 70's.
Remove the shared memory, then issues start to rise.
You say "radical ideas tried" but I believe that is not relevant. Radical ideas typically don't fly because they are radical. However you can already see things happening that are not radical but are breaking the Unix machine model very hard:
- "accelerators": these are really fully fledged co-processors with their own local memory. There is no easy way to conceptually delegate Unix threads to accelerators precisely because they don't share the memory. (Now with recent GPUs the architecture was modified to actually share the memory between the CPU and GPU so things become possible, but not all "accelerators" have that feature)
- on systems-on-chip you now have scratchpads next to cores on the architecture. Some cores may not have access to the "main" memory of another core (eg the radio controller in telephones) although they are fully-fledged cores as well. Because of this lack of shared memory, it is not conceptually possible to envision a Unix system where processes access these extra processors transparently.
tl;dr there are already hardware architecture with separated memories and Unix can't cope with that easily because its main abstraction requires shared memory.
2012, Preparing for nonvolatile RAM [0]
2013, LFCS: Preparing Linux for nonvolatile memory devices [1]
Mostly I think about union mounts (which are very different in plan9 than the version that's been integrated into Linux) and the privilege escalation system (which has always seemed, to me, to be so much better than the sieve that is setuid).
(Note: I'm aware there have been attempts to bring purer versions of these things to linux, but they never gain any traction)
LWN ran a great series on namespaces recently: part 5 (https://lwn.net/Articles/532593/) covers user namespaces.
https://en.wikipedia.org/wiki/PythagoraSwitch
I'm not sure why it was there... But just in case you wondered.
EDIT: With so many former Bell employees there, my personal fantasy is that Google would takes over Plan 9 and starts releasing images of it for Chromebooks. I know its not going to happen but I think that would be sweet.
http://herpolhode.com/rob/utah2000.pdf
It's really a very good piece, which I'd summarize as a catch-22. To be important you must be different. To be successful you must be the same. Linux solves that by being the same. (And indeed Apple, acquiring NeXT did as well.)
but go is a first class citizen when you think of something like raspberry..
you can think golang wherever you can think of python
Could you please provide a link or two on that, or give some explanation on why this is not possible?
https://en.wikipedia.org/wiki/Singularity_%28operating_syste...
They only used C and assembly for interrupt handling.
You need some bits of assembly, but that's true for C, C++, Rust and whatever else as well.
to make this happen, it should be possible to, at least change the runtime , or not use a runtime at all.. so the little boot part in assembly could call a go function in kernel mode
You can create your own runtime as you see fit. In fact, the Go distribution used to ship with such a bare metal runtime. Search the repository history for the tiny runtime. Reviving it again should be easier then porting Go to a new architecture, which is quite easy. Making a stub runtime (equivalent to booting a C kernel with no libc) is not more than half an hour of work.
Go can call assembly and C, and assembly and C can call Go. This is used a lot in the runtime, nothing special about it.
suppose you create a kernel kit library/runtime.. instead the one in go.. who assume you are in userspace.. its possible..
i think if only they allowed to create a binary with no runtime in it... and with the binary encoding for the boot (dont remember what it is right now) it would just be feasible.. people could start hacking it
So, what is its killer feature that makes ME want to try it out?
Transparent distributed multi-user environments and clean unification of files and objects are some of the main goals [0], but, at its core, it is a research OS, and has never evolved to fill a specific niche. Many people, including Alan Kay (I mention it because I recently re-watched a few of his presentations), have spoken out about the need for more open-sky/exploratory research. It might gain popularity if it specialized into a good distributed control-plane, performance-constrained systems, or as a container OS, but it is not any of those things. Try it out for the fun and experience of trying it out.
[0] http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Design_co...
It'll feel very snappy until you try to actually do a lot of computation, especially I/O. This is the curse of Plan 9.
> Is there Linux emulation lib?
Not for ARM.
> Or at least package database based on Debian sources?
This doesn't even make sense.
Any links to a mirror or what not?