How do you help the user decide?

Filed in HCI & Usability | Open Source 1 Comment

One thing that I often debate with developers is why the error message  “An unexpected error has occurred.” isn’t a good message. Afterall, to the developer, the error *is* unexpected; otherwise, they’d have created a better error message for it.

From the user’s perspective (who the software is written for, after all), they don’t want to know that the error was not expected by the people who wrote the code. The user wants to know that the software (especially when it’s important to their job/finances/life) is in control and knows *exactly* what’s going to happen when you press a certain button. The user has to be able to trust the software and trust that the developer(s) of that software knew what they were doing when they wrote it.

So it gets difficult for the developer/designer when they have to make a call that potentially risks breaking that trust. For instance, supposing you (as a developer) were to provide a new feature that is really beneficial to the target user but there is a small risk that something will go wrong in a big way for that user if they try to use that feature. As developer, what do you do?

Typically, I’d predict, you would make the feature optional so that you aren’t forcing the user to use a feature that could potentially (however unlikely) cause them serious problems. If the user does try to use the feature, you provide scary warnings of what could occur in certain circumstances. Hopefully, that will put them off unless they really know what they’re doing.

Okay, that’s the developer’s perspective. And it’s entirely understandable and even laudable that the developer is doing what they can to keep the user safe.

So, switch now to the user’s perspective. The target user is computer literate but had no knowledge of the development of this feature or who developed it. This user could benefit greatly from this new feature but when they attempt to use it, they get a scary warning message which, as intended, makes them think twice about whether to use the feature or not.

Now what does the user decide? Granted, risk is all about weighing up the costs and benefits, and to one person the relative benefit will outweigh the possible cost. To make a decision, however, a person needs as much information as they can possibly get. In this case, the only (and therefore critical) information is provided by the developer; that is, how informative and/or scary the warning message is.

If the developer provides a lot of information that makes the feature look useful, the user might just choose to use it. But if the developer makes the warning message as scary as possible, the user will probably opt not to use it.

The developer wants users to use the new feature because they’ve made the effort to develop it and it really could benefit many users. The developer, however, doesn’t (understandably) want the responsibility of trashing someone else’s laptop in some way. So the result is that the developer pushes that responsibility off on to the user, when in fact the developer has far more information available to help them make that decision than the user has.

If you’re the user, though, how are you supposed to make that call?

For example…

Computer Janitor is a utility that was introduced in Ubuntu Intrepid (I think) so that you could run it to clean up old kernels that are no longer needed, and other bits and pieces of packages that are no longer used. When I first tried to use it, I raised this bug, which, it turned out, had this duplicate.

Essentially, CJ could potentially remove packages that you might need. So when you try to use it tries to scare you into deciding whether you really really want to risk it. I raised the bug because the scary words don’t actually help you decide – in that, if you aren’t easily scared by such things, the scary message only determines how scared you are – not how well-informed you are to make a decision…and isn’t going to help when you break your computer.

What would maybe be more helpful is if CJ used a stricter set of criteria when selecting which files to remove. In this case, CJ might leave on your system  some files or packages that could be removed, instead of the reverse where it might incorrectly remove files or packages you need. The former is surely the preferably outcome for the majority of users (who would rather have a few unneeded files on their machine than a broken machine).

It would also be possible then, for the minority of users who really really know what they’re doing, to selectively delete the files that probably can be removed but CJ isn’t certain about. In this case, users are only presented with a decision to make if they actually seek it out but the majority of users are still able to benefit from the safer (if slightly less effective) behaviour. In fact, it would be better overall if CJ ran automatically during an Ubuntu upgrade so that the user really doesn’t have to care about it (unless they really really want to).

This is not intended as a dig at Computer Janitor as I think it’s a useful feature in general and I’m kindof surprised that this kind of clean-up wasn’t being done already whenever you do an upgrade of Ubuntu. Also, I think the bugs I’ve linked to above have caused a bit of a headache for the developers.

This issue of forcing users to make ill-informed decisions is a very common occurrence throughout software development and is certainly not specific to Ubuntu; it’s just that Ubuntu is a public development effort and provides examples that are relatively easy to explain. :) So please don’t be offended if you are part of the development teams for either Computer Janitor or Ubuntu!

So, if you, as developer/designer, find that you’re having to give scary messages to make a user *really* decide if they want to continue, consider stepping back from it, thinking about the possible decisions the user could make and what the consequences of those decisions are. Even talk to some of your target users and find out what decisions they’d make. Just because you can successfully scare them off doesn’t make it a successful feature – if the feature is potentially useful to the user, they should be able to safely use it (no matter what level of fear you instill in them). Then look at the bigger picture, think about it in a different way, and see if the decision can be made for the user, or the decision can even be removed altogether.

