Est. 1990 Intermediate

MOO

The prototype-based, persistent object language inside LambdaMOO - written by Stephen White in 1990, rebuilt by Pavel Curtis at Xerox PARC, the substrate of the first large online communities (LambdaMOO, MediaMOO, MOOSE Crossing), and still developed today in the ToastStunt and mooR servers

Created by Stephen White ("ghond", University of Waterloo) wrote the original MOO server in 1990; Pavel Curtis (Xerox PARC) rewrote and extended it as LambdaMOO from October 1990. Later server maintainers: Erik Ostrom, Ben Jackson and Jay Carlson, Roger Crew; forks by Todd Sundsted (Stunt), lisdude (ToastStunt) and Ryan Daum (mooR)

Paradigm Object-oriented (prototype-based, single inheritance by parent object; multiple inheritance in Stunt/ToastStunt) with C-like imperative syntax; persistent object database; cooperative multitasking with tick and time limits
Typing Dynamic, strong; values are INT, FLOAT (since 1.8.0), STR, OBJ, ERR and LIST, plus MAP, ANON and WAIF in later servers; type errors raise E_TYPE
First Appeared 1990 (first MOO server by Stephen White, 2 May 1990 according to Wikipedia; LambdaMOO by Pavel Curtis, 30 October 1990; LambdaMOO server 1.0.0 first public release 5 February 1991)
Latest Version LambdaMOO server 1.9.0alpha (29 September 2025; 1.8.4 of 23 April 2010 is the version still running LambdaMOO itself); ToastStunt 2.7.3 (20 June 2025, 2.8.0 in progress); mooR 1.0.2 (22 July 2026)

MOO - “MUD, Object-Oriented” - is both a family of text-based multi-user virtual-world servers and the programming language that lives inside them. Every room, exit, player and object in a MOO is an entry in a persistent object database; every command a player types is parsed by the server and dispatched to a verb, a small program written in MOO code and attached to an object; and any player the wizards trust can write new verbs, from inside the world, while hundreds of other people are connected. That combination - a dynamically typed, C-flavoured language with prototype-style inheritance, first-class error values and cooperative multitasking, sitting on top of a live, self-modifying database - was worked out in 1990 by Stephen White and Pavel Curtis, and it is still what runs LambdaMOO, Sindome and the Rust-based mooR in 2026.

The encyclopedia’s master list files MOO as a dormant object-oriented “virtual world” language of 1990. The year is right (White’s first server appeared in May 1990 and Curtis’s LambdaMOO on 30 October 1990). The status needs qualifying: the original LambdaMOO server went two decades without a tarball and is arguably dormant, but its lineage is not - ToastStunt had commits on 21 August 2026, LambdaMOO 1.9.0alpha appeared in September 2025, and mooR reached 1.0 in June 2026.

History and origins

Stephen White and AlphaMOO (1990)

MOO’s parent is Jim Aspnes’s TinyMUD (1989), the Carnegie Mellon server that removed combat, points and treasure from the MUD formula and made building the point of the game. In the winter of 1990 Stephen White, a computer-science student at the University of Waterloo who went by “ghond” (and “Ghondahrl”), extended TinyMUD 1.5.2 into TinyMUCK, the first of the programmable “social” MUD servers. Using TinyMUCK as his template, he then wrote a new server in which the programmability was not a bolt-on but the design: objects with properties and methods, single inheritance, and a real expression language. He called it MOO. Wikipedia gives 2 May 1990 as its release date and AlphaMOO as the world it ran; the source files of the LambdaMOO server still carry the line “Portions of this code were written by Stephen White, aka ghond.”

White went on to write CoolMUD (c. 1992), a similar but more distributed design that never gained MOO’s audience; Greg Hudson’s ColdMUD (c. 1993) and its ColdC language, later maintained by Brandon Gillespie as Genesis, are generally described as descending from MOO by way of CoolMUD.

Pavel Curtis and LambdaMOO (1990-1996)

