Clearance deals on TurboGears DVD, MarbleGears, etc.

It’s time to clear out my warehouse space for some projects that I am starting up. I have slashed the prices on the TurboGears Ultimate DVD and the nifty TurboGears merchandise (the MarbleGears marble maze, the tin toolbox and the squishy, stress-reliever toolboxes).

The DVD, with more than 5 hours of material, is now under $10 while supplies last.

TurboGears 2: a reinvention and back to its roots

Mark Ramm has just posted a glimpse of The Future of TurboGears. I wanted to post a little of my perspective and a historical view.

This past weekend, Jonathan LaCour, Mark Ramm, Rick Copeland, Noah Gift, and Mike Schinkel sprinted on TurboGears 2 (along with a bit of coding-from-starbucks-while-on-vacationby Alberto). TurboGears 2 is at once a reinvention of TurboGears and a return to TG’s roots. My original TurboGears 0.5 release was just a few hundred lines of Python code that built upon thousands of lines of other libraries. As people flocked to TG and added new, high-level features, it swelled to about 20,000 lines (and brought in even more third-party code).

TG is a project that is built upon a foundation of reuse and building up. In retrospect, much of the code that was home grown in the TurboGears project should have been released as independent projects that integrate with TurboGears. This would have allowed better growth of those pieces.

Alberto and I have talked about this a bit along the way. And there were lots of interesting discussions at PyCon this year about how Pylons and TurboGears have similar philosophies, though we disagree about some of the details (Hi, Ben!). The details that we disagree on are important and user-facing, but are actually not a big deal when it comes to the framework code. We can share an awful lot of code.

Just days ago, Mark Ramm and Jonathan LaCour (both at Optio) had the realization that TurboGears should just go ahead and make the switch. When Mark told me about the idea, I thought it made perfect sense. TurboGears 2 will go back to what TG originally was: a powerful package of best-of-breed tools. TG2 is once again a tiny core, getting features from a variety of other packages.

A lot of the groundwork for this had been set in place prior to the new TG2 sprint. Alberto’s ToscaWidgets reimplemented the TurboGears widgets API. Babel provides an internationalization package with features similar to, but more extensive than, TurboGears’. Various authentication and authorization systems have been worked on, though I don’t believe one has been chosen yet for TurboGears 2.

I’m really excited about TurboGears 2 and the significant activity that is going on in the project right now. After some months of deciding what TurboGears 2 would look like, we now have an answer that will get us to release in short order and fine form. *And* we have a good path set up for the TurboGears project to build new high- level tools as independent (and hopefully usable by others!) projects.

Of course, there are details to work out, docs to write, some tools to build, etc. But I, for one, am quite happy and thankful to the folks who have pitched in to put TG2 on this path. Thanks to all who have worked on Pylons, Paste, Genshi, SQLAlchemy (and Mako when speed is critical), Beaker (and MyghtyUtils, without which there would be no Beaker), all of the template engine plugins, setuptools, the still- quite-cool RuleDispatch, Babel, CherryPy, and, of course, TurboGears.

TurboGears 1.0.2 released!

Congrats to the TurboGears team for the new 1.0.2.2 release (see the full changelog). Though this release is a minor version number bump, it comes with a couple of nice, new features: Python 2.5 support and localizable errors messages in FormEncode. Special thanks for the Pyrex folks and Phillip Eby (author of RuleDispatch, among many other things) for making the Python 2.5 support possible.

There are, of course, a number of other changes and fixes from quite a few people (and the project has gained some new committers in the past few weeks). And kudos, of course, to Alberto for keeping the project moving forward.

Merging TurboGears and Pylons?

Mark Ramm goes into a bit of detail over the recent speculation of Merging TurboGears and Pylons? I had a comment about this on the Pylons mailing list as well. Those of us using Python to develop webapps have a great variety of tools to work with.

It’s worth noting that I (and many others) like the style/feel of TurboGears apps (which is to say CherryPy-style dispatch by default and Genshi templates). Though TurboGears and Pylons currently share a good bit of code and will undoubtedly share more, it’s the style/feel thing that represents the difference between the two frameworks that may not resolve itself. (Of course, TG apps will be able to use Routes+Mako if desired, and Pylons apps can use CherryPy/RhubarbTart+Genshi if desired… those just won’t be out of the box defaults…)

Announcing TGWebServices 1.0

I’m pleased to announce the first release of TGWebServices, a multiprotocol web services toolkit for TurboGears. TGWebServices hooks up straightforward Python methods in an easily consumed API supporting SOAP, HTTP+XML and HTTP+JSON. “Easily consumed” means that it works well even with statically typed languages.

Thanks to Arbor Networks for letting me release this work. (p.s. we’re hiring!). Thanks also to WebFaction for hosting the TGWebServices project.

Introducing the DisplayShelf widget

This afternoon, at CodeMash, James Ward and I took over an open spaces table, got some extra displays set up and hacked up a TurboGears widget wrapper for Ely Greenfield’s Display Shelf Flex component. The Display Shelf gives you the effect that Apple created in iTunes 7 with the cover art view. Now, in TurboGears, you can display your own photos the same way trivially. Just call the widget with a Python list of image URLs, and you’ve got your shelf!

This was completely unrehearsed live coding, and it went surprisingly well. The widget itself is far simpler than Ely’s Flex component, so Ely really deserves the credit for how cool a widget this is. This was a good chance for me to learn a bit more about Flex and the Flex Ajax Bridge. James got to learn about making TurboGears widgets. Some screencasts might come out of what we did there, and I’ll link to them if they pop up.

In the meantime, you can easy_install DisplayShelf to get the widget, or go to the DisplayShelf Cheeseshop page to get the source.