
                        Object Organization in Retro

                               March 13, 1999


Everything is an object.

   The "current scope" refers to all the objects that are visible from a given
object. All of an object's childen are its scope. It's parent could also be
in its scope. Other objects, or the children of other objects, could also be
added to the current scope.


Referring to an object in another scope:

   Suppose we have an object called ROOT, containing an object called SYSTEM
(where the system objects are located, perhaps?), which contains an object
called SCREEN.

   In Unix, if we're in ROOT, we refer to SCREEN as SYSTEM/SCREEN. The
absolute address would be /ROOT/SYSTEM/SCREEN. Using '/' is convenient, but
not for objects in a program, because '/' is normally used for division. We
could use '\' like DOS, but that's less convenient, and it's sometimes used
as an escape character.

   In C, we use a '->', so we say SYSTEM->SCREEN or ROOT->SYSTEM->SCREEN.
That's no good, because '->' takes too long to type. It would be okay if we
had a '->' key, and it could be represented as a single character.

   Some languages use a '.', as in SYSTEM.SCREEN or ROOT.SYSTEM.SCREEN.
However, people like to use '.' in filenames, for example "file.tar.gz".

   In Retro, we use a ':', so we have SYSTEM:SCREEN, or, in absolute terms,
ROOT:SYSTEM:SCREEN. ':' is fairly convenient to type, isn't used for
anything else, it works good in programs and for pathnames, and it "looks
right". Some operating systems (i.e., ITS?, VMS) used ':' as a filename
separator.


User interaction

   Many users will find it convenient to picture their system as a series of
rooms, like an adventure game.  The room metaphor is useful for both text
and graphical (2D and 3D) interfaces.

   Some ideas:
      1. Natural language textual interface
      2. Command interpreter (the usual)
      3. Hotkey-controlled textual interface
      4. Game-style graphical interface
      5. Windowed graphical interface (the usual)
      6. Game-style 3D interface ("virtual reality")

