Skip to content

Conversation

@louwers
Copy link
Member

@louwers louwers commented Oct 6, 2025

Adds additional roadmap items, including ones that were delivered this year.

image

@louwers louwers requested a review from birkskyum October 6, 2025 21:33
@louwers louwers requested a review from CommanderStorm October 6, 2025 21:43
@louwers louwers enabled auto-merge (squash) October 6, 2025 21:50
@louwers louwers self-assigned this Oct 6, 2025
Copy link
Member

@CommanderStorm CommanderStorm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a few rewordings, most of them to make the engineering-heavy text a bit more than one sentence each 😉


We are experimenting with various ways to add plugins for extending MapLibre Native.

[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers (as of October 2025, only available for iOS).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers (as of October 2025, only available for iOS).
[Plugin Layers](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/pluginlayers) allow custom rendering to intergrate with custom style layers.
As of October 2025 they are available for iOS.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you put it on a separate line it is not clear what it belongs to. Maybe sections:

Plugin Layers

Plugin Layers allow custom rendering to intergrate with custom style layers.

As of October 2025, available for iOS.

Other Plugin APIs

See #3703 for other suggested plugin APIs.

Cross-Platform Plugins

Meta developed a cross-platform plugin API that allows extending MapLibre Native with plugins written in C++. They have pledged to upstream this work.

Comment on lines +9 to +11
Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.

This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Instead of storing glyphs and icons per tile, we now store them in a dynamic texture atlas shared between all tiles.
This allows for on average 4,5x lower memory usage in our benchmarks.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198) by Alex Cristici.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The memory usage is not the total memory usage but for the glyphs. I think it is a bit misleading that way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair, thanks

How about:

Suggested change
Instead of storing glyphs and icons per tile, store them in a dynamic texture atlas shared between all tiles. This allows for lower memory usage.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198).
Instead of storing glyphs and icons per tile, we now store them in a dynamic texture atlas shared between all tiles.
This allows for significantly lower memory usage for glyphs and icons.
This was implemented in [#3198](https://github.com/maplibre/maplibre-native/pull/3198) by Alex Cristici.

Comment on lines +9 to +11
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.

Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again a bit more fluff

Suggested change
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away.
This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Developers can now dynamically adjust the zoom level of tiles based on runtime conditions, such as drops in FPS or camera tilt during active navigation.
For example, tiles farther from the camera can automatically use lower zoom levels when the screen is tilted, ensuring smooth performance on large display infotainment devices without compromising the user experience.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958) by [@alasram](https://github.com/alasram).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 'automatically'? You need to manually control it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean if I control it, it is automatic.
I can see how it is misleading.

Suggested change
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away. This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958).
Level-of-detail (LOD) controls allow control over what zoom level is rendered for tiles that are further away.
This is especially important for navigation use cases where the camera pitch can cause many tiles to be visible.
Developers can now dynamically adjust the zoom level of tiles based on runtime conditions, such as drops in FPS or camera tilt during active navigation.
For example, tiles farther from the camera can use lower zoom levels when the screen is tilted, ensuring smooth performance on large display infotainment devices without compromising the user experience.
Implemented in [#2958](https://github.com/maplibre/maplibre-native/pull/2958) by [@alasram](https://github.com/alasram).

Comment on lines +9 to +17
Some of our users run MapLibre Native for many hours, sometimes days on end. To ensure stability, we wanted to develop a long running test. We are distributing this test so that everyone can run it with hardware they have laying around.

Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512). See the [latest releases](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) on GitHub.

A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).

---

After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Some of our users run MapLibre Native for many hours, sometimes days on end. To ensure stability, we wanted to develop a long running test. We are distributing this test so that everyone can run it with hardware they have laying around.
Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512). See the [latest releases](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) on GitHub.
A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).
---
After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Some of our users run MapLibre Native for many hours, sometimes days on end.
To ensure stability, we developed a long running test.
We are distributing this test so that everyone can run it with hardware they have laying around.
After a vote by the developers, this ‘long running test’ is was officially called Desert Bus, named after a game from the 90’s where you had to drive a bus from Arizona to Nevada (an exciting 8 hour playthrough can be found on [YouTube](https://www.youtube.com/watch?v=2LtiHla1dNg)).
Please head over to [our testapp releases on GitHub](https://github.com/maplibre/maplibre-native/releases?q=android-testapp&expanded=true) to help us gain test data.
Implementation Android in [#3512](https://github.com/maplibre/maplibre-native/pull/3512) by Adrian Cojocaru.
A similar test for iOS will be available [soon](https://github.com/maplibre/maplibre-native/pull/3592).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put the desert bus comment at the bottom because it is less important.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it really less important than when it was implemented by whom?

I'd argue that this is much more interesting marketing wise

Comment on lines +13 to +18
### iOS

- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)

### Android

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### iOS
- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)
### Android
- [Action Journal Example](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre-native-for-ios/actionjournalexample/)

status: in-progress
---

Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

more fluff

Suggested change
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
MLT is a next-generation tile format and a successor to MVT.
Our early benchmarks show 2-6x smaller tiles and some decoding benefits.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mentioning benchmarks without a link, reproduction or specifics is not useful IMO. I think we should keep this information in the repo where we can keep it up to date.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
Add support for reading vector-tile sources in the [MapLibre Tile Format](https://github.com/maplibre/maplibre-tile-spec) (MLT).
MLT is a next-generation tile format and a successor to MVT.

status: in-progress
---

We are experimenting with various ways to add plugins for extending MapLibre Native.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We are experimenting with various ways to add plugins for extending MapLibre Native.
We are currently experimenting with various ways to add plugins for extending MapLibre Native.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of October 2025, we are

Maybe

@louwers louwers merged commit 55e28bc into maplibre:main Oct 6, 2025
1 check passed
@CommanderStorm
Copy link
Member

@louwers
I did not see you enabling the automerge, sorry
Could you comment which adjustments you would accept? I can make an PR

@louwers
Copy link
Member Author

louwers commented Oct 6, 2025

@CommanderStorm Oh we should prevent merging when there are comments.

@louwers
Copy link
Member Author

louwers commented Oct 6, 2025

@CommanderStorm Left some comments, feel free to make a PR.

@louwers
Copy link
Member Author

louwers commented Oct 6, 2025

Enabled 'require conversations to be resolved for merging'.

@CommanderStorm
Copy link
Member

Thanks, did not know that this is an option

Honestly, it would be intersting to have these settings better synced across repos.
I don't think it is worth my time though

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants