Dec 142005
 

I didn’t mean to engage in the flamage about the printer dialog or usability design issues with Gtk+’s new file chooser, but i do feel that a few things should be pointed out in this context nonetheless. In particular, I’d like to respond to Dave Neary (bolsh), quote: “Linus is irrelevant”. There’s an important thing to note here: Linus opinion on GNOME is relevant!
For a single very important reason: Linus is a GNOME user.
Every GNOME user counts. Without exception. Yes, i mean it.
This is the reason we care about accessibility even though it focusses on a user group that can be regarded a minority by sheer usage figures. If you start to make decision only for an assumed “majority of users”, you are going the wrong path with a probability so high you may as well call it a guarantee.

Firstly, programmers are notoriously bad at assuming what the “majority of users” want, and often even what that “majority” is. As Linus put it: “the _vast_ majority of people are part of a specific minority when it comes to something”. As a result, it’s often very hard to tell what your users want or even who they are. The only cure from that is listening to your users, their requests and – if required – poll feedback. If you think these are exclusive programmer problems, think again. Without a specific case study at hand, guesses by usability experts usually aren’t any better. And marketing experts face the same problems, they also need to figure who their (possible) users (customers) are and what they could (possibly) want. The main difference between marketing people, usability experts and programmers is that the former two groups actually make evaluations and studies, they test or ask users and try to find out about their needs and expectations. They do the “feedback polling” just mentioned. (If your project allows for feedback polling to be carried out as a proper usability study, that is always better than just asking the user what he thinks he might need.)

Secondly, disregarding any group of users by marking them as irrelevant is a guarantee for bad perception. There is no way around this, you have – by definition – just made sure that some users are going to be dissatisfied and feel mistreated. Now think about your own reaction when you feel that way. Do you shut up? Do you engage in improving the particular project? Do you try to work out a consensus with someone attempting hard at ignoring you?

Thirdly, disregarding any user needs is not the logical thing to do from an impetus perspective. For that, think of the user request as a force towards a specific direction. Arguing against the request can be viewed as a resistance to the force. As a programmer or project leader, you’re in control of that resistor. If you’re clever, you try to direct that force to work for you, e.g. “We could integrate feature XXX if we had a patch that integrated it according to specification XXX-spec.” The force may be not big enough to be utilized, i.e. the user walks away; fine, without knowing a person really well, you couldn’t have told its strength in advance anyway. Or it might be big enough, you get your patch (maybe from the user directly or maybe by him hiring someone to do the work, etc), you work out the details and you can integrate it into the project. In the end, everyone wins that way (I’ll get to why this doesn’t need to worsen usability).

Alternatively, you can be ***not-so-clever***: You could argue that the feature will never be integrated, for whatever reason, and stand by that point. That is effectively putting the resistor antipodal to the force. Be assured, it’ll hurt both sides no matter how polite you are since this situation strives for conflict maximization.
To be fair, this is a simplification to some extend, sometimes the user simply needs to be told the proper way to achieve something or be kindly reminded of the manual. I have faith in the ambitious reader to tell this difference though 😉

As an interesting side note, let me tell you that the not-so-clever branch of the impetus view can explain forking amongst other things. Consider a force (the user(s)) significantly stronger than the resistor (the blocking developer). There are basically three possible outcomes of this:
1. Argumentation goes on until the developer gives up. Depending on the project structure, various things can happen, the developer might resign, or a patch gets past him by approval of other project developers. The user may (longer term) even become a more active contributor.
2. If the developer is in full control of the project and doesn’t give up, the user can re-aim his energy. He may provide significant contributions to a competing project (maybe a proprietary one), or he may direct his energy against the project by generating bad PR and spreading FUD. Now remember that we assumed above that this force was significant, measured in relation to the developers energy. Significant bashing, hindering the project in various ways, will be the result and can be observed for quite some project/user combination.
3. Let’s say our user who has a significant urge to see his problem XXX solved is technically skilled. He might start his own program/project which solves XXX. However if the project is large enough, a fork will often provide the only viable alternative. So if you ignore enough users especially over topics they deem important enough (they don’t need to appear important to you), you increase likeliness of a project fork, or maintenance of a customization patch set for your project or similar variants thereof.

