In a previous post, I briefly mentioned the back and forward buttons. Today I want to talk a bit more in depth about the issues we had in adding this common and seemingly simple concept to Microsoft Test and Lab Manager. Although the general behavior of back and forward does what one wants, it may not make sense in some specific scenarios.
Note: To understand this better, it is worth reading two other posts about Manage Queries since I cover some of the implications of artifacts/managers, Open Items, and relaunching views.
The back and forward paradigm is most recognizable from web browsers. I’m not 100% sure, but I think that is where the notion was first created. In the very least, that is where it became popular. From there, many applications have integrated the concept. Users demand it! If my mouse back button doesn’t do anything in an application that could support it, I get down right cranky! :)
Well it took some arguing, but we eventually got it added to MTLM, and you’ll see it in Beta 2. Most of the arguing has to do with how it would be implemented correctly. A browser is a very different beast than MTLM. Other applications I could find that supported back and forward also had significant differences in their navigation model that it was hard to find a good example to follow. We wouldn’t want to reinvent the wheel if we didn’t have to, mostly because then the behavior wouldn’t be intuitive.
The primary difference between a browser and MTLM in terms of back/forward buttons is that when you go back in a browser, the view you just left is no longer in memory. If you go forward, the browser may load the content from the cache or get a new copy from the server, but either way it will re-render the content. Any prior settings or state you had are probably lost. For instance, if you started writing some text into a field, then went back then forward, your text will probably be gone. The same is not true in MTLM. Each view is kept in memory until you close it.
So why does that matter? Well, if you go back in the navigation history a bit, and then open a new view you will orphan the former forward items. You’ve lost them from a back/forward navigation point of view. With MTLM we don’t want to lose views out of the back/forward navigation. They are still running taking up memory. You may want to get back to one of the items (e.g. a bug you opened up), having to go through all the steps you previously took to find it feels like a terrible waste of time. You could get back to it from Open Items, but only if it is an artifact. You could also get back to it by closing down every other views until the orphaned items began showing, but that is pretty destructive of your workspace.
So we resorted to inserting new views in the current position. Here is a sample walk through where a bold item is the current view:
What might seem really weird to many people is that in step 4 the forward button is still enabled and if you go forward you’ll bring the Run Tests view to the foreground. That is an experience you won’t find in the browser. However, you also won’t get the benefit of step 7 either, which is convenient.
Engineering Lead, MTLM