I agree with Havoc Pennington completely on the preference problem---that preferences hinder a user interface. And perhaps the problem has a solution afterall.
It isn't possible to keep people from customizing free applications. Even if there isn't a preference dialogue box or a configuration script, the user can always modify the source code to their own preference. In fact, this is one reason I choose free software.
So perhaps with some options, this should be the only method. Many of the more obscure or advanced options could possibly need to be compiled in. Or perhaps the inclusion of a preference dialogue box should be a makefile or ./configure target.
It solves many of Havoc's problems:
- Too many preferences means you can't find any of them.
- This, I think, depends on the user. The more you use an application, the more likely you are to want to configure it and the more details you want to configure. However, if you rarely use an application, I don't think you want to become an expert with the application to use it. By including preference options only with compiled versions, you solve this problem elegantly, I think.
- Preferences really substantively damage QA and testing.
- Here's the killer. If you modify the source, then the user is responsible for his modifications. Not the maintainer. In the opposite scenario, with full preference options included in, then the maintainer seems responsible for the options he provides.
- Preferences make integration and good UI difficult.
- My approach (certainly not something I want to claim as original thinking, but I use this to describe for this comment only) I believe causes the developer to spend more time deciding sane defaults. That is, its not as easy to say to new users that if they want it a certain way, they should change this and this option. Rather, the developer may be more inclined to change the default setup to more reflect the setting prefered by most users.
- Preferences can confuse many users.
- There are no options unless the user wants to recompile the application.
All this does is require more of the user if he or she wants to change the application and requires more of the developer to make the defaults so the user doesn't have to change the application.
This idea is extremely obvious to me. I just wanted to write it down.
[ Reply to This ]