Wikimedia Apps/Team/Android/Nearby

Summary
Android had Nearby/Places in the app several years ago. It was removed due to performance challenges (details can be found here). It is a possibility that open source maps have improved since the feature has been removed, or the tolerance towards Google Maps may have changed (more context can be found here).

Next steps to be done
Our investigation has led us to three possible approaches to bringing back the Nearby/Places feature. We would like to understand the sentiment of the approaches below by people that will prospectively use the feature on Android. Please share discussion points and questions in the discussion section of each approach, and vote for your preferred approach. Discussion and voting is open through the end of March. We will share the outcome of this consultation period in our next steps by the end of April.

Tradeoffs of each approach
Below you will find the tradeoffs of Google Maps, Mapbox and MapLibre:

Google Maps
➕ Very easy to integrate.

➕ Minimal maintenance and modest increase in total APK size.

➖ Won't work on devices without Google services.

➖ Not open-source, so won't be allowed in F-Droid builds.

➖ Not free to use. Here is Google's pricing structure for Maps.

➖ Will still be missing most of the other functionality of a standard "maps" app.

Discussion
I am unclear what we would need to pay for? This seems like a case for WMF PR team, they should get Google to wave the fees, under the threat of bad press (rich Google makes poor Wikipedia pay for stuff). --Piotrus (talk) 11:55, 28 February 2023 (UTC)


 * Hi @Piotrus, WMF’s approach toward partnerships is to identify areas where our missions align with other organizations’ and propose collaborative ways of working together. You can read more about how this has been done with Google in particular here. For example, Google has provided API credits for several initiatives we’ve partnered on in the past.
 * Additionally, while agreements to waive fees are a convenient way to secure resources for a project, it’s important to understand that such an approach can also leave the project vulnerable to risks. For example, if Google were to no longer be able to support this financially in the future (which could be the case for a variety of legitimate reasons) WMF would need to be immediately prepared to fund the project or find an alternative approach. NPerry (WMF) (talk) 15:32, 3 March 2023 (UTC)



Mapbox
Mapbox is the best-known SDK (outside of Google) for integrating maps into web and native platforms, and this is what we were using previously to hook into our own OpenStreetMap tileserver.

(To clarify a bit: Mapbox is a company that offers components and SDKs for rendering maps on web and native platforms, and they also have their own tile servers, but you can also just take their SDK and point it to your own tile server, which is what we were doing.)

However, there have been some recent changes to Mapbox's licensing model:

➖ We can no longer use the Mapbox library without creating an account with them and using an API key (even if we use our own tile servers).

➖ When we attempted to create/access an account (just for the purpose of trying their latest library), we were greeted with this:

➖ According to recent discussions, it sounds like Mapbox now charges fees for every map-load, even if using your own tile server. For these reasons, we can conclude that Mapbox might no longer be the right fit for our needs.

MapLibre
There is now a community-maintained fork of the Mapbox SDK that will remain open-source, there is some work that needs to be done on sprites and fonts through June before Android would be able to start development on bringing the feature back into the app. Nevertheless this is probably closer to what we're looking for. The rough pros and cons of using this SDK will be:

➕ Since we have vector tiles, zooming and rotating is now fluid and responsive. Also, since these are vector tiles, we can apply arbitrary styling to them, including things like "dark mode" and other themes in our maps, or highlighting particular overlays with different styles. Here's an example with some random colors:

➕ Integrating will be relatively easy. It's a simple matter of resurrecting our old code and bringing it up to date with current best practices. The interface with the MapLibre SDK hasn't changed significantly from when we were using Mapbox earlier.

➖ Will increase APK size from 14MB to 25 MB. Note, however, that this will still keep us on the low, low end of the app bloat spectrum.

➖ Will be missing most of the functionality that's expected in a "maps" app. For any interaction other than "view the Wiki article for this marker", we would need to bounce the user out to their default external Maps app should they want to use GPS for example.

Discussion