Architecture guidelines

Design Patterns
The MediaWiki code base has evolved over many years. While it currently serves us reasonably well, there were many design decisions that have outlived their useful lifetime. We intend to evolve the codebase toward more modern practices over time, using this document as a focal point for choosing which design patterns and best practices we should adopt in a long term document.

Candidate design patterns for consideration
These are design patterns that have been discussed in the community that need further consideration among MediaWiki architects and experienced developers.

Clear separation of concerns
This proposal suggests that most objects in MediaWiki should handle one (and only one) of the following concerns ...with a catch-all for "misc." that doesn't fit into the first three.
 * Values
 * Services
 * Controllers

Just-in-time abstraction
This is another way of saying "You ain't going to need it"