SVK is a distributed version control system with a special feature: it can mirror trees of other version control systems (including SVN) and then define working copies on them. You can mirror a Subversion repository of a project, create your own local branch, work in it, and version the changes locally. When your own branch is ready, you can make a commit against the original repository, or simply pull a diff and send it to the developer. Very nice thing, especially because of the good integration with Subversion.