Hello, 9fans!
This is the first public announcement on 9fans of
an ongoing open collaborative Plan 9 project offering software tools
and resources for hobby-oriented gridding for Plan 9 and Inferno users.
This announcement is timed to coincide with the arrivial of some new
software on sources that is a celebration of UNIX pipes - iosrv,
available via contrib/install mycroftiv/iosrv or mk install from the
iosrv.tgz in contrib/mycroftiv. 'iosrv' brings much of the
functionality of GNU screen to plan 9, but dispenses with the
encumberance of emulating a TTY. Instead, iosrv delivers persistent rc
sessions for multiple clients with multiplexing and buffering of data
via pipe(3) files. The user creates and attaches to sessions available
in /srv, using the 'io' wrapper script. Because iosrv provides sets of
'application agnostic' two way on-demand pipes, remote clients have the
choice of spawning new shells on the remote iosrv host, or
alternatively on their local machine - and locally spawned shells can
be shared via iosrv back to the other remote clients of the iosrv host. All
functionality is implemented using a simple abstraction called a Hub,
which is an attempt to expand the traditional unix pipe | to have
multiple inputs, multiple outputs, and the ability to connect and
disconnect from the data stream dynamically.
'Iosrv' is the latest tool created by and for the 9gridchan.org
open grid project - a volunteer run set of network nodes for Plan 9
resources of several kinds. There's also a website there. We provide:
+ ready to use customized qemu Plan 9 installed images (these can also be easily converted to vmware .vmdk disk images)
+ 'grid
toolkits' for linux systems packaged with venti data for system images
and plan9port binaries and scripts to create ready-to-use multi-system
setups - p9p venti + qemu fossil server + qemu cpu server + drawterm
terminal
+ directly usable plan 9 resources of several kinds, such as an Inferno
hosted 9p service registry that interoperates with our g/toolkit of
scripts - exact services and connection methods are always in a state of flux but most
things are quite open and accessible
+ original software for ad-hoc gridding and resource sharing, such as
iosrv and the gscripts toolkit. The code and design quality for our
stuff can be a bit variable, but we do test and use it extensively
ourselves.
We
are often available 'directly' in our plan 9 development environment.
We strongly support the original vision of Plan 9 as a shared
collaborative environment for programming and we like to do real-time
experimentation and testing. In other words, we export a lot of our
local resources publicly so interested people can connect to our live
work environment. Iosrv was created specifically for this purpose,
among others.
Who the heck is 'we'?
Well, much of this is the work of one
person, a Plan 9 'amateur' in the literal meaning of the word. For the
purposes of this posting, you can read 'we' as 'mycroftiv, 9gridchan.org domain admin and developer'. My name
and identity are no secret, you can whois 9gridchan.org
for my personal information if you are curious. If you happen to be
nearby, feel me to contact me to visit the grid's physical plant. (Also
known as some old computers in a basement.) I use the word
'we' to indicate that this project was conceived by a group of people
who became interested in Plan 9, and I have been working on behalf of
that loose federation of interested individuals. The cultural context
of the project, as indicated by the '9gridchan' name, comes from the
chan imageboards, known for their highly open nature (anyone can
contribute content and participate) and dedication to free expression,
satire, and humor. I am old enough to have great nostalgia for the
personal computing era of the early 1980s (the local Apple ][ users
group meetings were some of the high points of my young life, and my
fingers were perpetually smudged with hobbyist-magazine ink from typing
in BASIC source
cod) and I have often missed the
build-it-yourself spirit of that era. Finding Plan 9 has been one of
the amazing experiences of my life (where had it been hiding the past
decades!?) and although it may be a quixotic dream and vision, I want
to try to work for a world where anyone and everyone is both importing
and exporting an array of 9p services from their desktop, and gigantic
exabyte Venti servers provide caching all along the internet backbone.
Anyway, we've been at this for quite awhile now - it was about a
year ago that this project got started. Along the way a lot of more
experienced Plan 9 users have provided help and guidance. In particular
the #plan9 irc channel on freenode.net
has been invaluable - we hang out there, and also in the #plan9chan
project channel. (Note that the #plan9chan project channel is very
casual, sometimes off-topic, and tolerates all
kinds of speech.) We also want to provide some statements
of praise for all the people who have made Plan 9 so incredible -
discovering Plan 9 is like actually finding the Lost City of Atlantis,
fully populated with amazingly advanced technologies and lots
of very attractive single women in transparent togas - and discovering
that despite the fact that it floats right off the coast of New Jersey,
very few people know about it!
So please, all of you, accept a heartfelt thanks for all the great things about
Plan 9 from a very satisfied user. To the giants like Rob Pike and Ken
Thompson and the rest of the original team, through people like Russ
Cox (who's work on integration tools such as plan9port and Drawterm is
especially appreciated) and Geoff Collyer and other current maintainers
and to the many contributors to plan 9 such as nemo, fgb, andrey,
quanstro, arisawa, cinap_lenrek, maht, dho and everyone else - thanks
for all the work you did and are doing. Also, anything that we've
managed to do right owes huge credit to people in irc who have helped
with advice or testing like sqweek, soul9, uriel (who also gets special
thanks for werc), yiyus, capso, martian67 and original gridders like
drbawb, CCCT, kenya, root, ionic_groove, and all the rest of the people who have been willing to dive into a strange new gray
world. All the mistakes and misconceptions are purely our own and we
look forward to feedback to help us evolve the tools and services we
are providing. Nemo's "Introduction to OS abstractions using Plan 9"
demands special mention as invaluable help, tutorial, and reference.
We hope our enthusiasm is obvious and that our light-hearted
approach is taken in the spirit of playful creation that has often
fueled the evolution of computer systems, probably even before the 1969
version of 'space travel' started the long travels of Spaceship UNIX.
We do want to make sure to respect the licenses of everything we are
redistributing and follow the generally accepted principles for
contributors to the community, so please let us know if we've made any
errors in that regard. To conclude, I'll return to 'iosrv' - much of
our inspiration was drawn from reading the interviews on the princeton
'oral history of UNIX' page (http://www.princeton.edu/~mike/unixhistory)
- in particular the suggestion that UNIX
pipes represented a brilliant, effective, implementation of process to
process communication, distilled from Doug McIlroy's weirder and wilder
vision of more open-ended connection models that wasn't the right
practical solution at the time. At the same time, we were experimenting
with many of the great facilities that Plan 9 offers to expand on
communication - importing /srv from a remote machine, then launching
windows in the remote machine's $wsys and also tee'ing the output
locally. It was easy to 'share' an rc shell in various ways using these
tricks, and the functionality of 'screen' seemed like something that
would be useful to have in Plan 9's arsenal beyond what consolefs
offers. Since Plan 9 has such a
pure design for how the basics of the rc shell + rio work (no legacy
TTY based systems involved) it was apparent that a fairly thin layer of
input/output buffering and multiplexing could provide a lot of useful
functionality. As always, if the toolbox is designed correctly,
structures seem to almost 'build themselves' and the existing Plan 9
tools like pipe (3) files and exportfs (4) make creating and providing
the Hub abstraction to clients easy. We hope that you will enjoy using
'io' to experiment with some of the crazy ideas of building systems
with gigantic freeform pipeline topologies, as well as in its role as a
provider of persistent rc sessions for multiple clients.
Thanks for your time and attention - this post may be a bit overloaded, but I've waited almost a year to make it!
Mycroftiv
mycroftiv@sphericalharmony.com
plan9grid@sphericalharmony.com
mycroftiv in #plan9 and #plan9chan on irc.freenode.net
usually available on the /9/grid via several methods