I’m sure that it’s not as easy as it might sound. And it’s not always easy to recognise situations like this. I’m hoping, though, that, having thought this through while writing this post, I’ll actually remember it in future the next time a similar issue occurs for me.

Post to Twitter Post to Facebook Post to LinkedIn


Come to LugRadio Live 2009, then OggCamp!

Filed in Open Source Leave a comment

The LugRadio Live 2009 website is now available – register now for a ticket if you’re coming!

That’s on Saturday 24th October.

On Sunday 25th October (that’s the very next day!), you can roll out of bed and into OggCamp (if you’re staying at the LRL official hotel, the Connaught),.


OggCamp is brought to you by a joint collaboration of the Ubuntu UK Podcast and Linux Outlaws teams.

So come and join us for the last ever LugRadio Live followed by lots of barcamp fun!

Post to Twitter Post to Facebook Post to LinkedIn

, , ,

Come to OggCamp! An unconference from UUPC and Linux Outlaws podcasts

Filed in Open Source Leave a comment


OggCamp will happen in Wolverhampton on Sunday 25th October.

Why Wolverhampton? Well that’s where LugRadio Live 2009 (@lugradio) will happen too. On Saturday 24th October. See what we did? :)

So, the Ubuntu-UK Podcast (@uupc) and Linux Outlaws (@linuxoutlaws) podcast teams will be at LRL on the Saturday (and probably the Friday night as well) so we figured we may as well stick around on the Sunday too and organise an unconference where you can drop in to nurse your hangovers, see everyone again, and see some more talks, demos, or whatever.

As it’s an unconference, we won’t publish a full schedule beforehand (if you have an interesting presentation, just turn up on the day and if enough people are interested, you can give it) but both podcasts are likely to record some material during the day (one with swearing and one without ;) ).

I will post more information as we know it. For instance, we should be able to announce the venue any day now…

Post to Twitter Post to Facebook Post to LinkedIn

, , , ,

Updating NVIDIA graphics drivers with Ubuntu kernel updates

Filed in Open Source 3 Comments

I’ve tagged this post as a ‘BitOfAWhinge’ because…it is. But bear with me; it’s got some random praise in it too.

I run Ubuntu Hardy on my Thinkpad T61p but (as I mentioned in a previous post) I use the proprietary NVIDIA graphics drivers so that I can have a decent resolution and use Desktop Effects. This works fine most of the time. Unfortunately, however, most times that I install updates that include kernel updates, the NVIDIA graphics modules become incompatible with the new kernel.

I guess that, were I running them, the Ubuntu graphics driver would be upgraded along with the kernel and this wouldn’t be a problem. As it is, though, after installing the kernel updates and rebooting, X (the graphics environment) takes some effort to load (on the computer’s part – not sure quite what it’s doing but it seems to be straining a little) before loading into a low, non-widescreen, resolution (bit like Windows safe mode). It also seems to revert to US keyboard settings so that certain non-alphnumeric keys are in the wrong place – awkward when entering a password that might contain them.

From there, I have to re-run EnvyNG (the nifty little app that goes away and installs the appropriate NVIDIA graphics drivers – or, in this case, probably just recompiles the modules or something), then reboot. And then everything’s fine. Today was about the third time this has happened. It’s not a major problem now that I know how to fix it but it is irritating and slow. The first time it happened it was quite concerning until I realised that running EnvyNG would fix it all.

So not very user-friendly. Better would be if the kernel update would recognise that there are other modules that are now incompatible (at this point you might be able to tell that I don’t really know how it works but that’s not the point) and, after installing but before rebooting, prompts the user that you’ll need to update them too (ideally with ‘and how to do that’).

VMWare have now cottoned on to this (yes, another proprietory app). Usually after a kernel update, you click VMWare Workstation to start and it just doesn’t do anything (again, rather concerning; if you know how to run it from the command line, you at least get a message that tells you to re-run the VMWare config script). Today, however, I got a little message pop-up saying that I needed to update the modules (or something like that) and I could press a button to do just that. It did it all for me and just worked.

So, some random praise for both EnvyNG and VMWare for making things easy to update. Minus points to Ubuntu Update Manager for not at least warning me that that would be necessary. I understand that by using proprietary software on Ubuntu, Ubuntu probably can’t (or shouldn’t) be held responsible for updating it, but it would be nice to be warned that I would need to run the updates myself.

