How not to help your users

If a user asks for something, it's probably because they want it.

In fact, if a user actually asks you, with their mouths or their keyboards, then you should be grateful: especially if they ask nicely. Most users won't say anything: they'll plod along, fightig against your software's behaviour, until the cost in time eventually far outweighs the benefits. Then they'll move on, and you'll never know. That user has gone, and similar users like them are about to take their leave too: if only you'd known; if only they'd said something; you could have spent time listening to them---maybe accommodating them, maybe negotiating with them---but at the very least letting them inform their future design.

Open-source projects, for all their community spirit, can be really quite awful to their less technically savvy user base. As an example, here's a paraphrasing of a thread regarding a minor user annoyance with the Psi jabber client:

A: something's happening with your software that didn't happen in a previous version. It's a bit annoying, but I know from its past behaviour that it doesn't have to be this way, and I can't see any strict requirement for it. How do I turn it off? I clearly love your sofftware and want to help you with this useability problem.

B: this is by design. Why are you asking this question?

A: OK, so it's default behaviour. But how do I switch it off?

C: what you as a user experienced as good useability in a previous version is actually what we consider a bug, so we've excised it. I'm not going to tell you how to switch it off. If you want to get rid of it, you have to do something that you'd never guess from any error reporting or prompting, and something that you don't strictly by any specification have to do. And every other user has to do this too. Either that or develop modal dialog fatigue: I don't care.

A: I don't think this would suit all users. How do I switch it off?

D: Hey! I'm a random other user, and I'd like to switch it off too. So that means there's a user base out there that doesn't like this product's behaviour. We've got critical mass! Great, huh? OK, let's go!

C: Well, I'm still not going to suggest it be fixed, even though I'm tacitly acknowledging that this behaviour is annoying and people don't want it. But here's a way of working around it by doing some obscure bit of programming on the Jabber server. If you aren't the person in charge of jabber.org, tough luck, you prole.

C: moreover, if users don't behave in exactly the same way I behave and I expect them to behave then they can all go and boil their stupid heads.

E: I hate users that don't behave like me too! I can't believe we're having this discussion! I have some vague and hard to justify moral investment in making everyone behave like me, so I'm going to pretend nobody else wants it to change either, and ridicule those who do. As far as I'm concerned software is built to change how people who use it behave, until they're more like me, and I don't care who it annoys. How hard can it be for every single person using this software to work around how the software works?

D: Probably harder than one programmer making the software work around how users currently behave. Can we not even make it an option? Wouldn't that satisfy everyone involved?

E: right, that's it. Consider my toys thrown out of the pram. I find your real-world user behaviour pathetic. Come back to this community when you're more like me.

I've used a lot of hyperbole there compared to what's actually written down, but... there's a sort of zeal that runs through the naysaying comments on that thread. And why not: they're putting the users of the Jabber client doubly to rights. Not only are they making them behave properly when they use Jabber, but they're making them think properly on the forums too!

It's only one example, of course; but it's a microcosm of a much greater problem. Open-source software projects begin because people scratch their own itches; to continue and be of widespread use, they have to scratch other people's itches too.