As of this release, I feel confident in saying that VCI is no longer "alpha-quality software", and it should be pretty much ready for prime-time production use.
There are some important API changes in this release, most notably that the "moved" accessor of a Commit now contains objects instead of strings. (See the Changes file for details.)
VCI now differentiates between "revision numbers" and "revision identifiers" for Commits, where the first one is a human-readable number for a commit, and the latter is a unique string identifying the Commit. As part of this change, the "revision" accessor for a Commit in the Bzr driver now returns a revision ID instead of a revision number.
There are a few other nice new features and improvements, too!
For the next major release, I'd like to implement a "parents" accessor for Commits, that gives you all of a Commit's "parent commits". In centralized VCSes like CVS and Subversion, this is just the commit that came immediately before this one. But in decentralized VCSes like Git, Mercurial, and Bazaar, one commit could have multiple "parents", some of which might not be accessible via the normal revision history otherwise.
After that, there might be some performance improvements to be made, but I'll feel that the read-only side of VCI is pretty much done. Then comes support for working directories and the ability to commit to a repository!
Right now what I'm thinking is that you'll get a WorkingDirectory object via a call to
VCI->wd(type => 'Foo', path => 'path/to/something'). This may involve some re-working of how the internals of VCI.pm work. Also, I'm going to make it possible to call "checkout" on a Project, providing a path, and create a WorkingDirectory that way.