MOX

Brian P Templeton bpt@tunes.org
Sat Jan 19 11:56:02 2002


I have begun preliminary work on a system called MOX. (``MOX'' stands
for ``MOX Obviates Xanadu'', since it was originally going to be a
hypertext system; `mox' is also a Latin word for `soon', with
allusions to the common phrase `RSN'.)

It is centered around a datastructure called an arrow, in honour of
Brian Rice's Arrow system - I don't yet understand Arrow, but after
attempting to read the Arrow papers one more time, I thought of
locatives and how an ``arrow'' might be something like a locative
(though I knew that that is not what an Arrow arrow is).

An arrow acts as a pointer into a 'verse (short for ???verse). A
'verse, the allusion being to poetry and rhyme, acts as an environment
in other languages, except that instead of being a mapping between
symbols and objects, it is simply a collection of objects, internally
identified by a tumbler (a word borrowed from Xanadu) - though I may
change `tumbler' to something else, since I don't really know what
would be like in Xanadu other than being of the form 0.x.y.z (I could
probably do some research on it, though).

[Those who've listened to me promise to post to the TUNES list on IRC,
besides having learned how good I am at procrastination :), may notice
that I've generalized from a huge Xanadu-like ``Objectuverse'' to
smaller 'verses. I think that this was a good design decision, but I
may reverse it if necessary. The worlds thread from a few years ago,
Alan Grime's Sphere project, and other ideas were influential here.]

An `object' in MOX is simply something that has a tumbler, some slots
(well, zero or more slots, probably), and hints. (The name `hints'
will probably change to `annotations' later on, as it appears that
Fare came up with this idea a long time before I did.) I am not quite
sure how the slots will work yet.

[After considering recent ideas I've had concerning
protocols/interfaces, specification languages, etc, I may change the
semantics of objects completely, but then again, I may not. MOX
doesn't yet exist and so /ipso facto/ doesn't even have ten users, so
unlike the designer of `make' I don't even have a *bad* excuse :).]

In MOX, source code is merely a sequence of arrows, possibly, e.g.
using the Lisp tradition of using lists to represent function
applications. However, there are *no symbols*. It will likely be
possible to attach a default label to an object, through hints, but
there is no particular reason why one must use labeled objects at all.
In fact, using hints, someone could implement, say, a system where
objects were identified by color (yes, that's probably a really stupid
idea, but there are most likely some interesting variations on it).

Some interesting things appear to be possible with arrows; for
example, if MOX were to adopt the Lispish convention of making source
code simply a series of sexps, then MOX could implement Arc's
``name-munging'' (I have no idea what the real name of the ``feature''
is) cleanly. (In Arc,
    (eqcar x y) === (eq (car x) y)
but in MOX, something like
    (|eq||car| |x| |y|) === (|eq| (|car| |x|) (|car| |y|))
with `|...|' denoting an arrow to the object whose canonical name is
`...', could be cleanly implemented, I think.)

 - Synopsis -
MOX is based on a datastructure called an arrow (in honor of Brian
Rice's excellent Arrow system, which it seems that no one other than
he understands :)). Source is just a sequence of arrows ``pointing''
to an object in a 'verse, which can orthogonally or non-orthogonally
make objects persistant, and [FIXME: is this a good idea? - probably
not] the same arrow will always point to the same object, unless,
perhaps, a hint is provided to the contrary. A 'verse is a collection
of objects. There are no symbols in MOX, though they can be emulated.
MOX combines development and hypertext in a somewhat novel way.

This post is poorly organized and incomplete, but it will hopefully
give you some idea of the basic concepts of MOX. All questions are
gladly answered and I would very much appreciate any feedback at all.

Thanks in advance,
-- 
BPT <bpt@tunes.org>                     /"\ ASCII Ribbon Campaign
backronym for Linux:                    \ / No HTML or RTF in mail
	Linux Is Not Unix                X  No MS-Word in mail
Meme plague ;)   --------->             / \ Respect Open Standards