maplibre-rs monthly (special issue)

Jun 7, 2023

Categories: Maplibre-rs
Authors: Max Ammann

It is finally time for a new maplibre-rs monthly! Or should I say yearly? The last update was 2022 and we already have 2023! The development of maplibre-rs did not come to a total standstill, even though it may look like it did.

📰 News

Actually, we have great news about the project.

🎉🎉🎉 maplibre-rs is now a supported MapLibre project! 🎉🎉🎉

What does that mean?

You may wonder what that means: The gist of it is that the project can now use donations to the MapLibre organization to incentivize development. As of today, it is not 100% clear how that will work out. One possibility is to use the existing bounty program to set a bounty for issues. But we are actively looking for ideas to put the donation to good use.

Why did maplibre-rs become a sponsored project?

The maplibre-rs project is a research-and-development (R&D) undertaking. While there is the goal of reaching feature parity with MapLibre Native or Web, this is years away and certainly not something we can reach with the current development pace. Though, what we can achieve right now is to put new ideas to the test. New fundamental concepts are relatively easy to implement in maplibre-rs, whereas in MapLibre Native they would need a major refactoring. For instance, maplibre-rs has already proven, that WebGPU API is sufficient to implement a map renderer. Which means that MapLibre Native could actually target WebGPU in order to reach all platforms (including the Web).

What will happen next?

As already mentioned, we first have to see which incentives bring maplibre-rs forward. It is very difficult to create concrete bounties that early in a project’s lifetime. This is due to the fact that we actually would need to create bounties for creating bounties.

I am planning on doing a weekly “office-hour”. During that time slot I will hang out in a public meeting room, and you are free to join, ask about the project or issues and nag me if I did not yet review your PR. More on that in a separate news article, though.

Who on earth decided that?

The governing board by vote! If you did not yet know, MapLibre is governed by an elected board. See here to have more insight on the process.


Back to the progress in maplibre-rs. A lot has happened in the past half year. I have been focusing on getting the plugin architecture in a working state. It is now possible to enable or disable features like raster or vector rendering at compile time and runtime. This means that features are now well separated.

Right now, I am focusing on getting the projection correct in this PR. Unfortunately, there is quite some maths involved and the maplibre-gl-js source code does not explain much. So in order to get this correct (and yes we absolutely have to get this 100% correct) I will have to do some math on paper and then create unit tests to validate my assumptions. This takes a lot of time, but is really fun! This will definitely also benefit the other MapLibre projects, as I am documenting the insights. I created a GeoGebra visualization of the current near and far plane calculations.

🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

🎁 Merged Pull Requests

🎁 New Issues

  • #283 3D model experiemnts glTF by @maxammann
    It would be very fun to have some glTF models in maplibre-rs as a demo!

  • #263 WebAssembly: Not enough memory left by @maxammann
    WebAssembly can run out of memory when running in threaded mode.

  • #259 Experiment with other tesselation algorithm (earcut) by @maxammann
    This has the potential to speed things up.

  • #245 Improve buffer management by @maxammann
    Important one. Currently buffer management is overly simplified.

  • #244 Add support for TileJSON by @maxammann
    This would be handy for demos.

🧵 Current Discussions

None.

👋 Contributors

About

maplibre-rs is an upcoming and cross-platform vector map renderer written in Rust. If you want to get in touch with the developers, visit the #maplibre:matrix.org chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invitation here.