Short term:

- Alzabo::ObjectCache::RDBMS - this module will also do syncing
  all in one.  This will allow the caching/syncing to occur across
  multiple machines with multiple processes.

- Expand regression tests for core API - SQLMaker, RDBMSRules.

- Make it possible to do multiple outer joins in a single query.

- Give the options to save objects to disk in something a bit more
  robust than a serialized object form.  Barrie Slaymaker is (was?)
  working on a generic XML language for database schema modelling, to
  be called DBML.

- Support transactions in the caching system.  this eventually means
  real transactions at the middleware layer.  argh!

- Make local $table->{prefetch} work (tied scalar).  I'm no longer
  sure this is possible.  My most recent attempt caused inexplicable
  test failures.

Medium term:

- Add constraints to output SQL for Postgres.

- Make a tool to convert schemas from one RDBMS to another.  This will
  probably require user prompting because some things are unresolvable
  without a loss of information.

- Add an Alzabo::Database class between the schema and table.  This
  will allow multiple databases in a schema (on multiple platforms
  ideally) and allow you to do joins between these databases.  This
  probably raises all sorts of horrid caching and transactional issues
  I haven't yet thought of.

- Attempt to guess relationships when reverse engineering a schema
  without foreign key information.

- Support any and all SQL, of arbitrary complexity.  This is actually
  a decent part of the way there already.

- Rewrite data browser to not suck so much

- Expand data browser to be configurable between sessions (for
  example, to use textarea fields for certain things)

- Help text for all interfaces (some of it should be shared since the
  basic ideas are the same)

- More drivers & rules (Oracle, Sybase, Interbase, Solid, and so on)

- Overhaul foreign key objects so that one relation has one such
  object, shared by two tables.

- Non-Mason interface(s) (curses, plain CGI)

Long term:

- GUI (preferably both UNIX & Win32 so Tk?)

Ongoing:

- Support 'feature probing' via the rules for user interface and to
  determine whether to try to do things (like use transactions).  This
  is a broad idea and includes things such as returning a list of
  possible column types to the user interface or having a flag for
  supporting transactions.

- Robin Berjon suggested a single documentation 'page' that contains a
  list of all the method and what objects they apply to.  This exists
  as Alzabo::QuickRef.
