Spindle

Spindle is a project started by Setok, or Kristoffer Lawson, to build an MVC style web framework using XOTcl as the OO language. The main motivation was a good deal of experience with Django and with a strong desire to rethink many of the choices made there with something simpler, yet more powerful.

Spindle is still in alpha development, but it works. It is available from github: http://github.com/Setok/Spindle

A slideset is available: http://www.slideshare.net/Setok/slides-5016710

The main features of Spindle are:

  • MVC pattern, although not overly strict.
  • Complete separation between controllers and views. They can be changed independently of one another. Theoretically you could build a desktop application with the same controller. This means easy unit testing and leads to good coding practises.
  • Widget model leading to code reuse as the same widgets can be used in multiple pages with different data sources.
  • Templates based around the TML idea. In other words, templates are scripts themselves, evaluated with subst, and with certain alterations to the core Tcl commands (e.g. the body foreach is substed and appended on each iteration).
  • Dead simple Form object model, with support for dynamically added form elements (as might happen with Javascript).
  • Does not have a built in ORM, and storage is left up to the developer to resolve as they please. I've been experimenting with Storm to do that.
  • Built on top of the XOTcl Httpd. No separate web server required and can be embedded into applications. It should not be too difficult to apply the basic model to Apache or other web servers.