Designing usable software

One of the fundamental needs when designing usable software is to know your user. If you don't know your user, then you don't know what you should be building -- you can only make educated guesses.

Commercial software companies employ numerous methods to understand their users and their needs. They run focus groups, conduct surveys, run user studies, look at marketing data, instrument their software to collect information about how the software is used... There are many methods to understand users' needs, but they all hinge on collecting data.

Usability in the Open Source Community

For volunteer-driven open source projects, real-world user data is much harder to come by -- there simply aren't easy ways to collect data about how users use the software in practice. To be sure, there are some avenues for collecting this data: Bug tracking software, mailing lists, and forums all provide outlets for users to describe usability problems and to indicate desired features. But only a tiny fraction of actual users take the time to contribute via these channels. As a result, information about how the community regularly uses the software is generally unknown for all open source projects.

Enter ingimp and StatsJam

ingimp is an instrumented version of the GIMP designed to gather usage data, or data characterizing how the software is used on a day-to-day basis, by real-world users. ingimp is not a plug-in, but a complete, standalone application that looks and operates just like the regular version of GIMP, except that it logs how you use the software. Among other things, ingimp logs the commands you use, characteristics of your documents (number of layers, image width/height, etc.), and activity tags -- short descriptions that you can provide to describe how you will use the software. When the application quits, the usage data is automatically sent to this website.