Just make it a user preference

We editors often request "Just make it a user preference", and similar. This list/essay aims to summarize some of the complexity with that idea, giving the difficulties and benefits.

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 power-tools that some editors need permanently available – I.e. The things the various overlapping communities have built over the last 20+ years, and continue to create and refine – So that newcomers can find what they're looking for without being overwhelmed, and so that new power-users 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, e.g.:
 * Technical vocabulary (concepts, keywords, and groupings),
 * what settings the developers thought were "useful enough to include, but not crucial enough to set as default",
 * what options the specialized-power-users might need, that I might want to investigate or use once I become proficient with the basics.

--

This wiki endeavour, requires tools that are as complicated 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 power-users, 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 users to slowly learn about bits of the complexity without being overwhelmed.