Background

For modern version control systems (VCS),
the VC
package that ships with Emacs is insufficient. It has a
file-centric view that does not match the tree-centric model of
modern VCSs (hacks
like vc-arch.el
and vc-git.el
notwithstanding). Also, it is too generic to take advantage of
features that are specific to each VCS.

DVC is the successor of and
includes Xtla, which is
an Emacs front-end to GNU Arch (tla and baz). Xtla supports both
tla and baz, and uses a simple "autoconf" mechanism to adapt
itself to different versions of tla and baz (e.g., call "merge" if
available, "star-merge" otherwise). However, Xtla is specific to
GNU Arch and can not easily support other VCSs like bzr,
Mercurial, Git, etc.

DVC remedies this by providing VCS-independent infrastructure
and defining a common interface to be implemented by VCS-specific
back-ends.

DVC supersedes Xtla. There is no new feature plan in Xtla
after the release of Xtla 1.2.

The user can use the common UI layer as well as the back-end
specific parts directly.

Draft Roadmap

The roadmap currently looks like this:

Create dvc-xxx.el files (initially empty)
while (! satisfied) {
See what has to be done to implement feature X in VCS Y
See what code can be reused from Xtla to do this
Based upon this, create a generic API in DVC
Port the Xtla code to this API
Implement the feature X in other back-ends
}

We should avoid introducing quick and dirty hacks in DVC as
much as possible. Try to get a correct foundation before
implementing features in the back-ends.