Page MenuHomePhabricator

[EPIC] Minerva works independently of MobileFrontend
Closed, ResolvedPublic

Description

Minerva currently depends on MobileFrontend and shouldn't. Let's break this dependency.

Documentation on wiki

https://m.mediawiki.org/wiki/Reading/Web/Projects/Invest_in_the_MobileFrontend_%26_MinervaNeue_frontend_architecture#Make_Minerva_independent_of_MobileFrontend

What

3rd party support is important to the MediaWiki community and causes the team extra maintenance effort (dealing with talk page questions and bug reports). Currently there is an implicit relationship where Minerva requires installing and configuring MobileFrontend, and MobileFrontend requires Minerva. As such, using only MobileFrontend (with Vector for example) or using only the skin Minerva (on desktop) is complicated and causes many issues to MediaWiki administrators.

We will make Minerva an independent skin that can easily be used independently, like other skins. We will continue to support mobile-friendly special pages inside MobileFrontend and clarify the purpose of MobileFrontend and the function it serves (which currently causes a lot of confusion).

We will make MobileFrontend use a UI library for the mobile-friendly Special pages provided. Minerva will also use the same mobile-friendly UI library (which could be used by any skins or other projects in the future).

To do so, we will migrate all UI components and assets into a library, which will be stored in the Minerva skin code repository for development convenience, but also published as an independent library.

Going forward, any engineer working on mobile web - Minerva or related features - will work in the Minerva skin repo. MobileFrontend will then effectively live in maintenance mode.

For WMF products, MobileFrontend will use the installed skin Minerva to get the UI library needed.

For 3rd parties who want to use MobileFrontend with another skin that’s not Minerva we will provide an additional install step for them to do so. In exchange for this slight discomfort they will have more control of their user experience. Websites not affiliated with the WMF (e.g. wikitravel) will have more reason not to inherit Wikipedia’s “brand”.

We believe this will reduce the amount of the work the team has to do in the arena of third party support (we get plenty of bug reports), freeing us to focus on products.

Implementation details may change, depending on activity in T107561 (how will MobileFrontend use Minerva’s components/vice versa).

We’ll email wikitech-l and mobile-l to let MediaWiki community members know about this change, before start as a consultation, sending updates via email with the monthly readers email and after finishing presenting the results.

Measuring progress

We will monitor the resources/assets in MobileFrontend and how they move to the MinervaNeue repository, (except the special pages sources or other files MobileFrontend specific ones). Most of the mobile.* UI modules on MobileFrontend should be migrated and renamed into MinervaNeue.

Measuring success

We will know if we have been successful when:

  • Minerva is standalone and installable on a MediaWiki instance without dependencies on other skins or extensions
  • MobileFrontend is installable on a MediaWiki instance without dependencies on another skin or extensions
  • The Minerva skin UI components live in Minerva instead of in MobileFrontend
  • The stakeholders (developer community, foundation developers, tech com, etc) are aware and informed of the status of Minerva, MobileFrontend, and their purposes and functionality, and confusion is cleared

AC

AC is very similar to the success metrics:

  • Minerva is standalone and installable on a MediaWiki instance without dependencies on other skins or extensions
  • MobileFrontend is installable on a MediaWiki instance without dependencies on another skin or extensions
  • The Minerva skin UI components live in Minerva instead of in MobileFrontend and are published as an NPM package and the release process (when to release and how) is documented
  • The stakeholders (developer community, foundation developers, tech com, etc) are aware and informed of the status of Minerva, MobileFrontend, and their purposes and functionality, and confusion is cleared
    • We have a recorded and shared a video explaining Minerva and MobileFrontend’s purpose and situation
    • We have written a couple of blog posts for the skin and extension explaining their purpose and status, and shared them in the appropriate mailing lists
    • We have reached personally on a meeting or otherwise to the core platform team and updated them with the situation of the skin and extension.
      • We have discussed the possibilities of upstreaming useful parts to MediaWiki core, and the possibility to bundle Minerva and/or MobileFrontend in the standard MediaWiki distribution

Remaining issues relate to the client side library provided by MobileFrontend:

  • Main menu links to '#'.
  • Unknown dependency errors are thrown due to the missing JS libraries e.g. mobile.watchstar thus JS based UI components are unusable e.g. search autocomplete, and edit button

