Well, I've been getting back to SQLObject
development a little lately. I realized there isn't a whole lot that
needs to be done before an 0.7 release, so I'm trying to get everything ready for that.
First, I put up a new site design. It's just like the new Paste
design but with different colors. I also
added a blog where I plan to make note
of SQLObject-related stuff. Incidentally there's also a Paste blog. There's a CSS related problem that
I don't understand with wrapping on those pages; if anyone has
ideas... I'm also trying to collect links to SQLObject-related articles
and projects; comment here if you see something
that is missing.
The big change in 0.7 will be the introduction of the .sqlmeta
attribute that holds most of the metadata. This gives a formal public
interface for
introspection that has been missing for some time. I'm also starting
a more formal deprecation process; 0.7 shouldn't break 0.6 code, but
you'll start getting warnings. With a public, stable API for
introspection I hope to rebuild bits and pieces of SQLObject using
that API (and a couple other metaclass-related protocols I'll add
after 0.7). No radical rewrites, just creating new structures to replace the old,
even though they will live happily alongside the old pieces.
Besides lots of bug fixes (which were all applied by Oleg, so I haven't kept track of them at all) the
other major feature is probably the as-yet-undocumented
sqlobject-admin command-line management tool. It still has some
serious rough edges, but I think it's got a lot of potential. It
helps you create your tables, which is fine, but the more interesting
feature is how it can track the deployed versions your database schema
and apply updates.
Automatically updating a database is a Very Hard Problem. I think
sqlobject-admin tackles the problem in a good, tool-based manner,
avoiding any cleverness. You run sqlobject-admin record and it
will save the SQL of all your tables (if it's any different from the
last recorded version). If you add --edit then it creates an
upgrade file and opens it in an editor; you'll have to give the
statements for upgrading the database on your own (that's the Very
Hard Problem if you try to do it automatically), but it will show you
a diff of what's changed in this version which usually makes it
trivial to write the SQL.
Then sqlobject-admin upgrade applies any upgrading SQL scripts to
the database, based on a special table in the database that gives its
current version.
Anyway, that's what's coming in 0.7. I mostly have to fix up and
extend the documentation a bit, update the News file, fix a couple
problems with sqlobject-admin, and then release. No heroic effort
required, just some grunt work. Further news will go on that blog.
By the way, if you want to read new stuff on SQLObject then Leonard Richardson
has an article at DeveloperWorks
and I came upon this document at Canonical.