Background
As part of the Wikimedia Foundation’s Medium term plan, the Readers Web team will be making significant improvements to the desktop experience of Wikimedia projects.
Although Wikimedia desktop sites have evolved over time, their visual appearance has not changed significantly since the Vector skin was introduced almost a decade ago. There have been many efforts to improve the desktop interface through extensions, gadgets and templates, but the now antiquated appearance of the Vector skin has always stood in sharp contrast to these modernization efforts.
This is why we feel that in order to provide a consistent and unified experience on desktop, we have to improve the underlying appearance of the skin itself.
Project Goals
The goal of the Desktop Improvements project is to make Wikimedia wikis more welcoming to new readers and new editors while not disrupting the workflows of our most engaged community members. By overhauling the visual appearance of Wikimedia projects, we hope to strengthen the identity of the Wikimedia movement as a whole for current and future generations of Wikimedians.
Decision Deadline
We want to have a decision by October 31st, 2019.
Project Scope
Although ongoing research, design and community consultations will ultimately determine the final shape of the Desktop Improvements project, we expect to make significant changes to the visual appearance the desktop UI (preliminary designs were shared at Wikimania and are publically available). We will not be modifying content in any way. Also, we will be ensuring that customization features such as system messages, gadgets, user scripts/styles all continue to function.
Problem statement
Project Requirements
The Desktop Improvements project by nature affects everyone who interacts with Wikimedia projects so we must account for a multitude of stakeholders with a range of requirements.
The current list of requirements is as follows:
- The ability to make incremental change. Users shouldn’t experience an abrupt change to their workflows.
- The ability for users to opt out of the new experience.
- The ability to differentiate a Wikimedia site (e.g. Wikipedia) from a third-party site running MediaWiki.
- The ability to run multivariate tests on the UI changes.
- UI customizations are not restricted. This includes users styles/script and per-wiki customization of menus and other UI elements via system messages.
- Templates continue to function as they currently do.
- Gadgets continue to function.
- Extensions deployed by the WMF should continue to function.
- There shouldn’t be any negative performance impact from the new desktop experience.
The broad range of stakeholders, from our global community of editors and template/gadget/skin authors to teams at the Wikimedia foundation maintaining the hundreds of extensions currently deployed on Wikimedia sites, along with the technical limitations of the MediaWiki platform, make this a complex/chaotic problem space to consider.
Main question
Given the requirements and constraints mentioned above, the Readers Web team must decide the baseline upon which to implement such broad UI changes to the desktop interface of the Wikimedia projects. We are seeking input on this decision in order to uncover any concerns or alternative approaches that may have been overlooked or not thoroughly considered.
Proposals
When considering how to implement broad UI changes to the desktop versions of Wikimedia projects, the engineers on the Readers Web team considered the following options as possible foundations for the Desktop Improvements project. Each option has many pros and cons, but only the top three of each have been highlighted below.
Proposal 1: Adapt the MinervaNeue skin for desktop
Minerva is used as the foundation for the Desktop Improvements project. It becomes the default desktop skin for Wikimedia projects, replacing Vector. To meet the project requirement of incremental change, it will first become “vector-like” and gradually changes into whatever the new designs are from there on.
Pros
- Already mobile optimized.
- Brings us closer towards a unified skin for mobile and desktop.
- Under active development by the Readers Web team.
Cons
- Minvera depends heavily on the MobileFrontend extension.
- Re-implements many core features such as sidebar and menus.
- Would take considerable effort to achieve feature parity and visual parity with the current desktop experience.
Proposal 2: Add improvements inside the Vector skin
Vector remains the default skin on desktop and new improvements are made within the skin, with the current experience maintained in parallel. The new UI is feature-flagged and enabled on a per-component basis.
Pros
- Changes could start being made without the startup cost of changing the default skin.
- A feature flagging system could give the flexibility to enable/disable individual UI components.
- Compatibility with Vector-specific code is maintained, such as Vector.js/css and hard-coded “vector” strings.
Cons
- Requires developing a feature flagging system
- Increased QA burden of ensuring we don’t break current Vector functionality.
- A new user opt-in/out mechanism would have to be developed.
Proposal 3: Fork Vector and create a new skin
Vector is forked and a new skin is created. This new skin becomes the default for Wikimedia projects. Being a fork, it starts off as Vector but gradually changes as the Desktop Improvements project progresses.
Pros
- Changes can be made without the risk of introducing regressions into an existing skin.
- Maintains near parity with desktop features (save for code that checks for string “vector”).
- Opt-in/out mechanism is straightforward (i.e. switching skins).
Cons
- The technical complexity of deploying a new skin.
- The maintenance cost for the development team of maintaining an additional skin.
- The maintenance cost for the entire foundation of ensuring extensions work with an additional skin.
- Potential lack of parity with extensions/gadgets that rely on the skin's key ('vector') which would not be present on the new skin
Proposal 4: Create a new skin based on Skin:Example that looks like Vector
Suggested by @Isarra we could
Pros
- Using Skin:Example would remove a lot of Vector's technical baggage
- Can be made to look like Vector
- Opt-in/out mechanism is straightforward (i.e. switching skins).
- Inherits only technical debt from mediawiki core.
Cons
- Additional initial setup cost in tidying up HTML and CSS to mirror Vector
- The technical complexity of deploying a new skin.
- The maintenance cost for the development team of maintaining an additional skin.
- The maintenance cost for the entire foundation of ensuring extensions work with an additional skin.
- Potential risk to parity with Vector - The PHP code for the new skin would be different from Vector so there may be a lot of undocumented differences that need to be accounted for, before the skin becomes viable/usable.
- Potential lack of parity with extensions/gadgets that rely on the skin's key ('vector') which would not be present on the new skin
Proposal 5:
Hypothesized by @Jdlrobson
If we want to build a new skin, but want to also improve Vector, we could build out a new skin inside the Vector repository.
Proof of concept: https://gerrit.wikimedia.org/r/545349
Pros
- Possible to remove a lot of Vector's technical baggage gradually over time
- Looks like (is) Vector from day one.
- Opt-in/out mechanism is straightforward (i.e. switching skins).
- Inherits only technical debt from mediawiki core.
- Can be spun out into a new repository at a latter date
- Refactors to the new skin's code also improve the Vector skin
- No need to deploy a new skin.
Cons
- Having a skin within a skin may be confusing and there is a risk that it will never be spun out
- Potential lack of parity with extensions/gadgets that rely on the skin's key ('vector') which would not be present on the new skin
- The maintenance cost for the entire foundation of ensuring extensions work with an additional skin could become more complicated over time.
Proposal 6
…
Initial Recommendation
After much deliberation the Readers Web team is proposing forking Vector and building a new skin for Wikimedia projects on desktop. Every solution has its pros and cons, but ultimately the ability to build upon an established foundation without the risk of introducing regressions into either the current desktop or mobile experience make forking Vector a practical yet promising baseline for the Desktop Improvements project.
The biggest argument against building a new skin may be the shortcomings of the current skin system itself. The responsibility of skins has not been clearly defined in MediaWiki, leading to unclear boundaries between skins and MediaWiki Core and extensions. However, by starting from a Vector fork we will be facing these problems head-on, and by addressing these issues at their core, we hope to make changes that will benefit the wider MediaWiki ecosystem wherever possible.
RFC Outcome
After even more deliberation, the Readers Web team will be going forward with building the Desktop improvements project inside the Vector skin. Many members of our technical community underscored the maintenance cost that a new skin (forked or not) would incur. Given this concern and the fact that we don’t plan on deprecating Vector in the foreseeable future, ensuring that Vector will benefit from any improvements we make was an important factor in this decision. Building the Desktop Improvements project inside Vector will ensure that this concern is addressed. It will also alleviate the startup & social costs of deploying a new skin. And although there are still maintenance costs in supporting the old experience alongside the new one, working inside Vector will make these changes readily available to all wikis, making bugs or regressions easier to catch as the new UI is being developed.