User Experience Stack Exchange is a question and answer site for user experience researchers and experts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
Dropbox does this quite nice I would say. I would look there for inspiration. – Alvin Jun 5 '12 at 13:04

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.

share|improve this answer

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:

OS X Lion version browser

Image taken from

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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.