Stakeholder(s):
- MediaWiki developers (core and extensions) will benefit from clearer, more testable code
- Extension developers (in WMF and elsewhere) will have more control over the behavior of pages their extension manages.
- Quality + test engineering may be interested since we are making code more testable by removing access to global state
- The Performance team should be consulted to ensure the proposed changes do not introduce performance issues
|
Problem:
- For historical reasons, MediaWiki uses a number of global variables to represent the execution context. Usually, these variables are not accessed directly but via a RequestContext, but they still exist, and are in fact needed by RequestContext.
- RequestContext is a kitchen-sink, bundling access to too many parts of the system, causing spurious dependencies to be introduced across the code base.
-
|
Solution:
- Define a clear pattern for creating a RequestContext, and providing it to the code that needs it.
- Deprecate some parts of RequestContext to make it more lightweight
- Similarly, provide a clear information flow to provide relevant information to code that should not have access to a full RequestContext.
- Replace global variables with stubs that emit deprecation warnings.
|
Aligned Goals:
- Improve code quality by reducing coupling
- Improve code health by improving testability
- Improve maintainability by modeling domain concepts clearly
|
Success Metrics:
|