What's All This, Then?

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:

  • a persistent, NoSQL object database with a simple JSON API
  • an server-side MVC framework with support for HTML5 features like pushState
  • a client-side RAI framework based on Backbone.js
  • an environment for securely executing untrusted code
  • a simple, embedded programming language
  • integrated package management

Recently Updated Pages

Documentation TOC Dec 27 2013

Table of contents.

Mettle Dec 27 2013

Mettle is a unit and behavioral testing framework.

Plastic Package Aug 25 2013

The pluggable, flexible, extensible MOOcode parser/compiler framework.

Plastic Syntax Aug 25 2013

Details on plastic syntax

Start Scripts May 13 2013

Specify start scripts when starting the Stunt server.

Table of contents

Recently Contributed Packages

toddsundsted mettle_tests (0.0.2) Dec 27 2013

Mettle is a unit and behavioral testing framework. These are its tests.

toddsundsted mettle (0.0.2) Dec 27 2013

Mettle is a unit and behavioral testing framework.

toddsundsted mettle_tests (0.0.1) Dec 27 2013

toddsundsted mettle (0.0.1) Dec 27 2013

toddsundsted dialog_extras (0.0.7) Aug 11 2013

The Dialog Extras package contains objects that extend Dialog: file server, db object server, upgrade protocol handler, and logger.

All packages

Recent Snaps

toddsundsted MOOCode, Plastic Feb 11 2013

toddsundsted

toddsundsted MOOCode, Original Feb 11 2013

toddsundsted

toddsundsted Test Snap Feb 11 2013

toddsundsted

Play with code

Build and Run it Locally

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

Try it on Heroku

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:

  • Changes to the database are not persisted. I may eventually address this by providing transparent serialization to/from back-end cloud storage.

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.

Contact

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