We are developing an integrated version control system for a large enterprise application. When users change something to the underlying data in the system they do so through a "Work Item"
This is implemented a lot like a version control system for code: when a user starts working on a work item we branch off the underlying data to isolate those changes from the main system. After the user is finished those changes need to be merged back into the main system.
This work item can get tricky with synchronization and committing changes. I'm concerned about what mental model the users may build up about work items and how to present the idea of merge conflicts or failing tests that kicked off automatically in the background on a commit.
Does anyone know of examples of version control systems aimed at non-programmers that abstracts the details away and yet provides the flexibility and robustness ?
Or do you know something about mental models for version control systems?
The key to introducing version control into an interface is to make it as transparent as possible. I'd hide terms like "branching" and "merging" from the interface, as these terms aren't really important to the user - version control supports their task of making changes, so creating a transparent version control interfaces would be my top concern.
Also, this may require taking a look at the broader issue - why is version control required? Is this something that can be solved in architecture? It sounds like you're isolating changesets to avoid deadlocks, which is an indicator that the data architecture isn't optimally designed. I'd evaluate that first before introducing another layer in version control that may complicate the process.
The best example I have is the built-in file versioning built into OS X Lion.
The version tracking happens completely transparently as Nic mentioned in his answer, and they provide an interface based on their previous tool Time Machine for browsing historical versions:
The most important thing about this solution though (that is technically very difficult to achieve), and one of the main things that make version control systems a pain is showing the user visually the state of the file in different versions.
Code versioning systems like Subversion and Git are based on line-by-line file "diffs", which aren't very appropriate at all for documents and other visual media. By showing users a fully interactive demo of the file at each version, Apple's solution makes it easy for even a novice user to select the appropriate version.