Page MenuHomePhabricator

SettingsBuilder: replace DefaultSettings.php
Open, HighPublic

Description

Instead of using DefaultSettings.php to initialize a number of globals, the default values for all config variables should be loaded from config-schema.yaml.

However, since parsing YAML is comparatively slow, we may want to generate a PHP file that can make use of the opcode cache. That file would however return an array, it would not manipulate globals.

Generating that PHP file could be done by a maintenance script, and we could use a structure test to ensure that it is in sync with config-schema.yaml.

NOTE: Since developers often consult DefaultSettings.php for documentation of config variables, the file should be kept in place. It should contain only big comment explaining where to find documentations and how to add new config variables.

Event Timeline

daniel triaged this task as High priority.Jan 26 2022, 12:08 PM

Change 757512 had a related patch set uploaded (by Ppchelko; author: Ppchelko):

[mediawiki/core@master] Add pre-generator for config-schema.php

https://gerrit.wikimedia.org/r/757512

Change 757512 merged by jenkins-bot:

[mediawiki/core@master] Add pre-generator for config-schema.php

https://gerrit.wikimedia.org/r/757512

Change 761433 had a related patch set uploaded (by Ppchelko; author: Ppchelko):

[operations/mediawiki-config@master] Add PHP array default settings loader benchmark

https://gerrit.wikimedia.org/r/761433

Change 761433 merged by jenkins-bot:

[operations/mediawiki-config@master] Add PHP array default settings loader benchmark

https://gerrit.wikimedia.org/r/761433

Change 761660 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] DNM: Turn DefaultSettings.php into a stub.

https://gerrit.wikimedia.org/r/761660

Change 761722 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Define merge strategies for all arrays.

https://gerrit.wikimedia.org/r/761722

Change 764410 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Add experimental version of Setup.php

https://gerrit.wikimedia.org/r/764410

Change 764411 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] DNM: Turn DefaultSettings.php into a stub.

https://gerrit.wikimedia.org/r/764411

Change 761660 merged by jenkins-bot:

[mediawiki/core@master] Avoid references to DefaultSettings.

https://gerrit.wikimedia.org/r/761660

Change 761722 merged by jenkins-bot:

[mediawiki/core@master] config-schema: Define types for all arrays.

https://gerrit.wikimedia.org/r/761722

Change 764410 merged by jenkins-bot:

[mediawiki/core@master] Optionally use config-schema in Setup.php

https://gerrit.wikimedia.org/r/764410

Krinkle moved this task from Blocker to Not a blocker on the MW-1.38-release board.
Krinkle added a subscriber: Pchelolo.

Change 765249 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Use inverted schema definition for fast loading.

https://gerrit.wikimedia.org/r/765249

Change 775920 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] bootstrap.php: Fix code that pulls globals into Setup.php

https://gerrit.wikimedia.org/r/775920

Change 775920 abandoned by Daniel Kinzler:

[mediawiki/core@master] bootstrap.php: Fix code that pulls globals into Setup.php

Reason:

https://gerrit.wikimedia.org/r/775920

Change 786975 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Docs: remove references to DefaultSettings.php

https://gerrit.wikimedia.org/r/786975

Change 765249 merged by jenkins-bot:

[mediawiki/core@master] Use inverted schema definition for fast loading.

https://gerrit.wikimedia.org/r/765249

Change 764411 merged by jenkins-bot:

[mediawiki/core@master] Turn DefaultSettings.php into a deprecated stub

https://gerrit.wikimedia.org/r/764411

Change 786975 merged by jenkins-bot:

[mediawiki/core@master] Docs: remove references to DefaultSettings.php

https://gerrit.wikimedia.org/r/786975

Change 828099 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] docs: Fix broken references to docs/Configuration.md

https://gerrit.wikimedia.org/r/828099

Change 828099 merged by jenkins-bot:

[mediawiki/core@master] docs: Fix broken references to docs/Configuration.md

https://gerrit.wikimedia.org/r/828099

@daniel: Removing task assignee as this open task has been assigned for more than two years - see the email sent to all task assignees on 2024-04-15.
Please assign this task to yourself again if you still realistically [plan to] work on this task - it would be welcome! :)
If this task has been resolved in the meantime, or should not be worked on by anybody ("declined"), please update its task status via "Add Action… 🡒 Change Status".
Also see https://www.mediawiki.org/wiki/Bug_management/Assignee_cleanup for tips how to best manage your individual work in Phabricator. Thanks!