One of the promises I made when I started this project was that it would be usable for everyone. At the time, I did not quite know what that meant, but then again, neither could I do template metaprogramming back then. Today, I feel I have a understanding of what are the three main user-groups Hydranode targets, and how to reach them.
The trouble with dividing people into user-groups is that there is always a margin of error; there are always people who fall into multiple categories, or none; every individual is unique, and such generalizations can only serve as general guideline, rather than hard rules. You can rarely find a perfect example of a user-group in a real world, most people have characteristics from multiple groups.
Group A is a computer enthusiast; he can use right mouse button; likes to configure and fine-tune each of his applications to his liking; has used computers since childhood; has mastered at least three scripting languages and is a fan of regular expressions; generally dislikes skinned / non-native applications and applications that try to do things for him. A Linux enthusiast is an example of this user-group.
Group B has used computers for quite a while and finds his way around things. When forced, is capable of figuring things out by himself, altough he prefers asking his son/nephew for advice on computer-related topics; can use right mouse click when needed, altough doesn't usually enjoy it. A middle-aged, male, casual p2p-user is an example of this user-group.
Group C likes beautiful shiny applications; doesn't like applications which display lot of things she doesn't understand; generally wants things just to work without needing any extra input from her; "Settings" and "Options" pages in programs are a complete mystery to her. A 16-year-old girl is an example of this user-group.
So how am I going to target all these three user-groups? Configurability and carefully-tuned default settings. The idea is that in order to target group C, the application must look and feel exactly according to their idea of a good application (skinned, simple); however, as they cannot configure the application, merely providing skinning capability and means to hide extra information is not an option - only users in group B and A can do that. Hence, the default settings of the application must be fully skinned and all extra information hidden, or explained in-place with a short phrase / sentence. Users in group B can enable sufficient amount of things in order to feel comfortable (including disabling skinning, if they don't like it). Users in group A are computer specialists, so they can find even the most obscurely hidden settings and configuration options, enable all extra information displaying and disable all skinning.
The data / options hiding follows the same logic. By default, anything user in group C wouldn't understand is hidden away. Things that users in group B could potentially want to use are easily accessible, from menus, buttons and such. Things that users in group A would potentially want to use are harder to reach, generally under right mouse click, or deeper into settings dialogs or even changeable only from configuration files.
Madcat.