Page MenuHomePhabricator

[EPIC] Minerva works independently of MobileFrontend
Open, NormalPublic

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)

Details

Related Gerrit Patches:

Related Objects

StatusAssignedTask
OpenNone
OpenNone
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedJdlrobson
ResolvedABorbaWMF
OpenJdlrobson
StalledNone
ResolvedJdlrobson
Resolvedphuedx
ResolvedJdlrobson
ResolvedJdlrobson
DuplicateNone
OpenNone
OpenNone
ResolvedJdlrobson
DeclinedNone
ResolvedJhernandez
ResolvedJdrewniak
Resolvedpmiazga
ResolvedJdrewniak
ResolvedJdlrobson
ResolvedJdrewniak
ResolvedJdlrobson
OpenNone
ResolvedJdlrobson
DeclinedNone
DuplicateNone
ResolvedJdlrobson
OpenNone
ResolvedJdlrobson

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptJul 18 2017, 10:38 PM

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 changed the status of subtask T173454: Lazy loading code should be skin agnostic from Open to Stalled.Sep 7 2017, 6:35 PM
Jdlrobson moved this task from Inbox to Tracking on the User-Jdlrobson board.
Jdlrobson updated the task description. (Show Details)
Jdlrobson updated the task description. (Show Details)
Jdlrobson removed a project: Patch-For-Review.
Niharika removed a subscriber: Niharika.Oct 4 2017, 6:46 PM
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: Readers-Web-Backlog.
Jdlrobson added subscribers: Jhernandez, Niedzielski.

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 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.

This comment was removed by Niedzielski.
Jdlrobson triaged this task as High priority.Jul 9 2018, 4:30 PM
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
Jdlrobson raised the priority of this task from High to Needs Triage.Feb 26 2019, 7:09 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 triaged this task as Normal 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
Jdlrobson moved this task from Tracking to Next up on the User-Jdlrobson board.Tue, Nov 5, 5:41 PM
Jdlrobson moved this task from Next up to OKR Backlog on the User-Jdlrobson board.Tue, Nov 5, 5:44 PM