Skip to content

[SIP-130] Migrating from Mapbox to MapLibreΒ #28356

@Aalbedon

Description

@Aalbedon

[SIP-130] Proposal for migrating from Mapbox to MapLibre

Motivation

With the Mapbox GL JS library becoming closed source and the existing map plugins available in Superset being based on the legacy data API, migrating to the MapLibre project (an open source Mapbox fork) should make the transition simpler while providing the opportunity to bring the map plugins into the fold of the new data framework.

Proposed Change

Create new map plugins using deck.gl (or perhaps kepler.gl?) and MapLibre GL JS (https://github.com/maplibre/maplibre-gl-js).
Although backporting code (that is not covered by the BSD 3-Clause license) from Mapbox GL JS to MapLibre GL JS is not permitted, the expectation is that the gap in functions/features required by Superset to implement MapLibre is not large (see API documentation: https://maplibre.org/maplibre-gl-js/docs/).

The new plugins would be implemented using TypeScript and the new data API framework.
Details on the specifics may have to be provided on a per plugin basis.

The MapLibre Style Specification (https://github.com/maplibre/maplibre-style-spec) may offer useful utilities for managing a MapLibre implementation.

Examples of what is possible with MapLibre GL JS are available here: https://maplibre.org/maplibre-gl-js/docs/examples/

New or Changed Public Interfaces

Plugins using Mapbox will need to be either modified, or (preferably) replaced. These will be discussed in subsequent SIPs.

Add new plugins/charts:

  • MapLibre
  • deckgl

Would deprecate:

New dependencies

MapLibre GL JS is licensed under the 3-Clause BSD license.

Migration Plan and Compatibility

It is unknown whether any database migrations are necessary.
However, by deprecating the Mapbox-based plugins, existing charts based on those would have to be re-implemented by users or preferably supported by a migration.

Rejected Alternatives

Various past discussions covered alternatives such as kepler.gl (https://github.com/keplergl/kepler.gl), Leaflet (https://github.com/Leaflet/Leaflet), and a deck.gl + Leaflet implementation (https://github.com/zakjan/deck.gl-leaflet).

Although not all of these were firmly rejected, MapLibre potentially offers a less cumbersome migration.

Metadata

Metadata

Labels

Type

No type

Projects

Status

[RESULT][VOTE] Approved

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions