User:DKinzler (WMF)/Frontend Architecture Working Group

The goal of this working group is to draft the system architecture for MediaWiki's frontend. The resulting architecture should specify the flow of control and of data between application logic and a graphical user interface. The specification should make clear how the proposed architecture is to be adapted to different circumstances, from a bare-bone install in a minimal environment to the full blown Wikipedia-scale setup run by Wikimedia.

Problem statement: the present architecture is inflexible, which leads to duplication, and makes feature development unreliable and slow. We need a more flexible architecture that isolates the presentation and user interaction from the core application logic. The new architecture should allow us to (1) provide new features to users on different platforms with minimal effort (particularly, not having to write it once for the desktop and once for mobile) and (2) allow us to build specialized user interfaces for specific platforms and/or workflows with minimal overhead (e.g. allow UI components and API modules to be mixed and matched to build new user experiences).

The frontend architecture is expected to touch upon the following topics:


 * Web APIs (REST and beyond)
 * Caching layer / CDN
 * Active purging (and this, dependency tracking and bucketing)
 * Server-Side Rendering of UI components (isomorphic JS)
 * Page componsition (templating, skinning)
 * Content transformation (e.g. variant conversion, infobox extraction)
 * Internationalization (server side, client side, and SSR)
 * Customization and Personalization (via SSR, templating, hydration)

Stakeholder areas:


 * mobile and desktop website
 * mobile apps
 * curating interfaces
 * editing
 * service ops
 * traffic
 * API frameworks
 * core code
 * performance
 * security