User Interface Layers
I've always wanted a development environment that would let me create user interface in layers, just like you create a composite graphic in photoshop. Kind of. Read on.
This is purely a feature to benefit the end user. Too often when I am using a program for the first time, I just want to figure out the basics first, then gradually learn about the powerful features that the software has lurking under the covers.
The problem is the UI to access ALL the features is always enabled by default. This can be completely overwhleming and be a real barrier to my productivity. You can imagine an audio recording program coming up with a Record button and a Play button only. Once I'm convinced that the program actually works, I can go to the next level, where I get basic editing toolbar buttons and menu options. I can keep increasing this level as I get familiar with the features of the program, and it doesn't seem like I have to know everything all at once, which is usually the case.
You could see how this approach would be benefit new users of Visual Studio itself! Or even (dare I say) Office!
Here is an example of an application that uses these levels.
It's a simple text editor. This is the beginner screen. The File menu lets the user open and save a file.

If you click the button, you get the “pro“ UI, which gives you access to an Options screen, and counts the number of characters as you type, displaying it in the status bar - OK, it's lame but it's the idea that's important here.

Finally, if you click the button again, you get the Expert UI, which includes the daunting toolbar, and lots of other features - not shown :-)

The trick is how do you make this stuff easy to develop? It's a chore to do all this UI enabling/disabling manually with code. See for yourself - click here to download the source to this program (VB.NET 2003)
So here's my idea for how this can work in VS.NET
Imagine that - when designing a form in Visual Studio.NET - the current form's tab in the tab strip (across the top where you select the document to edit) lets you add “layers” which you can navigate with sub-tabs like so:

So...
You start designing layer 1. Build the UI for the basic fundamental features. Not overwhelming the user with options, and directing them to the most critical feature or features.
Then, right-click, add a layer, and now you can add more UI for the next level of complexity. You get all of the UI in the previous layers, and it's all on the same form. I'm not talking about transparent layers, but different “levels“ of UI. Think of it as setting the Visible property of the desired controls on and off (to simplify to the extreme).
In other words, when you're editing the UI for layer 3, you have access to ALL the controls and ui. When you click on layer 2, all of the things you added in layer 3 disappear!
I imagine the code to switch between the layers would be something like this:
Me.UILayer.Increment
or
Me.UILayer += 1
or
Me.UILayer = 2
Now you have a rapid application development tool for building a layered user interface with no more difficulty than it takes to build the entire interface in one layer. There is no downside to the developer, and there is a serious benefit to the end user, and by extention, the developer's company makes the most useable software in its class.
Thoughts?