Rethinking Toolbars in Visual Studio (or any IDE)

March 16, 2011

Count the Arrows on the Toolbar

Toolbars are kind of ridiculous. You start off with row after row of cryptic icons which mean almost nothing to you. Even after years of using a program you've probably only ever used half of them, and have no clear idea what the other half do, and probably don't need them anyway. Not to mention that it's so hard to come up with meaningful icons that most of them end up just being an arrow of some kind.

To (supposedly) overcome these kinds of problems Microsoft invented the 'ribbon,' but it hasn't made its way into Visual Studio yet. I think a different solution could be better:

Toolbars could work the same way as the taskbar does in Windows 7:

It would start out empty.

Clean. Beautiful. This is far preferable to today's approach: starting out full of clutter.

Thereafter, when you run a command (by selecting it from a menu option, for example), it would show up on the toolbar (in the same way that running an application in Windows 7 show up on the taskbar.

After that you would be able to right click it and choose to 'pin it' in place, so it stays.

There would need to be some difference in the behaviour, since commands and tasks don't work the same way as each other. Tasks are long running things, so an unpinned icon (in Windows 7) stays visible only so long as the task stays running. Commands are short running things, so if we followd the model exactly they would flicker onto the toolbar and then almost immediately dissappear before we have a chance to pin them. So instead the toolbar could show a 'rolling history' of (say) the ten or twenty most recently used commands. Or perhaps it would show all the commands used during this session. Or use a simple forumla to show commands that are used recently and or most often (similar to the way voting works at sites like reddit).

And you would be able to simply drag to rearrange the items on the toolbar, just like you can on the windows 7 taskbar.

I think this is better than a ribbon.

Some refinements of this idea are:

1. You might have a setting to say "Don't add a command to the toolbar if i've invoked it via a keyboard shortcut." Since you know the shortcut, you're unlikely to need the icon.

2. Some icons should only appear when you're editing certain types of files. The 'jumplist' for a given icon could let you quickly apply this kind of conditional showing/hiding.

3. Your toolbar settings could be exported, synchronised across computers (via dropbox) or shared with friends. They would be human readable.

4. It would be crucial to have an effective way to search for commands. This is true of the ribbon as well. (this part was well covered by Jeff Atwood in 2007).

See also: Rico Mariani discussing the future of Visual Studio (from 2008). He's no ribbon fan.

And a beta-tester of my blog tells me Hanselman has been covering similar territory in the last few days. That VS UI has just got to lighten up!

My book "Choose Your First Product" is available now.

It gives you 4 easy steps to find and validate a humble product idea.

Learn more.