title: Options for handling a frequently changing data form
body: <p>What are some possible designs to deal with frequently changing data forms?</p>
  
  <p>I have a basic CRUD web application where the main data entry form changes yearly. So each record should be tied to a specific version of the form. This requirement is kind of new, so the existing application was not built with this in mind.</p>
  
  <p>I'm looking for different ways of handling this, hoping to avoid future technical debt. Here are some options I've come up with:</p>
  
  <ul>
  <li>Create a new object, UI and set of tables for each version. This is obviously the most naive approach.</li>
  <li>Keep adding all the fields to the same object and DB tables, but show/hide them based on the form version. This will become a mess after a few changes.</li>
  <li>Build form definitions, then dynamically build the UI and store the data as some dictionary like format (e.g. JSON/XML or maybe an document oriented database) I think this is going to be too complex for the scope of this app, especially for the UI.</li>
  </ul>
  
  <p>What other possibilities are there? Does anyone have experience doing this? I'm looking for some design patterns to help deal with the complexity.</p>