Stunt is a set of extensions to the LambdaMOO server and Improvise is an associated framework that uses those extensions.
Stunt+Improvise is well suited to building immersive, collaborative, Web-based applications—specifically, applications where every user is a programmer.
Together, Stunt+Improvise comprise:
Table of contents.
Specify start scripts when starting the Stunt server.
$int_proto defines the verbs that can be called on integers.
$str_proto defines the verbs that can be called on strings.
Documentation for the System Object ($system, AKA #0).
The primitive package comprises prototype objects for LambdaMOO primitive data-types, utility operations on primitives, and objects for basic functional-style programming.
Ask implements queries based on relational algebra.
Plastic is the MOOcode parser toolkit. It comprises an extended MOOcode language parser and compiler, and is compatible with the Stunt verb language extension mechanism.
The primitive package comprises prototype objects for LambdaMOO primitive data-types, utility operations on primitives, and objects for basic functional-style programming.
The Core package contains objects that work with and/or extend the Kernel package.
toddsundsted
toddsundsted
toddsundsted
If you can build the LambdaMOO server and run LambdaCore (or similar legacy database) you shouldn't have any problems compiling and running Stunt+Improvise. I have personally had success with both Linux and OSX.
Fork/clone the Stunt repository and the Improvise repository.
git clone git@github.com:toddsundsted/stunt.git git clone git@github.com:toddsundsted/improvise.git
Build the Stunt server:
cd stunt ./configure make cd ..
In order to connect to a brand-new database you need to define bootstrap passkeys for the two default players. The default players and the passkeys should only be used in a trusted development environment. The passkeys are set via environment variables. The Wizard player has full access to the database and server.
export Stunt_Passkey_Wizard=<passkey> export Stunt_Passkey_Programmer=<passkey>
Run the Stunt server on the Improvise database. The server will start listening for telnet connections on port 7777 and web (HTTP) connections on port 8888.
cd improvise ../stunt/moo Improvise.db Improvise.db.new
In your browser, connect to the running server (http://localhost:8888/) and enter the appropriate player's passkey credentials and press "Connect". You will drop into a web-based console from which you can explore the server.
If you like, you can also connect via telnet:
telnet localhost 7777
Note: Heroku support is proof-of-concept and is currently only suitable for trying out Stunt+Improvise without the hassle of building your own server—it is otherwise not ready for prime-time.
Specific caveats:
This brief tutorial assumes you have a credible working knowledge of both Git and Heroku.
Fork/clone the Improvise repository.
git clone git@github.com:toddsundsted/improvise.git cd improvise
Create a Heroku app and specify the Stunt buildpack:
heroku create <appname> --buildpack https://github.com/toddsundsted/heroku-buildpack-stunt
Add Heroku as a remote:
heroku git:remote -a <appname>
In order to connect to a brand-new database you need to define bootstrap passkeys for the two default players. The default players and the passkeys should only be used in a trusted development environment. In Heroku, the passkeys are set via config variables. The Wizard player has full access to the database and server.
heroku config:set Stunt_Passkey_Wizard=<passkey> heroku config:set Stunt_Passkey_Programmer=<passkey>
Commit changes to git and push to Heroku:
git push heroku master
Open in the browser:
heroku open
Enter the appropriate player's passkey credentials and press "Connect". You will drop into a web-based console from which you can explore the server.
The GitHub source:
The LambdaMOO Programmer's Manual:
Note: The current release of Stunt+Improvise is for hackers only—the new code is reasonably well covered by tests and I use it extensively in my own projects... but consider yourself warned.
I'm available via the MOO-talk Google Group. Post questions and comments there.
Todd Sundsted