Will be addressed by T144402

Upstream problems

  • Language button navigates to a missing special page without MobileFrontend (see T104660)

Related Objects

StatusSubtypeAssignedTask
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedABorbaWMF
DeclinedNone
DeclinedNone
ResolvedJdlrobson
Resolvedphuedx
ResolvedJdlrobson
ResolvedJdlrobson
DuplicateSpikeNone
ResolvedJdrewniak
DeclinedNone
ResolvedJdlrobson
DeclinedNone
Resolved Jhernandez
ResolvedJdrewniak
Resolvedpmiazga
ResolvedJdrewniak
ResolvedJdlrobson
ResolvedJdrewniak
ResolvedJdlrobson
OpenNone
ResolvedJdlrobson
DeclinedNone
DuplicateNone
ResolvedJdlrobson
DeclinedNone
ResolvedJdlrobson

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Why do I get Error: Unknown dependency: mobile.site when trying to use Minerva on desktop?

Change 372186 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/skins/MinervaNeue@master] WIP: Break the MobileFrontend dependency on Minerva

https://gerrit.wikimedia.org/r/372186

Jdlrobson renamed this task from [Epic] Remove MobileFrontend dependency from Minerva to [EPIC] Make Minerva independent of MobileFrontend.Jun 13 2018, 3:56 PM
Jdlrobson updated the task description. (Show Details)
Jdlrobson added a project: Web-Team-Backlog.

The Minerva skin UI components live in Minerva instead of in MobileFrontend and are published as an NPM package and the release process (when to release and how) is documented

We have several options. A conventional npmjs.com dependency will require npm link or publishing an artifact to pull in new changes. However, if we use [[ https://docs.npmjs.com/files/package.json | file: path dependencies ]], we'll keep the code as an NPM dependency but decouple changes from publishing. E.g., instead of:

"dependencies": {
  ...,
  "@wikimedia/skin": "1.2.3",
  ...
}

Use:

"dependencies": {
  ...,
  "@wikimedia/skin": "file:common/skin",
  ...
}

This will also work if the @wikimedia/skin package is in another repo or git submodule.

Jdlrobson renamed this task from [EPIC] Make Minerva independent of MobileFrontend to [EPIC] Minerva built via webpack and independent of MobileFrontend.Jan 18 2019, 12:55 AM

Change 495305 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/skins/MinervaNeue@master] POC: Minerva can be used without MobileFrontend

https://gerrit.wikimedia.org/r/495305

Jdlrobson triaged this task as Medium priority.Apr 4 2019, 10:13 PM

Change 495305 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/skins/MinervaNeue@master] POC: Minerva can be used without MobileFrontend

https://gerrit.wikimedia.org/r/495305

Jdlrobson renamed this task from [EPIC] Minerva built via webpack and independent of MobileFrontend to [EPIC] Minerva works independently of MobileFrontend.Aug 19 2019, 9:11 PM

Change 495305 abandoned by Jdlrobson:
POC: Minerva desktop runs desktop code not MobileFrontend code.

Reason:
folding into a new patchset.

https://gerrit.wikimedia.org/r/495305

Change 559208 had a related patch set uploaded (by Jdlrobson; owner: Jdlrobson):
[mediawiki/skins/MinervaNeue@master] Dev: Make MobileFrontend dependency a soft one

https://gerrit.wikimedia.org/r/559208

Change 559208 merged by jenkins-bot:
[mediawiki/skins/MinervaNeue@master] Make MobileFrontend dependency a soft one

https://gerrit.wikimedia.org/r/559208

Jdlrobson claimed this task.

This is now resolved. Minerva will work without MobileFrontend 🎉

That said the resulting skin is very stripped down and more aligned with Vector. It uses the same search code that Vector and Timeless use.

ezgif-6-da855bfa11f0.gif (251×600 px, 111 KB)

My hope now is that as we enter desktop refresh (Desktop Improvements (Vector 2022) ) we can start improving features in core learning from the MobileFrontend components to improve experiences on Vector desktop that can be used on Minerva desktop as well as Minerva mobile.