Now i do realize that not everyone in the GNOME camp wants to ignore and upset the majority of users or user minorities (be warned that “user minorities” may still represent a strong force 😉
So let me plead that we attempt to reduce this where it comes up nevertheless. As things stand, we have too many dissatisfied users currently and can observe the various outcomes described above. To address this, we simply need to strive for fulfilling more user requests, e.g. by accepting more patches that have been rejected as “featurism”, and by re-enabling or exposing existing features (gconf-editor gives you a hint on what could be done already if we allowed more configurability).
And let me side-line with Linus on trading features for usability. Basically, this can’t be done, because usability can only be a second grade concern. If you don’t have features or leave them out, you’ve ruined your usability right away, not improved it. If you have usability problems because of many features, yes that is a serious concern but still second grade. There are various ways at dealing with this, for instance by improving the structure of your preferences or by introducing user levels (e.g. early versions of Nautilus did this) or “Advanced” features (take the mozilla tab extension preferences as an example) or a number of other measurements. The reason there is not “The Definitive Answer” to this currently, is that usability in various aspects is still a very active research topic (let’s talk about this again 100 or 200 years from now). Taking features out is not amongst the set of these usability measurements, because it’s essentially a first grade decision about the program scope and solution space constituted by user desires, so it will definitely get you into the problem chain presented under “Thirdly,” above.

In essence:
In order to avoid various kinds of problems for your users and project, NEVER REJECT A FEATURE but either implement what’s requested or ask for an implementation (nothing simpler than just saying: “We accept patches.”)

Up
date:
PBor replied in his blog and suggested a title change for this post to “Never reject a feature request!“, which I much agree with in retrospect.

Tweet about this on TwitterShare on Google+Share on LinkedInShare on FacebookFlattr the authorBuffer this pageShare on RedditDigg thisShare on VKShare on YummlyPin on PinterestShare on StumbleUponShare on TumblrPrint this pageEmail this to someone

  8 Responses to “14.12.2005 Never reject a feature!”

  1. “We accept patches.”

    heh, murray had that sussed ages ago, i think he has a mailing list and irc bot that answers most questions with that phrase 🙂

  2. You got it wrong – as it’s a common thing across the GNOME community to turn around the facts as they really are.

    You wrote in one of your first sentences that Linus is a GNOME user. The real truth is he isn’t! I already know a few years back that Linus primarily used KDE as his only desktop and recently tried OSX too since he got one of those apple machines.

    Please stay correct when putting stuff on your blog.

  3. Come on “ac”, lets not argue over semantics. Linus may not literally at this very second be a GNOME user, but he has used it and left because of a lack of functionality for him. So he _is_ a GNOME user, just an expatriated one. And, he obviously cares about the project enough to at least vent some frustration about it. If he did not care for one reason or another I do not believe he would not have said a thing.

    Linus is right. Though Havoc said something along the lines of “2.x focus was usability and good defaults” (paraphrased, quotes for emphasis). I believe GNOME comes, by default, in a very usable fashion. It is now time to start replacing those missing “features” and adding back the old Advanced… buttons.

    I personally love Linus’ flare and disregard for political correctness. Though, I am just a user and not on the recieving end of the sabot round. Many people have said that he should have been more grown up about it, but I think his comments served a purpose. They pissed some people off, got others thinking, others moving and some pissed off/thinking/moving (or some variation on those three). Maybe that was his goal, and still maybe there was no goal except to get some stuff off of his chest.

  4. One of the things is that Linus has expressed an opinion a lot of people agree with. They may not have stated it, or they have stated it and had it put down. At least Linus has said it in a way that has made people take note.

  5. I could probably very well be considered an “end user” of GNOME. I’m extremely happy with GNOME, honestly. I feel like I can do what I want instead of having to turn around and tweak the settings. I fire an app up and I use it.

    I think this is the goal of GNOME and they (thus you) are doing a very good job at providing sane defaults in a usable fashion. I thank all of you heartily for it.

    Now, “Advanced…” buttons are perfectly fine for me. When the mood strikes me I wouldn’t mind diving into some advanced configuration… I might discover something that I’d like to change and honestly I like that experience as well.

    I think those buttons can be placed in a smart manner without overwhelming and cluttering the interface very easily. I think the “Advanced…” options are okay as long as:

    1.) They maintain the current “uncluttered” interface.
    2.) Provide LOTS of tooltip/help on what the options are
    3.) The options are not “dangerous” in anyway (“oh no, now I have no menu bars!” type situation is bad ;))

    What annoys me about KDE everytime I use it is the urge to configure it everytime I use it and in the end it doesn’t seem to quite act like how I want. With GNOME I don’t get that.

    Anyways, these are my two cents as an “dumb” user of GNOME. A lot of my friends who are GNOME users feel quite the same way.

  6. Tim I thoroughly agree with you. It is always better to say “Yes, but …” (we dont have the manpower, or whatever) rather than “No, but maybe…” (if you really great patches). Unfortunately many developers are in the habit of being more pessimistic and start off by saying no, even if they aren’t really opposed to the suggestion if someone else put the work in.

    As for Linus being a Gnome user I was under the impression he has been a long term KDE user since 1999 and occassionally uses a Mac but perhaps there is more to it than that. Calling people nazis or fucking idiots was entirely unacceptable, and easily the most inflammatory post the usability list has received in years and there have been some stinkers. I understand how frustrated users can get, I think most Gnome users aren’t entirely happy and everyone has their own personal wishlists of things they would like to see fixed.

    If nothing else we have a serious marketing problem on our hands if Gnome is so badly perceived. Obviously we cannot please everyone but there must be more we can do to make sure users feel like they are being listened to and do not feel the need to resort to flames.

  7. Good comments!

    I’m a user (well I’m developing one gnome app) and I really like gnome overall, this after trying KDE many times. But while getting the defaults is important, and gnome does a good job of it, there certainly is no reason to get rid of extra features. Many programs, as you’ve shown, have had great usability but also given access to advanced features.

    Gnome does need to be more open since I’ve heard too many people complain about being turned away by developers.

  8. I completely disagree with the entire premise of this post.

    1. The goal is not to please everyone.
    2. Missing features can be filled by other programs which can do them well.
    3. Highly vocal minorities demanding features eventually ruin all software.

    Usability isn’t an after-market concern, something that is build around features. It is an integral part of the product.

    By the way, Advanced buttons are the devil itself.

    – Chris

Leave a Reply to cendrizzi Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>