== What? ==
The MobileFrontend ~~extension~~ application comprises of a set of core modules and a set of features that rely on them. Some-to-most of these features can be enabled or disabled by setting a configuration variable, a **flag**, to a truthy value. Moreover, most of these features also have additional configuration variables, which change the behaviour of specific parts of the feature.
[The number of features in the application is large](https://www.mediawiki.org/wiki/Reading/Features#Feature_matrix) and their configuration and location in the codebase sufficiently complex that it's non-trivial to identify and document them after the fact. A feature management system for MobileFrontend, therefore, must not only standardise how a feature is enabled and configured, but also where it's defined and documented as well.
---
From T140352:
* Feature flagging modules for PHP and JS
* Follow-up to migrate current features to it
* Follow-up to remove access to isBeta in php and JS (to force relying in feature flags)
* Special page like Special:Versions that shows the flags and which are enabled