9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* Re: [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org
  2009-07-10 22:56 [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org mycroftiv 9gridchan
@ 2009-07-10 20:05 ` Jacob Todd
  2009-07-10 23:35 ` Russ Cox
  1 sibling, 0 replies; 4+ messages in thread
From: Jacob Todd @ 2009-07-10 20:05 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 276 bytes --]

On Fri, Jul 10, 2009 at 05:56:46PM -0500, mycroftiv 9gridchan wrote:
> ..

You were able to get anon's from /g/ to do something..useful? Good job.

This does seem interesting though, I'll have to play with it sometime.

-- 
Jake Todd
// If it isn't broke, tweak it!

[-- Attachment #2: Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org
@ 2009-07-10 22:56 mycroftiv 9gridchan
  2009-07-10 20:05 ` Jacob Todd
  2009-07-10 23:35 ` Russ Cox
  0 siblings, 2 replies; 4+ messages in thread
From: mycroftiv 9gridchan @ 2009-07-10 22:56 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 9113 bytes --]

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<http://www.princeton.edu/%7Emike/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

[-- Attachment #2: Type: text/html, Size: 9892 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org
  2009-07-10 22:56 [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org mycroftiv 9gridchan
  2009-07-10 20:05 ` Jacob Todd
@ 2009-07-10 23:35 ` Russ Cox
  2009-07-11  2:51   ` plan9 grid
  1 sibling, 1 reply; 4+ messages in thread
From: Russ Cox @ 2009-07-10 23:35 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

iosrv sounds neat.

if you want a challenge, i would like to see the gui version,
something along the lines of inferno's drawmux,
which would be more work but also more broadly applicable.
http://www.vitanuova.com/inferno/man/2/drawmux.html

russ


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org
  2009-07-10 23:35 ` Russ Cox
@ 2009-07-11  2:51   ` plan9 grid
  0 siblings, 0 replies; 4+ messages in thread
From: plan9 grid @ 2009-07-11  2:51 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

[-- Attachment #1: Type: text/plain, Size: 3493 bytes --]

On Fri, Jul 10, 2009 at 6:35 PM, Russ Cox <rsc@swtch.com> wrote:

> iosrv sounds neat.
>
> if you want a challenge, i would like to see the gui version,
> something along the lines of inferno's drawmux,
> which would be more work but also more broadly applicable.
> http://www.vitanuova.com/inferno/man/2/drawmux.html
>
> russ
>
> Thanks very much for the suggestion - and that is exactly the direction I
am planning to work in, following some needed improvements to the
fundamental implementation. (iosrv needs to be rewritten to be its own 9p fs
and not piggyback on exportfs, most importantly). Given the beauty of plan
9's data-agnostic approach, you can already do things like sending mouse
data through an iosrv pipe and binding that pipe on top of /dev/mouse to
control a remote graphical application. I have yet to study the issues in
detail but thanks to the 'consistent, agressive application' of the clean
file i/o abstraction throughout the Plan 9 system, I hope it will be
possible to make iosrv able to multiplex and make persistent any and every
application. A persistent, shared rio session is the goal, but no promises
on the delivery time for that feature.

One easy trick to make iosrv integrate better in its current form into the
GUI layer is to allow the rc sessions hosted 'inside' the iosrv to import
the /srv of the client machine, and then make use of the calling user's
plumber and wsys on their original machine. I'm still working on exploring
what exactly can be done with this thing!
--------
Iosrv can provide simple, basic functionality along the lines of gnu screen,
but also offers the ability to create custom i/o Hub setups. As an example
of doing more, here is a recipe for allowing your iosrv hosted shells to set
up an independent shared communication channel between them. The starting
assumption is that you have used the 'io' command as 'io iosession' to begin
an iosrv, then connected multiple clients to it using 'io iosession' and
those clients have created new rc subshells within the iosrv using the
inside-the-ioshell commands such as 'local 3' and 'remote 6'. From within
one of the attached shell sessions, issue commands to create new Hubs:

hub h27s0
hub h27o0
hub h28s0
cat </n/iosession/H27out0/data1 >/n/iosession/H28in0/data &

Now you have a persistent cat running between two new Hubs provided by
iosrv. To turn that into something useful, in all the attached clients you
will want to do:

hub h28o(current hub attach # here)
cat /n/iosession/H28out(attach #)/data1 &
bind /n/iosession/H27in0 /n/chat
echo 'hi everybody!' >/n/chat/data

Now you can send messages between the shells by echoing messages to
/n/chat/data and they will be printed to the other attached shells by their
cat of the output pipe running in the background. When new clients connect
and provide their own unique hub h28o# command, the cat of its output will
give them the full backlog, buffered by the iosrv.

I'm very interested in some feedback on the general idea of the Hub as an
extension of the pipe - the idea is that a Hub has multiple simultaneous
inputs and outputs and allows processes to connect and disconnect from it
freely as it is running. I am a relative newcomer to the world of UNIX and I
am interested in previous implementations of this type of functionality. I
wonder if I have wandered into the territory of STREAMS which I confess I
know by reputation only.

Mycroftiv

[-- Attachment #2: Type: text/html, Size: 4022 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-07-11  2:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-10 22:56 [9fans] Announcing: iosrv for persistent rc sessions and 9gridchan.org mycroftiv 9gridchan
2009-07-10 20:05 ` Jacob Todd
2009-07-10 23:35 ` Russ Cox
2009-07-11  2:51   ` plan9 grid

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).