About documentation

Mitchell N Charity mcharity at vendian.org
Mon Aug 30 20:57:51 CEST 2004


   [...] There seem to be some undocumented features of the language
   of some importance -- or at least they were quite hard to find
   using the top-level index.  These features include such things as
   the simple way to assign and access cells using operators instead
   of functions.  Would a new user know that these operators are
   available by looking up cells?  [reformatted]

You might find
  VirtualManual
  http://www.vendian.org/oz/wiki/index.cgi?VirtualManual
of interest.

"Extensive but scattered" is my own take on the Mozart/Oz documentation.
Something experienced users can work around, but which is spectacularly
bad for new and prospective users.

As Kevin Glynn points out, cells are indeed documented... but piecemeal,
in several different places.

(The VirtualManual turns out to link the places mentioned.:)

Even for experienced users, the disorder obscures opportunities to
improve the docs (such as as-yet undocumented code and idioms).
I suspect even most experienced users are only using smallish subsets
of the language's capabilities.

For newbies... having to repeatedly do backtracking searches across n
documents can make the learning curve look like an exponential wall.
When the book was on line, folks could start there.  But now, their
best bet is perhaps obscure slides, the unfinished Tutorial, taking
extensive notes (while wading through documentation, distribution
source code, and mailinglist archives), and... unusual perseverance.
Most potential users will of course walk away first.

   In the case of the cell update operators they are used in the Oz
   tutorial and documented in the 'Infix Notations' section of the Oz
   Base Environment document.  How would you suggest improving this?

Create a _small_ number of documentation entry points.
"User Manual" is a must.  "Tutorial", "Reference" and "Libraries" are
other popular candidates.

Consider the entire Mozart/Oz documentation set as a single "document".
It's ok, though not ideal, to have a single topic covered in multiple
places.  But if the places are not all cross linked, that's a bug.
And if the path from document top to topic is not obvious, that's a bug.

Thus all "it's already documented" responses on mozart-users should
include not just the (invariably several) pages, but also the path by
which they are reasonably found.  If the path is non-obvious, it follows
that there is a bug, and thus a concrete documentation todo item.

Consider
   "a simple way to assign and access cells using operators instead of
   functions?"

The document
   "Tutorials / Introductory / Tutorial of Oz"
 (ISSUE: Is this a sufficiently obvious name, given that newbies
  start out unclear on the distinction between Mozart and Oz?
  Perhaps "Oz Language Tutorial" would be better?
  Or "Mozart/Oz Tutorial"?)
contains a section Cells
 (OK: it's indeed visible from the table of contents)
which clearly lists the operators.
 (So we have at least a partial win.
  Though searching for "operators" or "syntax" will fail.)

The document
  "Reference Manuals / Programming Modules and Libraries / The Oz Base
   Environment"
 (ISSUE: This is an unfortunately obscure name.  How about something
  clearer?  Perhaps "Language Manual"?)
has a section Cells
 (OK: it's tolerably visible from the table of contents),
which, err, doesn't mention operators at all.
 (BUG)
The tutorial section doesn't link to the "The Oz Base Environment" section.
 (BUG)
The "The Oz Base Environment" section doesn't link to the tutorial,
despite the tutorial having novel information.
 (BUG)

The same document contains a section "Infix Notations" with lists and
describes all(?) operators.  You have to look through them to find the
cell ones.
"Operator" does not appear in this section's title or index entries.
 (BUG)
"Cell" does not appear in this section's title or index entries.
 (Not ideal, but probably not a bug).
This page is not linked from the "The Oz Base Environment" Cell section.
 (BUG)
This page is not linked from the "Tutorial of Oz" Cell section.
 (Unfortunate, perhaps bug).

So a hypothetical new-user experience given the current topology might be:
  Discover cell operators while reading Tutorial.
  Goal: Find further information.
  "Maybe these links will help?"  Explore links in section.  Fail.
  Back up to documentation directory.
  "Err, which one of these is the language manual?"
  Subgoal: Find language manual.
  Search page for "syntax".  Fail.
  Try "Oz Notation".
  "Ah good, Lexical Notation!:)"
  Lexical Notation.  Fail.
  Context-Free Syntax.  Fail.
  Backtrack to trying to find language manual.
  Try "The Oz Base Environment".
  Subgoal: Find information about "cell operators" in document
  hypothesized to be the language manual".
  "Ah, good a table of contents."
  Search for "syntax".  Fail.
  Search for "operators".  Fail.
  Search for "cells".
  "Ah!:)"
  Cells section doesn't help, and doesn't have any links.
  Fail.
  "Sigh."
  Backtrack to table of contents.
  Try "Index".
  Search for "syntax".  Fail.
  Search for "operators".  Fail.
  Search for "cells".  Multiple hits.  Explore.  None helpful.  Fail.
  Search for ":=".  Hit.  "Infix Notation".
  Succeed.
Though, instead of searching the index for ":=", the user may instead
backtrack up past the "find language manual" and do a full text search
over the whole mozart documentation for "cells", "operators", "syntax",
etc, and only find "Infix Notation" after slogging through those results.
I recall doing something very much like that myself when learning Oz.

Experienced users "just know" about the "Infix Notations" section.
But good luck, for instance, figuring out how to modify a super space
from a subspace, using only the documentation.  Or quickly converting
a nontrivial prolog program into an oz program.  Or so much else.

So, concrete suggestions:
(1) Create a link, "for further information", from Tutorial/Cells to
   BaseEnvironment/Cells.
(2) Link from
   Reference Manuals / Programming Modules and Libraries / The Oz Base
   Environment / Procedures and Cells / Cells
 to
   Reference Manuals / Programming Modules and Libraries / The Oz Base
   Environment / Infix Notations
 for its cell operator definitions.
(3) And also to
   Tutorials / Introductory / Tutorial of Oz / Cells
 for its cell operator list, and (unfortunately brief) usage discussion.
(4) Rename "Infix Notations" to something like "Operators and Infix Notations".
(5) On the "Mozart Documentation" webpage, boldface the links to
 "Tutorial of Oz" and "The Oz Base Environment", to emphasize their
 primary importance.

And perhaps
 Ask a minion, an undergraduate or graduate student, to take this pile
 of documents and knit it together into something which another
 language might call a User Manual.

And perhaps
 Note that MIT Press has historically been _far_ more flexible than
 outfits like Springer, with regard to folks placing books or parts of
 books online.  They actually want to do the right thing.  So while
 they asked "Concepts, Techniques, and Models" be taken offline for
 its debut, it would be worth exploring getting parts of it back online.
 It's still the closest thing we have to a user manual.  The absence of
 which reduces the appeal of mozart/oz, and thus of the book.

And perhaps
 Anyone can create their own documentation pages on the wiki... ;)

Mitchell Charity



More information about the mozart-users mailing list