Here's a suggested starting point -> identify required CVS functionality; replacement must show equivalent functionality - commit - branch - tag - merge - vendor branch (I'm really skeptical towards that one) - ? -> identify new functionality, not present in CVS - atomic commits A look around: - subversion lacks atomic commits (or order guarantee), branches and tags (not first class) - git, and presumably, mercurial, cover the remainder -- Le mieux est le mortel ennemi du bien