Jason and I spent a full eight days in Chicago this year, with a full slate of activities. While we didn't commit to SQLAlchemy sprints ahead of time (and were therefore not officially rostered), we sprinted the entire time on SA and had picked up two or three folks to sprint with us, as well as helped with some "parallel" SQLAlchemy-related sprints - next year we'll definitely plan ahead of time so that people can get involved sooner and more explicitly.
Pycon started off for SA with a big full day of tutorials, with the work split up among myself, Jason, and Jonathan Ellis. Jonathan did his beginner tutorial, Jason and I did the advanced. The huge winner for this tutorial was the slide runner we came up with ("we" means, I wrote a little 20 line header to page through a Python script one chunk at a time, Jason ran 100 miles further with the idea to turn it into a full blown interactive Python prompt). Using the runner, everyone in the room could keep hitting "enter" and each chunk of code on the projector would come out on their screen and execute itself, leaving them at a Python prompt where they could further explore the constructs that were just created. Some people just sat back and watched the code go by, others dug in and answered our exercise questions with it.
Next up was my "SQLAlchemy 0.4 and Beyond" talk where my goal was to bring people up to speed on where we're at right now, including where we came from, some of the problems we had, and what we've done about them, then segueing into some deeper examples from the current release and into some of the more interesting projects that are underway.
Onto the sprints. By the time they started, we had already met with various people and attended a few BOFs as well. Here's a rundown of everything going on:
- Jython - Frank Wierzbicki, recently hired by Sun to work full time on Jython, had presented his Jython integration of SQLAlchemy. Frank and I could not share the same goals more closely; both coming from an "enterprisey" Java background, we are well aware that there's a vast world of Java developers who would flock to Python if a Java-compatible yet Pythonic toolset were available, particularly including an ORM with features comparable to Hibernate. Jason and Frank met up during the sprints to align their architectural paths, as Jason has been working very hard on a full-blown multi-dialect architecture, which will allow the maximum amount of reuse of dialects among any number of DBAPI connectors. An example is to use the same MySQL compiler with MySQLDB, JDBC, and pyODBC. Stub modules which account for the idiosyncrasies of each DBAPI would draw upon the central MySQL functionality. So with a little more effort that's underway, SQLAlchemy should work fully out of the box on Jython trunk in the very near future.
- Django - yup, a lot went on with Django and SQLAlchemy this year. We met with a whole room full of Djangoers who've expressed the ongoing desire for Django to have a tighter integration layer with SQLAlchemy available as an option. Michael Trier spearheaded the effort, showing us some of the work he and his team had already completed with their own django-sqlalchemy layer. We sat down and shared a lot of notes and ideas, including using the new SQLAlchemy "Declarative" plugin as a guide for developing their own solution, as well as some strategies for best integrating SQLAlchemy connection/transaction management with Django's own transaction middleware. We had an initial mini-sprint during an earlier BOF and then we communicated throughout the main sprints. Jason has hinted he might give Django a try on an upcoming project which would give us a great chance to give it a test spin and fine tune it.
- Zope - I was thrilled to spend pretty much the entire sprint alongside Christian Theune, a very experienced developer from whom I sought to learn as much as possible. His company already uses a SQLAlchemy/Zope integrated application, and he was very interested in the new custom instrumentation branch, which was started to enable Philip Eby to integrate SQLAlchemy with Trellis. Christian worked through the branch, which presents an entirely open-ended way to redefine how SQLAlchemy classes are instrumented (or not), to make it such that all access to the mapped class and its instances, including SQLA's own private attributes, may be mediated through external code, thus allowing his application to use Zope security proxies to broker access to all end-user instances and classes. At the same time, Christian is also interested in full session rollback capability, something we were already starting to implement, so we're also finally getting deep into letting SA rollback the internal state of its Session in a clean way, so that rollbacks within transactions or SAVEPOINTs will leave you with a session that remains fully usable without needing to expire its contents. The comprehensive rollback feature will appear as an option sometime within the 0.4 series and be on by default in 0.5.
- Pylons/Turbogears - This is of course our main stomping ground. SQLA sprints took place in the same room as the Pylons TG sprint and there was much beer and margaritas consumed. Chris Perkins of DBSprokets fame has signed on with myself and Mark Ramm to make some progress on the Prentice Hall SQLAlchemy book....but for the impatient there will already be an Oreilly book available in June.
All in all Pycon was fantastic (I missed the controversial lightning talks), the crowd was great (and much bigger), and I got to meet a whole lot of fans..particularly Chris McAvoy who's probably the most old school - he was one of the very first Myghty users. Don't weep for Myghty though, if you use Pylons with Mako, they're both direct descendants.