Hello everyone,

In September, I submitted a proposal to the Technical Decision Making Process called "Modern interfaces for all users" [1]. This proposal was somewhat abstract, but it was about different ways we could render user interfaces on the server, given that our server-side code is written in PHP, but most UI code is written in JavaScript (including Codex[2], the new library of shared UI components being developed by the Design Systems Team).

One solution that many people have been asking for for some time is Vue's server-side rendering (SSR) feature[3]. Supporting Vue SSR in MediaWiki will require in-depth architecture discussions, and I think that will eventually be part of this TDMP too. However, there are also other approaches for rendering UI components on the server which may be more appropriate, depending on the situation. So before we delve into architecture and implementation for Vue SSR, we should first discuss which methods of rendering UIs on the server we want to use in which situations, both to confirm that we really do need Vue SSR, and to inform the architecture discussion.

To that end, I've started a discussion on a Phabricator task where I list different server rendering methods and make a simple (probably too simple) proposal for when to use which. If you're interested in this topic, please go to https://phabricator.wikimedia.org/T322163 and participate in the discussion there.

Roan Kattouw
Lead engineer on the Design Systems Team at the Wikimedia Foundation

[1] https://phabricator.wikimedia.org/T317270
[2] https://www.mediawiki.org/wiki/Codex
[3] https://vuejs.org/guide/scaling-up/ssr.html