Pavel Curtis was a programming-language researcher at Xerox PARC (he was there from 1983 to 1996, working on language design, environments and collaboration systems). He took White’s “basic design, language, and code”, fixed bugs, rewrote parts, added programming facilities and wrote documentation until, in his words, he had “a truly separate entity”. He named it LambdaMOO after his character Lambda - “and because it’s a key word in some of the other non-mud research that I do” - and opened it on 30 October 1990. The server’s ChangeLog.txt, which the current maintainer still ships, begins with “Version 1.0.0, 5 February 1991 – First public release”, and the world was announced on Usenet at about the same time. “Hundreds of players flocked to it.”

The server evolved quickly under Curtis. Version 1.4.0 (22 August 1991) “completely rewrote the MOO-code parser, unparser, and interpreter using a new program representation based on vectors of bytecodes instead of abstract syntax trees”, which let the interpreter run iteratively and save the whole state of a task - the prerequisite for the read() and suspend() functions added in the same release. Outbound network connections followed in 1.5.0 (November 1991), and version 1.7.0 (23 October 1992) brought reference-counted strings and lists, hashed property lookup, subrange assignment, the f (fertile) bit and a choice of networking implementations. The 1.8.0 cycle (alpha 29 November 1995, beta 7 February 1996, release 9 March 1996) is where the language reached its mature form: try/except/finally, the backquote catch expression, floating-point numbers (from patches by H. Peter Anvin, whom Curtis credits at length in the changelog), scattering assignment, multiple listening points and binary I/O. The copyright in the source is Xerox Corporation’s, 1992-1996, under a short permissive notice: “Use and copying of this software and preparation of derivative works based upon this software are permitted.”

Curtis was as interested in what people did with the thing as in the language. His “Mudding: Social Phenomena in Text-Based Virtual Realities” (DIAC ‘92, May 1992; PARC report CSL-92-4) is the first widely read study of MOO society. With David Nichols he built Jupiter, a PARC “network place” that grafted audio, video and shared windows onto a MOO world (“MUDs Grow Up”, 1993; “The Jupiter Audio/Video Architecture”, ACM Multimedia ‘95), and AstroVR for astronomers. After leaving PARC he co-founded PlaceWare, the web-conferencing company Microsoft bought in 2003.

Governance: the New Direction, Mr. Bungle and the ballot box

LambdaMOO is at least as famous for its politics as for its code. In a message dated 9 December 1992 Curtis, as the arch-wizard Haakon, posted “LambdaMOO Takes A New Direction” (LTAND): the wizards would henceforth refrain from making social decisions and act only as technicians. In March 1993 a player called Mr. Bungle used a “voodoo doll” object - a MOO program that attributes actions to other characters - to force sexually violent text on two other players in the living room. The community had no mechanism for dealing with it; after a mass meeting a wizard “toaded” (deleted) the character on his own authority, and that summer LambdaMOO introduced a petition-and-ballot system so that players could legislate. Julian Dibbell’s account, “A Rape in Cyberspace” (Village Voice, 21 December 1993; later part of My Tiny Life, 1998), became one of the most cited texts about online community, and Lawrence Lessig has said reading it drew him into the field. In a message dated 16 May 1996 Haakon posted “LambdaMOO Takes Another Direction”, conceding that “the line between ’technical’ and ‘social’ is not a clear one, and never can be”, and the wizards resumed responsibility. All of this happened in a world whose furniture, commands and voting machinery were written in MOO by its inhabitants.

The educational MOOs (1993-2003)

Because a MOO is programmable from inside, it was an obvious platform for online classrooms and research communities long before the web could host them. Amy Bruckman opened MediaMOO at the MIT Media Lab on 20 January 1993 as a professional space for media researchers (over 1,000 members by 1996), then built MOOSE Crossing (opened to children in October 1995, closed 2007), for which she designed MOOSE, a child-friendly language layered over MOO, and the MacMOOSE client - the subject of her 1997 MIT thesis. Jeanne McWhorter’s Diversity University (1993) was the first MOO dedicated to teaching; BioMOO (1993, Gustavo Glusman and Jaime Prilusky at the Weizmann Institute) served biologists; JaysHouseMOO (1992) produced JHCore and the first Gopher server written in MOO; BayMOO (October 1993) hosted Aerosmith’s “Cyberspace Tour” in December 1994; LinguaMOO (1995, Cynthia Haynes and Jan Rune Holmevik) spawned enCore, a core database reportedly built on the February 1997 LambdaCore with the web-based enCore Xpress interface, released in versions from 1997 to about 2003 and adopted by many humanities MOOs.

