Just make it a user preference

We often request, "Just make it a user preference", and similar. This list-essay aims to summarize some of the complexity with that path.

Difficulties
Every additional user-preference:
 * 1) Adds to the complexity of the [core/extension] code,
 * 2) it increases the likelihood of bugs (either now or in the future)
 * 3) it increases the long-term code-maintenance task
 * 4) it increases the quantity of variations that ought to be tested, in both automated and manual code checks - each variation adds exponential new combinations
 * 5) Adds to the complexity of the Special:Preferences tabs for users (hence making everything a bit more difficult (or less likely) to be found)
 * 6) Adds to the UI translation backlog
 * 7) Adds to the already overwhelming documentation
 * 8) Adds new rows to the user-properties database table, which is already too large (T54777)
 * 9) Adds to the quantity of things that need to be considered, when contemplating any additional new features in the same feature-set
 * 10) Makes it harder to diagnose bugs
 * 11) Must avoid cache fragmentation

Hence, developers/designers/managers/etc are very hesitant to just make a new user preference every time [frequently!] that somebody asks for one.

Benefits
That said, I (and many of us) adore preferences, and I consider Firefox's "about:config" page to be generally DoingItRight™ as far as power-users are concerned.

I've written a bit more about this in a section at Talk:RfC/Redesign user preferences, which I'll copy below:

An Ode to Options, A Paean to Preferences, A Serenade to Settings, A Cry for Configuration

 * Some mumblings about why user-preferences are important.

I want to see our Special:Preferences menu become better organized, so that it can grow, with all the tweaks and powertools that some editors need permanently available - The things the various overlapping communities have built over the last 14 years, and continue to create and refine - So that newcomers can find what they're looking for without being overwhelmed, and so that new powerusers can find the brilliant tools they didn't know they wanted.

--

When I sign up for a new website, I immediately go to the settings menu to see: What things I can turn on, and what I might want to turn off (either now, or in the future). When I install a new program, operating system, or game, I immediately look through the Toolbar and the Preferences/Options menu. They tell me a lot about the software:
 * Technical vocabulary (concepts, keywords, and groupings),
 * what configurations the developers thought were useful enough to include, but not crucial enough to set as default,
 * what options the specialized-powerusers might need, that I might want to investigate or use once I become proficient.

--

This wiki endeavour, requires tools that are as convoluted as Photoshop or Autocad, for many editors but not all. Newcomers often need something simple, as do casual-editors.

We need something like Photoshop for powerusers, as well as something like MS Paint for the newcomers and casual editors.


 * (MS Paint is great! It's Welcoming, and easy to learn via experimenting, and easy to create simple (sometimes even complex) projects in!)
 * (Photoshop is great! A dense abundance of menus, and a profusion of tiny and detailed-metadata, for those who need it! For those who spend many hours every day, for many years, working hard within it.)

We want and need both ends of the spectrum, and a migration path for slowly learning about bits of the most complex pieces.

Value
Sad to see that there isn't much discussion about this. I'm an old Delphi Client-Server programmer, just feeling my way with mediawiki, but I can say this with confidence: Some user preferences are more needed than others! It's for the most needed ones that the user preferences should at least have good documentation.

My example: I want to have graphics in my wiki, many very heavy on black and bright colours, so I want to offer a PRINTER_FRIENDLY_IMAGES global preference for users. I'm happy to do the work of duplicating images in the database for the sake of the environment.

I love what you're doing. Cheers!