Since I’m dog fooding SetupAssistant it has been sort of slowly growing on me. It also is half broken half the time. This is mostly due to the fact I’m still supporting tons of Windows XP machines, and this is where it gets the most use and that’s where everything just works. But since Vista and Win7 are different animals from XP, a lot of the features (or should I say “launchers”) I add don’t work on these systems just because this or that command has changed. At least not until I sit down, and test these things on my Vista machine. I did exactly that prior to uploading it to the website. So the current version (0.5) ought to work on just about anything.
Well, with one exception. The Quick Info tool, which uses WMI to collect hardware information bugs out on certain machines. I would have fixed it a long time ago, but I just can’t seem to replicate the issue on any computer that I own. I only saw it die on 2 or 3 random machines I was working on. So I don’t have reliable environment to debug it. Does that feature work on your machine?
Anyways, here is how the new version looks:
As you can see the width of the window shrunk by about half and the damn thing grew tabs. This is a slight departure from my original idea of a single window with useful buttons all in one place but it had to be done. One day I was working on an older machine and I realized that the Setup Assistant window did not fit on my screen. The resolution was simply too low. I could have said “screw it” but seeing how I’m the primary user of the tool, having it work semi-reliably on older machines with shitty resolution was important. Also, I wanted to keep adding buttons to it, but that would mean making the window even bigger, or resizing all the existing buttons. So I made a tabbed interface. I briefly considered scroll bars, but I decided that I would hate it. So now we have tabs, and plenty of space at the cost of convenience and simplicity.
The problem with this setup is that as I keep adding new buttons and commands, I need to find place for them. It means adding new tabs, breaking the features into groups and organizing them according to function. The more I do this, the more more complex it is to navigate, and particular features harder and harder. This basically brings me back to the same problem that I was trying to solve in the first place.
This is actually a fairly interesting UI design problem: if your app needs to do 100 things, how do you expose these things to the user without having a crazy-cluttered interface. The simplistic answer of course is not to make an app that does 100 things. Make 100 apps that do one thing and let the user pick and choose one he likes. This is Unix philosophy, and most of the time this is solid advice. It does help to create robust systems but giving the user a directory full of exacutables is not necessarily a user friendly thing to do. Instead of having one app with million buttons, the user now has a truck full of smaller apps, which are only marginally easier to search through. Eventually you will still need a way of categorizing and organizing these tools in some logical way, and then you get back to the initial problem of having a complex user interface.
I guess the only logical way of dealing with this endless loop is making your application context sensitive. Display only the features that make sense in a given context. Or if your application is a catch all tool like SetupAssistant, instead of listing all the features, use search. Do something like this:
Naturally, this is just a basic mock-up. The idea is to allow the user to type queries, and then populate the application box with tools and links as he types. Of course the problem with search based tools like this one is that the user needs to know what he is looking for. You can use the Start Menu search box in the same way – if you want to run device manager, you just start typing “devmgmt.msc” and before you finish, a shortcut for it will pop up. So our tool would have to be smarter than that.
That said, I’m not planning to implement it yet. Maybe at some point in the future I will toy with this idea, but for now SetupAssistant is still not at the point where it would need search based interface.
So anyways, go grab the new version from here.