[mythtv] A need for advanced player settings

Michael T. Dean mtdean at thirdcontact.com
Tue May 31 20:16:14 UTC 2011


On 05/31/2011 03:23 PM, freedenizen wrote:
> On Tue, May 31, 2011 at 11:48 AM, E. Westbrook wrote:
> <snip>
>> If we fear that the entrepid newb will STILL adjust it, to her peril, it's
>> easy enough to document a stern warning alongside with the setting's
>> authoritative reference entry, where presumably she will have gone to find
>> the value anyway.
> In my heart I'd love to agree, I always want there to just be a simple
> db table somewhere to do my tweaking, nicely documented, etc.
> The problem is that well people share information.  Experience savvy
> user A adjusts a setting by reading all the associated documentation.
> Somewhat technical user B posts a problem to the mailing list, user A
> shares their fix, maybe even with the link to the documentation and
> user B implements it.
> So far that isn't so bad, the problem is that users C, D, and E who
> have no idea what they are doing just search google and find the
> commands to run in the mailing list archive without reading the
> documentation, 6 month later one of they runs into a different problem
> which is actually caused by the setting they changed in the table when
> they really had no idea what they are doing.  They come onto the
> mailing list and everyone struggles to help them out, not realizing
> that they actually adjusted something which caused the fault in the
> first place.

Well said.  In addition:

http://www.codinghorror.com/blog/2005/09/the-problem-with-configurability.html

My favorite quote from which is (where the entry is specifically about 
UI design, but applies to any other "configurable"), "This example leads 
me to consider an excuse some developers have for not providing a 
satisfactory visual interface to their products: 'the user can just 
customize the design to his or her individual taste!' *Leaving the 
design to the users is the ultimate abdication of the designer's 
responsibility to provide a quality product*..."  And, the summary at 
the end is well worth reading:
---

You might come out ahead by *intentionally choosing to make things not 
configurable*:

   1. It forces you to carefully select good default values
   2. It forces you to pick a strategy and run with it rather than
      hedging your bets and trying to satisfy everyone
   3. It's one less thing for the user to think about when using your
      software

---

and, from the book he's quoting:

http://www.joelonsoftware.com/uibook/chapters/fog0000000059.html

*"Every time you provide an option, you're asking the user to make a 
decision.* ... Asking the user to make a decision isn't /in itself/ a 
bad thing. Freedom of choice can be wonderful. ... The problem comes 
when you ask them to make a choice that /they don't care about/."

In this situation, the user doesn't care about the buffer size--they 
just want playback to work.  Therefore, we just need to fix the 
underlying bug, choose the appropriate buffer size, and make playback work.

And, yes, I did also read the end of that one, where it says, "This 
doesn't mean eliminate /all/ choice."  However, that's /not/ our goal.  
We're simply trying to eliminate the choices that users don't care about.

Not to mention:

http://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less

When Choice is Demotivating: Can One Desire Too Much of a Good Thing? ( 
http://www.columbia.edu/~ss957/articles/Choice_is_Demotivating.pdf ) 
Iyengar, S. S., & Lepper, M. /Journal of Personality and Social 
Psychology,/ 79, 995-1006. (2000)

(and a /lot/ of her research, see 
http://www.columbia.edu/~ss957/publications.shtml )

and for those who don't want to read PDFs, here are some articles/blog 
posts/etc that mention some of the above:

http://sivers.org/jam
http://www.nytimes.com/2010/02/27/your-money/27shortcuts.html
http://www.apa.org/monitor/jun04/toomany.aspx

and a very-opinionated, probably NSFW, article at:

http://flyosity.com/iphone/kill-the-settings-build-opinionated-software.php

So, IMHO, Stuart M was exactly right.  Settings that are as low-level as 
these are far too technical for most users (and, really, most 
developers--me included) to figure out on their own.  Therefore, I agree 
that the best approach is to let users who feel they need changing 
actually modify the code.  Our goal for MythTV is to do the right thing 
when we can, without forcing the user to understand details that 
shouldn't be their concern.

A user-configurable setting is often just evidence that the developer(s) 
either didn't know what the software should actually do or chose an easy 
out rather than writing the code to just "do the right thing."

Mike

*** Also, for a fun exercise showing why writing raw settings values 
directly into the DB (and failing to do validation and boundary checking 
and type checking and ...) is just plain wrong, try to set a value for 
the setting:

Confirm exit
If enabled, MythTV will prompt for confirmation when you press the 
System Exit key.

without using the GUI.  It's a boolean value that only has 2 
alternatives (so it's easy to test).  Use a -O override with the setting 
name NoPromptOnExit

mythfrontend -O NoPromptOnExit=1

or use the value 0.  Then, think about what you just saw.  Now try to 
figure out how you would document this or teach a user to set it without 
a GUI--and when you remember this is a simple 2-state setting, you 
realize how dangerous it is to poke values into other settings that are 
critical to proper operation of the application, and (more importantly) 
how difficult it would be to teach users--who just want to record and 
play video--how to choose the right value.  (And, now start thinking 
about how much more complex the code is when you not only have settings 
for all sorts of critical values, but also have to do validation and 
boundary checking on /every/ use of the value because the user may have 
written a string that can't be converted to an int or ...)


More information about the mythtv-dev mailing list