Advertisement

User Interfaces: Software Settings

Started by February 01, 2012 08:30 PM
57 comments, last by Antheus 12 years, 9 months ago

But you can make much better decisions for many optional things for the average user, things that the average user doesn't care about/understand. Now, don't forget the power users who need/want to change certain things - provide a system that'll allow them to. But when doing that, don't punish the average user by increasing the number of checkboxes they have to look at.

Why do you assume that the best idea is to produce a single piece of software that caters to both user A (always uses defaults), and user B (needs to customise everything)?

To offer a crude example, I own an iPhone and various other devices, because I consider myself to be user A, and trust Apple to design a product that will fulfil my every need. Most of my tech friends own Androids, because they consider themselves user B, and require a system that gives them the freedom to tinker to their hearts content.

I also have a few friends who jailbreak their iPhones (similar to your attempting to cater to both groups), but I feel that their overall experience is worse than user A or user B, because they are trying to shoehorn their own preferences onto Apple's shiny-mobile.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Because it's not user A vs. B, but rather situation A vs. B. It really depends on the user, their current situation, the device, the app, time of day, etc. whether or not they'll want to go more in depth of the app settings or just leave its settings alone. Additionally, no one is exactly A or B - we all lie somewhere in the middle between the two extremes.
Advertisement
shurcool: I should clarify that my position isn't "who cares, it's good enough" (has anyone argued that here?). I think there's much scope for improvement.

But equally, I dislike the "We need something new, This is new, therefore, This is better". Not all new ideas for UIs are good - and just because someone criticises it, doesn't mean they're someone who wants to stick with old outdated ways.

