Requests for comment/Themes in core

Background
definition of skins vs themes

Skins: mediawiki extensions implementing the overall page, including general layout and placement of content and tools
 * MonoBook, Vector, Minerva, Timeless

Themes: Variants of skins in terms of colours, fonts, simple layout changes
 * Night mode versions of skins, simplified layouts, different colours on the same general page structure (green, blue, red versions of BlueSky)
 * Implemented in ext:theme by allowing skins to specify stylesheets that load over, or instead, of the default stylesheets for the skin

expressed demand for theme functionality:
 * wishlist items: (Community Wishlist Survey 2019/Reading/Night mode, Community Wishlist Survey 2017/Reading/Night-mode for read articles?)
 * gadgets and user styles onwiki implementing various (mw:Skin:Vector-DarkCSS, that green-black enwp gadget)
 * third-party projects customising common skins like vector/monobook (darthipedia, gw2wiki, and other thematic and game wikis in particular)
 * forks of vector etc where all they're really changing is the css
 * external tools such as wikiwand, winter, whatever

Problem
The desire for this functionality and the badness of the skinning system in general result in several issues:


 * 1) fragmentation
 * 2) * Skin developers may not want to depend on a separate extension, and roll their own solutions (sometimes based on the extension, sometimes not)
 * 3) * no standard approach, so not standard way to fix/update them as core changes - maintenance nightmare
 * 4) * Even if the solution built-into the skin is initially based on and compatible with the Theme extension, still a maintenance nightmare as they fall out of date
 * 5) * caching issues in different implementations? ashley please comment, does ext:theme have problems with this?
 * 6) difficult to implement due to having to install extra things for support and/or start from scratch
 * 7) * developer solutions tend toward front-end js- and css-only overrides instead of working with some of the newer, cleaner technologies (such as LESS variables)
 * 8) should be migrating from css overrides to setting different variables as the standard; need a consistent approach in the first place to head toward this

Proposal
Merge ext:theme into core, migrate toward simpler skin handling from there once we have consistent basic backend/core support

https://gerrit.wikimedia.org/r/c/mediawiki/core/+/465451/ per T122924

Concerns that this could cause skin options to explode; there's already infinite things wikis can do with their own styles/gadgets/whatever, so this, if anything, should help clean that up by providing more consistent predictable options to test against, and putting all the options more in the same place...