Maintainers, forks and the long pause (1997-2025)

Erik Ostrom took over the server at 1.8.0p6 (the version documented by the March 1997 Programmer’s Manual) and handed it to Ben Jackson and Jay Carlson, who released 1.8.1 on 10 January 2000 (announced 11 January) with “no significant user-visible changes” and moved the project to SourceForge. That was the last official release for over twenty years. Development continued in branches - Jackson’s WAIF datatype (August 2002), Rob Leslie’s XML parser (June 2008), a 1.8.3 tag (20 June 2008) that was never packaged, Kenny Root’s bitwise operators (February 2012) - and in the Codepoint fork, a 64-bit Unicode server by H. Peter Anvin, James Deikun, Rob Leslie and Kenny Root (final version 14 May 2011). The code running LambdaMOO itself since 2010 identifies as “1.8.3+47”; Roger Crew (“wrog”), who became maintainer around 2021, retroactively numbered it 1.8.4 (23 April 2010) and on 29 September 2025 published 1.9.0alpha, which reconciles the 1.8.4 and Codepoint lines and brings the branch features onto one autoconf-based build.

Meanwhile the forks did what the trunk could not. Todd Sundsted’s Stunt began as a multiple-inheritance patch against 1.8.1 (SourceForge patch #49, 2 April 2011) and became a full server with anonymous garbage-collected objects, a map datatype, JSON and HTTP parsing, modern hashing, task-local storage, verb calls on primitive values and a Ruby test suite (Release 8, March 2012; Release 9, January 2013; Release 10 a C++ rewrite). lisdude’s ToastStunt, forked from Stunt in 2017 for the space MOO Miriani, added SQLite, PCRE regular expressions, background threads, 64-bit integers, Argon2id, TLS, IPv6, profiling and much else, and has had steady releases from 2.0 (2017) to 2.7.3 (20 June 2025). Rob Leslie’s EtaMOO (Haskell, 2016) and Ryan Daum’s mooR (Rust, 1.0.0 on 5 June 2026) are complete reimplementations that read LambdaMOO databases.

Design and features

Everything is an object in the database

A MOO database is a numbered collection of objects - #0 is the system object, #1 the root class in LambdaCore, #-1 “nothing”. Each object has a parent (single inheritance in the classic server), children, an owner, and eight built-in properties: name, owner, location, contents, programmer, wizard, and the flags r (readable), w (writable) and f (fertile - may have children). Beyond those, objects carry arbitrary named properties (values, inherited from parents unless overridden) and verbs (code). The whole database is periodically checkpointed to disk, so the world - and every program in it - survives restarts. There is no separate source tree: the program is the database.

Names of the form $foo are shorthand for #0.foo, so a core defines $player, $room, $string_utils, $list_utils and so on as properties of the system object; the community calls this “corifying” an object.

Verbs and the command parser

A verb has a name (which may be a pattern like l*ook), a permissions string (r, w, x, d) and an argument specification of the form direct-object preposition indirect-object, e.g. this none none, any with any or none none none. When a player types put ball in box, the server tokenises the line, finds objects named “ball” and “box” in the player’s location and inventory, and searches the player, the room, the direct object and the indirect object (in that order) for a verb put whose specification matches. The verb then runs with the variables player, this, caller, verb, args, argstr, dobj, dobjstr, prep, iobj and iobjstr already bound. Verbs whose spec is this none this are not commands but methods, called from code as object:verb(args).

@verb rover:pet this none none
@program rover:pet
"Usage: pet rover -- pets Rover.";
player:tell("You pet ", this.name, ".");
this.location:announce_all_but({player}, player.name, " pets ", this.name, ".");
.

(@verb and @program are themselves verbs on $prog in LambdaCore; only .program was a server built-in, and the 1.7.0 changelog already calls it obsolete.)

Values and syntax

The classic server has six value types: integers (32-bit until 1.9.0 and Codepoint; 64-bit in ToastStunt and mooR), floats (since 1.8.0, IEEE doubles with NaN and infinity forbidden - they raise E_FLOAT), strings, object numbers, errors and lists. Errors are ordinary values - E_TYPE, E_PERM, E_PROPNF, E_VERBNF, E_RANGE, E_DIV, E_ARGS, E_QUOTA, E_INVARG and so on - which is why a property fetch can be written to return a default instead of throwing. Lists are written {1, "two", #3}, spliced with @, and indexed from 1 with $ for the last element; strings index the same way. Syntax is C-like but statement-terminated by keywords rather than braces:

count = 0;
for thing in (this.contents)
  if (is_player(thing) && !thing.wizard)
    count = count + 1;
  endif
endfor
for i in [1..count]
  player:tell(tostr(i), " of ", count);
endfor

Stunt added a map type (["key" -> value]), anonymous objects, multiple parents (parents(), chparents()), and verb calls on primitives; ToastStunt carries and extends Ben Jackson’s 2002 WAIFs (lightweight objects that inherit from a parent but have no object number); mooR adds booleans, symbols, lambdas, list comprehensions, begin/end lexical scopes and flyweights.

Errors, tasks and the tick budget

Version 1.8.0 gave MOO a full exception system - try ... except e (E_DIV) ... finally ... endtry - and the terser backquote form `this.color ! E_PROPNF => "grey"', which evaluates an expression and substitutes a value if one of the listed errors is raised. Verbs run with the permissions of their owner, not the caller, and the d (debug) bit decides whether an uncaught error aborts the task with a traceback or is returned as a value.

Every command becomes a task. The server is single-threaded and cooperative: a task gets a budget of ticks (30,000 for command tasks, 15,000 for forked or suspended ones in 1.8.x) and seconds, and is killed if it exceeds either, so no player’s infinite loop can freeze the world. Code yields explicitly with suspend(n), schedules future work with fork (60) ... endfork, and waits for input with read(). ToastStunt’s background-thread extension (2017) and mooR’s transactional, multithreaded runtime (2026) are both attempts to keep this programming model while escaping the single core.

Security model

Because arbitrary players write code that runs on the server, the permission system is not optional. Objects, properties and verbs have owners and r/w/x bits; only wizards can change ownership or set the wizard and programmer flags; set_task_perms() and caller_perms() let trusted core code run on behalf of a caller; quotas limit how many objects a player may build. Most of the practical security of a MOO is in the core database rather than the server, which is one reason LambdaCore, JHCore and enCore matter as much as the server version.

Evolution

PeriodWhat changed
1990Stephen White’s MOO server (AlphaMOO); Curtis opens LambdaMOO, 30 October
1991Server 1.0.0 public release (5 February); bytecode interpreter, suspend()/read() (1.4.0); outbound networking (1.5.0)
1992Reference counting, hashed properties, fertile bit (1.7.0); “LambdaMOO Takes A New Direction”
1993MediaMOO, Diversity University, BioMOO, Jupiter; Mr. Bungle and the ballot system
1995-19961.8.0: try/except, floats, scattering assignment, multiple ports, binary I/O; MOOSE Crossing; “Takes Another Direction”
1997-2000Ostrom, then Jackson and Carlson maintain; 1.8.1 (January 2000), SourceForge; enCore
2002-2011WAIF, XML and bitwise branches; 1.8.3 tag (2008); 1.8.4 running LambdaMOO (2010); Codepoint Unicode fork (to 2011)
2011-2013Stunt: multiple inheritance, maps, anonymous objects, JSON/HTTP, crypto
2016-2019EtaMOO (Haskell); ToastStunt: SQLite, PCRE, threads, 64-bit ints, WAIFs, 2.5/2.6
2023-2026ToastStunt 2.7.x (TLS, Argon2id, IPv6); LambdaMOO 1.9.0alpha (September 2025); mooR 1.0 (June-July 2026)

The language itself has been remarkably stable: a verb written for LambdaMOO 1.8.0 in 1996 will run unchanged on ToastStunt 2.7.3 or mooR 1.0.2, and both projects treat the ability to load a 1.8.x database as a hard requirement. Almost all the evolution has been in what surrounds the language - data types, networking, threading, Unicode, persistence - rather than in its syntax.

Current relevance

In August 2026 MOO is a small but unmistakably living ecosystem:

  • Servers are maintained. ToastStunt’s docs/ChangeLog.md lists 2.7.3 (20 June 2025) and an in-progress 2.8.0, and the repository had commits on 21 August 2026. mooR released 1.0.0 on 5 June 2026 and 1.0.2 on 22 July 2026 (Debian packages and Docker images for x86_64 and aarch64). Roger Crew’s LambdaMOO 1.9.0alpha (29 September 2025) is the first new version of the original server since 2000.
  • Worlds are running. LambdaMOO itself answers at lambda.moo.mud.org:8888 on the 1.8.4 executable it has run for some fifteen years; Miriani and ChatMUD run ToastStunt; Sindome (online since 1997) reportedly does as well.
  • Tooling exists. lisdude.com collects the servers, cores (LambdaCore, JHCore, enCore, Minimal.db), the Stunt-era Programmer’s Manual, a VS Code syntax package and the WiredWizard Docker images; the sevenecks/lambda-moo-programming repository maintains an updated manual in Markdown.
  • The community is tiny. There is no package registry, no conference, no commercial user, and the educational MOOs that were its biggest constituency in the 1990s were largely abandoned once the web could do the same job with pictures.

“Dormant” is defensible for the original LambdaMOO server between 2000 and 2025; it is not an accurate description of the language.

Why it matters

MOO was the first widely used system in which a large, untrusted, geographically scattered population programmed a shared, persistent, live world from inside it - years before wikis, Second Life or the phrase “user-generated content”. Its answers to the problems that creates (verbs running with their owner’s permissions, per-task tick budgets, first-class error values, a checkpointed object database as the only source of truth) were worked out in 1990-1996 and still hold up.

It is also the substrate of an unusual amount of scholarship. Curtis’s “Mudding”, Dibbell’s “A Rape in Cyberspace”, Mnookin’s “Virtual(ly) Law”, Bruckman’s MediaMOO and MOOSE Crossing work and a shelf of composition-studies literature on LinguaMOO and enCore are all, at bottom, about what happens when a community can rewrite the rules of its own world in code. And the lineage runs on: the fact that a 1996 verb executes unchanged on a 2026 Rust server is a rare kind of longevity for a language that never had a standard, a vendor or a budget.

Further reading

Timeline

1990
Stephen White, a computer-science student at the University of Waterloo known online as 'ghond', writes TinyMUCK (a programmable extension of Jim Aspnes's TinyMUD) in the winter and then, using it as a template, a new server with a real object-oriented language inside it: MOO, 'MUD, Object-Oriented'. Wikipedia dates the first release to 2 May 1990, when it ran a world called AlphaMOO
1990
Pavel Curtis of Xerox PARC takes White's design, language and code, fixes bugs, rewrites parts of it, adds programming facilities and writes documentation, producing what he calls 'a truly separate entity'. He names it LambdaMOO - after his own character, Lambda, and 'because it's a key word in some of the other non-mud research that I do' - and opens it on 30 October 1990
1991
LambdaMOO server version 1.0.0, the 'first public release', ships on 5 February 1991, and LambdaMOO is announced on Usenet; hundreds of players arrive. Versions follow quickly: 1.4.0 (22 August 1991) 'completely rewrote the MOO-code parser, unparser, and interpreter' around bytecode vectors instead of syntax trees, which makes the interpreter iterative and so allows read() and suspend() to save a task's whole state and resume it later; 1.5.0 (3 November 1991) adds open_network_connection() for outbound networking
1992
Curtis presents 'Mudding: Social Phenomena in Text-Based Virtual Realities' at DIAC '92 in Berkeley in May (also Xerox PARC report CSL-92-4), the first widely read study of MOO social life. Version 1.7.0 (23 October 1992) adds reference counting for strings and lists, hash lookup and the 'clear' state for properties, subrange assignment, the 'f' (fertile) bit and pluggable networking implementations. In a message dated 9 December 1992 Curtis, as the wizard Haakon, posts 'LambdaMOO Takes A New Direction', handing social decisions to the players and leaving the wizards as technicians
1993
MOO leaves the games ghetto: Amy Bruckman opens MediaMOO for media researchers at the MIT Media Lab on 20 January 1993; Diversity University (Jeanne McWhorter) becomes the first MOO built for teaching; BioMOO (Gustavo Glusman and Jaime Prilusky, Weizmann Institute) serves biologists; Curtis and David Nichols present 'MUDs Grow Up' and build PARC's Jupiter and AstroVR on MOO. The same year the 'Mr. Bungle' incident on LambdaMOO (March) leads to a petition-and-ballot system (summer) and to Julian Dibbell's Village Voice article 'A Rape in Cyberspace' (21 December 1993)
1995-1996
Version 1.8.0 is the big language release: exception handling with try/except/finally and the backquote catch expression (1.8.0alpha1, 29 November 1995), floating-point numbers based on patches by H. Peter Anvin and 'scattering assignment' (1.8.0beta1, 7 February 1996), multiple listening ports and binary I/O. 1.8.0 proper is dated 9 March 1996, with patches p1-p5 through May 1996. Also in this period: Bruckman's MOOSE Crossing opens to children in October 1995, LinguaMOO (Cynthia Haynes and Jan Rune Holmevik) opens in 1995, and on 16 May 1996 Haakon posts 'LambdaMOO Takes Another Direction', conceding that the technical/social line 'is not a clear one, and never can be'
1997
Erik Ostrom becomes maintainer with 1.8.0p6, the version documented by the March 1997 edition of the LambdaMOO Programmer's Manual. Curtis leaves PARC and co-founds the web-conferencing company PlaceWare (acquired by Microsoft in 2003). The enCore educational core, reportedly built on the February 1997 LambdaCore, begins its run of releases (1997 to about 2003) and becomes the standard database for humanities MOOs
2000
Ben Jackson and Jay Carlson release LambdaMOO 1.8.1 (dated 10 January 2000 and reportedly announced on the MOO-Cows list on 11 January): 'no significant user-visible changes', many memory bugs fixed, and a move to SourceForge. It is the last official tarball for well over two decades; distributors later ship '1.8.1 plus patches' as 1.8.2
2002-2011
The server lives on in branches rather than releases: Ben Jackson's WAIF lightweight-object datatype (August 2002); a 1.8.3 tag (20 June 2008, never released as a tarball) with faster validation of large databases; Rob Leslie's XML parser (June 2008); the retroactively numbered 1.8.4 (23 April 2010), whose executable identifies itself as '1.8.3+47' and has run LambdaMOO ever since; and Codepoint, the 64-bit Unicode fork by H. Peter Anvin, James Deikun, Rob Leslie and Kenny Root, whose final version is dated 14 May 2011
2011-2013
Todd Sundsted's Stunt: a multiple-inheritance patch against 1.8.1 posted on SourceForge on 2 April 2011 grows into a full fork with anonymous garbage-collected objects, a native map datatype, JSON and HTTP parsing, SHA-256/HMAC/bcrypt, task-local storage, verb calls on primitives and a Ruby test suite. Release 8 is tagged 17 March 2012 and Release 9 on 6 January 2013; Release 10 (work in progress) is a C++ rewrite
2016-2017
Rob Leslie's EtaMOO, a multithreaded reimplementation of the 1.8.3 server in Haskell, reaches version 0.3.0.0 on 6 February 2016. lisdude forks Stunt as ToastStunt for the space MOO Miriani: '1.8.3+toastsoft_2' (2 September 2017) adds SQLite and PCRE, 2.0.4 (3 September 2017) a batch of new built-ins, and 2.2.0 (29 November 2017) a background-threading library so that slow operations no longer stall the whole server
2019-2025
ToastStunt matures through 2.5.0 (1 February 2019), 2.6.0 (17 November 2019), 2.7.0 (5 March 2023), 2.7.1 (17 September 2023), 2.7.2 (17 July 2024) and 2.7.3 (20 June 2025), with 64-bit integers, Argon2id hashing, TLS, IPv6 and profiling. Miriani and ChatMUD (founded around 2017) run on it, and the cyberpunk MOO Sindome (online since 1997) reportedly does too. Roger Crew ('wrog') takes over the original server around 2021 (the ChangeLog says only 'somewhere in 2021'), gives the long-running '1.8.3+47' executable its retroactive 1.8.4 designation in 2022, and on 29 September 2025 publishes LambdaMOO 1.9.0alpha, which finally merges the 1.8.4 and Codepoint lines and adds bitwise operators, configurable integer and float widths, WAIFs and XML on one branch
2026
Ryan Daum's mooR, a from-scratch Rust rewrite that imports LambdaMOO 1.8.x databases and adds UTF-8 strings, 64-bit integers, maps, lambdas, list comprehensions, lexical scoping, flyweights and a transactional multithreaded runtime, ships 1.0.0 on 5 June 2026 and 1.0.2 on 22 July 2026 under the AGPL-3.0. ToastStunt's 2.8.0 is in progress with commits as recent as 21 August 2026; LambdaMOO itself is still up at lambda.moo.mud.org port 8888

Notable Uses & Legacy

LambdaMOO (1990-present)

The original and longest-running MOO, opened by Pavel Curtis at Xerox PARC on 30 October 1990 and still accepting connections at lambda.moo.mud.org:8888 in 2026, run by volunteers. Its 'New Direction' experiment in player self-government (December 1992 to May 1996), the petition/ballot system, the arbitration process and the Mr. Bungle affair made it the canonical case study of online community, cited by Julian Dibbell, Jennifer Mnookin ('Virtual(ly) Law', 1996) and Lawrence Lessig; around 1994 it had roughly 10,000 registered players with over 300 connected at once

MediaMOO and MOOSE Crossing (MIT Media Lab)

Amy Bruckman built two of the most-studied MOOs: MediaMOO (opened 20 January 1993) as a professional community for media researchers, which had over 1,000 members by 1996; and MOOSE Crossing (opened to children in October 1995, closed 2007), a constructionist learning environment for 9- to 13-year-olds for which she designed the MOOSE language on top of MOO, replacing the C-like syntax with 'on pet this / tell player "You pet Rover." / end'. Her 1997 MIT PhD thesis documents the design

Educational MOOs: Diversity University, LinguaMOO, BioMOO and enCore

From 1993 the MOO server became the standard platform for text-based online classrooms and research meeting places: Diversity University (1993, Jeanne McWhorter) for general teaching; BioMOO (1993, Weizmann Institute) for biologists; LinguaMOO (1995, Cynthia Haynes and Jan Rune Holmevik) for the humanities, whose enCore database with the web-based enCore Xpress interface was released in versions from 1997 to about 2003 and adopted by many other campus MOOs; and Xerox PARC's own AstroVR for astronomers

Sindome, Miriani and the ToastStunt games

The space-combat MOO Miriani (online since 2006), the reason ToastStunt exists, and the programming-oriented social MOO ChatMUD (founded around 2017) run on ToastStunt, according to its author's own description; the cyberpunk role-playing MOO Sindome, online since 1997 at moo.sindome.org:5555, is also reported to run a ToastStunt server, though its site does not publish the version. These are among the largest live deployments of the MOO language today, with server-side code written and edited in MOO by their staff and players

Xerox PARC's Jupiter and AstroVR

Curtis and David Nichols used MOO as the scripting and object layer of Jupiter (1993-1995), a PARC 'network place' that added live audio, video and shared windows to a MOO world - the subject of 'MUDs Grow Up: Social Virtual Reality in the Real World' (1993) and 'The Jupiter Audio/Video Architecture' (ACM Multimedia '95) - and of AstroVR, a collaboration tool for astronomers. Curtis carried the idea into PlaceWare, the web-conferencing company that became Microsoft Live Meeting

Language Influence

Influenced By

TinyMUD TinyMUCK C

Influenced

CoolMUD ColdC (ColdMUD / Genesis) MOOSE

Running Today

Run examples using the official Docker image:

docker pull wiredwizard/lambdamoo:1.8.3

Example usage:

docker run -dt -v $(pwd)/moo:/home/moo -e PORT=8888 -p 8888:8888 wiredwizard/lambdamoo:1.8.3 # then: telnet localhost 8888
Last updated: