
Plan9 has been forked: 9front - zmmz
http://ninetimes.cat-v.org/news/2011/06/17/0-9front/
======
thristian
After having some experience trying to write portable Bourne Shell scripts, I
recently came across Tom Duff's paper[1] describing the "rc" shell used by
Plan 9. I was quite blown away by the number of common shell-scripting
problems it solves, and the elegance of the resulting language. There's no
chance of it replacing, say, Python, but I'm sorely tempted to install Plan 9
From User Space and try out rc the next time I need to script something.

[1]: <http://doc.cat-v.org/plan_9/4th_edition/papers/rc>

~~~
guns
I was intrigued by your comment and took a look at the rc feature list, but I
couldn't see any features that aren't available in bash 3.1 and above.

This takes nothing away from rc of course, which was around when bash was a
simple re-implementation of sh, and may very well have been the inspiration
for some of bash's modern features. [1]

With regards to scripting, since perl/python/ruby has supplanted shell for
moderate to difficult tasks, I think it's perfectly reasonable to use bash/zsh
for the occasional simple shell script. Arch Linux, for example, writes rc
scripts in modern bash, significantly increasing legibility (given you can
read modern bash).

Even if you stick to sh for maximum portability, if you use bash/zsh as an
interactive shell, I would strongly encourage diving into the man page; modern
shells, for all their shell\ quoting woes, have an amazing amount of concise
constructs that make life at the command line quite pleasurable.

[1]: More likely is that Korn shell is the inspiration for both

~~~
sigil
I'm not an rc expert, merely a disgruntled POSIX shell scripter, so here are
some attractive rc features [1] missing from sh and bash:

> Rc captures command exit status in the variable $status. For a simple
> command the value of $status is just as described above. For a pipeline
> $status is set to the concatenation of the statuses of the pipeline
> components with | characters for separators.

Both bash and ksh have the pipefail option, which at least makes the pipeline
fail if any component fails. (Horrifyingly, POSIX sh lacks even this.)
Actually seeing which component failed can be really handy. In other shells,
you only get $?.

> Arbitrary file descriptors may be sent through a pipe by typing, for
> example, "vc junk.c |[2] grep -v ’^$’" This deletes blank lines from the C
> compiler’s error output.

POSIX sh, bash, and ksh can only connect stdout to stdin across a pipe.
Connecting arbitrary descriptors is nice, particularly in logging
applications.

> There is no need for the distinction between $* and $@. There is no need for
> four types of quotation, nor the extremely complicated rules that govern
> them.

How many people understand the difference between $* and $@ in POSIX sh or
bash, or for instance the difference between "$@" and $@? These are critical
things any POSIX shell scripter should know, yet I've met very few that
actually do. One approach is to educate people about these things. Another is
to avoid the need to educate them in the first place.

I like that rc cleans up quoting, which I've seen single-handedly scare
developers off of shell scripting.

[1] <http://doc.cat-v.org/plan_9/4th_edition/papers/rc>

~~~
gcb
so you call one command and want just to know if it failed... but that command
triggered a series of pipes internally, now you have to trim the status mess?

thankfully truly posix stuff doesn't have it

~~~
sigil
_but that command triggered a series of pipes internally, now you have to trim
the status mess?_

No. If you run an external command from an rc script, ie the shell is doing
the fork and exec for you, then $status will have a single number just like
$?.

It doesn't matter if the external command is an rc script that, internally,
runs a pipeline at the end. You will only get a multi-status if the previous
statement within the current rc script was a pipeline. Under sh, bash, or ksh,
people rarely bother to look at $? in this situation, since it's either
potentially irrelevant (without -o pipefail), or you don't know which program
it's from (with -o pipefail).

 _so you call one command and want just to know if it failed_

This works perfectly fine in rc:

    
    
       find . | grep '[0-9]' | wc || echo >[1=2] "number files not found"
    

From the rc docs:

> Any $status containing only 0’s and |’s has boolean value true. Any other
> status is false.

------
EthanG
Oh no, they're taking us seriously! Quick, add more swastikas!

Heh, seriously, 9front development is done more in fun than anything else, but
the 3 main developers are sufficiently talented that rapid progress is being
made in several areas where most 9fans tend to struggle. Not only that but
9front's developers seem to be very good at avoiding getting bogged down in
peripheral features which divert effort from the drivers and cleanups which
Plan 9 really needs.

~~~
rkalla
Ethan, the fun vibe of the project really shows through. I think it is
inspiring and inviting. Glad to see you guys having fun with some really cool
tech. Keep pushing it forward and keeping us posted!

The native Go integration was a really good move; a lot of interested cross-
overs I am sure from the Go community will get into 9front because of that
attractive piece.

------
mycroftiv
I see several good things on the list of new features. The rc-based boot
process is definitely a good idea. I haven't had the issues with the fossil
filesystem that some have, so I don't know about cwfs as the main on-disk
fileserver, but I'm looking forward to trying it out. A lot of the
contributors have been doing good things in the Plan 9 world for quite awhile
now. A list of some of the new features is at
<http://code.google.com/p/plan9front/wiki/features>

------
1337p337
The IRC channel (#cat-v on freenode) has been extra helpful and responsive.
I've now got 9front mostly up and running on qemu and my T60, thanks to devs
fixing drivers on the fly while I passed along screenshots of error messages.
I've been interested in hacking on Plan 9 for a while but have had little luck
getting it to boot before 9front (even 9atom).

A couple of years down the road, it would be delightfully perverse to end up
with Plan 9 running in the server room and Linux/OSX on the devs' desktops.
Maybe unlikely, but fun to consider.

------
pama
Here is funny artwork for 9front:

<http://plan9.stanleylieber.com/9front/>

------
cdcarter
This is the first big step to actually creating an ecosystem for plan9. It's a
fantastic OS, though there's not much I can do with it, unfortunately. Maybe
that will change now!

------
RexRollman
Personally, when considering the number of ex-Bell Labs employees there, I had
hopes that Google would pick up the rights to Plan 9 and continue it. Plus,
Google has the deep pockets needed to ensure proper device driver support for
modern hardware.

~~~
jbrennan
I'm wondering, though, what use would Google make of P9? I guess it might make
a great fit with Go.

~~~
katovatzschyn
Maybe it's not reasonable now or ever but I'd quite love to think of Google as
a company capable of doing things that are immensely interesting but have no
obvious, immediate, practical "use."

I don't know if they are there quite yet. It seems to me that they still
strongly incentivize shipping products and making things people will use
within in their corporate culture. I might be wrong. There could be a light
coming on.

------
richardk
<https://code.google.com/p/plan9front/wiki/Mascot>

lol

~~~
rkalla
haha, I love the vibe of the project. Seems like a fun team. I do miss Glenda
though. Getting someone to color her in would have been a good mascot.

------
crazy2k
Why the fork?

~~~
crazy2k
Someone told me on IRC that Plan9's maintaners can't keep up with the work and
they don't accept much help.

------
cpeterso
What is the significance of the name "9front"?

~~~
thristian
The linked web-page spells out the full name as "Plan 9 from the People's
Front of cat-v.org" - perhaps a reference to the "Judean People's
Front/People's Front of Judea" split described in Monty Python's Life of
Brian.

------
mask_of_zorro
Oh boy! So now instead of one going nowhere OS, there are two going nowhere
OSes, only with one going nowhere slightly faster.

~~~
rkalla
It takes no effort to be a wet blanket; all you have to do is lie there,
covered in water, and drown out anyone else trying to do anything.

How many emails/comments/posts EXACTLY like what you just wrote happened in
1991?

No one is saying what Plan9 will or won't become, but that also means _you_
have no idea where it is going in 10 years or what fun innovations will come
out of it.

Don't make a habit of shitting on people thinking outside the box, you'll miss
a lot of interesting things.

------
muuh-gnu
Does the fork still have the same de facto non-free license that plagued
Plan9?

~~~
dchest
<http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#License>

