What is the best way to structure releases and iterations in Team Foundation Server (specifically Visual Studio Online) where some of the work in an iteration counts towards one release while the rest of the work counts towards another release?
Some background: I'm working with a single team that has 2 code branches: the 1st branch is for maintenance with releases every 2 weeks, the 2nd branch is for a long term "Version 2.0" project (release is in 6 months). We work in both branches in each iteration, and we all work on both maintenance and the "Version 2.0" project.
Our current iteration tree follows the \<release>\<iteration>
pattern like this:
- Backlog
- Maintenance Release 1
- Iteration 1
- Maintenance Release 2
- Iteration 2
- Maintenance Release 1
The problem occurs when some of the work in Iteration 1, for example, will not be released in Maintenance Release 1 but rather the future "Version 2.0" release.
I would like the structure to be more like this, at least conceptually:
- Backlog
- Maintenance Release 1
- Iteration 1
- Maintenance Release 2
- Iteration 2
- Version 2.0 Release
- Iteration 1
- Iteration 2
- Maintenance Release 1
What I've considered trying: Restructuring our team to have maintenance-only and "Version 2.0"-only developers is not an option. Breaking down our iterations to be maintenance-only and "Version 2.0"-only is not realistic (we need quick turn-around on maintenance, so that work needs to be in every iteration). Planning 2 concurrent iterations seems like overkill. I would rather the tool conform to our reality than conform our team to the tool's limitations.