Advertisement

User Interfaces: Software Settings

Started by February 01, 2012 08:30 PM
57 comments, last by Antheus 12 years, 9 months ago
Here is an abstract idea I had - one that kickstarted/inspired my research in this topic. It's kinda insane, but bear with me for a minute, for an argument's sake.

Can you think of an interface, no matter how user unfriendly, that would allow power users to have the most control over a given app and make any kind of changes to it... How about access to its source code. Let me elaborate.

Imagine any piece of software that you're currently using. Assume it's open-source. Assume, you're a great programmer.

At this point, you're in "theoretical" heaven. Why? Because you've solved the "there's something I want to change but there isn't a checkbox to do it" problem - ignoring how hard/time-intensive it'd be for a second. Assuming you're a good enough programmer, you can just modify the source code to your liking and implement the feature you want. You don't even have to put a checkbox in the settings - you'd only bother to do that if you were making this app available for other users. But if it's for you only, you can always just modify the source again if you want to change it back.

You can always do a diff against the vanilla source code to see what changes you've made to the app (if you happen to forget after a few months pass).

You don't have to worry about "not finding" the right checkbox or being unsure as to what you can change. Assuming you're a good programmer, you can figure everything out and change anything you like.

There are two main problems preventing this from taking-off:
1. Not everyone is a great programmer.
2. Much more importantly, no one wants to waste their time looking through and trying to understand someone else's code. It's a waste of time, considering the app developer already knows the code like the back of his hand. Assuming it's a small tweak/change, he could probably do it in 5 minutes where it would take you hours of studying unfamiliar code.

So that made me start thinking about this. Would it be possible to provide an interface that would allow users to ask for changes - whatever they want to change. And the developer edits the source code to make it happen. Since he is the best person for the job, it's only right to outsource it to him. And if multiple users request the same change, it should be very effortless (in theory) for the developer to reuse his previous solution, if there's a system in place to make that happen. So that made me want to make such a system.

Here's a personal story that I thought was pretty slick. As I upgraded to Mac OS X Lion the day it came out and started using their reversed "Natural scrolling" - something I was actually looking forward to because I thought it was more consistent with how scrolling happens on touchscreen devices. Plus I knew it's a very easy change for a human brain, just a day or two and you're used to it.

However, on my Windows laptop with a Synaptics touch pad, I had to use a custom utility for smooth two-finger scrolling akin to OS X's, named two-finger-scroll. It had source code, but no checkbox to "reverse scrolling direction to be consistent with Lion". At that point, I REALLY needed that checkbox. So I had no choice but to dig around with the source code and compile a custom .exe for myself that had the scrolling direction reversed.

Naturally, a normal non-coder user cannot do something like that. So I want to see if it's possible to develop a system that'd empower users to make changes they want, while staying efficient in outsourcing the job to the developer who can do it most easily. Right now, users can only email the developer and ask nicely - but that seems hardly efficient.

At this point, you're in "theoretical" heaven. Why? Because you've solved the "there's something I want to change but there isn't a checkbox to do it" problem. Assuming you're a good enough programmer, you can just modify the source code to your liking and implement the feature you want.

That may be heaven to you, but it's hell to me. I don't want to have to 'fix' software I use on a day-to-day basis, I want it to bloody well work in the first place.

This is the dichotomy of user A and user B. It is not a spectrum, it's an either/or situation. Some people have the time/energy/interest in tinkering with their software, everybody else just wants their software to do it's damn job, and never, ever, get in one's way while it does that job.

For user A, every single checkbox is a failure of the software developer to determine the optimal workflow. For user B, every single feature *without* a checkbox is a failure on the part of the software developer to anticipate their possible needs.

And this dichotomy is a good thing, in general. It's the reason why there is a market for both iOS and Android. The reason why we have both Linux and Mac in the workplace. The reason why commercial and open-source software can coexist peacefully side-by-side in the long term.

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

Advertisement
However, on my Windows laptop with a Synaptics touch pad, I had to use a custom utility for smooth two-finger scrolling akin to OS X's, named two-finger-scroll. It had source code, but no checkbox to "reverse scrolling direction to be consistent with Lion". At that point, I REALLY needed that checkbox. So I had no choice but to dig around with the source code and compile a custom .exe for myself that had the scrolling direction reversed.[/quote]

You're a developer. All these options exist for you.

But for 99% (soon to be 99.99%) of population, the touch pad is broken or annoying. So instead, they buy another computer. Obviously, they buy an Apple, since Apple just works. Everyone knows that it has a great touch pad.

Just like you did - Apple works correctly, Windows doesn't.

Over time, software evolves. Good solutions that "just work" for users endure, while others fade. Settings and tweaks are just transient phase.

