I haven’t written to the blog in a while. Quite frankly, I’ve been busy. In the last 30 days, I have released 3 software new packages, updated 1, deprecated 1, participated in a sprint that lasted a virtual 2 weeks, closed countless tickets, and pushed forward TG2 functionality.
TG2b4 was released last Saturday. This was mostly a bug-fix release, but b3 is where the new functionality really came into the scene. TG2b3 is the first build to include Sprox, a new library for schema-generated widget generation. Sprox is the offspring of DBSprockets. I decided I liked the declarative part of DBSprockets so much I wanted to spin it off as it’s own entity. Sprox looses DBSprocket’s table-based dependency, utilizing the mapping provided by SQLAlchemy. I realized that much of DBSprocket’s code was doing precisely what SQLSoup was designed to do, and decided to focus my efforts on making and extremely configurable widget base. The result was a considerable removal of the cruft that was associated with DBSprockets. Sprox releases with an excellent documentation base provided by Sphinx.
There has been a bit of resistance to Sprox, people were/are confused/upset about my providing yet more options for schema based widget generation. The fact is I have yet to find anything that performs as well as Sprox from a developer/speed standpoint, and I needed to provide our TurboGears user base with a better way to administrate their site, and also allow them to use that tool component-wise in their system. I think this method for developing widgets is well done in other frameworks, and we need a solid answer to this problem. Sprox is just that.
The next step was to re-work Catwalk to use Sprox. This took a little effort, and I put in RESTful URLs while I was at it, but struggled with making the URLs work within TG2’s dispatch system. The result was as close to REST as you can get without conforming to a set standard.
The result of hacking REST into Catwalk got me thinking, and I decided to implement content-type dispatch as well as RESTful dipatch in TG2. I went back for another round on Catwalk, and converted it over to the standard.
I’ve also been toying around with Dojo at NREL. I’m pretty much done with ExtJS due to licensing issues, a not-so-hot codebase, and weak support from IRC. It’s bad when you go on to ask a question on the channel as a 6 month-user of a software project and end up spending all your time answering everyone else’s questions (as the most experienced person in the room). Something must be said for an organization that does not push paid consulting as a primary focus on their website… #dojo has been an exceptional resource for getting my work done. Those guys know their software, and lend a great hand to help you with it.
Back to the topic at hand… I was able to shoe-horn Dojo into Sprox with little effort, and implemented DojoCatwalk, which worked, but was ultimately not what I wanted. What I really wanted was configurability. I started work on tgext.admin, which was supposed to provide enough functionality to replace tgcrud, a command to auto-create crud in your own TG application. To support tgext.admin, I created a new package called tgext.crud, which provided a CrudRestController, which is a simple way of providing crud for any object in your model. AdminController combines this functionality with that of Mark’s lookup code to provide a fast, configurable set of tables/forms/etc for all objects in your model. AdminController takes a declarative AdminConfig as input which provides a consistent way to create your administrative toolset. Did I mention it does Dojo tables with ajax loading? Yeah.
I’m not done with this binge yet. Catwalk is going to mutate one more time before I’m through with it. It is going to become a default-configured AdminController specifically designed to work within the context of a quickstarted TG2 application. I had one blocker ticket which was solved last weekend, so it’s time to get Catwalk good and finished.

I spent last weekend in Sunnyvale, CA at the GSoC mentor summit.  This was a great opportunity to rub elbows with a number of experts in various OSS projects.  It was great to make connections with people in and out of the Python community.  First off, I just want to thank Google, and Leslie Hawthorne for having us. Google was an excellent host, and I would jump at the chance to attend a Google-hosted event again.  Google is using GSoC to promote the open source community.  By providing funding for students to work for a summer on software instead of flipping burgers, they hope to save the world, one open source project at a time.  I have my own take on what Google’s true intentions are, but I don’t really want to discuss that in this blog entry.  That is to say, I don’t think Google’s intentions are in any way evil, but they are definitely self-serving.  In any event, it is remarkable the amount of time, energy, and money that goes into this project, which is at this time one of a kind.  Here’s hoping that other companies will consider the not-so-small buy in for sponsorship which could lead to even more OSS development.  Â
Mark and I will be attendingÂ
come up to speed on the state of the art, and see if I could find some folks to collaborate with on the Scientific Data Management front.  I was not only surprised by the number of people in attendance, but also by the progress being made in forefront of Plone development.
One of the more interesting things I have started to use with some frequency is Sphinx. Sphinx is a documentation system whichallows you to create webpages (among other things) with .rst files. It also grabs directly from your modules and inserts your docstrings (including your doctests.) It is great to have code which is not only documented, but also tested using nose. Look for a screencast from me in the near future on this one.
TG2 is actually nearing it’s second alpha release. I think This is the best release yet. I spent some time moving DBSprockets to pep-8 compliance, and the two things TG2 depends on (tg.ext.silverplate and tgcrud) are now both using the newest release of DBSprockets. I also released 

Now that I am back from vacation/new project hell, I have been able to release a new module for TurboGears, tg.ext.silverplate, which is a plugin for TG2 providing User Management and Profile pages which are customizable. This all fits under the TGTools domain, which has become a home for tg.ext.repoze.who (Authentication for TG2) and tg.ext.geo (An upcoming library for Geographical support in TG2). If you get a chance, you might want to check out the new