This contains a manual excerpt for the new dream OS, Penix (cooked up in 1992):


In article <4gdsuq$18f@osceola.cs.ucf.edu>, Ethan Frolich wrote:
>petro (petro@suba.com) wrote:
>:      Ok, to begin the cannonical list of all OS's that suck:
>: VMS sucks. 
>: Solaris sucks. 
>: SunOS sucks.
>: MS-DOS doesn't qualify, but sucks.  
[...]
>: Windows 95 doesn't suck, it blows. 
>: Plan 9 sucks on lots of machines at once.
>: Oberon is considered harmful, and sucks.
>Okay. So what would you people consider to be a non-sucking OS?

I'd like to submit Penix as the cannonical example of a non-sucking OS,
I happen to have a stack of man pages from it sitting just here[1], but 
here's the development document for inspection:

===
Okay, here are some general notes on Penix, compiled from a stack of
notes left over by the Penix Development team just before they all
went to lunch about two months ago and never returned. if anyone out
there has seen them, or may know of their whereabouts, or knows what
happened to the payroll, or even if you'd like to join the Penix
Development team, please mail me at arifel@melbourne.dialix.oz.au.

Please note: there is no social stigma attached to joining the Penix
Development Team, and i don't want to hear any more lame jokes about
guys who need their Penixes developed. right?  right.


selected MAN entries:

cfts       completely fuck the system

rcatpar    randomly change all the passwords at random

wi         whatyouseeisprettypathetic interactiveEditor

edmond     page-oriented editor.  a step down from a line-editor,
           this one treats text as page-sized chunks.

rofl       roll on floor laughing.  not so much a system function as
           what the support staff do when you ask them if they
           still have last week's backups on tape somewhere.

ispi       shows some of the processes running, some of the users on
           the other lines, and sometimes even gives statistics on
           CPU usage. it's very context-sensitive.

sssl       suddenly swap serial lines with another user

banan      display a banana on the screen.  taken from
           uselss/lib/ansi_art.

crp        crap filter - removes tildes from your SerIOus stream

bollx      `bollocks!' - ignore ctrl-x, -y and -z `break' flags

stuffio    use LZH compression for inter-task message packets (to
           save space)

drump      dump the rump file

clrump     clear the rump file

flrump     flub the rump file