Would it be possible to provide an interface that would allow users to ask for changtes[/quote]

An interface like that has been in place since ENIAC. Evolution. Viable software endures, the rest fades. Not only is this process optimal, it's what will always emerge.

Platform providers do the same. They look around for solutions and behavior users prefer. Perhaps as third-party add-ons, apps, tweaks. Then they integrate them into the platform itself. Over time, system feels more natural and easier to use.

Anyone remembers the IRQ/DMA settings? Very important. Completely gone today. Or drivers? Just plug in the device and edit the photos. Drivers? Settings? Long gone.


Underlying reason for such process is cost. Custom software is expensive. ", I REALLY needed that checkbox." - what you needed was different behavior. Developing such behavior takes hundreds or even thousands of man hours. If it were about checkbox, then I could solve it right here:
[ ] Check to make scrolling look like LionAs expected, that didn't solve your problem.

You don't care about settings, what you want is computer to behave like OSX.
Also, regarding "Natural Scrolling" and similar.

It is highly likely that behavior like that is patented. So even if it's present in software, it can be disabled due to licensing reasons.

For a while, some phone navigation didn't offer directions automatically, but user had to press a button after each advice. Legal reason, automated advices are patented.

Until recently, Windows couldn't play DVDs. Again, licensing. Drivers existed, same code was used on Linux, but MS couldn't include them.

On Linux apt-get is trivial, very userfriendly, but it simply ignores such issues.

Adding "Number of pixels for motion search: 0..32" might be an expected option in a video encoder, except that such feature is covered by 20 competing patents. So instead, developer may choose to settle for alternate algorithm, then tweak for some good enough options and package that as a whole.

It's a mess really, but there's plenty of obvious tweaks that aren't enabled simply due to non-technical factors.

Underlying reason for such process is cost. Custom software is expensive. ", I REALLY needed that checkbox." - what you needed was different behavior. Developing such behavior takes hundreds or even thousands of man hours. If it were about checkbox, then I could solve it right here:
[ ] Check to make scrolling look like LionAs expected, that didn't solve your problem.

I understand that it's about behaviour and the cost/effort of implementing choice. However, it is already being done - there's a lot of work underlying each and every checkbox in existing software.

And some of the custom changes/tweaks that you might want are actually not that hard to implement (most are, especially when coming from naive users, unfortunately).

imageqc.th.png

It took me a few hours to install the most weird IDE that I've never used (C++ Builder or something) just to be able to open and compile the .cbproj project file of two-finger-scroll. Then some time to figure out where and how to make a few tweaks that I wanted to make.

I'm sure it would've taken the actual developer of the app to do it in 10-15 minutes, because he already had the tools installed, he had experience, and knows the layout of his source code. At any rate, it would've been an order of magnitude easier & faster for him to do it, if there was a way for me to "outsource" the task to him and he were willing to do it.

Personally, if I'm going to develop some apps in the near future, I'd be more than happy to implement such small tweaks for users who want them, and keep the UI simpler for those who don't. If there were such a system (or if I were to make one, but I think it's beyond my resources atm).

Otherwise, we can stick to evolution which like you said works quite well. It could be better, of course.


You don't care about settings, what you want is computer to behave like OSX.

It was really just an example, but sure, I agree. There are some things I really like about OS X, but there are also parts where Windows does it better.




But for 99% (soon to be 99.99%) of population, the touch pad is broken or annoying. So instead, they buy another computer. Obviously, they buy an Apple, since Apple just works. Everyone knows that it has a great touch pad.

Just like you did - Apple works correctly, Windows doesn't.

