Usability matters
At work, I spend a lot of time talking about usability, and often find that people think I’m just talking about the aesthetics of a particular application. Usability is much more than that. At its essence, it’s a way to ensure that a product is really solving the needs of its intended users, in an efficient, intuitive and easy to learn way. But the word says it all, “is the product usable?”.
wget is a very useful GNU utility used to retrieve files in various protocols, you can use it to retrieve the main page of a site (ex: wget cnn.com), “copy” a whole site to a local directory (ex: wget -r pjprimer.com), or download files contained in links or ftp sites. Because it’s a command line tool, you often wouldn’t associate ease of use with it, since most users prefer graphical versions of these tools. wGetGUI (see screenshot above) is a graphical version of wget. On its website it’s described as “The easy to use Graphical User Interface (GUI) for the powerful webgrabber wGet“. There is nothing easy or intuitive about this GUI, in fact, it’s a good example of what happens when you build a user interface without having usability in mind. I feel bad criticizing an open source product like this, but it shows something that happens a lot, programmers building graphical user interfaces that are not only ugly but just not usable. The first thing that a user will notice when launching this program, is the large amount of buttons, check boxes and text fields available. The common problem here is the temptation to visually represent every option in a dialog. We could organize these into tabs, menus, or a preferences dialog, but that wouldn’t really solve the problem. The approach here is to go back to basics; “Who are the users?”, “What are they trying to do?”. For this application, you usually just want to download a link, or copy a whole website to a local folder. The type of user who needs this functionality is most likely technically savvy, but that doesn’t mean that we should throw all options into a window. Note that wGetGUI, has a “minimal” version of the interface, which you can intuitively access by hitting a button with a “-” label. The minimal version is not much of an improvement, with buttons labeled “Start wGetStart.bat”, which are hard to associate with any download function. The irony is that the non-graphical version is more usable. Compare the first screenshot to this one:

The only “hard” part about this interface is the use of switches (options). In this case “-r” which stands for “recursive” and allows you to download the whole contents of the site (doesn’t work on all sites, btw). For the switches, like most command line tools, if you use the “-h” switch (or “–help”) you’ll get a list of all the options available with short descriptions. This type of interface is a bit alien to a lot of Windows users, but once a person becomes familiar with the basic mechanics of their command line shell, you can see how typing “wget -r pjprimer.com” is just much easier than going thru the pain of launching something like wGetGUI. Now I don’t give the impression that I’m advocating ditching graphical interfaces, not at all. I just wanted to point out that many times people think that because a tool has a GUI associated with it, the graphical version should be easier to use by definition. That’s only true if the GUI is well designed, and it’s built with usability in mind.
Filed under: Software Development, User Interface on February 20th, 2007


I really like this design. You didn’t cite where you got your definition of the typical user, but there are a lot of us who need more than just wget -r (or more likely, wget -np -r). When I run wget, I need to keep the manual page open in another window to keep track of all the switches, and this saves me that effort. It even covers a few of the things that are too well-hidden, like ignoring robots.txt (really, there are valid reasons to do so).
The author did a good job of avoiding the temptation to put every option in a dialog, which you’ll see by checking the wget man page. I think the ones chosen are the sensible and common options that a user would want beyond -np -r, while the more obscure ones are omitted. In fact, one of my favorite switches, to identify as Googlebot, is missing.
The layout generally makes sense to me, but then, I’ve used wget before, so I’m not interested in ease of _initial_ use, but in ease of use. It’s not pretty or inviting, but I think it solves its need admirably.