Draft aims to be a simple continuous integration system.

Design goals:
- Requires Python 2.6
- No external packages
- Simple setup using wsgi
- Configuration is a python module
- No seperate process to run builds, everything happens via forks from one 
- Build framework not included.  Draft simply runs a shell command.  If the
  command has a non zero exit code, then the build is considered failed. stdout
  and stderr are saved for each build.
- No web interface required. Use the command line interface if that's all you 
- History of each build is kept on the filesystem in a directory, easily 
  introspected by hand or programatically

Possible future goals:
- A beautiful web interface
- Sending email on failure
- Assocaite build artifacts with the build such as code coverage reports
- Documentation
- Notifications to build are send via an http POST, in json format or via a
  command line call

- Scale to large numbers of builds
- Builds on remote machines.  Use ssh if you must.
- Require a web interface
- Require more than typing in build commands to configure

Draft requires a python module for configuration.  Draft looks in
DRAFT_SETTINGS environment variable for a module name, then the
default of 'settings'.  Note the module must be in your python path.

The settings module has one required parameter, 'builds' a list of
dictionaries containing keys 'name' and 'command'.  See

There's an optional STATUS_DIR, a path to a draft-writeable directory
which will be created if it doesn't exist.  Defaults to './var'.