Interestingly, that's not a pattern I'm really noticing. Most people I can think of typically struggle and hate their Windows laptop's touchpad, but they don't think "hmm, I use a computer probably 5-10+ hours every day, so maybe it's important to invest more into getting something that would be optimal for me". Instead, they tend to just get the next cheapest Windows laptop for $600-1000... figuring that paying the Apple tax (kinda true on 15"/17" MBP, but the 13" MBP and especially MacBook Air are very well priced IMO) is for rich people only.

[quote name='shurcool' timestamp='1328544267' post='4910190']
At this point, you're in "theoretical" heaven. Why? Because you've solved the "there's something I want to change but there isn't a checkbox to do it" problem. Assuming you're a good enough programmer, you can just modify the source code to your liking and implement the feature you want.

That may be heaven to you, but it's hell to me. I don't want to have to 'fix' software I use on a day-to-day basis, I want it to bloody well work in the first place.[/quote]
I was just saying theoretically. Of course it's no heaven because of the hard work, but it is heaven in terms of unlimited possibilities and being in control.


This is the dichotomy of user A and user B. It is not a spectrum, it's an either/or situation. Some people have the time/energy/interest in tinkering with their software, everybody else just wants their software to do it's damn job, and never, ever, get in one's way while it does that job.

For user A, every single checkbox is a failure of the software developer to determine the optimal workflow. For user B, every single feature *without* a checkbox is a failure on the part of the software developer to anticipate their possible needs.

And this dichotomy is a good thing, in general. It's the reason why there is a market for both iOS and Android. The reason why we have both Linux and Mac in the workplace. The reason why commercial and open-source software can coexist peacefully side-by-side in the long term.

I really disagree. In general, what you say is kinda true, but I think each person varies in how A vs. B they are at any given time, and depending on the device, platform, etc.

Personally, I'm very much into tweaking apps and having the most optimal settings everywhere. However, as of lately I've been trying to rely more and more on defaults whenever possible. Why, because it makes my life so much easier. Try owning 2 desktop computers, 2 netbooks, a laptop, a MacBook, plus more computers at the lab, plus iPhone, and my parents have iPad, Android Tablet, laptops that I also have to maintain. Multiply that by every single app that has some settings. At this point, it's impossible to ensure all the settings are optimal - you just start to not care, because caring means hours and hours of maintenance work.

Sometimes I wish I was into collecting rocks instead of computers, because I could own 1 or 100 rocks and I would have no maintenance to worry about to keep the rocks in optimal condition. Owning many electronic devices really amplifies this problem for me and it affects me more than a user with just 1 device.

Also, regarding "Natural Scrolling" and similar.

It is highly likely that behavior like that is patented. So even if it's present in software, it can be disabled due to licensing reasons.[/quote]
Yeah, that stuff really irritates me. I mean, it doesn't make software better for the end user. Those copyright things were supposed to protect developers, but at this point the system is too outdated to serve its original goal. Instead, it's a game that's min-maxed by big companies to try and keep the competition back. I'd really like to ignore those laws if it were possible.
Advertisement
[quote name='shurcool' timestamp='1328204157' post='4908784'] [quote name='mdwh' timestamp='1328196625' post='4908727'] In response to the OP: the obvious problem with this solution is that I as a user have no idea what options may be available. And for non-cosmetic settings that are required, this would be a disaster.
Ok, can someone please elaborate why this is not a problem when people search for things on Google Search?[/quote]In one case, the computer needs information from me (e.g., which email server, your name, etc). In the other case, I need information from Google. So in both cases, the thing wanting information should be the thing that asks for it. People don't use Google to find out all possible things available on the web (which is a vast amount of things), but to search for things that they want. Don't get me wrong, there are cases where search in OSs/programs is useful (and already available, e.g., Windows 7), but you don't want to replace "settings" with search for the reason I give.[/quote]

To give an example of this problem, most valve games have command line options/settings that are really useful. Turning off the intro splash screen, and going borderless with fullscreen are both useful options, but very few people know about them despite how useful they are because iirc they aren't actually in a settings menu.

Interestingly, that's not a pattern I'm really noticing. Most people I can think of typically struggle and hate their Windows laptop's touchpad, but they don't think "hmm, I use a computer probably 5-10+ hours every day, so maybe it's important to invest more into getting something that would be optimal for me". Instead, they tend to just get the next cheapest Windows laptop for $600-1000... figuring that paying the Apple tax (kinda true on 15"/17" MBP, but the 13" MBP and especially MacBook Air are very well priced IMO) is for rich people only.

I'd use a mouse, and that's not Windows' fault to have crappy touchpad, but the hardware manufacturers (Dell, HP). Very few companies are actually trying to do R&D, or strive to aim perfection like Apple does.

Some people really want nice things, and are willing to pay money for it. They are not necessarily rich, just willing to shell out $1500 for a nice-looking laptop.
Some other people also want nice things, but aren't willing to pay money for it. Why pay $1500 for a laptop with a spec that you can get for $500? They are okay with using the much cheaper things, albeit less comfortable.
Turning off the intro splash screen[/quote]

Mandatory splash screens are not there because developers are incompetent or inconsiderate, they are part of required frachising, merchandising and other efforts.

License for SpeedTree (an example only) might require not only payment of $X, but also that finished product shows SpeedTree logo for at least 3 seconds and that it must be shown at least once per install or at least once per process launch.

To avoid showing that logo, publisher would need to pay 10 * $X, which most don't find worth it.


For Valve, to ignore such screens, they most likely have some sort of licensing deal or they have an agreement in place that allows such functionality, but must make such setting non-prominent or difficult to access. Using command-line switch is good enough.

Notice that games often ship with such options in place, they are either merely disabled or require some debug switch.

Techniques like this are the norm.

All of this falls under Branding. Firefox and other prominent projects also contain clauses related to that, including build switches which allow/disallow official branding.

This topic is closed to new replies.

Advertisement