UsageMonitor - A New Tool for Usability

One thing that recent dicussions about usability have highlighted is how much our decisions are currently based on personal opinions rather than hard facts. Aaron has recently been trying to address this by asking people how much they use the various buttons in the konqueror toolbar, but this is both labour intensive and inaccurate. So, I've written the 'Usage Monitor' plugin.

The Usage Monitor is a KParts plugin that records a log message whenever a KAction is fired. The log simply notes the action that was activated and how it was done - eg. was it via the toolbar, a menu or a keyboard shortcut. By analysing this log it is possible to measure which parts of an applications GUI are being used, and which are not. If a reasonable users can provide sample data using this tool, then we can build up an acurate picture of things we could previously on guess at.

The plugin itself is tiny at around 150 lines of code, and works with any application that supports KPart plugins (which covers most KDE apps these days). No modifications are needed to the application itself, and you don't need to tweak the monitor for your app either. The code is a good example of the power of the XMLGUI framework as it shows how easy it makes creating tools that can apply throughout KDE. In this case, it even lets you track the use of actions provided by plugins and embeded kparts as well as the main application.

Here is a sample log recorded from Konqueror:

konqueror: Monitor:     reload  toolbutton_reload       KToolBarButton
konqueror: Monitor:     home    toolbutton_home KToolBarButton
konqueror: Monitor:     back    unnamed KToolBarButton
konqueror: Monitor:     newtab  unnamed QSignal
konqueror: Monitor:     quit    unnamed KAccelPrivate

As you can see, I was driving the app mainly through the toolbar. The newtab action was fired from the menubar, and I quit using the keyboard shortcut. In order to get decent use of these logs, they would obviously need to be recorded over a longer period of time but at least now we have a tool with which this can be done!

The code can be found in kdenonbeta/usagemonitor - users and people wanting to hack on it are welcome.


i've been playing with this today, and it's pretty cool. notes:

in konqi, you have to select Tools -> Usage Monitor for it to work
i find it useful to do something like: konqueror 2>&1 | grep Monitor
if you compile with -NDEBUG, it won't work as it relies on kdDebug(). this may change shortly in CVS though =)

By Aaron J. Seigo at Fri, 03/12/2004 - 20:54

The log is now written to the file usage_appname in the current directory so you no longer need to have debugging info and there is also a nifty script to let you run it against any app. The README reflects the latest code.

By Richard Moore at Fri, 03/12/2004 - 22:46

How about letting the usage monitor run all the time and propose the user to send the collected data once a week. It would be for example a kicker applet, which, when running, logs the user kaction usage. Of course, the application would contain the necessary disclaimers: this is only for information purpose, you can check the content of the files being sent. The application would have to be downloaded and started explicitely by the user, experssing this way its consent and willingness to see tha data be collected.

I would be willing to use such a tool to help the usability people. Many developers would be too. It would finally help us to support claims such as 'this feature is not used'.

For me, this tool would be relevant to any application and the log could even be used upfront to check if the options of an applications are never used.

By pfremy at Mon, 03/15/2004 - 14:31

This could be used for auto-ui adjustment beyond "recent docs" & "recent apps". MS start menu and MS Office's menu bars auto-hide least used options, but (for me) it feels confusing and cumbersome when these change.

But perhaps a "favorite actions" pallette could be auto-created in the universal sidebar, or as a menu in individual apps, with the most-used repeatable actions and an easy way to setup universal keyboard shortcuts for those actions.

By jammmjammm at Mon, 03/15/2004 - 20:28