Description
The Special:Nearby page has historically been part of Extension:MobileFrontend. This is not ideal for 3rd parties wanting to use Nearby without a mobile site. The feature has therefore been rebuilt using Vue.js and WVUI as Extension:NearbyPages (https://www.mediawiki.org/wiki/Extension:NearbyPages)
In the process, we've also improved support for Wikidata.org which currently has various bugs in the existing MobileFrontend version.
This also allows us to avoid running Extension:Nearby on Wikimedia projects where it doesn't make sense (e.g. no location information).
The extension provides the same functionality: the Special:Nearby page
The code is scoped to a single special page.
Preview environment
(Insert one or more links to where the feature can be tested, e.g. on Beta Cluster.)
This will be available on the beta cluster on the 1st September
In the mean time, the experience can be previewed at https://wikidata-nearby.netlify.app/ and https://wikipedia-nearby.netlify.app/. Please note the "random" feature will not be enabled in production.
Which code to review
https://github.com/wikimedia/mediawiki-extensions-NearbyPages/tree/master/resources
https://github.com/wikimedia/mediawiki-extensions-NearbyPages/blob/master/extension.json
https://github.com/wikimedia/mediawiki-extensions-NearbyPages/blob/master/includes/SpecialNearby.php
Performance assessment
Please initiate the performance assessment by answering the below:
- What work has been done to ensure the best possible performance of the feature?
The code is limited to the Special:Nearby page.
The code follows the current guidelines for using Vue.js in ResourceLoader
The code mirrors the existing code in MobileFrontend, using the majority of the same code that has been in production for over 7 years.
The API inside Extension:Geo has limits relating to search radius.
The MobileFrontend version remains intact while we roll out the feature to production wikis in case we need to roll back at any time.
- What are likely to be the weak areas (e.g. bottlenecks) of the code in terms of performance?
Usage of Vue.js and WVUI is still new.
Given the rest of the code is a carbon copy of MobileFrontend it shouldn't be a worry.
- Are there potential optimisations that haven't been performed yet?
In future when SSR for Vue.js is available, it might be possible to explore server-side rendering for commonly used pages.
- Please list which performance measurements are in place for the feature and/or what you've measured ad-hoc so far. If you are unsure what to measure, ask the Performance Team for advice: performance-team@wikimedia.org.
I don't think there is anything specific here that will be useful to measure but please let me know if that's not the case.