Lamson 0.9 Is Out, Find My Bugs!

I just pushed Lamson 0.9 up to PyPI for everyone to grab and break. This release features a complete redesign of the routing, state handling, templating, and a full set of very complete documentation. Everyone who was using 0.8.x series should be able to migrate to this version with some work, but it won’t be terribly painful (assuming you have unit tests).

Getting 0.9

Easiest way to install is with easy_install
straight from PyPI:

sudo easy_install lamson

There’s also instructions on installing to a virtualenv
for those who like that.

Best thing to do is read the Getting Started instructions
and when you’re done with at least the 30 second introduction you’ll have your Lamson.

Try to go through the whole document if you can and send me feedback.

Big Changes

The biggest change is that the routing mechanism and internals are totally different.
Now instead of putting all your routes into the config/settings.py as a big array,
you just put them on each state function as a decorator. To help you debug these
fancy routes there’s also a new lamson routes command that will dump them in
their final state.

The biggest impact of the new design is the old school “BlahHandler” classes are
gone. Later versions of Lamson might bring back the ability to use a class as a
handler.

After that comes the removal of depending on SQLAlchemy for state storage. You
can now write your own state storage and
store things however you need to whatever you need. There is currently a simple
storage for storing in memory and for using a Python shelve dict.

Next there was a change to how Lamson boots up and configures itself giving you
more control over what it uses, and giving your handlers better access to your
gear. This change also let’s you use better unit tests that don’t require a
running lamson server, as well as giving you the old “integration test” style
tests that hit your real server.

There’s also tentative support for PyEnchant spell checking of your templates,
and a new lamson spell command to help you use it. See the getting started
document for how to configure that, but be warned that PyEnchant is kind of a
mean install.

Finally, I switched to Jinja2 templates by default, but you can use Mako fairly easily
by altering a configuration variable in the boot.py.

Look At All The Shiny Docs

In addition to redesigning the guts of Lamson so that it’s easier to work on and use,
I also spent a lot of time cranking out good documentation so people can get started
using it. Take a look in the documentation section and have a gander
at the API documentation that is generated from the source documentation.

New Example: One-Shot-Blog

In the source distribution you can grab here there’s an example
of doing a simple blog that uses just email to manage the blogger’s posts.
The example replaces the mailing list example (for now) as it is simpler and
doesn’t use a database.

Please Break It

The 0.9 release is the result of a lot of work, but I want people to break it and
criticize it to death. The goal is to have people beat up this basic functionality,
producing a series of 0.9.x releases, and then when everything is tight doing a 1.0
release.

Thanks Everyone

I’d like to thank everyone on Twitter, Hacker News, and yes, even Reddit for
their comments both good and bad. It helped me make good decisions knowing
what people wanted, so keep the feedback coming.

Thanks also to those who donated documentation, praise, or other help directly
to the project.