Now you've explained it more, I think your idea is reasonable. But I think it's misleading to compare to Windows 3.11, ignoring what the current state of UIs is. Taking what Windows 7 does, and making the search more intelligent, makes sense (also consider the start menu - if I don't know the name of my CD burning software that I installed, it should still come up when I type, even if the brandname doesn't include anything to do with "CD" or "burning") (of course, someone will probably now miss the point of my example, and say how we don't need to burn CDs anymore, or shouldn't need software to do it - if that example isn't good, pick another application type).

But note that this isn't because Windows 7 UI designers didn't think to do it, it's because there are still hard problems to solve in interpreting what a user types.

As anyone who hangs out in "Help Wanted" should know, ideas are the *easy* bit. We can have the idea of "A computer should be able to respond to text input like in Star Trek" - doing it is the hard bit. Just like we can have the idea of "email should work without me setting it up" - well that idea is the easy bit.

On your later mock up - what happens when there are 20 overridden settings, not 2? What about 50?

As I say, I'm not disagreeing with your idea, I think it's an interesting way that UIs should go (and are going).

To respond to various points made by other people:

On scanners - yes, I do use scanners and printers today. Obviously they scan and print by default. But there's still a middle ground of settings which aren't _required_, but are still more than a mere cosmetic like "what wallpaper do I want".

Now, some of these things are related to technology - e.g., currently the auto-detection size doesn't work quite right, so you can set it manually. But the point is that the problems to solve are those of technology, not UI. Saying "Oh, if we didn't need to ask this, we could make the UI simpler" is a statement of the bleeding obvious. That companies haven't done this yet isn't because they are hopeless at UI design, it is I imagine that scanners aren't yet perfect (at least, in lower end consumer products).

But even then - should a slightly faded letter have the colouring reproduced, or should it be a black and white 2 colour document? I'm not sure a computer can always know what I want. I could post-process the image, but that's making UI worse.

For those people talking about their scanners - go and look, do they really have no settings whatsoever then?

For printing, maybe I want better quality for some documents? Maybe I'm okay with printing a colour document in black and white? (For both issues, there are cost/ink issues; and perhaps I might desire black and white.)

A common feature I use at work is using two-sided printing, and sometimes also with two-pages-on-one (half size) printing. But I don't want that all the time, and again I'm not sure software can guess my desires.

Even geeky things like DPI, whilst most people don't need it, I might care about. A UI that only works when it's dumbed down to the simplest use case is the easy part - but that's not something that everyone wants. Anyone can take options away from UIs, but I wouldn't consider that to be a better UI, when it doesn't offer the same features anymore.

I'm also curious where this argument is going - are people really saying that, no matter what examples I come up with, you can say there is no use for any preference setting whatsoever, apart from those absolutely required at initial setup? And that all such settings should therefore be removed?

(I'm also wary of a circular argument here - obviously if we say "There is no need for any setting, except for the settings that are needed", then that's obviously true. But I think that many of the settings that aren't necessities, are still useful to keep around for some people.)

Anyhow, let's forget email and printing - what about homepage, wallpaper and ringtones and so on, should those choices be removed?

swiftcoder: Separating "settings" and "preferences" can be a good thing, I agree. Indeed, it isn't new - I've seen it done. Beware though, in my experience this sometimes leads to the problem where I have a different opinion to the UI designer on where a particular thing goes.

Antheus - Regarding devices using 3G to automatically fetch email settings: Well of course, I think it would be cool if every device just had Internet all the time automatically. But at this point, we're not discussing UI design.

But if you're telling me that your solution to improving an email UI requires that every single device being sold on the market start coming with 3G - and that that is only one part of many convoluted steps - then in my opinion, that's pretty bad design. On top of that, even when/if we do live in such a world, this doesn't mean it's true that no settings or preferences will exist at all. (And so far, history has shown us that just as old user preferences become obsolete, new ones become available - my old Amiga had far less user settings than a computer today!)

Also IIRC the way that 3G works (at least in the UK) is that the devices have their own phone numbers. On the plus side, this means I shouldn't need to enter a phone number at all - though I still need to register my email settings with the 3G/phone company, thus not solving any problem at all here.

Thinking about this some more, the most obvious way that email has been made easier for non-geeks is webmail - and this is probably one of the reasons why it's become popular (and even for those using ISP email, it's easy to access via a web interface).

No, I'm speaking from the point of view of a user, asking a question that you, the engineer, proposed. If your system requires hiring an engineer, I'm not sure how that's better than what we have now.

My solution as an engineer to this problem is: don't use the system you proposed smile.png

I mean, I thought this thread was about us as engineers proposing solutions in UIs? If it's up to someone else to solve it, then there's nothing to discuss.

Unless you're saying that a UI designer can simply make these suggestions, and it's then up to other "engineers" to solve the problems, but in that case I'm not sure you're saying anything insightful - it's other people who have to solve the hard problems. And the reason UIs don't work the way you might want is not because no one thought to make those changes in the UI, it's because people are still solving the hard problems.

One also has to be pragmatic. If I was a UI designer, and my response was to refuse to create any settings UIs, because "the engineers should make it so they aren't needed" - that's all very well, but if my solution involves getting the entire industry to change their hardware, as well as problems that I don't have answers to, I'll probably be out of a job ;)

Re: auto-payments from phone bill - no need to dismiss my Vodafone example (which worked just fine, and they were doing it right), I was agreeing with you, by adding more examples of cases where this was done, showing how it is indeed a good idea. (I wasn't talking about digital download on desktop or sharing...not sure how that relates to payments via phone bill. Not sure what "out of box" means either.) We agree that making payments on phones for content automatic is a good thing. I disagree that this means your email setup suggestion is therefore a good idea too.

---

On the Mac Programmer quote, it also says "Making a user interface configurable is great".

I'd entirely agree with the idea that offering options shouldn't be at the expense of offering decent defaults. I'd also entirely agree with the idea that one should always think "is this setting needed?" or "is their another way of doing it?".

But the idea that it's a failure if the answers are "Yes" and "No" is a bad idea (well, maybe I'm taking that quote too literally - but in that case, so are other people here, if they think that means you should never have any settings).

The flip side is, do I want a Mac programmer making his mind up for me? Do I want the Mac programmer choosing my ring tone or wallpaper for me? (Is Windows 7 Starter better because you can't change your desktop pic? Yet I recall Mac fans queuing up to criticise that choice... Am I supposed to be pleased that the Mac programmer picked out a pretty picture for me to have?)

If the Mac programmer gets it wrong and I can't change something I need, aren't I then going to consider him a failure? Yet if I used a program that had an option tucked away that I didn't need, but it didn't bother me because I never went to that option, would I really care?

I also fear this debate is being polarised from one extreme to the other. Some options should indeed be done away with. Some options we might be able to do away with if we improve the technology. That doesn't mean that having any kind of option, setting, preference or whatever is suddenly a failure.

If I as a user want to do something, and the programmer has failed to let me do that, you have failed, almost by definition, at providing a good user interface. It is, after all, a user interface, not a programmer interface.

ETA - I am also in agreement with this:
[quote name='shurcool' timestamp='1328302280' post='4909305']
But you can make much better decisions for many optional things for the average user, things that the average user doesn't care about/understand. Now, don't forget the power users who need/want to change certain things - provide a system that'll allow them to. But when doing that, don't punish the average user by increasing the number of checkboxes they have to look at.

Particularly the point about "don't forget the power users who need/want to change certain things" :)

http://erebusrpg.sourceforge.net/ - Erebus, Open Source RPG for Windows/Linux/Android
http://conquests.sourceforge.net/ - Conquests, Open Source Civ-like Game for Windows/Linux


shurcool: I should clarify that my position isn't "who cares, it's good enough" (has anyone argued that here?). I think there's much scope for improvement.

Sorry, I wasn't saying that to anyone particular in this thread. It was just more of me justifying why I care so much about this (when most people don't).