Okay, not the most riveting blog post in the world but a start on my quest to have software developers (all developers; not just Ubuntu or even just open source) think a little and put in what might seem (to them) like niceties but which make all the difference to the user’s experience. Afterall, it’s for the user that this software exists at all.

Post to Twitter Post to Facebook Post to LinkedIn

, ,

And I didn’t even have to edit xorg.conf! (Part 1: Desktop Effects)

Filed in Open Source 5 Comments

Of course, just the thought of manually editing xorg.conf in this day and age shouldn’t even have crossed my mind. Especially on Ubuntu. But (as my Twitter followers might have observed) I recently acquired a new Lenovo Thinkpad at work–specifically, a T61p widescreen Thinkpad which, unfortunately, has an NVIDIA graphics card (really really bad open source support under Linux because NVIDIA won’t open up their drivers). NVIDIA, however, do provide proprietary Linux drivers which are far far better than the ATI drivers of my previous Thinkpad T41p (under either Linux or Windows).

Fortunately, while not a freedom-hater, I’m not averse to using proprietary drivers if I can’t make my laptop work any other way. And as this is my work machine, I need it to Just Work (or as close to as I can). So I installed EnvyNG (envyng-core, envyng-gtk) and ran that to install the proprietary NVIDIA graphics drivers. Incidentally, enabling the NVIDIA proprietary drivers listed in System > Administration > Hardware Drivers screwed up my graphics – I assume the drivers that Ubuntu thinks are right for my graphics card aren’t actually the right ones. EnvyNG, however, got it spot on–the widescreen display resolution (1920×1200) was automatically detected and worked straight off.

Ubuntu Desktop Effects (aka compiz)

This works pretty well. I had to look up how to enable, for example, the rotating cube (which is the ultimate desktop bling) which seemed to me to be a pretty bad Out of Box Experience (OoBE) – before installing Ubuntu on the Thinkpad, I’d booted once into Vista to check that the memory I’d installed was detected. In my brief visit, I noticed that things like the pretty semi-transparent sidebar and thought it’d be nice if Ubuntu did that without any effort on the user’s part (though, to be fair, someone else had installed Vista and, presumably, ensured it worked before shipping the Thinkpad – it would be possible to do the same for a pre-installed Ubuntu machine).

Rotating cube

Rotating cube

My general opinion of the Desktop Effects is that while the effects themselves are amazing and a real step-up for Linux desktops, the Advanced Desktop Effects Manager, where you enable/disable the effects you want, is not incredibly easy to use. It’s often not clear what a given effect will do if you enable it. Nor is it clear what all the many many options for each effect will achieve. Really, we need a much simpler interface that has advanced options hidden away – something I’ll take a look at at some point…

The effects that I’ve enabled for now, and found useful/interesting/pointless-but-fun are:

Effect Name Description How to enable
Desktop Cube Places each of your desktops on the side of a 3D cube. See this very useful blog post about enabling the rotating cube
Rotate Cube You can rotate the 3D cube in a very funky way. See this very useful blog post about enabling the rotating cube
Scale Apparently similar to Mac OS X – you can set up so that when you move your mouse pointer to an area of the screen (eg top-right corner), all the open application windows are displayed on-screen as thumbnails. Scale > Bindings > Initiate Window Picker for All Windows then click the top-right corner of the little graphic to specify where you want the mouse point to trigger the effect.
Show Desktop I configure it so that when I move my mouse pointer to the bottom-left corner of the screen, all visible windows minimise; repeat mouse movement to get them back. Enable it. Then General Options > General > Show Desktop then click the bottom-left corner of the little graphic to specify where you want the mouse pointer to trigger the effect.
Water Effect You can drag your mouse pointer around with CTRL+Windows key to make a water effect – at least, that’s what I think is the result of enabling that effect. Just enable it.
Reflection When you CTRL+ALT+Down, and all the desktops line up for you, you get a reflection of each desktop underneath. Just enable it.
Cube Reflection I think you just get a reflection of the cube while it’s rotating. Just enable it.
3D Windows When you rotate the cube, each window is arranged on its z-axis so that they stand away from the surface of the cube. Just enable it.

By the way, Wobbly Windows are enabled by default. If you’re interested in knowing more about how Wobbly Windows came to be, here’s an interview with Red Hat’s Senior Interaction Designer (in 2005), Seth Nickell (PDF).

Enabling an external projector/monitor

Coming soon (as soon as I get round to taking some screenshots)…

Post to Twitter Post to Facebook Post to LinkedIn

, ,