Skip to content

Commit 71704be

Browse files
ramyaragupathyCommanderStormlouwers
authored
Publish Sep 2025 newsletter (#476)
* web related * authors-init * flutter * martin, native-rust,tiles, style spec * wrap * added lucas handle Co-authored-by: Frank Elsinga <[email protected]> * Header update Co-authored-by: Frank Elsinga <[email protected]> * logo credit Co-authored-by: Frank Elsinga <[email protected]> * intro update Co-authored-by: Frank Elsinga <[email protected]> * tiles implementation status Co-authored-by: Bart Louwers <[email protected]> * tile implementation related * maputnik credit * mlt intro update Co-authored-by: Bart Louwers <[email protected]> * add an image for maplibre-native-rs * images --------- Co-authored-by: Frank Elsinga <[email protected]> Co-authored-by: Bart Louwers <[email protected]>
1 parent a5b7154 commit 71704be

File tree

4 files changed

+223
-0
lines changed

4 files changed

+223
-0
lines changed
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
---
2+
title: "MapLibre Newsletter September 2025"
3+
date: "2025-10-04"
4+
categories: ["newsletter"]
5+
authors:
6+
[
7+
harel-mazor,
8+
bart-louwers,
9+
birk-skyum,
10+
joscha-eckert,
11+
frank-elsinga,
12+
yuri-astrakhan,
13+
ramya-ragupathy,
14+
]
15+
draft: false
16+
---
17+
18+
import { Image } from "astro:assets";
19+
import maputnik from "./maputnik.jpg";
20+
import tileRendering from "./tile-rendering.png";
21+
22+
Welcome to the MapLibre Newsletter, September 2025 edition!
23+
24+
This edition features advances in MapLibre Native, GL JS, Flutter, Martin, and more. Plus, we’ve given [our roadmap section](https://maplibre.org/roadmap/) a fresh redesign. Go check it out to see what’s in progress, what’s under consideration, and what’s been released.
25+
A big thanks to [Birk](https://maplibre.org/about/birk-skyum/) for driving this initiative forward. 🙌
26+
27+
With that note, let’s dive in!
28+
29+
## 📱 MapLibre Native
30+
31+
- The C++ MapLibre Tiles decoder, written by Tim Sylvester, [got merged](https://github.com/maplibre/maplibre-tile-spec/pull/441) this month. He also worked on the [Java _encoder_](https://github.com/maplibre/maplibre-tile-spec/tree/main/java), the [integration into MapLibre Native](https://github.com/maplibre/maplibre-native/pull/3246) and a new [`encoding`](https://github.com/maplibre/maplibre-style-spec/pull/1251) style spec property for vector sources. After some last-minute optimizations this month, the MapLibre Tile Spec itself is now considered [stable](https://github.com/maplibre/maplibre-tile-spec/pull/560).
32+
33+
Long story short, all lights are on green you will be able to use the next-generation tile format with MapLibre Native soon (before the end of the year?). Stay tuned!
34+
35+
- [Birk Skyum](https://maplibre.org/about/birk-skyum/) has contributed a [WebGPU backend](https://github.com/maplibre/maplibre-native/pull/3838) for MapLibre Native. We already have dedicated backends for Vulkan, Metal and OpenGL, but the advantage of the new WebGPU backend is that it makes Native more portable.
36+
37+
Previously we [demonstrated](https://birkskyum-maplibre-native-wasm.pages.dev/qt-for-webassembly/webgl1-from-opengl2-legacy-renderer-qt6-9-1/) that MapLibre Native can run in the browser as WebAssembly by compiling the OpenGL backend to WebGL1/2 but that approach is heavy. The WebGPU backend will be significantly more performant.
38+
39+
Additionally, the WebGPU backend can simplify cross-platform development with frameworks like Compose Multiplatform and Flutter, by offering a single backend that can be used for all desktop/mobile/web targets.
40+
41+
- We have enabled [immutable releases](https://github.blog/changelog/2025-08-26-releases-now-support-immutability-in-public-preview/). A GitHub feature that makes it impossible to tamper with release assets.
42+
43+
- 🧑‍💻 Join the MapLibre Native Hackathon!
44+
45+
Hack on the MapLibre Native codebase with guidance from expert contributors. Build plugins, fix bugs, add features,anything goes!
46+
47+
The hackathon kicks off on Oct 27, 2025, includes office hours on Nov 3 & 10, and wraps up with Demo Day on Nov 12 at the MapLibre Native monthly meeting.
48+
49+
[Sign up here](https://docs.google.com/forms/d/e/1FAIpQLSfbJe7VohJmbtK83T0s5C49WYxkmKlr424ZPJFrWWwk5LFxVA/viewform) to learn, experiment, and shape the future of the project
50+
51+
## 🌐 MapLibre GL JS
52+
53+
September was a busy month with four new releases:[5.7.1](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.7.1), [5.7.2](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.7.2), [5.7.3](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.7.3) and [5.8.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.8.0).
54+
55+
The latest one, 5.8.0, stands out, as it introduces data-driven styling for [line-dasharray](https://maplibre.org/maplibre-style-spec/layers/#line-dasharray), a long-awaited feature and [the most upvoted issue](https://github.com/maplibre/maplibre-gl-js/issues/1235) in our tracker. Thanks [Lucas (@lucaswoj)](https://github.com/lucaswoj) for this great contribution! We are super excited someone in the community decided to work on it.
56+
57+
Other improvements this month include:
58+
59+
- Fixes for raster tile fading, with more enhancements coming soon thanks to Ryan ([@wayofthefuture](https://github.com/wayofthefuture)).
60+
- Numerous fixes to [`global-state`](https://maplibre.org/maplibre-style-spec/expressions/#global-state), primarily led by [@melitele](https://github.com/melitele), significantly ironing out most of the related issues.
61+
62+
## 📝 MapLibre Tile Specification
63+
64+
The [MapLibre Tile Specification](https://github.com/maplibre/maplibre-tile-spec) project is now stable. This first version focuses on functional compatibility with [MVT](https://wiki.openstreetmap.org/wiki/Vector_tiles), with other functionality still experimental and subject to change.
65+
66+
[MLT (MapLibre Tile)](https://maplibre.org/roadmap/maplibre-tile-format/) is a new vector tile format designed for efficient storage and rendering of map data, optimized for the MapLibre ecosystem.
67+
68+
We have added an [implementation status overview page](https://maplibre.org/maplibre-tile-spec/implementation-status/) to the documentation site of the MapLibre Tile Specification. Here you can track the status of (planned) implementations and integrations, or add your own.
69+
70+
## ✏️ Maputnik
71+
72+
This month has been a very productive one for [our small style editor](https://maputnik.github.io/).
73+
74+
Maputnik had recently gained the status of a ["supported project"](https://github.com/maplibre/maplibre/blob/main/PROJECT_TIERS.md#supported-project) in MapLibre, so if there's something you'd like to work on and get paid this is now possible.
75+
76+
[Harel](https://maplibre.org/about/harel-mazor/) has been working hard to update all the libraries to their latest versions, including React to version 19. This upgrade required replacing outdated libraries that are no longer maintained and fixing issues across the existing codebase.
77+
78+
We also added support for more recent changes to the [MapLibre Style Spec](https://maplibre.org/maplibre-style-spec/), such as [globe projection](https://maplibre.org/maplibre-gl-js/docs/examples/display-a-globe-with-a-vector-map/) and [`global-state`](https://maplibre.org/maplibre-style-spec/expressions/#global-state), along with several lesser-known fields introduced in recent years.
79+
80+
This marks a strong start to Maputnik’s new status, and we believe that the more stable and widely used it becomes, the more features it will receive from this great community.
81+
82+
<div style={{ maxWidth: "1000px", margin: "1.5rem auto", textAlign: "center" }}>
83+
<Image
84+
src={maputnik}
85+
alt="Maputnik editor interface"
86+
sizes="(min-width: 1280px) 1000px, (min-width: 768px) 800px, 100vw"
87+
style={{
88+
width: "100%",
89+
height: "auto",
90+
display: "block",
91+
border: "1px solid #e5e7eb",
92+
borderRadius: "0.75rem",
93+
}}
94+
class="shadow-lg"
95+
loading="lazy"
96+
decoding="async"
97+
/>
98+
<p
99+
style={{
100+
fontSize: "0.9rem",
101+
color: "#666",
102+
marginTop: "0.5rem",
103+
fontStyle: "italic",
104+
}}
105+
>
106+
<em> Maputnik editor interface </em>
107+
</p>
108+
</div>
109+
110+
## 🪶 MapLibre Flutter
111+
112+
This month brings a big step forward for the [MapLibre Flutter plugin](https://github.com/josxha/flutter-maplibre): MapLibre Flutter [v0.3.0](https://github.com/josxha/flutter-maplibre/releases/tag/v0.3.0) has been released.
113+
114+
The highlight of this release is full iOS support, enabled through native interoperability between Dart and Swift/ObjC. With this, MapLibre Flutter now runs across Android, iOS, and the web using a modern codebase.
115+
116+
All MapLibre SDK versions have been updated:
117+
118+
- iOS: [v6.19.1](https://github.com/maplibre/maplibre-native/releases/tag/ios-v6.19.1)
119+
- Android: [v11.13.5](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.13.5)
120+
- Web: [v5.8.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v5.8.0)
121+
122+
A major ongoing goal for the package is to deliver a seamless cross-platform experience. A map style can now be added as a JSON string, via a Flutter assets path, or through a URI on all platforms. Additionally, PMTiles support on the web has been added to achieve feature parity with Android and iOS.
123+
124+
More functionality has made its way into this release. You can find all user facing changes in the [changelog](https://pub.dev/packages/maplibre/changelog#030).
125+
126+
## 🧩 Martin
127+
128+
This month, [Martin](https://martin.maplibre.org/) has undergone significant refactoring.
129+
130+
For those not following Martin’s versioning closely: before reaching v1.0, we are doing SemVer-breaking releases for each minor version (every X in 0.X.Y), since Martin is also published as a Rust library, allowing you to build your own tile server using its internals.
131+
132+
We’ve now refactored the core functionality into a separate library, [`martin-core`](http://lib.rs/martin-core).
133+
134+
Other highlights this month include:
135+
136+
- New warnings for misspelled config keys.
137+
- A brand new logo thanks to Ryan ([@wayofthefuture](https://github.com/wayofthefuture)) 🎉.
138+
139+
On the road to v1.0, we are currently working on three key features:
140+
141+
- OGC API Tiles–compliant source discovery
142+
- Server-side style raster tile rendering
143+
- PMTiles sources for more cloud providers, beyond just AWS S3
144+
145+
We’re on track to release Martin v1.0 by the FOSS4G conference in November. You can follow the ongoing work in [this GitHub discussion](https://github.com/maplibre/martin/discussions/1805).
146+
147+
Like other MapLibre projects, Martin has also hardened its CI and release infrastructure against supply chain attacks in this release. We are now publishing immutable, attested releases via CI instead of manually.
148+
Further details are available [on Slack](https://slack.openstreetmap.us/).
149+
150+
## 🦀 maplibre-native-rs
151+
152+
The MapLibre Native Rust bindings have seen a steady stream of refactorings and breaking changes to enable server-side rendering both in Martin and other projects possible.
153+
154+
We currently offer a single-instance Pool (MapLibre Native internally uses multithreading) for rendering tiles, which already provides solid performance.
155+
156+
Work is ongoing to design a multi-instance Pool, and we’re actively seeking feedback. If you have complex server-side rendering use cases, we’d love to hear from you to ensure the upcoming APIs work well for your needs.
157+
158+
<div style={{ maxWidth: "900px", margin: "1.5rem auto", textAlign: "center" }}>
159+
<Image
160+
src={tileRendering}
161+
alt="Tile rendering using maplibre-native-rs"
162+
sizes="(min-width: 1280px) 900px, (min-width: 768px) 700px, 100vw"
163+
style={{
164+
width: "100%",
165+
height: "auto",
166+
display: "block",
167+
border: "1px solid #e5e7eb",
168+
borderRadius: "0.75rem",
169+
}}
170+
class="shadow-md"
171+
loading="lazy"
172+
decoding="async"
173+
/>
174+
<p
175+
style={{
176+
fontSize: "0.9rem",
177+
color: "#666",
178+
marginTop: "0.5rem",
179+
fontStyle: "italic",
180+
}}
181+
>
182+
<em> Tile rendering using maplibre-native-rs</em>
183+
</p>
184+
</div>
185+
## 🎉 Spatial K Onboarding
186+
187+
We have on-boarded [Spatial K](https://maplibre.org/spatial-k/) (onboarding [ticket](https://github.com/maplibre/maplibre/issues/475)), a set of libraries for working with geospatial data in Kotlin, created by [Derek Ellis](https://github.com/dellisd) and generously passed over to MapLibre for continued collective maintenance.
188+
189+
Spatial K includes:
190+
191+
- An implementation of GeoJSON
192+
- A port of [Turf.js](https://turfjs.org/) written in pure Kotlin
193+
- Kotlin Multiplatform support
194+
- A Kotlin DSL for building GeoJSON objects
195+
196+
It is already in use by [MapLibre Compose](https://maplibre.org/maplibre-compose/).
197+
198+
Expanding on Spatial K
199+
200+
- GeoKJSON: There is a fork of Spatial K named [GeoKJSON](https://elcolto.github.io/GeoKJSON/) by [Sebastian Heeschen](https://github.com/elcolto), which we will be able to upstream into Spatial K, with Sebastian’s guidance. See the [ticket](https://github.com/maplibre/spatial-k/issues/170) for the porting effort.
201+
- MapLibre Java: There is significant overlap between Spatial K and [MapLibre Java](https://github.com/maplibre/maplibre-java), especially after the recent [refactor to Kotlin](https://github.com/maplibre/maplibre-java/pull/40) by [Fabian Keunecke](https://github.com/Fabi755). This work will help fill in gaps in Spatial K, enabling better alignment between the libraries. See the [ticket](https://github.com/maplibre/spatial-k/issues/154) for details.
202+
203+
## 🗓️ Monthly meetings
204+
205+
We continue our regular community calls on the _**second Wednesday**_ of each month, with an additional session on the last Wednesday to better accommodate Asia/Oceania time zones.
206+
207+
Upcoming Calls
208+
209+
- MapLibre Navigation: Oct 08, 2025 – 4:00–5:00 PM UTC
210+
- MapLibre Native: Oct 08, 2025 – 5:00–6:00 PM UTC
211+
- MapLibre GL JS: Oct 08, 2025 – 6:00–7:00 PM UTC
212+
213+
🌏 MapLibre Eastern Call
214+
215+
Held on the last Wednesday of the month at an Asia/Oceania-friendly hour:
216+
217+
- Oct 29, 2025 – 9:00–10:00 AM UTC
218+
219+
🔗 [View meeting times in your local timezone](https://notime.zone/Oau-Xba7n3s15).
220+
221+
All calls are open to everyone. Zoom links are shared in the MapLibre Slack.
222+
Not yet a member? Request an invite via the [OpenStreetMap US Slack](https://slack.openstreetmap.us/).
223+
We’d love to see you there!
499 KB
Loading
810 KB
Loading
499 KB
Loading

0 commit comments

Comments
 (0)