The power of a computer is to store, manipulate, and retrieve information; the power of the Macintosh is to present visual representations of that information which can be directly manipulated by the user. To me, anyway, this describes the Mac at its most Mac-like.
Contrary to popular supposition, the variations on this theme are far from exhausted. TidBITS has made a habit of calling attention to some of the more original and powerful contributions to the Macintosh info-processing world, with reviews of such hypertextual organizational milieus as Storyspace and Inspiration. Aficionados may now wish to look at a remarkable little freeware gem that has appeared on the nets, MacEuclid.
MacEuclid is a thesis project, the brainchild of Bernard Bernstein at the University of Colorado at Boulder. It is intended for visual representation and databasing of arguments. When I say "argument," I don’t mean just "a single organized line of reasoning" – MacEuclid is not an outliner. I mean "a knock-down drag-out debate." MacEuclid best handles data such as, "Person A uses evidence X to claim P, but Person B uses evidence Y to claim Q, which is supposed to refute P and support R." This may sound arcane to some, but to me, trying to notate scholarly debates for reference, for study, and for later incorporation into class lectures or published material, it’s bread-and-butter stuff. I discovered MacEuclid when I was at wit’s end because, try as I might, I could not stuff into an outliner in any convenient or meaningful form the scholarly debate on the nature and date of the arrival of the "Indo-Europeans" into Greece. Guess what? MacEuclid handles it.
MacEuclid is easy to describe. In a window, you create Text Objects. Each has a text, of course, but also, optionally, a source (who says this?), and a type (what sort of utterance is it? "claim," "definition," "premise," "hypothesis," "observation," and "conclusion" are possible examples; none are included, you make up your own). The text objects are represented as boxes which you can resize and move around the window.
Then you create Relations. These are essentially labelled arrows running from Text Object to Text Object, except that they can also run to or from other Relations, and any number of Text Objects or Relations can feed into or out of a Relation. Again, each has, optionally, a source (who says this?) and a type ("supports," "refutes," and "therefore" are possible types; again, none are included, you make up your own).
You can also create List Objects. These are essentially Text Objects consisting of sets of Text Objects. For example, if I have fifteen pieces of evidence that someone uses to show that the Trojans were Indo-Europeans, I might make a Text Object of each, then combine them all into a single List Object for simplicity. Now, MacEuclid is not itself a logical analyzer. It knows nothing of the "meaning" of any Relations that you create; you can’t use it to check whether a conclusion "really" follows from its premises. Indeed, that’s the point; we’re speaking here of arguments in which whether X is really evidence for P is precisely what is at issue. So, apart from making pretty pictures of debates (which you could have done with a drawing program), what’s it for?
Glad you asked. First, you can have multiple windows on a document, and the very same object can appear in several windows, being updated automatically in all if changes are made in one. These windows are called displays, and each is stored as a separate file; the linkages across them are maintained by a master database file. The diagrammatic representation of the argument thus becomes three-dimensional. A window need never become too crowded; one part of the argument can live in one display, another in another, and so on. You can organize for convenience and simplicity in each display, while links are maintained across all displays.
Closely related to this is MacEuclid’s capacity to hide and show objects. You can select objects, and hide them: they become invisible. At any later time, you can show any or all of them, selecting from a list. More important, you can select an object, and ask that any or all of its "relatives" be shown (each relative is a Relation leading into or out of your object, plus all Text Objects attached to that Relation). And you can do this in any display, regardless of the display in which you originally created that set of relatives: in other words, any part of the argument which you have marked in any display as relevant to a particular object can be examined from within any other display showing that object. This aspect of MacEuclid is referred to by its author, not without some justification, as hypertextual.
Finally, the whole argument, or a List object subset of it, can be queried as a database. As fields in your query you can specify text, type, source, Relations, and other features; found matches are gathered into a List object for you, and from there you can use the hypertextual features of MacEuclid to examine your results further. So once the argument is drawn up, it is easy to ask, in effect, "what observational evidence does Drews use to counter Kammenhuber’s claim that the Indo-Iranians never ruled in Mitanni?", and have instant access to just that part of the argument that answers this question.
A last feature of MacEuclid is one that I am not likely to use, but which may be one of its most powerful: an argument, as embodied in a database, can be worked on over a network by multiple users. Each user logs in to MacEuclid when starting it up, and can examine or add to any part of the argument, but can change only features of the argument which she or he created in the first place. Thus MacEuclid can be used not only to chart an argument, but to engage in an argument.
MacEuclid has both simplicity and power – in short, it’s downright elegant. It’s a work in progress: bugs exist, but the author wants to hear about these, and to receive any other feedback the netting public wishes to offer. It merits serious attention.
MacEuclid is currently posted at <sumex-aim.stanford.edu> as two files: