Architecture:MediaWiki/Domain modules

The MediaWiki code base can be conceptually structured into domain modules listed below. As per version 1.35, the domain structure is preliminary, and domain boundaries are aspirational. That is, the domains described here are derived from pre-existing code, but do not represent existing boundaries. They are intended as a guide for creating new code and for improving existing code, and are expected to evolve over time.

Domain modules, in no specific order:
 * content reuse domain (dumps, etc)
 * customization domain (gadgets, site css, etc)
 * campaigns domain (banners, etc)
 * curation domain (protect, delete, tag, etc)
 * monitoring domain (technical)
 * navigation domain (skin, etc)
 * notification domain
 * communication domain
 * discovery domain (search)
 * federation domain
 * abuse prevention domain (block, protect, filter, etc)
 * accountability domain (history, logs)
 * content rendering domain
 * access management domain (permissions, groups)
 * ontology modeling domain
 * content editing domain
 * user management domain (create, rename, login)
 * internationalzation domain
 * content representation domain
 * maintenance domain

Domain modules are orthogonal to technical layers: each domain module may have code in some or all of the layers. Each bit of code belongs to a layer and a domain module. Similarly, any pattern can be used in any domain.

Note that Manual:extensions may fit into one of the domains above, or to a domain not present in MediaWiki core, or define a domain of their own.