doobrie    Do Operational bisynchronous reads (input) extended
           (we're not sure about this one ourselves)

ftang      find textfile and negative-gouge it

gouge      remove all the carriage returns from a file ported from
           MS-DOS

pong       let the other machines on the net know that you're there

brap       break all processes - send a ctrl-z to all active
           daemons, nyemphs and maenads.  this isn't so much a
           `terminate the process' function, but rather a method of
           signalling to processes that aren't actually attached to
           serIOus lines, just to let them know that we are keeping
           an eye on them.

exorcise   terminate a process completely and utterly.  kill it off,
           every last trace.  we're not kidding here. finito.



General Penix terms:

walnut     the heart of the Penix OS.  at compilation, it is
           approximately 71 megabytes in size (depending on whether
           you have the development system or not), but this figure
           regularly oscillates between 67 and 83 meg, as the system
           `breathes'.  It was written in interpreted BASIC, for
           ease of modification.

daemon     a process that detaches itself from your console session.
           unless you redirect the output from this daemon into a
           specified file, any output produced will appear out of
           various serIOus lines on the system at the daemon's
           discretion.

aengel     like a daemon, except a bit more polite.  an aengel
           process will ask before it directs output to your serIOus
           line.  it will generally do it anyway, but at least it
           asks first.

nyemph     a daemon process that can migrate from one file system to
           another, and will do so if its output has filled the
           filesystem that it started on.  slippery little buggers.

maenad     like a nyemph task, but a little bit more attractive.

sprite     a very simple background task that does menial things like
           flash the cursor colours, play the sampled `beep' sound when
           you press control-g on the keyboard, and make that annoying
           click on the floppy drive as the OS checks to see if you have
           put in a disk yet.

goelem     a very powerful background task.  also very stupid.  they
           are usually started by the system itself, when the need
           arises to do something labour-intensive and boring - so
           boring, in fact, than none of the usual background tasks
           will touch it.  you occasionally find goelem tasks
           wandering around after they have finished their task, too
           stupid to realise that they HAVE finished; pretty much
           all you can do about it is allocate them a very low
           time-slice (see the `motu' command) and hope that they
           don't get into any trouble, or try to kill them with the
           exorcise function.

ogre       like goelems, but nastier, harder to kill, a bit more
           intelligent and, like nyemphs, able to migrate to
           different filesystems as required.

caenobites
           this is something we aren't particularly proud of here at
           Sunburne, but we think that you should know about, in the
           interests of safety.  we will admit that the circumstances
           that led us to developing Penix are slightly unusual, and
           that there is quite a bit about this system that was, er,
           inherited. We're not saying that we stole it.  but there
           are large areas of this system that we know nothing about,
           but which, when we remove them, the system stops. we don't
           know exactly what caenobite tasks do, but we have found
           that you can't kill them; you can't stop them; you can't
           even slow them down.  whenever we use the motu command to
           alter their timeslice, they completely ignore it (this may
           be due to the fact that we think motu's orders are passed
           to the rest of the system by a caenobite task). they can
           be incited to remove other tasks by passing them a
           BOX_OPEN message packet, but they are best left alone.
           thank god there are usually only about four of them.


networks:
          the Penix network philosphy is based on a `Master/Slave'
          relationship.  Systems can be linked into networks that
          include hundred of machines, but generally, inter-machine
          communication is dominant/submissive.  One machine makes a
          begging, whimpering request for a file from its `Dom',
          which must then establish which of its `Subs' has the
          file. It then issues a spank_IO order for the file; if the
          data packet isn't sent within the system default timeout
          period, the Dom issues a whip_IO.  If THAT doesn't work,
          the Dom grabs the nearest (by address) Sub by its bus,
          shakes it silly, and applies the logical equivalent of
          nipple-clips.

address format:

            denotes that the machine is a Dom Server.
           /
          Dom:Rhonda>>Galoot_Cologne
                 \            \
                  \            Net-clique name
                   \
                    machine ID

serviette:
         a server with less than 300 meg of hard disk space.

drooler:
         printing is controlled by the drooler daemon, who dribbles
         text out of the assigned printer ports when it feels like it.
         if the drooling process is going too slow for your liking,
         it can be prompted by invoking any of the currently running
         caenobites.

LNCs:    Logical Nipple Clips. This is actually a variety of Worm
         process specifically designed to chase between machines on
         the net, prompting Subs to complete the most recently issued
         Spank_IO or Whip_IO command.

Booting:
    one does not re-BOOT a Penix system; it is `re-shoed'.  If you
    boot a Penix system, it will fall apart.  Reshoe-ing involves
    locating the sock partition, socking it, then looking about for
    something that resembles a shoe-block (a disk-block with startup
    information on it).  once located, the shoe-block is overlaid
    onto the sock partition and is `laced'. At the request of our
    user, we have incorporated dual shoe partitions, to enable disk
    mirroring.  the System must always be re-shoed from the same
    partition; if you get the left-shoe and the right-shoe partition
    mixed up, then after re-shoeing, the system will take a few
    tottering steps and will then fall over. be extremely careful
    about modifying the lacing procedure, as it is quite easy to lace
    the two partitions together... as you can imagine, this can be
    VERY dangerous, and any system with its shoes laced together
    won't run very well.

    scanning the sock partition for a shoe block can be a time-
    consuming process; if the entire hard disk had to be examined, it
    could take days.  an algorithm has been implemented that scans
    disk blocks at random, on the assumption that there will be more
    than one shoe block on the disk (this is a standard security
    feature - in fact, more than half of the disk's blocks are
    usually allocated as shoe-blocks, to save time when looking for
    one to shoe from).


example of console messages on booting:


Penix v37.019a ROMrev 76:e_beta (development)
            shoe in progress
     locating sock partition
           scanning SCSI bus  *******
      scanning st506 devices  **
           getting desperate
      scanning floppy drives  **
    getting really desperate
         scanning tape drive  *
  sock located on tape drive

  *** CLEAN SOCK LOCATED ***

     scanning SCSI bus again  ******
  loading SCSI device driver

           scanning for shoe
             block at RANDOM  ....................................
                              ....................................
                              ....................................
                              .................... bingo

left shoe located at cyl:00.head:15.sec:16

         loading shoe block
                 processing   ......................................
                              ............. ignoring checksum errror
  overlaying sock partition
                     lacing   **** shoe partition LACED, Booting
--------------------------------------------------------------------
walnut located, processing ..... done
system boot, 17:29:04   25 March 1992
system ID: Dom:Rhonda>>Galoot_Cologne

do you want to inhibit DAEMON processes at this time (default=n)? n
do you want to inhibit AENGEL processes at this time (default=n)? n
do you want to inhibit NYEMPH processes at this time (default=n)? n
do you want to inhibit MAENAD processes at this time (default=n)? n
do you want to inhibit SPRITE processes at this time (default=n)? n
do you want to inhibit GOELEM processes at this time (default=n)? n
do you want to inhibit CAENOBITE processes at this time (default=y)? y
too bad. you can't.

starting Daemons:  spon   spoo   furph   wrack   wruin   hobble
                   castrate   whats_all_this_then   drooler

starting Aengels:  moroni  goliad  mikayel  cefiar  lucifuge_rofocale

starting Nyemphs:  dom_net_prep   dom_net_enquire  TOPY_server
                   neubauten_server  spk_server  DVA_server NIN_server
                   skinny_pup_server

starting Maenads:  *** Maenad table is empty

starting Sprites:  cursor_flash  keyboard_click
                   annoying_floppy_drive_noise

starting Goelems:  lif_dat_wait   tote_dat_bail   get_a_little_drunk

starting Caenobites: pinhead   butterball   chatterer   face   atkins
                     balberith channard

this is a DOM net_device: initialising SpankIO
                                       WhipIO
locating LNCs...  done.
locating sPURs... done.
locating CONT...  done.

establishing cat_o_nine_tails netlink... done.
locating subs:

        Sub:Harry_as_a_boy>>Galoot_Cologne
        Sub:Noxiuma_tapioca>>Galoot_Cologne
        Sub:Algonquin_Jane_Cowhoon>>Galoot_Cologne
        Sub:Obdullah_X>>Galoot_Cologne

*** SpankIO Warning:
    no response from Sub:Harry_as_a_boy>>Galoot_Cologne

*** Console Message from Caenobite Process ::pinhead::

:: the system... you booted it... we initialised, now you must
:: work with us, taste OUR pleasure!
::
:: we have such sights to show you!

initialising serIOus lines  000  001  002  003

...and so on.


Penix directories:

/typical              <- defaults for various things like
                         shell initialisation, flags to say
                         if the system is a DOM or a SUB, and
                         various other oddities like the
                         penix_kickoff script file.
/keymaps
  /keymaps
    /keymaps
      /keymaps        <- system default keymap for wi

/lib                  <- library files here, strangely enough

/executeables         <- executeables

/uselss
  /der                <- text files/notices here
  /executeables       <- additional executeables live here
  /mungle             <- not sure what this directory is for, but the
                         system won't run without it.

/whoops_a_daisy       <- unallocated blocks here
/ho_hum               <- logfiles here
/trash                <- schedule tables for backgrounders
/ephemeral            <- temporary files
  /drooler
    /dribble          <- temp dribble files from drooler process
                         live here

/help_files           <- the man entries would be here, but our user
                         thinks that `man' is sexist, so we called it
                         help_files.

Sunburne Computer, Inc. 25th March 1992

=================================================================