All I Need to Know about DH I Learned in a MOO
for Arley McNeney
You Are in a Room…
You are in a classroom. A mishmash of worn-looking tablet
arm desks almost suggest the idea of rows. At the front of
the room, a projected image shines on a screen: a terminal
window and a blinking command prompt, green on black.
Professor_Metaphor says, "Welcome to Text Processing 101"
Rainbow_Guest says "OMG, this is my first time here. I
don't know anything and I'm so nervous..."
Spaghetti_Guest says "Hi, Rainbow_Guest. I was new last
year; it all seems so unfamiliar at first, but you'll
pick it up fast."
Rainbow_Guest says "What if I can't type fast enough
to keep up?"
Spaghetti_Guest says, "Relax, it's not 1993 anymore..."
It’s really not 1993 anymore, but this is actually how it looked back then; and some of us did have anxiety about being able to type fast enough to keep up with a real-time conversation. Of course, this was in the days before it became normal to type ten million keystrokes a year.
1993 was before the Web. That’s critical to this reflection, because in my own memory, it’s hard to remember what what we all did before the World-Wide Web rose to take over every facet of our lives. I recently found myself in a conversation with Anna Sallazzo, in which she asked me what had led me to the Digital Humanities in the first place? I fumbled through an answer to that question, mumbling something unsatisfying about publishing and technology and affinities. But shortly afterward, it suddenly struck me—this is not something I’d thought about in some time—that the thing that had really led me toward the Digital Humanities, avant la lettre, was my early immersion in the world of MOO.
And so, partly in the spirit of recent “DH origin stories”, I wanted to recount some of the richness of those earliest years of being online.
What is MOO?
MOO is/was a subgenre of MUD, which stood for “Multi-User Dungeon,” a kind of social text adventure game popular on the early Internet. MUDs were the original Multiplayer Online Role-Playing Games (they were not yet Massive), the kind of thing that could be run on a central server and people would connect via an old-school text-mode terminal app over a dial-up Internet connection. Or maybe via an actual terminal, if you had one of those, maybe in a lab on campus. MUDs were abundant on the early Internet, virtual spaces in which to hang out and chat and ‘pose’ in a kind of performative literary sphere. They were great fun, and one of the great early fountains of online culture.
MOO, which stands for MUD, Object-Oriented, was a particular variant—the software that ran the virtual world, and thus the modes of interacting within it—and it featured a very interesting object-oriented (OO) programming language, with which players could participate in the building of the virtual environment and its dynamics. MOOs were a genre within a larger set of different kinds of MUD, running on different software bases, and with a variety of different styles of play: some were very much inspired by dungeons-and-dragons (or at least by Zork), some took roleplaying very seriously, and some were primarily social—MOOs fell mostly into the social category.
The centre of MOO-dom was LambdaMOO, a MOO server and the project of Pavel Curtis, a programming language researcher at Xerox PARC, run somewhat off the side of his desk while he did more serious work there. LambdaMOO’s server software was released freely (this was long before “open source”) on the Internet, and so lots of MOOs (that is, MOO server/worlds) sprung up, using Curtis’ codebase with its nifty OO language. So while LambdaMOO remained the most popular server (back in the day there would often be 150 or more people in LambdaMOO at any one time), the MOO world had several centres of gravity: social hangouts, research projects, educational environments, art projects, and more, with servers hosting particular kinds of communities. I ran an educational MOO project for my Masters project in the mid 1990s.
It is not a stretch to say that MOO was my first love, way back in the day, and it introduced me to so many ideas, themes, and practices that have been with me ever since, even through the dramatic rise (and fall?) of the Web. And in response to Anna Sallazzo’s question, MOO unquestionably set me on a path to the Digital Humanities.
You see, MOO was text. It was all text, plain text—if not actually in green on black like a terminal from the 1970s, then, more commonly, in a “MUD client” app, which maybe added some typographic nicety but more importantly helped distinguish what you were typing from what was coming back from the server—often in rapid fire fashion if there were lots of other people logged in. But it was still text, plain text. There were no images, no layouts to speak of. In the mid-1990s, the coming of the Web as—for the first time—a visual layer on the Internet put a particular pressure on the world of MUDs and MOOs; or perhaps cast them in a different light. At the time when the new Web began to look a little bit like magazine pages, however crude and/or garish that may look to us now, the plain text interface to a MOO had already begun to look kinda clunky in comparison.
There were attempts to bridge this gap: to make a MOO or MUD serve HTML instead of plain text, so that the scrolling real-time conversation could look more like a web page, with images, coloured type, blinking type, and so on. But this never really caught on. To me and to others, having discovered the magic of real-time literature, making it look more like something else seemed utterly beside the point: it was literature; it was an immersive reading (and writing) environment. But I do have to admit that at the time it felt a bit like being on the losing side of history, and I was indeed swept away with the flow, and I turned my back on MOOing for a long, long time.
Looking back today, through the decades of the Web, through evolutions and revolutions of technology and culture, through my academic career, and especially through the lens of the digital humanities, where I have learned to look over the past decade, I reflect on my time in MOO, and the things I learned there—and that essential plain-textuality—and I think there was a lot more there than we give credit for. For starters, it was a world made of text, an immersive literary reality that one could enter into and participate in, as fast as one could read, as fast as one could type.
The Humanities, you see, were always there in the MOO. This is true on the overt level, especially given the existence of places like PMC-MOO, an extension of PostModern Culture journal, which John Unsworth and colleagues (at NCSU and later Virginia) established in the early 1990s. Being more than just a chat environment, Unsworth noted that the MOO, “provided an opportunity for interested users to produce interactive programs that would demonstrate or interrogate concepts of relevance to the study of postmodernism–object-lessons, if you will.” Indeed—and I will return to this theme in a moment—the situated programmability of MOO provided a relatively easy pathway to not just reading and writing text, but computationally manipulating text for virtual, in-world purposes. As Unsworth noted:
People whose background was non-technical have become interested in programming through the experience of inhabiting a shared programming environment, and especially (I think) as a result of being able to see and immediately share the results of their efforts from within the same environment in which they are produced.
PMCMOO was hardly the only academic MOO server; projects at the MIT Media Lab, the UTexas Austin’ Computer Writing and Research Lab, at Brown University, and many others saw MOO as a crucible for investigating hypertext, programming, education, and the presentation of self and gender online. If you read through academic studies of online culture from the 1990s, you’ll find all sorts of references to MUDs and MOOs.
Also key was the lovely coupling between the design of the MOO language and the virtual environment itself. The fundamental objects defined within the system were things like rooms, doorways, and players (that is, people), and the kinds of things that the language enabled were actions like moving around from room to room, talking, posing (that is, actions other than talking), picking things up and carrying them about. A brand newly installed MOO came with a hundred or so “generic” objects—rooms, doors, player classes, etc.—that could then be used as prototypes (or templates) to make new, more specialized versions: for example, the generic room, which was simply a location that could have a door and which kept track of who was in it and who arrived or left, could be specialized—used as a template for – say, a bathroom, with running water (whatever that might mean).
Because the entire virtual environment was textual, the experience of it was about reading (and writing), and so the meaning of rooms, doorways, and running water was essentially a literary one. A bathroom with running water might be nothing more than a simple interface in which one could “turn on the tap” in response to which a “bathtub” was filled with “warm, inviting water.” Such tiny scenery might be trivial, but a whole bunch of things things like that, contributed by multiple players, would add up to an immersive and intriguing virtual experience of a place with appreciable features and qualities. A description of a warm bath in a novel has the same quality: it is only as good as its literary description, which likely relies on its relationship to other literary descriptions and happenings.
So as the “objects” in the MOO were textual descriptions and opportunities for textual interaction, the MOO programming language was designed for textual manipulation, and the language had a host of features for parsing, composing, and assembling bits of text (including a complete Regular Expression pattern-matching library). One key feature in MOOcode was conjugating verbs, so your (first-person imperative) resulted in second-person feedback to you, and third person description displayed to anyone else in the same “room.”
Turn on the tap.
You turn on the tap.
JMax turns on the tap.
There is a scene in Amy Bruckman’s doctoral dissertation from the MIT Media Lab, MOOSE Crossing: Creating a Learning Culture that to me captures this spirit perfectly. MOOSE Crossing was Bruckman’s MOO, developed for pre-adolescent kids. One of the key things kids loved to do in MOOSE Crossing was create pets: semi-autonomous objects (that is, ‘bots’) programmed to follow them around in the MOO and exhibit a range of interactive behaviours. These virtual pets, Bruckman explains, are part of how the kids present and express themselves in the virtual space, and considerable time and effort went into the description, programming, and elaboration of these virtual objects. Moreover, a child might have created numerous pets, each programmed to interact with and indeed greet whomever it encounters in the MOO (e.g., “Fluffy purrs and says hello to you.”) Now, imagine a child with half a dozen virtual pets meeting another child with half a dozen pets in a room and the ensuing semi-automated interplay between all these virtual entities… to be perfectly candid, this story directly inspired me to go back to grad school.
Programming bots in MOOcode was easy and rewarding, as the virtual experience was enriched so much by the addition of active objects to the background of static descriptions. In my own MOO project a few years later, which facilitated a “mock trial” role-playing exercise for high-school Law students, the staff of a courtroom—the bailiffs, sergants, clerk, and so on—were all bots, programmed to respond to cues in the trial, and to flesh out the overall experience for the human beings who roleplayed the judge, lawyers, witnesses, and defendant.
Programming textual interactivity in the MOO taught me many things; at a concrete level, parsing sentences and generating intelligible response—a simple version of Natural Language Processing— but on a more abstract level the MOO provides a kind of working Platonism, a world of Forms, for the most part defined functionally, which then provide the raw material for a textual phenomenology.
…More to come in Part II of this story.
Arley McNeney, who passed away in March 2023, was a much-beloved advocate for disability rights as well as open pedagogy. Arley was also an artist, the author of several books, a bronze medalist at the 2004 Paralympic Games, and a faculty member in the Business School at Kwantlen Polytechnic U in Richmond BC. In the public outpouring of love and rememberance in the wake of Arley’s passing, I was inspired to write something in her honour; this post is in part a result of that. Way back in the 1990s, Arley was a high-school student who played a significant role in my own educational MOO project. She was the original Spaghetti_Guest. ↩︎
10 million keystrokes is what I came up with after a Google search which revealed many versions of a napkin calculation, mostly in the range of 2–25 million per year. To say nothing of the typing we also do on our phones. ↩︎
Technically, Tim Berners-Lee’s World-Wide Web project dates to 1990, but very few people saw it in the early 90s… my recollection is that it wasn’t until 1994 that the Web started to emerge in public eye. ↩︎
Notably, by Quinn Dombrowski https://digitalhumanities.stanford.edu/technical-enough/; Brandon Walsh https://scholarslab.lib.virginia.edu/blog/origin-story/ ↩︎
People still play MUDs, but the size of that community today is probably not a lot bigger than it was in the 90s—which is to say it looks much smaller, given the size of the online world today. ↩︎
This is a nested acronym, though not all the way to a fully recursive acronym as was fashionable back then. ↩︎
LambdaMOO, astonishingly, is still online, thirty-odd years later—talk about persistent object storage! It ran for many years on Xerox PARC servers, but more recently at lambda.moo.mud.org, on port 8888 ↩︎
Xerox PARC was/is Xerox’ blue-sky research lab. Famously, the ‘future’ was invented there in the 1970s… the ideas of personal and portable computing, ubitquitous networking, WYSIWYG and direct-maniupulation interfaces, and object-oriented programming were all prototyped at PARC in the 70s. My PhD research examined the fascinating educational model that underlay a lot of this work, but that was years later than the present story. ↩︎
Unsworth, John. “Living Inside the (Operating) System: Community in Virtual Reality.” PMC2 Archives, 1995. http://jefferson.village.virginia.edu/pmc/Virtual.Community.html. ↩︎
I originally learned Regular Expression searching from learning to program in MOOcode. Much, much later I taught Regular Expressions at the DHSI. The version of regex in the LambdaMOO core predates the “PCRE” standard, but it’s pretty close. See Curtis, Pavel. “LambdaMOO Programmer’s Manual, v1.8.0.” Hayseed.net, March 1997. https://www.hayseed.net/MOO/manuals/ProgrammersManual.html. ↩︎
MOOSE Crossing was also the name of the MOO client software Bruckman developed, which provided a simple kind of programming IDE—the first such tool I ever used. ↩︎
“Instead of asking ‘What do I do with this software?’, people ask themselves, ‘What do I do in this place?’” Bruckman, Amy S. “MOOSE Crossing: Creating a Learning Culture.” p 49. Ph.D Dissertation, MIT, 1997. https://faculty.cc.gatech.edu/~asb/thesis/index.html. ↩︎