title: What are some general strategies for versioning Web Apps for the end user?
body: <p>I'm writing a web app and am wondering about future upgrades and how upgrading the webapp will affect the user experience.</p>
  
  <p>In particular, I was wondering how a company like Google approaches this problem.  For example, I have seen several examples where a particular google app will ask the user if they want to upgrade to 'the new google docs', or similar.  This is the experience I would like to provide, but I'm not sure how to go about it.  If it matter, I'm writing an app that uses backbone.js and has a heavy JS client side component.  I have seen several discussions talking about versioning the REST component or the WebServices component, but none that discuss the actual client-side code or backend components (of course, the backend may not matter much if it is all behind a versioned webservice)</p>
  
  <p>I'm interested in how they achieve this, from an application standpoint and from a (presumably) backend DB standpoint.</p>
  
  <p>So it seems like there are several issues.  </p>
  
  <ul>
  <li>Where in the web root do the versioned applications live  </li>
  <li>How do you serve multiple versions to different users  </li>
  <li>How do you version the backend datastore  </li>
  <li>Since I'm using backbone, I am particularly interested in to design the router for this type of app.  If the various versions live in a subdir, how do I create a proper router?</li>
  </ul>
  
  <p>There are probably some other considerations as well.</p>