But equally, I dislike the "We need something new, This is new, therefore, This is better". Not all new ideas for UIs are good - and just because someone criticises it, doesn't mean they're someone who wants to stick with old outdated ways.

Of course, that's completely understandable and how it should be. That's why I'm completely open to criticism and I'm in the process of trying to address all points.


Now you've explained it more, I think your idea is reasonable. But I think it's misleading to compare to Windows 3.11, ignoring what the current state of UIs is. Taking what Windows 7 does, and making the search more intelligent, makes sense (also consider the start menu - if I don't know the name of my CD burning software that I installed, it should still come up when I type, even if the brandname doesn't include anything to do with "CD" or "burning") (of course, someone will probably now miss the point of my example, and say how we don't need to burn CDs anymore, or shouldn't need software to do it - if that example isn't good, pick another application type).

But note that this isn't because Windows 7 UI designers didn't think to do it, it's because there are still hard problems to solve in interpreting what a user types.

Well, my idea is still a work in progress. Also, there are many different variations of my idea depending on the complexity you ask for.

I think you misunderstood the part about Windows 3.11. I was actually comparing it to today's current software. Look at the iCloud Mail Settings example (i.e. this vs. this). Or pretty much any typical software today. They absolutely no different from Win 3.11 era software in that they present their settings via a fixed list of checkboxes, radio buttons and text fields, except they're better organized into tab groups. There is no search in majority of today's apps with some exceptions like Chrome and some of the desktop OSes (Windows Vista/7, OS X have various kinds of search that applies to their own settings).

As anyone who hangs out in "Help Wanted" should know, ideas are the *easy* bit. We can have the idea of "A computer should be able to respond to text input like in Star Trek" - doing it is the hard bit. Just like we can have the idea of "email should work without me setting it up" - well that idea is the easy bit.[/quote]
Understandable. That's why I'm trying to think through the near-future easy solutions as well as the long-term "what would be the ideal solution if we had unlimited resources, i.e. if Microsoft or Apple were to work on it for 5 years).

I think the best thing I can do at this point is offer various guidelines to how settings UI can be improved.

First, I would argue how the current model is flawed (because of the simplicity vs. power struggle, there can not be win-win) and cannot be the optimal solution.

Then, I would start by saying a few simple things.

1. Start by saving settings in a file differently. Instead of saving all values, even those the user never changed, only save the ones the user has changed. If he changes a setting back to default, just delete it from the user's settings file. This offers the following benefits:
a. if the default value for an unchanged setting changes in an updated version of the software, the user immediately benefits from using a new default value rather than being stuck with the outdated default value
b. it's possible, in theory, to offer change tracking in the future, and visualize what has been changed. Because it captures more information than the old format, namely *which* of the settings the user has changed.

(This can be implemented "in 5 minutes" right now, it's not hard, and it doesn't have any significant disadvantages that I'm aware of. Everyone might as well start doing it today.)

2. Start offering search for existing settings, similar to how Chrome already does it. This can't hurt the UI, hence it makes it better.

3. Perhaps it's a good idea to treat settings in a more dynamic way (similar to how Chrome does it). Right now they are hard-baked into the UI by position in most apps - which makes hiding/sorting/searching through them much more impractical. If they're treated more as a std::vector<AppSetting> List; I think UI designers will be able to come up with something useful.

4. Potentially look into visualizing the changed settings. Like make every non-default option bold. Or have a list of changed settings, and a list of unchanged settings. Or something else. Allow people to reset certain things to default (rather than reset EVERYTHING to default - this button makes absolutely NO sense from a UI standpoint). To undo what they've done, see what has changed (History view)

<More guidelines to be filled in here ...>

99. Have a Siri-like interface where you just talk to the computer and ask it to do what you want (this is obviously under debate, but that's my vision).


On your later mock up - what happens when there are 20 overridden settings, not 2? What about 50?

As I say, I'm not disagreeing with your idea, I think it's an interesting way that UIs should go (and are going).

Good point, I should think more about that. It's still on my to-do list.

However, I've already got a new different idea for how that list can be organized. Hence the work in progress state. smile.png
For that "Put 3G in everything" line, what if I'm in a dead zone? There are parts of my house that I can't get a cell signal, and there a vast tracks of Canada where the signal of a cellphone has never touched.


But still, just to make my earlier point crystal clear:

I don't want to fiddle with settings. I want things to "just work" out of the box. But, I want to have the settings somewhere obvious but out of the way so that if something does go wrong, then I have somewhere to go and try to resolve issues. Ideally any settings should also have the option to walk me through what they are, what they do, and how me changing things there can affect how everything works.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.

I don't want to fiddle with settings. I want things to "just work" out of the box. But, I want to have the settings somewhere obvious but out of the way so that if something does go wrong, then I have somewhere to go and try to resolve issues.

This coincides with my vision really well. Apps should have optimized defaults and work well out of the box as much as possible (which is currently already the standard, thank god). Next, the user should be able to customize/change things if he really wants to (also the standard right now, although the amount of flexibility is sometimes more, sometimes less).

Also, I think he should be able to undo his changes in a more direct, step-by-step way. Right now this is NOT a standard and I want that to change. Currently, you can only either uninstall/reinstall your app, or press some "Reset all to defaults" button. Imagine coming back to an app you've used/changed heavily in the past, but haven't used in 30 days. Or an app on someone else's computer. With how things are, it's far from easy to see what has been changed - meaning many of the changes might not be optimal for you anymore.


Ideally any settings should also have the option to walk me through what they are, what they do, and how me changing things there can affect how everything works.

This is an excellent idea and I was thinking something along those lines too!

Right now, you often see a checkbox with a very shortened name, which most people probably understand, but not everyone. I think it'd be really nice to have a way to go more in depth, and find out what it means to "Load Remote Images" or "Minimize to system tray" - maybe you're not sure what system tray is, and want a more detailed explanation that doesn't fit on the settings window. In the past, there used to be tooltips and that contextual "?" button, which usually gave you a sentence or two. Currently, this trend has declined because many settings have pretty good descriptive names anyway. But it doesn't hurt to offer the user a more detailed explanation if the user really wants it.
Advertisement

I'm also curious where this argument is going - are people really saying that, no matter what examples I come up with, you can say there is no use for any preference setting whatsoever, apart from those absolutely required at initial setup? And that all such settings should therefore be removed?

My position is this:

No, of course settings need to be kept. There is definitely benefit (as well as disadvantages) offered by having some settings/choices. Right now you can only change certain things, I think ideally you should be able to change even MORE things! I just don't want the settings to get in the way when they're not needed. Hence I'm looking for a better UI approach to it.

1. Start by saving settings in a file differently. Instead of saving all values, even those the user never changed, only save the ones the user has changed. If he changes a setting back to default, just delete it from the user's settings file.

2. Start offering search for existing settings, similar to how Chrome already does it. This can't hurt the UI, hence it makes it better.

3. Perhaps it's a good idea to treat settings in a more dynamic way (similar to how Chrome does it). Right now they are hard-baked into the UI by position in most apps - which makes hiding/sorting/searching through them much more impractical. If they're treated more as a std::vector<appsetting> List; I think UI designers will be able to come up with something useful.

4. Potentially look into visualizing the changed settings. Like make every non-default option bold. Or have a list of changed settings, and a list of unchanged settings. Or something else. Allow people to reset certain things to default (rather than reset EVERYTHING to default - this button makes absolutely NO sense from a UI standpoint). To undo what they've done, see what has changed (History view)

Have you ever programmed in Apple's XCode? Their project configuration works exactly as you describe:

  • There is a search box specifically for the configuration window
  • Settings are presented in a simple list, sorted by category
  • Settings that have been modified from their defaults are displayed in bold
  • Tapping the 'delete' key resets a setting to it's default value


    MacOSX_Xcode_Edit_Project_Settings.png

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Yes, I've noticed that feature both in Microsoft Visual Studio and in Xcode. However, the one in Visual Studio seemed broken. Sometimes, changing the value back to a default made that setting non-bold, othertimes it remained bold.

That was probably one of the significant sources of inspiration for me in all this. I saw that and thought, "wow I wish more software were like this." It's missing one thing I would also like to have: a counter that indicates how many things are changed (or a way of showing ONLY the changed settings, so I can go through them and reset to default anything that looks unwanted). Now if I really went all the way, I'd ask for another feature: a history page that shows all the changes that've been made. Similar to Events in Dropbox, History in Wikipedia articles, etc.

Is there any good reason, other than it's an increased implementation effort, that something like this doesn't exist in consumer apps?
Have you ever programmed in Apple's XCode? Their project configuration works exactly as you describe:

  • There is a search box specifically for the configuration window
  • Settings are presented in a simple list, sorted by category
  • Settings that have been modified from their defaults are displayed in bold
  • Tapping the 'delete' key resets a setting to it's default value

    [/quote]

    It's also how Visual Studio worked since version 5, perhaps earlier. So we're talking status quo of 20 years.

    It's a faster horse, but no car.


    Why is there a Debug/Release/Profile/etc... build. What am I deciding on this upfront. When running an application I may want to debug it, profile it or have it run in release. That is the important problem to solve, effort spent on build must aim towards zero. Proof: dynamic languages omit this step and are universally adopted as faster and simpler to develop in.


    Why am I setting optimization switches? I don't want 76.454% speed. I want fastest or smallest available. A useful setting might include: "Installer package must be smaller than 1024kB". Speed? Fastest you can do, why ask?

    Compatibility and linker settings? Pointless. Third-party libraries come prebuilt with a set of settings. Using anything different means they won't work, so why require me to guess around, when there is only one way to do it anyway.


    Base SDK, include paths, etc.... Pointless. I don't care about that, I use #include <boost/foo.hpp>. No more and no less, the rest is plumbing I don't want.

    I'm trying to cook a meal, I open faucet and pour 3/4 pan of water. Yes, there is a 5/9" to 3/7" inch adapter, insulated with 1/10" rubber, sealed with 2" duct tape and it's insulated with 3" foam with Al foil on the inside that reduces conductive losses by 70% and prevents dew for temperatures above -30.

    None of that matters. I'm making dinner, my focus is on proper amount of salt and herbs, cutting up meat into proper chunks so they cook evenly.

This topic is closed to new replies.

Advertisement