## 1. Project Overview & Quickstart (maplibre/LICENSE.txt)

# Technical Documentation: maplibre/LICENSE.txt

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/maplibre/LICENSE.txt)

# LICENSE.txt

### Agent Skills & Rules
- Discovered 21 agent rule(s) and prompt configurations.



--- METRICS ---
- Files Extracted: 1
- Estimated Token Budget: ~25 tokens
- Canonical Reference: https://codewiki.google/github.com/maplibre/LICENSE.txt


## 2. Official Technical Reference & Guides (maplibre/maplibre.github.io)

## File: README.md

# maplibre.org

Content of the https://maplibre.org

Features:

- News and blog posts can be published
- External dependencies are handled via NPM

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command                   | Action                                           |
| :------------------------ | :----------------------------------------------- |
| `npm install`             | Installs dependencies                            |
| `npm run dev`             | Starts local dev server at `localhost:4321`      |
| `npm run build`           | Build your production site to `./dist/`          |
| `npm run preview`         | Preview your build locally, before deploying     |
| `npm run astro ...`       | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI                     |

## MapLibre community map

The data for https://maplibre.org/community/ is managed at `src/content/community.json`.
It shows a map of the MapLibre community members.

The map shows contributors to MapLibre projects as recorded in the public git committer history.

Location information was taken from people's public GitHub profiles.

### Please Add Me

If you would like to be included in the MapLibre community map, fork this repo, edit `src/content/community.json`, and make a pull request. Or just open an issue...

### Please Remove Me

If you are on the map, but don't want to be, please open a pull request or issue.

## Image and map credits

Any third-party image or map data should carry a credit or source, if not already credited through MapLibre's built-in attribution control:

- For inline images in MDX or Astro pages, wrap in `<figure>` with a `<figcaption class="figure-caption">`.
- For roadmap hero images, use the nested `heroImage` frontmatter object: `url` (required), `fit` (`fill` | `contain` | `cover`, default `cover`), `credit` (recommended for third-party images), `creditUrl` (optional). The layout renders the credit automatically.

---

## File: package.json

{
  "name": "maplibre",
  "type": "module",
  "description": "maplibre.org website",
  "version": "1.0.0",
  "scripts": {
    "dev": "astro dev",
    "build": "astro build",
    "preview": "astro preview",
    "astro": "astro",
    "format": "prettier --write .",
    "format-check": "prettier --check .",
    "postinstall": "cp -r node_modules/@fontsource/alata/files public/"
  },
  "dependencies": {
    "@astrojs/mdx": "^8.1.0",
    "@astrojs/rss": "^4.0.19",
    "@astrojs/sitemap": "^3.7.4",
    "@astrojs/solid-js": "^7.1.0",
    "@fontsource/alata": "^5.3.0",
    "@igor.dvlpr/astro-post-excerpt": "4.1.1-alpha.0",
    "astro": "^7.4.0",
    "astro-icon": "^1.2.0",
    "bootstrap": "^5.3.8",
    "maplibre-gl": "^6.15.0",
    "photoswipe": "^5.4.4",
    "rehype-autolink-headings": "^7.1.0",
    "rehype-slug": "^6.0.0",
    "sass": "1.105.2",
    "satori": "^0.62.0",
    "sharp": "^0.35.5",
    "solid-js": "^1.9.17",
    "ultrahtml": "^1.7.0"
  },
  "devDependencies": {
    "@types/node": "^26.6.5",
    "astro-broken-links-checker": "^1.1.0",
    "prettier": "^3.9.10",
    "prettier-plugin-astro": "^1.0.0",
    "schema-dts": "^2.1.0"
  }
}

---

## File: tsconfig.json

{
  "extends": "astro/tsconfigs/strict",
  "include": [".astro/types.d.ts", "**/*"],
  "exclude": ["dist"],
  "paths": {
    "@components/*": ["src/components/*"],
    "@layouts/*": ["src/layouts/*"]
  },
  "compilerOptions": {
    "noImplicitAny": false,
    "jsx": "preserve",
    "jsxImportSource": "solid-js"
  }
}

---

## File: public/funding.json

{
    "$schema": "https://fundingjson.org/schema/v1.1.0.json",
    "version": "v1.0.0",
    "entity": {
        "type": "organisation",
        "role": "owner",
        "name": "MapLibre",
        "email": "team@maplibre.org",
        "description": "The MapLibre Organization is an umbrella for open-source mapping libraries.",
        "webpageUrl": {
            "url": "https://maplibre.org/"
        }
    },
    "projects": [{
        "guid": "maplibre-gl-js",
        "name": "MapLibre GL JS",
        "description": "Interactive vector tile maps in the browser",
        "webpageUrl": {
            "url": "https://maplibre.org/maplibre-gl-js/docs"
        },
        "repositoryUrl": {
            "url": "https://github.com/maplibre/maplibre-gl-js",
            "wellKnown": "https://github.com/maplibre/maplibre-gl-js/blob/main/docs/assets/.well-known/funding-manifest-urls"
        },
        "licenses": ["spdx:BSD-3-Clause"],
        "tags": ["maps", "web-development", "data-visualization", "graphics"]
    }, {
        "guid": "maplibre-native",
        "name": "MapLibre Native",
        "description": "Interactive vector tile maps toolkit for iOS, Android and other platforms",
        "webpageUrl": {
            "url": "https://maplibre.org/projects/native/"
        },
        "repositoryUrl": {
            "url": "https://github.com/maplibre/maplibre-native",
            "wellKnown": "https://github.com/maplibre/maplibre-native/blob/main/.well-known/funding-manifest-urls"
        },
        "licenses": ["spdx:BSD-2-Clause"],
        "tags": ["maps", "mobile", "data-visualization", "graphics"]
    }],
    "funding": {
        "channels": [{
            "guid": "open-collective",
            "type": "payment-provider",
            "address": "https://opencollective.com/maplibre"
        }],
        "plans": [{
            "guid": "silver-sponsorship",
            "status": "active",
            "name": "Silver Sponsorship",
            "description": "20% allocated to the Development Fund. Logo on our website and in GitHub README, mentioned in all presentations, seat in the Advisory Council.",
            "amount": 80000,
            "currency": "USD",
            "frequency": "yearly",
            "channels": ["open-collective"]
        }, {
            "guid": "gold-sponsorship",
            "status": "active",
            "name": "Gold Sponsorship",
            "description": "25% allocated to the Development Fund. Logo on our website and in GitHub README, mentioned in all presentations, seat in the Advisory Council.",
            "amount": 150000,
            "currency": "USD",
            "frequency": "yearly",
            "channels": ["open-collective"]
        }, {
            "guid": "platinum-sponsorship",
            "status": "active",
            "name": "Platinium Sponsorship",
            "description": "35% allocated to the Development Fund. Logo on our website and in GitHub README, mentioned in all presentations, seat in the Advisory Council.",
            "amount": 300000,
            "currency": "USD",
            "frequency": "yearly",
            "channels": ["open-collective"]
        }, {
            "guid": "diamond-sponsorship",
            "status": "active",
            "name": "Diamond Sponsorship",
              "description": "40% allocated to the Development Fund. Logo on our website and in GitHub README, mentioned in all presentations, seat in the Advisory Council.",
            "amount": 500000,
            "currency": "USD",
            "frequency": "yearly",
            "channels": ["open-collective"]
        }, {
            "guid": "donation",
            "status": "active",
            "name": "Donation",
            "description": "Fund maintainance of our core projects.",
            "amount": 0,
            "currency": "USD",
            "frequency": "one-time",
            "channels": ["open-collective"]
        }],
        "history": [{
            "year": 2022,
            "income": 423976.61,
            "expenses": 79924.71,
            "currency": "USD"
        }, {
            "year": 2023,
            "income": 391500.59,
            "expenses": 251900.65,
            "currency": "USD"
        }, {
            "year": 2024,
            "income": 529306.12,
            "expenses": 321966.56,
            "currency": "USD"
        }, {
            "year": 2025,
            "income": 302362.81,
            "expenses": 253264.9,
            "currency": "USD"
        }]
    }
}

---

## File: public/llms.txt

# MapLibre

> MapLibre is an open-source project and community developing mapping libraries and tools that enable developers to build customizable interactive maps for web, mobile, and desktop applications.

MapLibre originated in 2020 as a community-driven fork of Mapbox GL JS after Mapbox changed the license of its mapping SDKs.

## Projects & Documentation

- [MapLibre GL JS Docs](https://maplibre.org/maplibre-gl-js/docs/): API reference and tutorials for the TypeScript/WebGL library for interactive vector maps on the web.
- [MapLibre Native Docs](https://maplibre.org/projects/native/): Guides for the C++ library rendering maps on iOS, Android, macOS, Linux, and Windows.
- [Style Specification](https://maplibre.org/maplibre-style-spec/): Complete JSON-based document format for describing map styles.
- [Martin](https://maplibre.org/martin/): Documentation for the Rust-based tile server generating Mapbox Vector Tiles from PostGIS, PMTiles, and MBTiles.
- [MapLibre Tile Specification (MLT)](https://github.com/maplibre/maplibre-tile-spec): A next-generation vector tile format optimized for modern GPU hardware.

## Main Repositories

- MapLibre GitHub Organization: https://github.com/maplibre
- [MapLibre GL JS GitHub](https://github.com/maplibre/maplibre-gl-js)
- [MapLibre Native GitHub](https://github.com/maplibre/maplibre-native)
- [Martin GitHub](https://github.com/maplibre/martin)

## Key Technical Facts

- MapLibre GL JS is a TypeScript library utilizing WebGL/GPU acceleration to render vector and raster tiles in the browser
- MapLibre Native is a C++ library supporting multiple platforms, including Qt
- Martin is written in Rust and can dynamically generate Mapbox Vector Tiles from PostGIS queries or serve tiles from PMTiles and MBTiles archives
- The MapLibre ecosystem is a community-driven, open-source fork originating from Mapbox GL JS 1.x
- All code, governance documents, and financial records are publicly accessible under the MapLibre organization

## Ecosystem

MapLibre software is commonly used with:

- OpenStreetMap data
- PostGIS spatial databases
- vector tiles (MLT or MVT format)
- PMTiles archives
- MBTiles tile archives
- GPU-accelerated WebGL map rendering

## Funding

MapLibre development is funded through corporate sponsorships and grants.
Sponsors contribute financially to support the development and maintenance of core projects such as MapLibre GL JS, MapLibre Native, and Martin.

Financial transparency and sponsorship information:
https://maplibre.org/sponsors/

## Organizational Links

- [Home](https://maplibre.org/): Project overview.
- [About](https://maplibre.org/about/): Organization mission, charter, governance, and financial reports.
- [Sponsors](https://maplibre.org/sponsors/): Development fund allocation and corporate sponsors.
- [Roadmap](https://maplibre.org/roadmap/): Current and planned work across projects.

---

## File: public/robots.txt

User-agent: *
Allow: /
Sitemap: https://maplibre.org/sitemap-index.xml

---

## File: public/files/file-list.json

["./fonts/google/alata/files/alata-latin-400-normal.woff","./fonts/google/alata/files/alata-latin-ext-400-normal.woff","./fonts/google/alata/files/alata-vietnamese-400-normal.woff","./fonts/google/alata/files/alata-vietnamese-400-normal.woff2","./fonts/google/alata/files/alata-all-400-normal.woff","./fonts/google/alata/files/alata-latin-ext-400-normal.woff2","./fonts/google/alata/files/alata-latin-400-normal.woff2"]

---

## File: public/.well-known/security.txt

Contact: mailto:security@maplibre.org
Expires: 2035-01-01T00:00:00.000Z
Preferred-Languages: en
Canonical: https://maplibre.org/.well-known/security.txt
Policy: https://github.com/maplibre/maplibre/blob/main/SECURITY_POLICY.txt

---

## File: src/content/board.json

[
  {
    "name": "Devesh Kumar",
    "link": "devesh-kumar",
    "avatar": "/img/avatars/avatar_dev.png"
  },
  {
    "name": "Sargun Vohra",
    "link": "sargun-vohra",
    "avatar": "https://avatars.githubusercontent.com/u/1320357?v=4"
  },
  {
    "name": "Yuri Astrakhan",
    "link": "yuri-astrakhan",
    "avatar": "https://avatars.githubusercontent.com/u/1641515?v=4"
  },
  {
    "name": "Minh Nguyễn",
    "link": "minh-nguyễn",
    "avatar": "/img/avatars/avatar_minh.jpg"
  },
  {
    "name": "Stefan Karschti",
    "link": "stefan-karschti",
    "avatar": "https://avatars.githubusercontent.com/u/4198736?v=4"
  }
]

---

## File: src/content/community.json

[
  {
    "github": "timokorkalainen",
    "latlon": [63.9576933, 26.1273817]
  },
  {
    "github": "rendrom",
    "latlon": [54.7291891, 20.5650697]
  },
  {
    "github": "fuzhenn",
    "latlon": [30.3263547, 114.2188629]
  },
  {
    "github": "smellyshovel",
    "latlon": [53.9018377, 27.5512496]
  },
  {
    "github": "brendan-ward",
    "latlon": [44.6653879, -120.5615346]
  },
  {
    "github": "nvanfleet",
    "latlon": [37.7239419, -122.446952]
  },
  {
    "github": "TreTuna",
    "latlon": [47.6795572, -122.3805231]
  },
  {
    "github": "aprilmay",
    "latlon": [12.0070833, 79.7931861]
  },
  {
    "github": "hheexx",
    "latlon": [44.1888238, 18.6796952]
  },
  {
    "github": "dayjournal",
    "latlon": [38.6272223, 140.298199]
  },
  {
    "github": "nbozon",
    "latlon": [44.9308803, 1.3003549]
  },
  {
    "github": "donocode",
    "latlon": [49.2577143, -123.1939434]
  },
  {
    "github": "rowanwins",
    "latlon": [-35.2813046, 149.124822]
  },
  {
    "github": "JinIgarashi",
    "latlon": [37.0283548, 139.5685326]
  },
  {
    "github": "cigone-openindoor",
    "latlon": [46.1314134, -2.4349967]
  },
  {
    "github": "ka7eh",
    "latlon": [59.8937806, 10.6450362]
  },
  {
    "github": "bdon",
    "latlon": [23.8517784, 121.2318983]
  },
  {
    "github": "SjoerdPerfors",
    "latlon": [52.6418309, 6.1363109]
  },
  {
    "github": "rubenmx",
    "latlon": [52.1613275, 4.8192583]
  },
  {
    "github": "bchapuis",
    "latlon": [46.5284586, 6.5824555]
  },
  {
    "github": "reezer",
    "latlon": [48.2205998, 16.2399779]
  },
  {
    "github": "juhieta",
    "latlon": [65.2032821, 24.8824647]
  },
  {
    "github": "nnhubbard",
    "latlon": [47.2511124, -123.1248111]
  },
  {
    "github": "fonok3",
    "latlon": [52.3796457, 9.6914322]
  },
  {
    "github": "nunojpg",
    "latlon": [48.1031567, 4.1746397]
  },
  {
    "github": "matkoniecz",
    "latlon": [50.0466814, 19.8647913]
  },
  {
    "github": "jutaz",
    "latlon": [54.8899549, 23.8572242]
  },
  {
    "github": "ntadej",
    "latlon": [53.5352353, 10.0134509]
  },
  {
    "github": "rinigus",
    "latlon": [58.6009028, 22.6903006]
  },
  {
    "github": "atierian",
    "latlon": [32.8209674, -80.1105618]
  },
  {
    "github": "OlexandrStepanov",
    "latlon": [50.1392502, 30.462629]
  },
  {
    "github": "kylebarron",
    "latlon": [38.9764576, -107.7935923]
  },
  {
    "github": "snickell",
    "latlon": [20.4456103, -159.7488924]
  },
  {
    "github": "lseelenbinder",
    "latlon": [47.4802221, 8.190871]
  },
  {
    "github": "msbarry",
    "latlon": [42.3142647, -71.1103668]
  },
  {
    "github": "petr-pokorny-1",
    "latlon": [50.1701036, 14.2774769]
  },
  {
    "github": "klokan",
    "latlon": [46.8903667, 8.124953]
  },
  {
    "github": "Caerbannog",
    "latlon": [43.6006819, 1.3628029]
  },
  {
    "github": "jbelien",
    "latlon": [50.855103, 4.3053778]
  },
  {
    "github": "habi",
    "latlon": [46.8932152, 7.397615]
  },
  {
    "github": "roblabs",
    "latlon": [32.8242404, -117.3891624]
  },
  {
    "github": "Malvoz",
    "latlon": [61.5038759, 15.4583417]
  },
  {
    "github": "BartInTheField",
    "latlon": [51.7896499, 5.3308803]
  },
  {
    "github": "thaddmt",
    "latlon": [49.2577143, -123.1939434]
  },
  {
    "github": "dbauszus-glx",
    "latlon": [51.5285582, -0.2416802]
  },
  {
    "github": "Joxit",
    "latlon": [48.7937386, 2.1575193]
  },
  {
    "github": "ethanius",
    "latlon": [49.9700154, 14.4484517]
  },
  {
    "github": "p-j",
    "latlon": [48.8100203, 2.3659162]
  },
  {
    "github": "marcelnormann",
    "latlon": [50.8813588, 7.9547563]
  },
  {
    "github": "fredj",
    "latlon": [46.7752422, 6.6205454]
  },
  {
    "github": "arichnad",
    "latlon": [37.9820798, -81.6640061]
  },
  {
    "github": "rbrundritt",
    "latlon": [47.672065, -122.135715]
  },
  {
    "github": "lhapaipai",
    "latlon": [46.0446016, 6.1443947]
  },
  {
    "github": "andreadapisa",
    "latlon": [43.754334, 11.610214]
  },
  {
    "github": "chippieTV",
    "latlon": [35.6681625, 139.6007842]
  },
  {
    "github": "kibala145",
    "latlon": [54.7115893, 20.3944908]
  },
  {
    "github": "naogify",
    "latlon": [33.5103191, 135.6908386]
  },
  {
    "github": "hannesvdvreken",
    "latlon": [50.4956751, 3.34517]
  },
  {
    "github": "acalcutt",
    "latlon": [42.031467, -72.8045409]
  },
  {
    "github": "lukashass",
    "latlon": [51.0899572, 5.9692458]
  },
  {
    "github": "jazzzz",
    "latlon": [48.8588336, 2.2769956]
  },
  {
    "github": "aleksejleonov",
    "latlon": [50.4016991, 30.2525155]
  },
  {
    "github": "xabbu42",
    "latlon": [46.9498112, 7.4458484]
  },
  {
    "github": "nyurik",
    "latlon": [40.6971494, -74.2598613]
  },
  {
    "github": "Kanahiro",
    "latlon": [43.4171391, 140.3330851]
  },
  {
    "github": "drwestco",
    "latlon": [47.6129432, -122.4821466]
  },
  {
    "github": "HarelM",
    "latlon": [32.0414893, 34.7719768]
  },
  {
    "github": "birkskyum",
    "latlon": [56.150547, 10.202915]
  },
  {
    "github": "nreese",
    "latlon": [39.7642548, -104.9951945]
  },
  {
    "github": "wipfli",
    "latlon": [47.3597316, 8.5018695]
  },
  {
    "github": "maxammann",
    "latlon": [48.137154, 11.576124]
  },
  {
    "github": "commanderstorm",
    "latlon": [48.262176, 11.66861]
  },
  {
    "github": "nickaein",
    "latlon": [26.563862, 56.299829]
  },
  {
    "github": "candux",
    "latlon": [47.9901346, 7.8126]
  },
  {
    "github": "jleedev",
    "latlon": [40.4313473, -80.0505402]
  },
  {
    "github": "pjsier",
    "latlon": [41.8336479, -87.8720468]
  },
  {
    "github": "maxlibin",
    "latlon": [1.3639595, 103.8309814]
  },
  {
    "github": "ewagstaff",
    "latlon": [38.7587919, -121.1802684]
  },
  {
    "github": "erik",
    "latlon": [52.5575962, 13.506371]
  },
  {
    "github": "rmyhal",
    "latlon": [50.5221567, 30.6576129]
  },
  {
    "github": "jwinarske",
    "latlon": [47.6390128, -121.9893544]
  },
  {
    "github": "gavinr",
    "latlon": [38.6607615, -90.2327991]
  },
  {
    "github": "Drabble",
    "latlon": [46.6195813, 7.4944838]
  },
  {
    "github": "ybiletskyi",
    "latlon": [49.0432365, 26.1550968]
  },
  {
    "github": "yzsolt",
    "latlon": [47.4651744, 19.1108555]
  },
  {
    "github": "DevinNorgarb",
    "latlon": [-34.0574117, 18.6249797]
  },
  {
    "github": "stepankuzmin",
    "latlon": [60.1708166, 24.7331887]
  },
  {
    "github": "HackJack-101",
    "latlon": [44.8269238, -0.6019734]
  },
  {
    "github": "rotu",
    "latlon": [44.9467641, -93.3083466]
  },
  {
    "github": "zhangyiatmicrosoft",
    "latlon": [47.5520613, -122.1153242]
  },
  {
    "github": "VehpuS",
    "latlon": [31.5119203, 34.7415089]
  },
  {
    "github": "moshe-gr-albo",
    "latlon": [32.0694326, 34.7767776]
  },
  {
    "github": "zavalit",
    "latlon": [52.5386381, 13.2448602]
  },
  {
    "github": "pgoldberg",
    "latlon": [38.8896867, -77.08943]
  },
  {
    "github": "gzurbach",
    "latlon": [45.7419439, 4.8474977]
  },
  {
    "github": "guimochila",
    "latlon": [52.8627198, 6.2292417]
  },
  {
    "github": "caspg",
    "latlon": [51.6084498, 21.3886359]
  },
  {
    "github": "gregsadetsky",
    "latlon": [40.5371052, -74.1518587]
  },
  {
    "github": "artakka",
    "latlon": [47.6440267, -121.907117]
  },
  {
    "github": "sjg-wdw",
    "latlon": [37.7413288, -122.4310928]
  },
  {
    "github": "alanchenboy",
    "latlon": [39.9502877, 116.2053366]
  },
  {
    "github": "carlonzo",
    "latlon": [24.9681249, 55.0674521]
  },
  {
    "github": "thehoneymad",
    "latlon": [49.2772261, -123.044999]
  },
  {
    "github": "louwers",
    "latlon": [51.6736149, 8.3456179]
  },
  {
    "github": "kuhnroyal",
    "latlon": [51.3417825, 12.3936349]
  },
  {
    "github": "GaelleJoubert",
    "latlon": [47.7052663, 3.0617212]
  },
  {
    "github": "mariusvn",
    "latlon": [43.6100162, 3.8741693]
  },
  {
    "github": "giswqs",
    "latlon": [35.958462, -83.9250825]
  },
  {
    "github": "tempranova",
    "latlon": [49.1432323, -123.1687834]
  },
  {
    "github": "tomhicks",
    "latlon": [41.3777915, 2.1052325]
  },
  {
    "github": "manhcuongincusar1",
    "latlon": [50.121212, 8.6365638]
  },
  {
    "github": "ChrisLoer",
    "latlon": [47.5543129, -122.7033675]
  },
  {
    "github": "tordans",
    "latlon": [52.4041574, 13.4060083]
  },
  {
    "github": "parkerziegler",
    "latlon": [37.9016138, -122.2392437]
  },
  {
    "github": "llambanna",
    "latlon": [-45.6891451, 168.5365816]
  },
  {
    "github": "kevinschaul",
    "latlon": [41.7108625, -87.6341434]
  },
  {
    "github": "IhsenBen",
    "latlon": [43.55671, 7.0240993]
  },
  {
    "github": "mohitsaxenaknoldus",
    "latlon": [28.6669324, 77.0560342]
  },
  {
    "github": "austyle",
    "latlon": [37.2308433, -79.4020879]
  },
  {
    "github": "Michael-loc009",
    "latlon": [10.6382033, 106.7473817]
  },
  {
    "github": "TimSylvester",
    "latlon": [42.8142373, -122.4809172]
  },
  {
    "github": "etnav",
    "latlon": [52.1846496, 9.5080512]
  },
  {
    "github": "mnutt",
    "latlon": [40.6224107, -74.1895746]
  },
  {
    "github": "KiwiKilian",
    "latlon": [47.7784711, 13.0370226]
  },
  {
    "github": "hallahan",
    "latlon": [37.0125909, -121.8433058]
  },
  {
    "github": "ianthetechie",
    "latlon": [37.670157, 126.59667]
  },
  {
    "github": "stefankarschti",
    "latlon": [46.769271, 23.590132]
  },
  {
    "github": "josxha",
    "latlon": [47.693078, 9.171195]
  },
  {
    "github": "morehawes",
    "latlon": [49.645875, -124.946364]
  },
  {
    "github": "mizmay",
    "latlon": [47.611728, -122.307645]
  },
  {
    "github": "hh-hang",
    "latlon": [26.896438, 112.573234]
  },
  {
    "github": "gabbopalma",
    "latlon": [41.117087, 16.872439]
  },
  {
    "github": "jashanbhullar",
    "latlon": [51.477928, 0.001545]
  }
]

---

## File: src/content/team.json

[
  {
    "name": "Bart Louwers",
    "link": "bart-louwers",
    "avatar": "https://avatars.githubusercontent.com/u/649392?v=4",
    "position": "MapLibre Native Maintainer"
  },
  {
    "name": "Harel Mazor",
    "link": "harel-mazor",
    "avatar": "https://avatars.githubusercontent.com/u/3269297?v=4",
    "position": "MapLibre GL JS Maintainer"
  },
  {
    "name": "Ramya Ragupathy",
    "link": "ramya-ragupathy",
    "avatar": "https://avatars.githubusercontent.com/u/12103383?v=4",
    "position": "Head of Product & Operations"
  },
  {
    "name": "Birk Skyum",
    "link": "birk-skyum",
    "avatar": "https://avatars.githubusercontent.com/u/74932975?v=4",
    "position": "Graphics Engineer"
  }
]

---

## File: src/content/bio/bart-louwers/index.md

---
title: Bart Louwers
handle: bart-louwers
github: louwers
---


    
    <h3 class="m-3">Bart Louwers</h3>
    Maintainer Native
    [LinkedIn](https://www.linkedin.com/in/bart-louwers/) · [GitHub](https://github.com/louwers) · [Slack](https://osmus.slack.com/team/U047T7D0XTR)


The value that highly customizable vector tile based maps bring is undisputed. It is an awesome feeling, knowing that something so beautiful and versatile can be [free](https://en.wikipedia.org/wiki/Free_software). The question is: can a community of like-minded individuals not only sustain a project like that, but continue to innovate it? Hats off to the people that have answered this question affirmatively, and have demonstrated that it is true.

So far my work as Maintainer Native has been challenging, yet rewarding. Map rendering is hard. Multi-platform native development is hard. There is a dizzying array of technologies, build tools and dependencies involved. There is a lot of potential to make the project more mature and easier to contribute to. I love helping to realize that potential. I am also a C++ geek, and I am looking forward to the [redesign](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2022-10-27-rendering-modularization.md) of some of the internals, and to deepen my knowledge of the code base further, so I can be the most effective maintainer I can be.

Maps serve a vast number of purposes. Something I am passionate about is democratizing urban design and urban mobility. In plain English that means giving people the tools to (re)shape their cities to be a pleasure to live in and to move through. Maps are an essential part of that.

Feel free to reach out to me on Slack in case you have any feedback or suggestions, or if you want to contribute to MapLibre Native, but you are not sure where or how to start.

---

## File: src/content/bio/birk-skyum/index.md

---
title: Birk Skyum
handle: birk-skyum
github: birkskyum
---


    
    <h3 class="m-3">Birk Skyum</h3>
    Co-founder of MapLibre, currently serving as Graphics Engineer
    [LinkedIn](https://www.linkedin.com/in/birkskyum/) · [GitHub](https://github.com/birkskyum) · [Slack](https://osmus.slack.com/team/U02GUMY099R)


My name is Birk Skyum, and I'm a co-founder of MapLibre. It's a privilege to work with so many passionate and talented contributors, and I'm grateful for the progress we've made together as a community. I'm truly honored to serve yet another term on the governing board and help keep our open stack, and our shared vision, moving forward.

My approach is simple: focus on what brings the most long-term strategic value to MapLibre and its users. Here’s a snapshot of some things I’ve worked on this past year.

### My Contributions This Year

_Feature development:_

- **Globe support** – Added projection expression syntax to the style spec for adaptive projection transitions ([PR](https://github.com/maplibre/maplibre-style-spec/pull/888))
- **Globe support** – Enabled terrain features for globe mode in MapLibre GL JS ([PR](https://github.com/maplibre/maplibre-gl-js/pull/4977))

_Maintenance tasks:_

- **GL JS Testing and Coverage** – Modernized tests by moving from Jest to Vitest ([PR](https://github.com/maplibre/maplibre-gl-js/pull/4728)). This is a stepping stone toward adopting [Rolldown](https://rolldown.rs/), which will make our GL JS toolchain much faster.
- **WIP – MapLibre Native Qt SDK** – Adding Vulkan, Metal, and OpenGL 3+ support ([PR](https://github.com/maplibre/maplibre-native-qt/pull/216)). This upgrade is key for expanding our reach among automotive OEMs and Qt developers.

_Community contributions:_

- [**Make with MapLibre**](https://makewithmaplibre.com/) – I started this showcase to highlight great projects and help boost MapLibre adoption.
- **Growing MapLibre in Python** – I led the migration to MapLibre GL JS as the default for plotly.js v3 ([writeup](https://plotly.com/blog/plotly-is-switching-to-maplibre/)). With plotly.py v6 ([released Jan 28](https://github.com/plotly/plotly.py/releases/tag/v6.0.0)), MapLibre is now poised to become a go-to for Python mapping (plotly.py has [500k-1m daily downloads](https://pypistats.org/packages/plotly)), which is bringing new people into our community.
- **Cross-Platform SDKs** – Cross-platform SDKs continue to be a popular choice among mobile developers [trends](https://makeitnew.io/cross-platform-mobile-development-trends-you-need-to-know-in-2025-a00ff6cc34f3). This year, I’ve worked to support onboarding and facilitate maintenance for all four of our MapLibre Native cross-platform SDKs—React Native, Compose, Flutter, and Qt, so we can offer users a strong and unified experience.
- **TSC Meetings** – I regularly attend our Native and GL JS meetings to stay in sync and always be available for feedback or support.

---

### My Vision and Priorities for the Board

My goal is simple: make MapLibre the highest-quality, most widely adopted map rendering stack in the world. I’m excited about what’s ahead and want to help keep our momentum going:

- Push GL JS forward with [Luma.gl](https://luma.gl/) for WebGL2 and WebGPU support
- Help Native strengthen Vulkan/Metal support and remove blockers for broader industry adoption
- Move forward an additional WebGPU backed on Native, aimed at the web target, for long-term strategic reasons.

- Explore new Native features (like Globe or Terrain) to close the gap with GL JS

- Improve support for AR/VR and 3D engines

- Improve support for in-car navigation (e.g. upgrade Qt SDK, C FFI)
- See the MapLibre Tile format adopted in real-world cases
- Support Martin in delivering server-rendering with MapLibre Native
- Experiment with AI tools for repetitive or time-consuming tasks to boost productivity

### Making MapLibre Portable: Cross-Platform Ambitions

To help us stay ahead of the curve, I plan to keep experimenting with emerging tech and share what I learn with the board:

**MapLibre Native in the Browser** – Last year, we got Native running in the browser with WebAssembly ([demo](https://birkskyum.github.io/maplibre-native-wasm/)). There’s lots of room to improve performance and build paths, so my next focus is a WebGL2 build for the drawables renderer, right after the [Qt SDK refactor](https://github.com/maplibre/maplibre-native-qt/pull/216) lands. I think we can have WebGL2 ready before year’s end, and then WebGPU is up next.

**MapLibre GL JS Beyond the Browser** – Once GL JS is fully migrated to luma.gl, I’d like to explore its potential outside the browser, such as for server rendering or desktop/mobile apps.

---

## File: src/content/bio/brandon-liu/index.md

---
title: Brandon Liu
handle: brandon-liu
github: bdon
---

---

## File: src/content/bio/devesh-kumar/index.md

---
title: Devesh Kumar
handle: devesh-kumar
github: deveshbhatta
---


    
    <h3 class="m-3">Devesh Kumar</h3>
    Member of the Governing Board
    [LinkedIn](https://www.linkedin.com/in/dkumar7/) · [GitHub](https://github.com/deveshbhatta) · [Slack](https://osmus.slack.com/team/U0BV1PYCV32)


My fellow MapLibre family members,

My name is Devesh, and I'm happy to be serving on the MapLibre Governing Board for the 2026 term.

In 2014 I shipped my first map, a transit app for my city. I fought proprietary tiles, metered pricing, and an SDK I couldn't open or fix, and when it finally rendered I realized I owned none of it. That night I stopped believing the software that draws our world should belong to a few companies who rent it back to us. That refusal is why I found MapLibre, and it is why I'm running.

I'm head of engineering for the AWS Geospatial org at Amazon, lead Amazon Location Service, and own Amazon's contributions to MapLibre, because this work lets me pour serious engineering into geospatial technology anyone can use.

Through Amazon's sponsorship, I've put engineers behind the code, from Metal rendering for iOS and Vulkan for Android to MapLibre Tile format generation and ingestion, along with the unglamorous fixes that keep the project stable for newcomers. Amazon runs MapLibre in production every day, from its delivery fleet to Amazon Location Service. I grew Amazon's MapLibre fund to USD 500K and put engineers on the problems this community voted most important.

I would also like to help with funding and new sponsorship. Beyond Amazon, I work with other industry leaders at Esri, HERE, Precisely, Stamen, SparkGeo, Grab and more. I would help renew existing sponsors, introduce new backers from partners I already know, and explore grants and proposals as added support. And I will spend my time with you, in the issues and on the calls, carrying what I hear into every decision.

I'm convinced MapLibre can become the renderer the world reaches for first, on every screen. I will drive roadmap efforts to completion. The Plugin API will extend Native without forking, the graphics modernization and WebGPU work will strengthen both SDKs, and the MapLibre Tile Format, with its Rust codec and tooling, will set a new standard for map tiles. Roadmaps do not ship themselves, so I will pair engineers and partners with each until they land in real products.

My disclosure, in fairness. I'm an Amazon employee and this MapLibre work is part of my job. Amazon is a MapLibre sponsor. Where Amazon's interests and the community's could diverge, I'll step out of the decision.

I've spent a decade betting on open mapping and backing it with code, dollars, and partnerships. With your vote, I'll turn that conviction into a stronger, freer MapLibre for all of us.

Thank you.
Dev

---

## File: src/content/bio/frank-elsinga/index.md

---
title: Frank Elsinga
handle: frank-elsinga
github: CommanderStorm
---


    
    <h3 class="m-3">Frank Elsinga</h3>
    Former Governing Board Member
    [LinkedIn](https://www.linkedin.com/in/frankelsinga/) · [GitHub](https://github.com/CommanderStorm) · [Slack](https://osmus.slack.com/team/U07SNL36BN3)


My name is Frank, and I work at the TU Munich, where I focus on geospatial and open-source projects.
I am at the start of my career and have much to learn.
While I’m early in my career, I bring fresh energy and a strong commitment to connecting MapLibre with two communities I know well: research and governments.
I believe these connections can unlock new opportunities for funding, collaboration, and long-term sustainability.

## My Contributions This Year

I have been a maintainer of `maplibre/martin` starting at `v0.15.0`.

Implemented Features

- Developed a [frontend interface](https://github.com/maplibre/martin/releases/taag/v0.18.0) ([demo](https://nav.tum.de/tiles/)) for easier exploration of tiles.
- Add [ETag Headers](https://github.com/maplibre/martin/releases/tag/v0.17.0) for better caching
- Integrate [serving MapLibre styles](https://github.com/maplibre/martin/releases/tag/v0.16.0), simplifying deployments and laying the groundwork for deeper integrations
- [SDF icons](https://github.com/maplibre/martin/releases/taag/v0.15.0) enabling SVG-like rendering of scalable symbols

Maintenance

- Reworked Martin's CI, saving 30% of runtime and sped up contributor feedback cycles
- Reworked Martin's documentation to make us more approachable for new contributors/users
- Answered/reviewed issues, discussions, PRs, … ⇒ regular maintainer things
- Reworked smaller parts of maplibre.org like news or about us to be better fitting

Community engagement:

- Regularly attend TSC meetings to stay aligned with project direction
- I attended the following conferences this year so far:
  - FOSDEM to become a better OSS maintainer
  - FOSSGIS to get a feel for the geo community
  - FOSS4G Europe to advertise Martin and talk to other developers

## My goals as a board member

### R&D / Funding

- Build a more solid foundation with academia
  - A clear offer statement (⇒ thesis, but also general papers) and
  - in the research-outreach direction
- Revisit governmental funding.
  There are a few ongoing initiatives in Europe where participating might be interesting and where I think we should at least apply.
  There are other initiatives on route to make governmental OSS contracting less painful, where we should likely contribute as well.

### Making MapLibre a stronger community

- Improve relationships with our integrations.
  Both in our official wording being less dismissive and in small gestures, I want to see some appreciation towards their maintainers.
  I would advocate for supporting maintainers to advertise their work at local (tool-specific) conferences or via special merch.
- At Open Source @ TUM, I introduced small, dual-purpose “Christmas” gifts for contributions past a semi-arbitrary bar with great effect. Sending a bit of merch and a handwritten card goes a long way.
  Being an international community, we would need to be more diverse in the concrete messaging (Christmas, Hanukkah, …), but the idea should be transferable.
  Mockup (click to expand)

  

  

- Apply more of [“isovalents learnings” around building communities](https://archive.fosdeam.org/2024/schedule/event/fosdem-2024-2776-building-an-open-source-community-one-friend-at-a-time/).

## My goals unrelated to the board

- Rework the roadmap at https://maplibre.org/roadmap to be clearer and more visually appealing
  - Explain what the roadmap is (how items get added, what being on the roadmap eans)
  - Propose a less strict option for non-core projects like martin to have a roadmap, but communicate that this is volunteer-driven
- Release [Martin v1.0](https://github.com/maplibre/martin/discussions/1805)
- Make `maplibre-native-rs` production-ready and usable in more than just Martin's context
- Experiment with bringing cheaper MLT conversion into Martin
- Help in the MLT pushdown/onboarding effort in the tooling we rely on
- Help to present Maplibre at FOSDEM, FOSSGIS, IAA and other more local conferences not already covered by @nyurik to gain/keep mind share

### A little more about me

In my spare time, I contribute to open-source projects.
My journey in the community started with a local student club, [`Open Source @ TUM e.V.`](https://tum.dev), I helped revive it from just one active alumnus into a hub with €5k/year in funding.

As part of this club, I started a [Roomfinder](https://nav.tum.de/navigate?coming_from=5510.02.001&q_from=Chemie&from=chemie&q_to=MW+2001+Rudolf-Diesel-H%C3%B6rsaal&to=5510.02.001&mode=pedestrian) which gradually began to replace the three different legacy Roomfinders our university had accrued at this point.
Initially built on Mapbox, this choice quickly outgrew our budget, leading to a migration to a self-hosted solution.
Originally, we migrated to TileServer GL and then used Martin after contributing SDF sprites support.

Work wise, I am employed by the TU Munich as a student assistant to work on our Roomfinder.
We use MapLibre GL JS and Martin.

---

## File: src/content/bio/haowen-you/index.md

---
title: Haowen You
handle: haowen-you
github: hy9be
---


    
    <h3 class="m-3">Haowen You</h3>
    Member of the Governing Board
    [LinkedIn](https://www.linkedin.com/in/hyou/) · [GitHub](https://github.com/hy9be) · [Slack](https://osmus.slack.com/team/U03NNTKD3N1)


First of all, I want to express my sincere gratitude for the trust you placed in me during the 2025 term. Your support has enabled me to serve this community, and it has been one of the most fulfilling experiences I have ever had (while the role did demand more time and energy than I initially anticipated :grin:).

The past year has shown me the power and impact of our community when we all work together. We've achieved remarkable milestones that demonstrate MapLibre's influence in the geospatial technology landscape. For example, we have witnessed significant growth in adoption, with Amazon's last-mile logistics network being a notable addition to our user base. It's humbling to know that every Amazon delivery driver navigating their routes to deliver packages in your neighborhood is now using an application powered by MapLibre. We were also fortunate to have welcomed Microsoft as our newest Gold tier sponsor, joining Amazon and Meta in their commitment to MapLibre's future. Project-wise, our own tile spec MLT has shown its potential and is gaining traction to become the next standard for vector tiles. Our map serving project Martin has reached almost 3K stars organically. Strategic projects like Maputnik have also joined the MapLibre family, further enriching our ecosystem.

These achievements are not possible without some key individuals' hard work. At the same time, I view them as testaments to our community's collective strength. They reinforce my belief in MapLibre's potential and motivate me to continue to devote myself to supporting our community's growth and success.

On the governing board, I will continue my role as a bridge between MapLibre and major corporate adopters and sponsors. I will continue my commitment to connecting common interests, facilitating the exchange of ideas, and helping navigate diverging interests when they arise. I will drive for further growth in adoptions, contributions, and sponsorships to ensure MapLibre's long-term sustainability and success.

I'm honored to continue serving our community for another term. I believe together, we will build on our momentum and achieve even more in the coming year.

---

## File: src/content/bio/harel-mazor/index.md

---
title: Harel Mazor
handle: harel-mazor
github: HarelM
---


    
    <h3 class="m-3">Harel Mazor</h3>
    Maintainer Web
    [LinkedIn](https://www.linkedin.com/in/harel-mazor-1298b139/) · [GitHub](https://github.com/HarelM) · [Slack](https://osmus.slack.com/team/ULPGVUPL1) · [X](https://twitter.com/Harel_M)


I believe we have a true chance for greatness with MapLibre.
As an Open Source promoter I believe in transparency and giving back
to the community what's rightfully theirs. Moving this project forward to
new technologies and new markets will be my main focus, making sure we
harness the power of the community by constantly updating our technology
stack and encouraging the community to contribute to the codebase.

In the day I work as a group leader in Dell Technologies and at night I'm
working on an open source hobby project called Israel Hiking Map
(co-founder) which is a small navigation app that uses Capacitor and thus
maplibre-gl-js to allow outdoor activities in Israel (hiking, biking, 4wd
driving, running etc...).

The contribution that started my journey in MapLibre was the addition of the
"addProtocol" method which opened up a world of opportunities to extend
maplibre like never before.

I've pushed forward the typescript migration along with the modernization of
the maplibre-gl-js stack, and helped with the 3D terrain and globe effort.

I generally enjoy participating in open source projects from the development
side of things, and you probably know me from the annoying code review
comments I leave when you open a PR 😊.

Feel free to check out my
[LinkedIn](https://www.linkedin.com/in/harel-mazor-1298b139/)
profile, and the Israel Hiking map
[website](https://israelhiking.osm.org.il/) and
[source code](https://github.com/IsraelHikingMap/Site).

---

## File: src/content/bio/ian-wagner/index.md

---
title: Ian Wagner
github: ianthetechie
handle: ian-wagner
---

I’m Ian, a software engineer who is passionate about open-source software and open data. By day, I'm building Stadia Maps, and by night I'm usually studying another language or hacking on a side project.

---

## File: src/content/bio/joscha-eckert/index.md

---
title: Joscha Eckert
handle: joscha-eckert
github: josxha
---

---

## File: src/content/bio/luke-seelenbinder/index.md

---
title: Luke Seelenbinder
handle: luke-seelenbinder
---


    
    <h3 class="m-3">Luke Seelenbinder</h3>
    Co-founder of MapLibre
    [LinkedIn](https://www.linkedin.com/in/lukeseelenbinder/) · [GitHub](https://github.com/lseelenbinder) · [Slack](https://osmus.slack.com/team/U01GBD8M138) · [X](https://twitter.com/lseelenbinder)


Hi, I'm Luke.

I've been part of MapLibre since the beginning—helping with the initial communication, organizational setup, and a member of the governing board since inception. I hope to continue serving the community as a member of the board and active participant. This year continued that work, and I had the chance to speak several times about MapLibre, and see the completion of several of my goals from last year.

This past year saw the conclusion of the majority of the Metal transition work, moves towards improving and overhauling the bounty system in favor of more in-house talent that can directly build the libraries, and some initial work towards unified code in Rust (thanks @nyurik!).

For the upcoming year, I hope to see the following achieved:

- A strong organization with the new graphics engineer and new coordinator.
- MapLibre Tiles succeed in moving beyond the POC to a viable production project.
- Continued growth and success of the core projects and their communities.
- Continued support from our generous sponsors and community members.

Personally, I'm also invested in seeing an adjacent navigation project, spearheaded by my company, be more closely integrated with the MapLibre ecosystem so there's once again a production-ready, open source navigation SDK for all to use.

Here's to another year of building tools to help everyone build the best open source maps!

---

## File: src/content/bio/manbhav-sugla/index.md

---
title: Manbhav Sugla
handle: manbhav-sugla
github: manbhav234
---

---

## File: src/content/bio/maplibre-board/index.md

---
title: MapLibre Board
handle: maplibre-board
---

---

## File: src/content/bio/marc-wilson/index.md

---
title: Marc Wilson
handle: marc-wilson
---


    
    <h3 class="m-3">Marc Wilson</h3>
    
        [LinkedIn](https://www.linkedin.com/in/mwilson-b727b6199/) · 
        [GitHub](https://github.com/mwilsnd) · 
        [Slack](https://osmus.slack.com/team/U03SSTHJDT5)

---

## File: src/content/bio/marti-pericay/index.md

---
title: Marti Pericay
github: mpericay
handle: marti-pericay
---

---

## File: src/content/bio/max-ammann/index.md

---
title: Max Ammann
github: maxammann
handle: max-ammann
---

I’m Max, and I’m a software engineer and aspiring security researcher. I enjoy writing open-source software. I regularly contribute to various open-source projects. I’m also a passionate photographer.

---

## File: src/content/bio/minh-nguyễn/index.md

---
title: Minh Nguyễn
github: 1ec5
handle: minh-nguyễn
---


    
    <h3 class="m-3">Minh Nguyễn</h3>
    Member of the Governing Board
   [GitHub](https://github.com/1ec5) · [Slack](https://osmus.slack.com/team/U1UT3J4DA)


I’m Minh Nguyễn, a self-employed developer from San José, California. I’m serving on the MapLibre Governing Board with the goal of helping us deepen our ties to the user community and sustain our impact as the environment for digital maps continues to evolve.

## Experience

I’ve been contributing to OpenStreetMap as a volunteer since 2008. I served on the OpenStreetMap U.S. Board of Directors from 2019 to 2023, most of that time as president. Since then, I’ve been co-leading [OpenHistoricalMap](https://wiki.openstreetmap.org/wiki/OpenHistoricalMap) and also facilitating OSM core software development (on contract with the OpenStreetMap Foundation and as a member of the Engineering Working Group). In both roles, I serve as a liaison to the community, consult with them to develop a strategic direction for the project, and create an environment that enables the team to execute on that vision. (In both projects, that vision includes MapLibre.)

You may have seen my handle come up embarrassingly often when blaming MapLibre’s Git repositories. From 2015 to 2023, I was the tech lead for Mapbox’s iOS map and navigation SDK teams. My responsibilities included designing and building much of the functionality, cross-functional collaboration with engineers working on other platforms and other parts of the stack, and direct developer and customer engagement.

Since then, I’ve been volunteering to develop [OpenStreetMap Americana](https://americanamap.org/) as the OSMUS reference implementation for integrating MapLibre GL&nbsp;JS with OpenMapTiles and OpenStreetMap data. This led me back to MapLibre, where I have participated in design discussions, contributed new features (particularly related to font management), and created multiple plugins. My contributions will continue regardless of what happens in this election. I realize it can be awkward to be on either side of a maintainer as both a contributor and a board member. I have some experience managing this situation with OHM.

## Priorities

My first priority would be to ensure that the team is looked after, that they have a healthy work environment and the resources they need to serve the community. I’m confident that this will be a collaborative effort among all the board members.

MapLibre has dual challenges of bringing forward mature codebases and breaking new ground. I would support efforts to take a hard look at where we could redirect resources from underused functionality to areas of more active development. Admittedly I still know more about the inner workings of Objective-C and JNI than about Rust or Vulcan. Consider this a guarantee that I will lean on our team for the subject matter expertise.

I would support the project’s strides toward improving developer experience. Long-term, that is what will set MapLibre apart from the multitude of other mapping options. Developer experience generates the goodwill we need to attract contributors and make inroads in organizations.

## Disclosure

My involvement in MapLibre would be on a volunteer basis. This engagement would fall outside the scope of my current contract with the OSMF.

I hold a small number of heavily diluted options in Mapbox from back when I first joined the company. This gives me effectively no say in Mapbox affairs and has never prevented me from giving back to MapLibre where possible. Nevertheless, I would responsibly recuse myself from decisions that would pose a potential conflict of interest.

---

## File: src/content/bio/oliver-wipfli/index.md

---
title: Oliver Wipfli
github: wipfli
handle: oliver-wipfli
---

I like to fly hot-air balloons and I enjoy online maps, especially with real-time data. He/him.

---

## File: src/content/bio/patrick-wolowicz/index.md

---
title: Patrick Wolowicz
github: hactar
handle: patrick-wolowicz
---

---

## File: src/content/bio/petr-pridal/index.md

---
title: Petr Pridal
handle: petr-pridal
---


    
    <h3 class="m-3">Petr Pridal</h3>
    Co-founder of MapLibre
    [LinkedIn](https://www.linkedin.com/in/klokan/) · [GitHub](https://github.com/klokan) · [Slack](https://osmus.slack.com/team/UQJSSE2PP) · [X](https://twitter.com/petrpridal)


My name is Petr Pridal, known as Klokan. I am co-founder of MapLibre, founder of OpenMapTiles, EPSG.io, author of GDAL2Tiles, architect of OldMapsOnline.org, contributor to open-source cartography on multiple fronts and projects, entrepreneur and CEO of MapTiler.com.

I am keen to offer my services to the MapLibre project and community again - as self-nominee for the governing board in 2025, because I strongly believe in the viability of open-source components for developers.

In the upcoming year, I want to help to push forward:

- [MapLibre Globe visualization](https://labs.maptiler.com/showcase/globe/) as production ready functionality for everyone (huge thanks @windycom @kubapelc already!)
  [](https://labs.maptiler.com/showcase/globe/)

- Kick-off new [WebGPU](https://en.wikipedia.org/wiki/WebGPU) renderer in TypeScript - to benefit from GPU accelerated processing of label collisions, data parsing & handling, transformations, improved font rendering, well-structured web workers, and prepare the map library for the integration of accelerated AI inference in the future. Let's gain more computational boost on modern hardware, which is closer to Vulkan and Metal instead of decades old OpenGL - while working on web-first code, but keep in sync with mobile and backend platforms
- Ensure amazing benefits of growing [MLT - MapLibre Tile format](https://github.com/maplibre/maplibre-tile-spec) becomes reality in production, but does not slow down stable GL JS - with the biggest optimizations to be made in the new WebGPU renderer
- Support further [performance boosts](https://labs.maptiler.com/sdk-benchmarks/) for MapLibre to build the fastest rendering map library out there

Please vote for me, so I can continue to contribute with improvement of processes and governance of the project - while helping to shape the future with strategical insights from industry and with my executive experience.

I have a degree in Computer Science, I have been coding myself for years, I also have extensive practical experience in management as well as education in board governance from IMD in Switzerland.

In the past, I was fighting on the board of MapLibre for:

- clear processes - hiring + documented roles & responsibilities (see subpages at [wiki](https://github.com/maplibre/maplibre/wiki))
- measurable goals aligned to [the project strategy](https://drive.google.com/file/d/1F5abpGx8VlVse4SHGwxgRRY1wQ29i-0_/view)
- transparent accounting (have a look yourself at https://opencollective.com/maplibre#category-BUDGET)
- clear [sponsorship offer](https://maplibre.org/sponsors/Slide-Deck-MapLibre-Sponsorship-Program.pdf) leading to raising money, allowing employment of maintainers in this open-source project
- trademarks - I donated the MapLibre EU trademark to the organization
- focus on becoming "the best rendering library" out there with innovation and clear roadmap

In previous years me and my team helped with setting up of this project, branding and identity of the project, we contributed in code on the initial version of Native, pushed initial announcements and assisted on many other fronts.

Let’s bring the MapLibre project to the next level - together :-)

---

## File: src/content/bio/ramya-ragupathy/index.md

---
title: Ramya Ragupathy
handle: ramya-ragupathy
---


    
    <h3 class="m-3">Ramya Ragupathy</h3>
    Head of Product & Operations
    [LinkedIn](https://www.linkedin.com/in/ramyaragupathy/) · [GitHub](https://github.com/ramyaragupathy) · [Slack](https://osmus.slack.com/team/U4KS5B4FR)

---

## File: src/content/bio/robin-boldt/index.md

---
title: Robin Boldt
github: boldtrn
handle: robin-boldt
---

Hi, my name is Robin. I am the founder of [Kurviger](https://kurviger.de/) a motorcycle route planning and navigation app. I am passionate about maps, motorcycling, and open source. At MapLibre I help with maintaining the [Android navigation library](https://github.com/maplibre/maplibre-navigation-android).

---

## File: src/content/bio/sargun-vohra/index.md

---
title: Sargun Vohra
github: sargunv
handle: sargun-vohra
---


    
    <h3 class="m-3">Sargun Vohra</h3>
    Member of the Governing Board
    [LinkedIn](https://www.linkedin.com/in/sargunv/) · [GitHub](https://github.com/sargunv) · [Slack](https://osmus.slack.com/team/U07VACBTZBJ)


I'm Sargun Vohra and I'd happy to be serving on the governing board.

First, the disclosures: my employer is [@headway](https://github.com/headway) but Headway has nothing to do with my work on MapLibre; I contribute in my spare time. I have never been paid for work on MapLibre, though there is a small portion of a StreetComplete grant allocated to some work I'm doing.

My involvement with MapLibre has largely been as a contributor and maintainer of hosted projects; I started in 2024 with [MapLibre Compose](https://github.com/maplibre/maplibre-compose), which was onboarded onto the organization in 2025, and then this year I built [MapLibre Native FFI](https://github.com/maplibre/maplibre-native-ffi), an experimental C API and suite of language bindings intended to make development of MapLibre Native SDKs and integrations easier. I've also started contributing to the native core, recently [porting the core to OpenHarmony and HarmonyOS](https://github.com/maplibre/maplibre-native/pull/4315), and I'm co-maintainer of [Spatial-K](https://github.com/maplibre/spatial-k/) after it was onboarded to the org.

My vision for MapLibre boils down to:

1. Broaden MapLibre's reach. We have popular SDKs today for Android, iOS, and the web; we should make it easy for developers on every device with a GPU to integrate a MapLibre map into their application.
2. Strengthen the SDK ecosystem. We should invest in a shared foundation and an ecosystem of SDKs so that MapLibre is the easiest and best map to integrate into any app or UI framework.
3. Expand where the MapLibre community lives. Today, issues, pull requests, and discussions happen on GitHub. We should establish a presence on a community-run software forge, because an open source community should not be inseparable from one commercial hosting provider.

---

## File: src/content/bio/stefan-karschti/index.md

---
title: Stefan Karschti
github: sargunvstefankarschti
handle: stefan-karschti
---


    
    <h3 class="m-3">Stefan Karschti</h3>
    Member of the Governing Board
    [LinkedIn](https://www.linkedin.com/in/stefankarschti/) · [GitHub](https://github.com/stefankarschti) · [Slack](https://osmus.slack.com/team/U04VBDLADR6)


I am Stefan Karschti and I’m honored to be serving on the MapLibre Board.

My background is technical, and worked in mapping for over a decade, starting at **Skobbler** where I co-architected core native components, the rendering engine, and an efficient vector tile format that powered rendering, routing, search, and guidance. I also have extensive experience in OSM map processing.
After Skobbler’s acquisition by **Telenav**, I focused on automotive navigation and map making, bringing OSM-based maps to embedded in-car systems.
Currently I'm contracting for Grab, where I've supported the adoption of MapLibre and future adoption of MLT.

In **MapLibre Native**, I have contributed:

- **Renderer rearchitecture** and **Metal backend** – implementation work as part of the **Amazon-sponsored team**, enabling native Metal rendering on Apple devices and improving performance.
- **Font rendering** – integrated Grab’s font rendering improvements and implemented font fallback (`font-faces`) support in styles.
- Various cross-platform fixes and code reviews.

**Vision:**

- Modularity and maintainability through the Plugin API implementation: minimal Core + plugins architecture that would turn layer types, style parser, tile loaders (and more) into dynamically loadable plugins.
- Expand platform reach and strive to achieve GL JS to Native feature parity. Help drive Globe, terrain PoC implementations in Native as plugins.
- Improve performance and reduce resource consumption to support a wider range of devices, including lower-end mobile phones.
- Drive greater MapLibre adoption across industries and applications, including automotive and offline use cases.

**Disclosure:** Self-employed, contracting for Grab. MapLibre work has been volunteer-based except for Amazon- and Grab-sponsored contributions.

---

## File: src/content/bio/stephanie-may/index.md

---
title: Stephanie May
handle: stephanie-may
---


    
    <h3 class="m-3">Stephanie May</h3>
    Former Governing Board Member
    [Website](https://mizmay.com/) · [LinkedIn](https://www.linkedin.com/in/mizmay/) · [GitHub](https://github.com/mizmay) · [Slack](https://osmus.slack.com/team/U501RP747)


My name is Stephanie May 👋. I'm a cartographer with a background building vector tile maps for tech companies. I'd be delighted to serve on the MapLibre board.

My involvement with Maplibre, for instance in my previous role as Director of Geospatial at Stamen, has primarily been from the background or sidelines, both managerially and technically. For instance, in building the case for investing in Maplibre Native and Metal adoption while also initiating the efforts at Stamen to formalize cartographic workflows, rebuild the iconic Stamen map tiles as vector styles on top of OpenMapTiles and host them with Stadia, and open source tools like [Maperture](https://github.com/stamen/maperture), [Map GL Style Build](https://github.com/stamen/map-gl-style-build), [Figmasset](https://github.com/stamen/figmasset), [Route Simulator](https://github.com/stamen/map-asset-route-simulator), and many smaller scripts and utilities. 🗺️ 🤓

I understand how to scale and build, scale and manage map tile and render asset pipelines alongside front end SDKs, APIs, mobile and web apps many times over. I have also given a tremendous amount of thought to maps as HCI (human computer interaction) and GIS as information systems design, and am currently seeking a PhD program where I can study these aspects more formally, with the goal of breaking free of some of the less imaginative tropes that have limited applications and utility in mapping spaces these past 30 years.

My vision for the Maplibre community is to above all support the maintainers, developers and sustaining funders who have made this impossible dream a reality 👏😸. On the governing board, I will listen and ask a lot of questions, as this has been a passion project for so many, but it's also easy for projects like this to become unwieldy.

A couple of things I would advocate for:

- Reorganized tutorials and documentation (beyond the specs)
- More long-term strategic thinking and positioning to inform future development

---

## File: src/content/bio/tyler-austin/index.md

---
title: Tyler Austin
handle: tyler-austin
github: austyle
---

---

## File: src/content/bio/yuri-astrakhan/index.md

---
title: Yuri Astrakhan
handle: yuri-astrakhan
---


    
    <h3 class="m-3">Yuri Astrakhan</h3>
    Co-founder of MapLibre and Member of the Governing Board
    [LinkedIn](https://www.linkedin.com/in/yurik/) · [GitHub](https://github.com/nyurik) · [Slack](https://osmus.slack.com/team/UD83BMK5W) · [X](https://twitter.com/nyuriks)


Dear MapLibre community,

As a passionate advocate for open-source mapping software, I'm committed to driving MapLibre's mission forward.

# Past achievements

- After the license change, I proposed community to get together under `MapLibre` name, co-founded our organization, set up OpenCollective and its finances, did the initial re-branding and CI automation of the code
- Promote MapLibre at 5+ conferences, conducting workshops and lectures
- Grew MapLibre's Martin project to become the fastest tile server in the world, and gathering over 9 **new** contributors in the last release cycle alone.
- Continue to lead the new tile format efforts (MLT)
- Built Rust integration for MapLibre native
- Numerous engagements with the community at conferences
- Attend almost all zoom calls to keep up to date on all MapLibre developments and help coordinate all new developments

# Financial Disclosure

- From the time of inception, MapLibre has always been my volunteer project, without any financial benefits
- I do not accept any financial compensation from MapLibre apart from the conference travel reimbursements
- I successfully advocated for MapLibre adaption at Rivian and Volkswagen Group Technologies, my current employer

# A little more about me

- Volunteer Wikipedia core developer since 2005, implemented API and bot frameworks. Later worked for the foundation building Maps and data viz.
- Built Sophox OSM Sparql index and other OSM tools and libraries
- Contribute heavily to the Rust ecosystem, including the compiler/libraries
- Former principal engineer at Elastic (ElasticSearch), now working at Rivian (EV cars need good maps!)

---

## File: src/content/news/2021-10-13-steering-committee-notes.mdx

---
title: "Steering Committee Notes October"
date: "2021-10-13"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available [here](https://github.com/maplibre/maplibre/discussions/2).

---

## File: src/content/news/2021-11-10-steering-committee-notes.mdx

---
title: "Steering Committee Notes November"
date: "2021-11-10"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available [here](https://github.com/maplibre/maplibre/discussions/3).

---

## File: src/content/news/2022-02-09-steering-committee-notes.mdx

---
title: "Steering Committee Notes February"
date: "2022-02-09"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available
[here](https://github.com/maplibre/maplibre/discussions/9). Terrain
3D is coming soon. Thanks Max and everyone at [Toursprung](https://www.toursprung.com/en/)
for contributing this
new feature!

---

## File: src/content/news/2022-03-09-steering-committee-notes.mdx

---
title: "Steering Committee Notes March"
date: "2022-03-09"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available [here](https://github.com/maplibre/maplibre/discussions/14).

---

## File: src/content/news/2022-04-06-steering-committee-notes.mdx

---
title: "Steering Committee Notes April"
date: "2022-04-06"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available
[here](https://github.com/maplibre/maplibre/discussions/15).
Terrain 3D might be a matter of days or weeks only until we can merge and make
a pre-release.

---

## File: src/content/news/2022-05-06-maplibre-rs-weekly.mdx

---
title: "maplibre-rs weekly"
date: "2022-05-06"
categories: ["maplibre-rs"]
authors: [max-ammann]
---

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or our Slack at [osmus.slack.com](https://osmus.slack.com/).

## 📰 News

About one month ago, the MapLibre organisation started to host the maplibre-rs project (formerly known as mapr). I was happy about the opportunity and the support from the Geo community. It seems like I was not the first with the idea of a map rendering engine in Rust. In the discussion [#18](https://github.com/maplibre/maplibre-rs/discussions/18) a lot of people showed what they have been working on in the past.
The maplibre-rs project is the place where we can bundle our efforts to create a new, unique and fun rendering engine.

At about the same time, researchers form the University of Applied Sciences and Arts (HES-SO/HEIG-VD), Switzerland, approached the maplibre-rs project. The maplibre-rs implementation should serve as a proof of concept to show that a true cross-platform experience is possible with WebGPU and Rust.

I'm looking forward what we will create in the following year!

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 New Features

- [#13](https://github.com/maplibre/maplibre-rs/pull/13), [#33](https://github.com/maplibre/maplibre-rs/pull/33) Add support for Gradle
  It's not possible to easily use maplibre-rs on Android. Sadly only fullscreen is supported right now.
- [#15](https://github.com/maplibre/maplibre-rs/pull/15) Add support for XCode and Swift Packages
  It's not possible to easily use maplibre-rs on iOS and macOS. Sadly only fullscreen is supported right now.
- [#43](https://github.com/maplibre/maplibre-rs/pull/43) Create a proper web package
  It's not possible to easily use maplibre-rs on the web via an NPM package.
- [#46](https://github.com/maplibre/maplibre-rs/pull/46) Prepare for publishing on crates.io
  Some preparations are finished and maplibre-rs is available [here](https://crates.io/crates/maplibre)
- [#38](https://github.com/maplibre/maplibre-rs/pull/38) optimize zoom bounds
  Computing some coordinates is faster now.
- [#63](https://github.com/maplibre/maplibre-rs/pull/63) Move platform specific code to web
  Most of the web related stuff lives now in the `web` crates and no longer in the core crate `maplibre`.

### 🔧 Fixes

- [#8](https://github.com/maplibre/maplibre-rs/pull/8) Rename to maplibre-rs

### 📄 Documentation

- [#52](https://github.com/maplibre/maplibre-rs/pull/52) Add packaging Documentation
- [#54](https://github.com/maplibre/maplibre-rs/pull/54) Improve the MacOS documentation

### 🧵 Current Discussions

- [#18](https://github.com/maplibre/maplibre-rs/discussions/18) Looking forward
  What's up in the mapping community?
- [#32](https://github.com/maplibre/maplibre-rs/discussions/32) Should the map be controlled from rust or from higher level languages?
  Input handling of maplibre-rs.
- [#49](https://github.com/maplibre/maplibre-rs/discussions/49) Introduce yourself!
  Who are you?

Some architectural discussions:

- [#75](https://github.com/maplibre/maplibre-rs/discussions/75) Usage of bevy game engine
- [#60](https://github.com/maplibre/maplibre-rs/discussions/60) Requirement of cross-origin isolated
- [#83](https://github.com/maplibre/maplibre-rs/discussions/83) Potential memory allocation issues on WASM

### 👋 New Contributors

- [@Drabble](https://github.com/Drabble): Thanks, for working on the documentation and testing maplibre-rs on different platforms!
- [@FabianWildgrube](https://github.com/FabianWildgrube): Thanks for experimenting with text rendering!
- [@nyurik](https://github.com/nyurik): Thanks, for reviews and optimizations!
- [@drwestco](https://github.com/drwestco): Thanks, for the awesome new logo for maplibre-rs!
- [@vladdoster](https://github.com/vladdoster), [@hdevalence](https://github.com/hdevalence): Thanks for improving the documentation!

---

## File: src/content/news/2022-05-11-steering-committee-notes.mdx

---
title: "Steering Committee Notes May"
date: "2022-05-11"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available
[here](https://github.com/maplibre/maplibre/discussions/28).
Terrain3D can be merged now :) Thanks Max and everyone at Toursprung for their contributions!

---

## File: src/content/news/2022-05-13-maplibre-rs-weekly.mdx

---
title: "maplibre-rs weekly"
date: "2022-05-13"
categories: ["maplibre-rs"]
authors: [oliver-wipfli]
---

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invite [here](https://slack.openstreetmap.us).

## 📰 News

If you haven't read the initial news then check it out [here](/news/2022-05-06-maplibre-rs-weekly).
In the past week we continued to work on our collaboration with the University of Applied Sciences and Arts (HES-SO/HEIG-VD), Switzerland.
The main focus of the past week was on documentation and redesigning the renderer and the structure of the maplibre-rs library.

In the past week, I extracted the render from [Bevy](https://bevyengine.org/). After some discussions [on Github](https://github.com/maplibre/maplibre-rs/discussions/75), Slack and Matrix we concluded that writing a renderer specific to maps is the best option. In general, specialized renderers can be optimized better. By implementing a renderer ourselves, we also stay independent of other projects. For example, Bevy is a render engine (renderer + a lot more) for games. That means that features which are important for bevy are most likely not important for maplibre-rs and vice versa. For example, the Bevy renderer does not support a stencil.

Because I'm quite unexperienced in the world of 3D graphics, I decided to base the renderer on some existing one. The best renderers in the Rust world are currently Bevy and rend3. After evaluating both renderers I decided to go with the Bevy one, because rend3 had usages of `unsafe. Both renderers are based around the idea of a [render graph](https://logins.github.io/graphics/2021/05/31/RenderGraphs.html).

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 New Features

- [#99](https://github.com/maplibre/maplibre-rs/issues/99) Postponed: Experimentally render to an Android surface  
  Experiment which renders to an Android Surface instead of the whole screen.
- [#93](https://github.com/maplibre/maplibre-rs/issues/93) Add Render Graph from Bevy , [#94](https://github.com/maplibre/maplibre-rs/issues/94) Experiment: Render Graph from rend3  
  Experiment with a new render engine. This will probably define the architecture of maplibre.
- [#77](https://github.com/maplibre/maplibre-rs/issues/77) Postponed: Use only non-send futures  
  I’m not sure whether Futures should be `Send` or not.
- [#80](https://github.com/maplibre/maplibre-rs/issues/80) Refactor WebWorker pool  
  Restructure and optimize WebWorker pool.
- [#70](https://github.com/maplibre/maplibre-rs/issues/70) Experimentally add a headless mode  
  Experiment with a headless mode.
- [#85](https://github.com/maplibre/maplibre-rs/issues/85) Contributors README.md
- [#86](https://github.com/maplibre/maplibre-rs/issues/86) Move winit code to maplibre-winit  
  Extract `winit` dependency from main crate.

### 🔧 Fixes

- [#97](https://github.com/maplibre/maplibre-rs/issues/97) Initial start of removing unwrap from a Result type  
  Remove `.unwrap()` from code.
- [#88](https://github.com/maplibre/maplibre-rs/issues/88) Postponed: Inspect WASM size  
  Optimize WASM size.
- [#81](https://github.com/maplibre/maplibre-rs/issues/81) Update license and code of conduct

### 📄 Documentation

- [#84](https://github.com/maplibre/maplibre-rs/issues/84) Write the Microsoft Windows build documentation
- [#87](https://github.com/maplibre/maplibre-rs/issues/87) Improve the Cargo documentation

### 🧵 Current Discussions

- [#18](https://github.com/maplibre/maplibre-rs/discussions/18) Looking forward
  What's up in the mapping community?
- [#32](https://github.com/maplibre/maplibre-rs/discussions/32) Should the map be controlled from rust or from higher level languages?
  Input handling of maplibre-rs.
- [#49](https://github.com/maplibre/maplibre-rs/discussions/49) Introduce yourself!
  Who are you?

Some architectural discussions:

- [#75](https://github.com/maplibre/maplibre-rs/discussions/75) Usage of bevy game engine
- [#60](https://github.com/maplibre/maplibre-rs/discussions/60) Requirement of cross-origin isolated
- [#83](https://github.com/maplibre/maplibre-rs/discussions/83) Potential memory allocation issues on WASM

### 👋 New Contributors

- [@iakev](https://github.com/iakev): For resolving `.unwrap()`s in the code
- neimsaci - For adding contributors to the README

---

## File: src/content/news/2022-05-23-maplibre-rs-monthly.mdx

---
title: "maplibre-rs monthly"
date: 2022-05-23T20:16:02+02:00
categories: ["maplibre-rs"]
authors: [max-ammann]
draft: false
---

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invite [here](https://slack.openstreetmap.us).

## 📰 News

If you haven't read the last news then check it out [here](/news/2022-05-13-maplibre-rs-weekly)

Today, we merged the new renderer for maplibre-rs. It is based on bevy. Thanks bevy-devs for your outstanding progress on developing a game engine in Rust! Thank you very much for making your work open-source!

This week we continued to work on the scientific publication around maplibre-rs. Checkout the previous weekly for more information.

From now on this news will only be posted monthly, as I will have significantly less time for maplibre-rs in the next 3 months.

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 Merged Pull Requests

- [#104](https://github.com/maplibre/maplibre-rs/pull/104) Create a MacOS application artifact in GHA by [@Drabble](https://github.com/Drabble)
  You can now download the demo for macOS directly on the Github Action page.
- [#103](https://github.com/maplibre/maplibre-rs/pull/103) Add Windows as a target OS in Cargo dependencies by [@Drabble](https://github.com/Drabble)
  Windows is now officially tested and supported
- [#102](https://github.com/maplibre/maplibre-rs/pull/102) Create the how-to-run.md documentation by [@Drabble](https://github.com/Drabble)
  We split the documentation for building the library for development purposes and actual library development.
- [#101](https://github.com/maplibre/maplibre-rs/pull/101) Create a Windows executable artifact in GHA by [@Drabble](https://github.com/Drabble)
  You can now download the demo for Windows directly on the Github Action page.
- [#100](https://github.com/maplibre/maplibre-rs/pull/100) Improve apple iOS configuration by [@Drabble](https://github.com/Drabble)
  The demo runs now in the simulator on x86_64
- [#93](https://github.com/maplibre/maplibre-rs/pull/93) Add Render Graph from Bevy by [@maxammann](https://github.com/maxammann)
  A render based on render graphs is now implemented.

### 🎁 New Issues

- [#112](https://github.com/maplibre/maplibre-rs/issues/112) Support Middleware API by [@maxammann](https://github.com/maxammann)
  We might want to make it easier for other Rust apps to include maplibre-rs
- [#108](https://github.com/maplibre/maplibre-rs/issues/108) &#34;cargo test&#34; fails with &#34;android-ndk-sys only supports compiling for Android&#34; by [@dmarcoux](https://github.com/dmarcoux)
  Thanks for raising awareness for our tests!
- [#107](https://github.com/maplibre/maplibre-rs/issues/107) Hide SQLite3 dependency behind a feature flag by [@maxammann](https://github.com/maxammann)
  Task for making sqlite3 an optional dependency

### 🧵 Current Discussions

- [#18](https://github.com/maplibre/maplibre-rs/discussions/18) Looking forward
  What's up in the mapping community?
- [#32](https://github.com/maplibre/maplibre-rs/discussions/32) Should the map be controlled from rust or from higher level languages?
  Input handling of maplibre-rs.
- [#49](https://github.com/maplibre/maplibre-rs/discussions/49) Introduce yourself!
  Who are you?

### 👋 Contributors

- [@jackson211](https://github.com/jackson211)
- [@maxammann](https://github.com/maxammann)
- [@dmarcoux](https://github.com/dmarcoux)
- [@Drabble](https://github.com/Drabble)

---

## File: src/content/news/2022-06-08-steering-committee-notes.mdx

---
title: "Steering Committee Notes June"
date: "2022-06-08"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available
[here](https://github.com/maplibre/maplibre/discussions/34).

---

## File: src/content/news/2022-06-10-mierune-announcement.mdx

---
title: "MIERUNE Inc. supports MapLibre with USD 10'000"
date: "2022-06-10"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

Recently, [MIERUNE Inc.](https://www.mierune.co.jp/?lang=en) from Japan decided to support MapLibre financially with a generous donation of USD 10'000, see https://opencollective.com/maplibre. This is the largest amount that MapLibre has received to date.

Thank you MIERUNE Inc., we are very proud that you trust MapLibre and support us!

To better understand MIERUNE's background and motivation, we asked them a few questions which they answered below:

## What is MIERUNE Inc. and how many people work there?

We are a Japanese software company specializing in geographic information technologies. We provide solutions for a variety of fields, including communications, logistics, transportation, medicine, weather, and the public sector. We are based in Hokkaido, the second largest island in the north part of Japan. We currently have 16 members from a variety of backgrounds; web, geography, construction, and civil services, to name a few.

## Why do you support MapLibre?

We strongly believe in the open-source culture. Continuous support for the OSS is essential to make innovations happen. We think that contributing to the OSS ecosystems is an important activity as a company benefiting from them.

We would like to support MapLibre's growth in terms of providing a variety of solution options and opportunities to the community.

We see a growing number of MapLibre users here in Japan, and we expect them to increase even faster.

We want to use this contribution as a stepping stone to participate in projects around the world that take full advantage of MapLibre's capabilities, and feedback on the needs of the users to the development team, as well as directly contribute to the development itself (we already have contributed to the codebase before sponsoring the project).

## Have you supported other open-source projects in the past?

- [QGIS.org - Sustaining Member](https://qgis.org/en/site/about/sustaining_members.html)
- [Funded "Vector Tile native support in QGIS" Crowdfunding Project](https://www.lutraconsulting.co.uk/crowdfunding/vectortile-qgis/)
- [OSGeoJP (Japan Chapter of OSGeo Foundation) - Institutional Sponsor](https://www.osgeo.jp/sponsor)
- [OpenStreetMap Foundation Japan - "State of the Map" Conference Sponsor, 2017-2020)](https://stateofthemap.jp/) (As we haven't had a conference since 2020 due to the global situation)

## Is MapLibre well aligned with the needs of the local mapping community in Japan?

We still lack documents and showcases accessible in the Japanese language, which tends to make it difficult for beginners to get started with the library. We, as a Japanese organization, would like to actively produce a variety of resources in Japanese to build up the community here!

## Have you ever used MapLibre in a way you never thought you would?

- Modified tile data with `addProtocol()` to view them in Terrain3D: https://jsbin.com/vonixulezo/edit?html,output (Japanese altitude tiles are not compatible with TerrainRGB, so we converted them to TerrainRGB)
- Providing COG as raster tiles with `addProtocol()`: https://qiita.com/Kanahiro/items/70b3b8b11bd26cbaf30e (article in Japanese)

---

## File: src/content/news/2022-06-26-maplibre-rs-monthly.mdx

---
title: "maplibre-rs monthly"
date: 2022-06-26
categories: ["maplibre-rs"]
authors: [max-ammann]
draft: false
---

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invite [here](https://slack.openstreetmap.us).

## 📰 News

This months we had quite a few first-time contributions! Let's hope this trend keeps up. The maplibre-rs team will try to supply enough high-quality issues.
Apart from that major progress in headless rendering and CI infrastructure has been done.

I'm happy to announce that [@ybiletskyi](https://github.com/ybiletskyi) and [@Quillasp](https://github.com/Quillasp) are checking out what's needed to get raster tile rendering working. [@ybiletskyi](https://github.com/ybiletskyi) resolved a limitation of wgpu in [#2781](https://github.com/gfx-rs/wgpu/pull/2781). Looking forward to see how the project scales with new features!

The paper about maplibre-rs for FOSS4G is finished! Looking forward to meet all of you in August!

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 Merged Pull Requests

- [#130](https://github.com/maplibre/maplibre-rs/pull/130) Allow panning with touch inputs by [@Drabble](https://github.com/Drabble)
  Panning should work now on more platforms.
- [#129](https://github.com/maplibre/maplibre-rs/pull/129) Enable benchmarks by [@maxammann](https://github.com/maxammann)
  Because of the headless mode, we can benchmark the rendering now. A software-based renderer is used in the CI.
- [#124](https://github.com/maplibre/maplibre-rs/pull/124) Deploy to cloudflare by [@maxammann](https://github.com/maxammann)
- [#123](https://github.com/maplibre/maplibre-rs/pull/123) Fix deployment of docs, and disable of demo by [@maxammann](https://github.com/maxammann)
  Documentation and demos are now deployed on Github and Cloudflare infrastructure.
- [#119](https://github.com/maplibre/maplibre-rs/pull/119) Headless windows & Data pipeline by [@maxammann](https://github.com/maxammann)
  For the first time its possible to render arbitrary tiles to PNG files.
- [#118](https://github.com/maplibre/maplibre-rs/pull/118) Struct for zoom level by [@ybiletskyi](https://github.com/ybiletskyi)
  First time contribution by @ybiletskyi! Thanks for improving code quality.
- [#117](https://github.com/maplibre/maplibre-rs/pull/117) Fix unit test build and run tests on CI (on some platforms) by [@yzsolt](https://github.com/yzsolt)
  Thanks for noticing that we did not even run the tests in the CI!
- [#111](https://github.com/maplibre/maplibre-rs/pull/111) Add sqlite feature flag by [@jackson211](https://github.com/jackson211)
  SQLite is no longer required for building on Windows for example.
- [#105](https://github.com/maplibre/maplibre-rs/pull/105) Android improvements by [@Drabble](https://github.com/Drabble)
  Minor changes for compiling for a greater range of Android devices.

### 🎁 New Issues

- [#140](https://github.com/maplibre/maplibre-rs/issues/140) Problem in running "Maplibre-demo" in windows 10 by [@Shawn-Fan](https://github.com/Shawn-Fan)
  Windows seems to be a recurring challenge.
- [#139](https://github.com/maplibre/maplibre-rs/issues/139) Support other projections than the Mercator projection by [@Drabble](https://github.com/Drabble)
  We will need some qualified input here! Reach out to us if you have a vision about projection support!
- [#138](https://github.com/maplibre/maplibre-rs/issues/138) Upgrade Trace to 0.8.1 by [@maxammann](https://github.com/maxammann)
  This is a relatively simple issue for first-time-contributors.

### 🧵 Current Discussions

None

### 👋 Contributors

- [@maxammann](https://github.com/maxammann)
- [@Drabble](https://github.com/Drabble)
- [@jackson211](https://github.com/jackson211)
- [@ybiletskyi](https://github.com/ybiletskyi)
- [@yzsolt](https://github.com/yzsolt)

---

## File: src/content/news/2022-07-13-steering-committee-notes.mdx

---
title: "Steering Committee Notes May"
date: "2022-07-13"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Steering committee meeting notes available
[here](https://github.com/maplibre/maplibre/discussions/69).

---

## File: src/content/news/2022-08-22-aws-announcement.mdx

---
title: "AWS becomes a MapLibre Platinum Sponsor"
date: "2022-08-22"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

We are pleased to announce the Amazon Web Services (AWS) support for the MapLibre
Organization as a Platinum Sponsor. Thanks for your generous support and for all the trust you
put in us!



AWS is an active participant in the MapLibre Organization and community at large. We wanted
to know why AWS decided to support us, so we asked them a few questions:

## 1. How is AWS using MapLibre today?

MapLibre is in use across AWS by both our customers and several AWS services. It is Amazon
Location Service’s recommended map renderer and forms the basis of AWS Amplify Geo’s map
display and geocoding capabilities. We’ve been excited to see the project grow since it
launched in 2020 and look forward to continuing our work with the MapLibre Organization.

## 2. Why is the support and growth of the MapLibre community important to AWS and its customers?

Many AWS customers already use MapLibre, so this is an opportunity to help support ongoing
innovation and maintenance on their behalf. It also allows us to ensure that MapLibre works well
with AWS services like Amazon Location Service and AWS Amplify Geo by partnering with the
community.

Overall, supporting the MapLibre Organization is about meeting our customers where they are
and helping to nurture a thriving open source community. More flexibility in map rendering
engines leads to more experimentation by customers, which helps drive innovation across the
industry.

---

## File: src/content/news/2022-08-24-maplibre-rs-paper.mdx

---
title: "maplibre-rs paper published"
date: "2022-08-24"
categories: ["maplibre-rs"]
authors: [max-ammann]
draft: false
---

[maplibre-rs](https://github.com/maplibre/maplibre-rs) is an experimental & portable vector map renderer written in Rust. If you want to get in touch with the developers, visit the [#maplibre:matrix.org](https://matrix.to/#/#mapr:matrix.org) chat or our Slack at [osmus.slack.com](https://osmus.slack.com/).

Together with researches from the University of Applied Sciences and Arts (HES-SO/HEIG-VD) in Switzerland, we published the first scientific paper about maplibre-rs. It is available as open-access [here](https://doi.org/10.5194/isprs-archives-XLVIII-4-W1-2022-35-2022).
The paper includes a comprehensive review of existing open-source map renderers and their portability. We describe the architecture of maplibre-rs and uncover the challenges we encountered.

---

## File: src/content/news/2022-08-26-meta-announcement.mdx

---
title: "Meta becomes a MapLibre Sponsor"
date: "2022-08-26"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

We are pleased to announce that Meta now is a sponsor of the MapLibre Organization. Thanks for your generous help and for all the trust you put in us!



Meta has been involved in the MapLibre Organization since the very beginning, helped setting up the initial fork, and provided guidance on non-trivial questions around licensing.

Open source is an important part of Meta’s approach to map building. Meta's map building teams contribute to and maintain a number of open source projects such as OpenSFM, Mapillary Tools, Mapillary’s Python SDK, the Daylight Map Distribution, RapiD Editor for OpenStreetMap and many more. Meta is also a significant user of open source tools such as QGIS, GDAL/OGR, and PostGIS. Additionally, Meta supports open source communities such as OSGeo, the OpenStreetMap Foundation, and local OpenStreetMap chapters through grants, membership, and conference sponsorship.

---

## File: src/content/news/2022-09-02-election.mdx

---
title: "Governing Board Election and Charter Approval"
date: "2022-09-02"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

On Thursday, Aug 25th, 2022, the MapLibre Voting Members elected for the first time a Governing Board and they approved the MapLibre Charter. We thank all the candidates and Voting Members for participating in this process!

The new Governing Board consists of the following people (in alphabetic order):

- Birk Skyum [@birkskyum](https://github.com/birkskyum)
- Harel Mazor [@HarelM](https://github.com/HarelM)
- Luke Seelenbinder [@lseelenbinder](https://github.com/lseelenbinder)
- Petr Pridal [@klokan](https://github.com/klokan)
- Yuri Astrakhan [@nyurik](https://github.com/nyurik)

The new Board is looking forward to serving the community in the upcoming year!

Of the [43 Voting Members](https://github.com/maplibre/maplibre/blob/main/VOTING_MEMBERS.md), 35 participated in the Governing Board election. All statistics and election results can be found at [GitHub](https://github.com/maplibre/maplibre/tree/main/2022-polls).

---

## File: src/content/news/2022-10-07-oliver-coordinator.mdx

---
title: "Oliver Wipfli becomes MapLibre's first Coordinator"
date: "2022-10-07"
categories: ["announcements"]
authors: [maplibre-board]
draft: false
---

The MapLibre Governing Board selected [Oliver Wipfli](https://github.com/wipfli) to work as Coordinator of the MapLibre Organization. Oliver did this very well until now in his free time, and we need immediate action.

We allocated an initial budget cap of $33k for the immediate kick-off and Oliver will work as a freelancer and invoice his time.

Deliverables:

- Sponsorship - communication, formalized process, fundraising
- Recruitment campaign - collect a list of candidates for the roles of maintainer, developer (keen on bounties), backup coordinator and secretary
- Active hiring and interviews: Hire a maintainer for MapLibre Native
- Implement a bounty system
- Develop and document organizational processes - budget, roles, time tracking, roadmaps
- Ensure smooth operation - meetings announcements, communication

Two members of the Governing Board will act as an Executive Committee and meet with Oliver every two weeks.

We are glad to have you, Oliver, and look forward to building MapLibre's future together with you!

---

## File: src/content/news/2022-12-15-steering-committee-notes.mdx

---
title: "Steering Committee Notes December"
date: "2022-12-15"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

Yesterday, we had a first MapLibre Eastern Call at 9 AM CET, the native technical steering committee meeting at 7 PM CET, and the web technical steering committee meeting at 8 PM CET. All notes are available at [https://github.com/maplibre/maplibre/discussions/154](https://github.com/maplibre/maplibre/discussions/154).

It was great to see so many people from all over the world and participation from companies including Amazon, Apple, Grab, Lyft, MapTiler, Meta, Microsoft, Mierune, RobLabs, Stadia Maps, Stamen, and TomTom!

---

## File: src/content/news/2023-01-03-announcement-bart.mdx

---
title: "Bart Louwers starts as Maintainer Native"
date: "2023-01-03"
categories: ["announcements"]
authors: [oliver-wipfli]
---

Today, Bart Louwers is starting to work with MapLibre in the Maintainer Native role. Let's give him a warm welcome!

Bart is excited to meet the people involved in the project and learn more about the codebase and the community behind it. Feel free to reach out to Bart and say hello to him...


  <a href="https://github.com/louwers/">
    
  </a>


- LinkedIn: https://www.linkedin.com/in/bart-louwers/
- GitHub: https://github.com/louwers/
- Slack: `@Bart Louwers` in the OSMUS Slack channel at https://slack.openstreetmap.us/

Bart's responsibilities in the Maintainer Native role (see https://github.com/maplibre/maplibre/wiki/Maintainer-Native-Role#responsibilities) are focused on making sure that the MapLibre Native repository is in good shape, that contributors get answers to issues and pull requests in a timely manner, and that it becomes easier for new people to get started with the codebase.

We plan to initially work together for two months, January and February 2023, and then evaluate how we best proceed. Thank you for trusting us and starting this adventure with us, Bart!

Having a first paid maintainer is a big step for the MapLibre Organization and all of this would not have been possible without the generous support of our [Sponsors](https://maplibre.org/sponsors/).

To quote the [MapLibre Sponsorship Program](https://maplibre.org/files/Word-Doc-MapLibre-Sponsorship-Program.pdf):


  The biggest challenge for an open-source project like MapLibre is continuous
  dedication. Volunteers tend to provide excellent short-term contributions, but
  a project's long-term viability depends on the members actively responding to
  new users’ questions and contributions. We think that the only way to ensure
  long-term stability is to hire maintainers whose responsibility will be to
  organize and coordinate rather than to code.


By participating in the MapLibre Sponsorship Program, you can ensure that MapLibre Native and MapLibre GL JS become long-term sustainable projects on which you and your users can count!

We wish Bart a good start and are excited to see what the future brings.

---

## File: src/content/news/2023-01-03-aws-maplibre-plugins.mdx

---
title: "Developing Plugins for MapLibre Interoperability"
date: "2023-01-04"
categories: ["community-post"]
authors: [tyler-austin]
---

Considering that MapLibre is an open-source fork of the Mapbox rendering library, many of the Mapbox plugins can be used in conjunction with MapLibre without any issue in JavaScript. However, since MapLibre is a TypeScript library in the same spirit, if you wish to use some of the popular Mapbox plugins in your TypeScript application you will likely run into the TypeScript compiler throwing a lot of type inference errors. This is because these plugins were developed with Mapbox solely in mind.

To quickly step over these compiler complaints you may reach for the all powerful `@ts-ignore` to do something like this when using [@mapbox/mapbox-gl-draw](https://github.com/mapbox/mapbox-gl-draw):

```typescript
import maplibregl from "maplibre-gl";
import MapboxDraw from "@mapbox/mapbox-gl-draw";

import "maplibre-gl/dist/maplibre-gl.css";
import "@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css";

const map = new maplibregl.Map({ ...someConfig });
const drawCtl = new MapboxDraw();

// @ts-ignore
map.addControl(drawCtl, "top-left");
```

Currently, we need to do this because when using TypeScript the plugin makes the assumption that it should receive reference to a Mapbox Map object rather than a MapLibre Map object. So, we must explicitly tell the TypeScript compiler to ignore this static type check. This should be a very scary band-aid to developers because if the two implementations of the map objects diverge into different directions over time it can break compatibility with this plugin. Additionally if that were to happen, no warnings or errors will surface because we are suppressing the complaint from the compiler with the all powerful `@ts-ignore`.

In order to avoid what could be an illusive bug in the future and to add compatibility for both MapLibre and Mapbox libraries, there is a solution! We at MapLibre recommend updating existing plugins and building new plugins to support both libraries. Here are some of the ways we can achieve that.

Both recommendations include using TypeScript's implementation of Intersection Types which combines multiple types into one allowing you to add together existing types to get a single type that has all the features you need. The first example below shows how to accomplish this using default imports from the mapping libraries and the second example outlines how to accomplish the same effect with named imports.

### Example 1: Intersection Types with Default Imports

```typescript
// Mapbox GL Geocoder
// GitHub: https://github.com/mapbox/mapbox-gl-geocoder
// Types: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/mapbox__mapbox-gl-geocoder/index.d.ts

import mapboxgl = require("mapbox-gl");
import maplibregl = require("maplibre-gl");

type MapGl = mapboxgl & maplibregl;
```

### Example 2: Intersection Types with Named Imports

```typescript
// Mapbox GL Draw
// GitHub: https://github.com/mapbox/mapbox-gl-draw
// Types: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/mapbox__mapbox-gl-draw/index.d.ts

import { IControl as MapboxIControl, Map as MapboxMap } from 'mapbox-gl';
import { IControl as MaplibreIControl, Map as MaplibreMap } from 'maplibre-gl';

type IControl = MapboxIControl & MaplibreIControl;
type Map = MapboxMap & MaplibreMap;

declare class PluginName implements IControl {
    ...
    onAdd(map: Map): HTMLElement;
    onRemove(map: Map): any;
    ...
}
```

---

## File: src/content/news/2023-01-11-steering-committee-notes.mdx

---
title: "Steering Committee Notes January"
date: "2023-01-11"
categories: ["steering-committee"]
authors: [oliver-wipfli]
---

We had our first monthly meeting of 2023. You find the meeting notes [here](https://github.com/maplibre/maplibre/discussions/187).

Feel free to join our next monthly meeting on Wednesday, Feb 8th, 2023. The technical steering committee meetings are open to everyone!

---

## File: src/content/news/2023-01-16-announcement-harel.mdx

---
title: "Harel Mazor starts as Maintainer Web"
date: "2023-01-16"
categories: ["announcements"]
authors: [oliver-wipfli]
---

We are happy to share that we were able to contract Harel Mazor, the long-time lead-maintainer of MapLibre GL JS, for the Maintainer Web role. Please give him a warm welcome!


  <a href="https://github.com/HarelM/">
    
  </a>


- LinkedIn: https://www.linkedin.com/in/harel-mazor-1298b139/
- GitHub: https://github.com/HarelM/
- Slack: `@Harel Mazor` in the OSMUS Slack channel at https://slack.openstreetmap.us/

Harel started being involved in the development of GL JS by contributing the `addProtocol()` function (Pull Request https://github.com/maplibre/maplibre-gl-js/pull/30) function in 2021, and made a huge overhaul of the library by migrating it to TypeScript (Pull Request https://github.com/maplibre/maplibre-gl-js/pull/209). Harel became the most active maintainer of MapLibre GL JS and reviewed pull request after pull request, triaged issues, and helped users getting started.

Out of all candidates for the Maintainer Web role, Harel was the best because of his technical strength, in-depth knowledge of the codebase, familiarity with the community, and dedication and commitment to the project.

Harel covered the [requirements](https://github.com/maplibre/maplibre/wiki/Maintainer-Web-Role#requirements) of the Maintainer Web role for months and years as a volunteer and we are thankful for all his contributions. Since December 2022, the Governing Board has approved [budget](https://github.com/maplibre/maplibre/files/10114728/Budget.Dec.2022.Jan.2023.Feb.2023.-.budget.pdf) for the Maintainer Web role and we will acknowledge Harel's work as Maintainer in the time period Dec 1st, 2022 to Jan 15th, 2023 with a one-time flat payment.

Harel will serve in the Maintainer Web role until March 31st, 2023 and then we will assess the situation and decide how to best proceed.

## Conflict of Interest

Being a member of the MapLibre Governing Board, Harel has a clear conflict of interest.

We talked about this conflict early on and agreed that Harel would abstain from all discussions and decisions related to the Maintainer Web hiring and that he would be excluded from any communication around the hiring process.

Regarding deciding on [budget allocation](https://github.com/maplibre/maplibre/files/10114728/Budget.Dec.2022.Jan.2023.Feb.2023.-.budget.pdf) for the Coordinator, Maintainer Web, and Maintainer Native roles, Harel was involved in the discussion and approved the final budget.

We encourage everyone to share if they have concerns regarding the decision to contract Harel in a maintainer role while he is simultaneously a Governing Board member.

The Governing Board stands unanimously behind the decision to contract Harel and is looking forward to his continued lead of MapLibre GL JS!

---

## File: src/content/news/2023-01-16-announcement-ovi.mdx

---
title: "Ovidiu Voda starts as Maintainer Native"
date: "2023-01-16"
categories: ["announcements"]
authors: [oliver-wipfli]
---

With Ovidiu Voda starting today, we are proud to now have two people working as Maintainers on MapLibre Native. Please give Ovi a warm welcome!

Ovi is going to work together with Bart Louwers on Native and he is looking forward to meeting everyone involved in the project. Feel free to reach out to Ovi and say hi to him.


  <a href="https://github.com/ovivoda">
    
  </a>


- LinkedIn: https://www.linkedin.com/in/oviv/
- GitHub: https://github.com/ovivoda
- Slack: `@Ovi` in the OSMUS Slack channel at https://slack.openstreetmap.us/

We plan to initially work together with Ovi for three months, January, February, March 2023, and then evaluate how we best proceed.

Ovi previously led Mapillary's Android team. It is a big honor for MapLibre to contract with a person who is as experienced as Ovi and we are looking forward to what the future will bring!

---

## File: src/content/news/2023-01-20-bounty-directions.mdx

---
title: "Bounty Directions"
date: "2023-01-20"
categories: ["announcements"]
authors: [oliver-wipfli]
---

The MapLibre Bounty Program will support the following cross-project directions: Terrain3D, globe view, documentation, performance, Brahmic/Indic scripts, MapLibre Innovation Lab.

We invited the broader community to give feedback and share ideas for cross-project directions in a [discussion group on GitHub](https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions?discussions_q=category%3A%22Bounties+-+cross-project+directions%22+sort%3Atop).

As of Jan 18th, 2023, the following directions got the most votes:

- 3D terrain visualization (22 votes)
- Globe on zoom out via Adaptive Composite Map Projection (17 votes)
- Speed - initialization and rendering (11 votes)
- Support Brahmic/Indic scripts (9 votes)

The Governing Board found that these directions are indeed strategically important for the growth of the user and contributor base and decided to support them with Bounties.

Furthermore, the Board identified that promoting better documentation with Bounties will help the wider adoption of the MapLibre SDKs and help people migrate existing projects to MapLibre.

Finally, the Board recognizes that innovation is a critical factor for the long-term success of MapLibre and sees a need to foster an open environment where people can experiment freely. The MapLibre Innovation Lab shall be the place where people can come together and experiment, look at the latest technologies available, and prepare us for next-generation map rendering.

## Allocation on Directions

- USD 10,000 on 3D terrain visualization and parity web - native
  - Visualization of the elevation from DEM (RGBA tiles) including drawing the tracks, labels and points.
  - Improvements related to 3d terrain rendering - improvements and bug-fixing in existing Web implementation, implementation in Native, documentation.
- USD 10,000 on Globe View on zoom out via Adaptive Composite Map Projection
  - Ability to show and interact with Globe (or alternative view on earth) when map is zoomed out - while reusing and loading the same Mercator vector tile and raster data - client side reprojection of the data - using Adaptive Composite Map Projection - where deeply zoomed you are in Mercator - but from certain zoom level up there is transition to another projection.
- USD 10,000 on Documentation
  - Write tutorials and getting started guides to help people migrate existing projects to MapLibre or help them with new map rendering projects.
  - Modernize documentation tooling to meet today's best practices and most widely adopted solutions.
- USD 10,000 on Speed - initialization and rendering
  - Optimization related to initialization time of the rendering libraries, delay before the map appears in the app.
  - Rendering performance improvements, measurement, test and best-practice documentation.
- USD 5,000 on Support Brahmic/Indic scripts
  - Support text rendering for more languages, in particular Brahmic/Indic scripts.
- USD 5,000 on MapLibre Innovation Lab
  - Space for experimentation and innovation
  - Experiment with next-generation map rendering
  - Explore latest available technologies

## Next Steps

Now that the Governing Board has decided how to split the Bounty budget in strategically important directions, the maintainers and the coordinator are in charge of deciding on the allocation of Bounties on individual tasks.

The [Bounty System](https://github.com/maplibre/maplibre/wiki/Bounty-System) wiki page describes the full process.

For each Bounty Direction, there is a tracking [GitHub Issue in maplibre/maplibre](https://github.com/maplibre/maplibre/issues?q=is%3Aissue+is%3Aopen+label%3A%22bounty+direction%22). Individual Bounties tickets will be published in MapLibre GL JS, MapLibre Native and other repositories and they will reference their Bounty Direction ticket in maplibre/maplibre.

## Working on Bounties

If you are interested in working on Bounties, you first have to be cleared for the Developer Role. You can apply to the [Developer Role](https://github.com/maplibre/maplibre/wiki/Developer-Role) at https://maplibre.org/jobs.

Once you are in the [Developer Pool](https://github.com/maplibre/maplibre/wiki/Developer-Role#current-role-holders-developer-pool), you can apply for individual Bounties as they are published in Issues in our GitHub repositories.

We are looking forward to your contributions!

---

## File: src/content/news/2023-02-08-maplibre-react-native-announcement.mdx

---
title: "MapLibre React Native Announcement"
date: 2023-02-08
categories: ["announcements"]
authors: [ian-wagner]
draft: false
---

MapLibre has completed onboarding of [MapLibre React Native](https://github.com/maplibre/maplibre-react-native), an SDK
that will make MapLibre Native more accessible to mobile developers.

The project is a fork of [rnmapbox](https://github.com/rnmapbox/maps), a community-maintained React Native library
for building maps with the Mapbox iOS and Android SDKs. The original project supported both Mapbox and MapLibre
backends for some time, but as the MapLibre SDK has developed independently over time, supporting both became onerous.
A clean break enables both projects to bring improvements and bug fixes from the native SDKs to
React Native developers as quickly as possible.

The fork was coordinated by Luke Seelenbinder (a MapLibre governing board member) and Ian Wagner from [Stadia Maps](https://stadiamaps.com/).
[Jérôme Thiard](https://github.com/jthiard) also stepped up to volunteer and his contributions were invaluable in
shipping the first official release.

The full source code and documentation are available on [GitHub](https://github.com/maplibre/maplibre-react-native).
Users of rnmapbox wishing to update to the latest MapLibre Native release can switch to the new package,
which is available on [npm](https://www.npmjs.com/package/@maplibre/maplibre-react-native). Aside from some
name changes, the new SDK is drop-in compatible.

---

## File: src/content/news/2023-02-16-maplibre-newsletter-february-2023.mdx

---
title: "MapLibre Newsletter February 2023"
date: 2023-02-16
categories: ["newsletter"]
authors: [oliver-wipfli]
draft: false
---

# MapLibre Newsletter - February 2023

## General

We have successfully registered the MapLibre trademark in the [US](https://tsdr.uspto.gov/#caseNumber=97744197&caseType=SERIAL_NO&searchType=statusSearch) and in the [EU](https://euipo.europa.eu/eSearch/#details/trademarks/018773096). Open Source Collective, our fiscal host, holds the MapLibre trademarks.

MapLibre React Native has been published. Thanks Ian, Luke, and Jérôme for contributing this package. Read more [here](https://maplibre.org/news/2023-02-08-maplibre-react-native-announcement/).

There is an ongoing discussion if a style editor should be maintained under the MapLibre umbrella. See [style editor discussion](https://github.com/maplibre/maplibre/discussions/153#discussioncomment-4776796).

## Events

- On Jan 30th, 2023, about 20 people came together for the first MapLibre Switzerland meetup in Olten. After a short overview presentation by Oliver Wipfli, we had a discussion about what people need. Feature-state in Native, rendering of 3D buildings, and improving the style specification were discussed. After that we went for Pizza. Thanks Robin Schmid for hosting us in the SBB office and thanks everyone for coming!
- On Feb 1st, 2023, more than 40 people joined the first MapLibre User Group Japan online meeting. Thanks Yasunori Kirimoto and Kanahiro Iguchi for organizing this!
- On Feb 8th, 2023, Alan Chen Wei from GrabMaps gave a presentation about how Grab implemented Khmer text rendering with HarfBuzz. Video recording is available [here](https://zoom.us/rec/share/X4c7fjSQiFkl1jNNMRiqt9jqeLK3ZCJZ5SuMhi8-qzzcVnDisfcABqLqIZcHflTv.3loRYzsO4OhqSsYt?startTime=1675843326000) Passcode: `JHnxr8*3`. Thanks for the interesting talk, Alan!

## MapLibre Native

We are happy to welcome Bart Louwers and Ovidiu Voda as Maintainers of MapLibre Native. They started in January 2023 and we can see how their work has a positive impact on MapLibre Native with many new people contributing to the repo. Thank you both for your efforts!

MapLibre Native for Android [v10.0.0](https://github.com/maplibre/maplibre-native/releases/tag/android-v10.0.0) is out now. Try it out and let us know what you think. All bug reports are welcome! The new features, bug fixes and breaking changes are documented in the [release notes](https://github.com/maplibre/maplibre-native/releases/tag/android-v10.0.0).

### Bounties 💰

MapLibre Native published Bounties for code development tasks. Read our [step-by-step bounties guide](https://maplibre.org/jobs/step-by-step-bounties-guide/) to learn how you can work on Bounties and get paid.

Currently, the following Bounties are available (see [here](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%92%B0+bounty+L%22%2C%22%F0%9F%92%B0+bounty+S%22%2C%22%F0%9F%92%B0+bounty+M%22+) for an up-to-date list):

- Documentation: Getting started guide iOS: [#809](https://github.com/maplibre/maplibre-native/issues/809)
- Documentation: Getting started guide Android: [#808](https://github.com/maplibre/maplibre-native/issues/808)
- Documentation: Tutorial annotations iOS: [#810](https://github.com/maplibre/maplibre-native/issues/810)
- Documentation: Tutorial annotations Android: [#811](https://github.com/maplibre/maplibre-native/issues/811)
- Documentation: Example current location iOS: [#813](https://github.com/maplibre/maplibre-native/issues/813)
- Documentation: Example current location Android: [#812](https://github.com/maplibre/maplibre-native/issues/812)

### Contributions

Code contributions since January 15th, 2023:

- [louwers](https://github.com/maplibre/maplibre-native/commits?author=louwers) contributed 20 pull requests.
  - Continuous integration for Android is now green again. We no longer use a custom Docker image.
  - The various README files throughout the repository where refreshed.
  - The [Android API docs](https://maplibre.org/maplibre-native/android/api/) now use Dokka, which is a documentation generator with better support for Kotlin than the previously used Javadoc.
  - New [Core C++ docs](https://maplibre.org/maplibre-native/cpp/api/) were published as well, using Doxygen as documentation generator.
  - C++17 is used for compilation and some parts of the codebase were updated to take advantage of this.
- [tdcosta100](https://github.com/maplibre/maplibre-native/commits?author=tdcosta100) contributed 4 pull requests to prepare Windows support.
- [KiwiKilian](https://github.com/maplibre/maplibre-native/commits?author=KiwiKilian) improved the node documentation.
- [fynngodau](https://github.com/maplibre/maplibre-native/commits?author=fynngodau) contributed 2 pull requests to improve Kotlin code and fix an issue with bitmaps.
- [hallahan](https://github.com/maplibre/maplibre-native/commits?author=hallahan) improved the iOS docs.
- [birkskyum](https://github.com/maplibre/maplibre-native/commits?author=birkskyum) updated the Android Gradle Plugin.
- [alanchenboy](https://github.com/maplibre/maplibre-native/commits?author=alanchenboy) contributed 2 pull requests to fix a snapshotting crash and enable C++ unit tests.

## MapLibre GL JS

In the last Technical Steering Committee meeting on Feb 8th, 2023, we had the pleasure to welcome some new faces, including people from OSM Americana and Felt.

There were some discussions around how to move the style specification forward and how the contribution process can be more stream-lined.

We published MapLibre GL JS v3.0.0-pre.4 on npm. Try it out and let us know what you think. All bug reports are welcome! The new features, bug fixes and breaking changes are documented in the [CHANGELOG](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md).

Ah, and MapLibre GL JS has now 4k Stars on GitHub ([star-history.com](https://star-history.com/#maplibre/maplibre-gl-js&Date)). Congratulations MapLibre GL JS!

### Bounties 💰

MapLibre GL JS published Bounties for code development tasks. Read our [step-by-step bounties guide](https://maplibre.org/jobs/step-by-step-bounties-guide/) to learn how you can work on Bounties and get paid.

Currently, the following Bounties are available (see [here](https://github.com/maplibre/maplibre-gl-js/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%92%B0+bounty+L%22%2C%22%F0%9F%92%B0+bounty+S%22%2C%22%F0%9F%92%B0+bounty+M%22+) for an up-to-date list):

- Documentation: Move docs repo into GL JS codebase: [#2150](https://github.com/maplibre/maplibre-gl-js/issues/2150)
- Documentation: Factor out the style specification into a separate repo: [#2149](https://github.com/maplibre/maplibre-gl-js/issues/2149)
- Terrain3D: Fix a panning issue:[ #2094](https://github.com/maplibre/maplibre-gl-js/issues/2094)
- Performance: Improve the benchmarks code: [#982](https://github.com/maplibre/maplibre-gl-js/issues/2094)

### Contributions

Code contributions since January 15th, 2023:

- [zhangyiatmicrosoft](https://github.com/maplibre/maplibre-gl-js/commits?author=zhangyiatmicrosoft) from Microsoft contributed 10 pull requests for better testing, fewer build warnings, and improved developer experience on Window.
- [pramilk](https://github.com/maplibre/maplibre-gl-js/commits?author=pramilk) from Microsoft 3 pull requests with a focus on improved performance.
- [kevinschaul](https://github.com/maplibre/maplibre-gl-js/commits?author=kevinschaul) contributed 2 pull requests for better full-screen control on mobile devices.
- [ZeLonewolf](https://github.com/maplibre/maplibre-gl-js/commits?author=ZeLonewolf) from OSM Americana contributed 3 pull requests around style images and better contributing guides.
- [llambanna](https://github.com/maplibre/maplibre-gl-js/commits?author=llambanna) fixed a problem with Terrain3D at the anti-meridian.
- [jcary741](https://github.com/maplibre/maplibre-gl-js/commits?author=jcary741) fixed an issue in the new setSprite functionality.
- [rotu](https://github.com/maplibre/maplibre-gl-js/commits?author=rotu) contributed 3 pull requests to improve continuous integration.
- [maxammann](https://github.com/maplibre/maplibre-gl-js/commits?author=maxammann) contributed a security policy explaining how people can report security issues.
- [smellyshovel](https://github.com/maplibre/maplibre-gl-js/commits?author=smellyshovel) contributed 2 pull requests in a series of refactoring to improve the code quality.
- [HarelM](https://github.com/maplibre/maplibre-gl-js/commits?author=HarelM) finalized a pull request for improved window resize handling.

## Upcoming Events

- MapLibre User Group Japan: The next Japanese-speaking X Space meeting will be on March 1st, 2023 at 19:00 JST. More info at [https://bit.ly/mug--jp](https://bit.ly/mug--jp)
- Meta maps meetup Zurich: On March 9th, 2023, Meta is inviting everybody to its Zurich office for a local maps meetup. More info can be found at [https://www.eventbrite.com/e/zurich-maps-geo-stammtisch-tickets-529414020587](https://www.eventbrite.com/e/zurich-maps-geo-stammtisch-tickets-529414020587)
- MapLibre Technical Steering Committee meeting: Our monthly meetings are open to everybody. They always take place on the second Wednesday of the month. The next monthly meeting is on March 8th, 2023 with the Native meeting at 7 PM - 8 PM CET and the Web meeting at 8 PM to 9 PM CET. Zoom link can be found in our #maplibre Slack channel roughly one hour before the meetings. Join our slack at [https://slack.openstreetmap.us](https://slack.openstreetmap.us).

---

## File: src/content/news/2023-06-07-maplibre-rs-monthly.mdx

---
title: "maplibre-rs monthly (special issue)"
# prettier-ignore
date: 2023-06-07T21:46:44+02:00
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](https://maplibre.org/jobs/step-by-step-bounties-guide/) 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](https://maplibre.org/about/).
See [here](https://github.com/maplibre/maplibre/pull/282) 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](https://github.com/maplibre/maplibre-rs/pull/233/). 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](https://www.geogebra.org/m/cvhtwhng) of the current near and far plane calculations.

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 Merged Pull Requests

- [#285](https://github.com/maplibre/maplibre-rs/pull/285) chore: Inline format args by [@nyurik](https://github.com/nyurik)
- [#282](https://github.com/maplibre/maplibre-rs/pull/282) chore: Bump consolidated dependencies by [@nyurik](https://github.com/nyurik)
- [#281](https://github.com/maplibre/maplibre-rs/pull/281) chore: Consolidate dependency version mgmt by [@nyurik](https://github.com/nyurik)
  Thanks for handling dependency updates!
- [#280](https://github.com/maplibre/maplibre-rs/pull/280) Format justfile using just's own --fmt by [@nyurik](https://github.com/nyurik)
- [#279](https://github.com/maplibre/maplibre-rs/pull/279) Fix Apache license file by [@nyurik](https://github.com/nyurik)
  And cleaning up!
- [#277](https://github.com/maplibre/maplibre-rs/pull/277) Update wgpu to 0.16 by [@maxammann](https://github.com/maxammann)
  It is great to see wgpu progress!
- [#275](https://github.com/maplibre/maplibre-rs/pull/275) Fix webgpu demo by [@maxammann](https://github.com/maxammann)
  WebGPU demo finally runs on stable Chrome!
- [#272](https://github.com/maplibre/maplibre-rs/pull/272) Upgrade to wgpu to fix issue on 0.15 by [@maxammann](https://github.com/maxammann)
- [#271](https://github.com/maplibre/maplibre-rs/pull/271) Spell fixes, possibly breaking "Uninizalized" rename by [@nyurik](https://github.com/nyurik)
  And even more cleanup by @nyurik!
- [#270](https://github.com/maplibre/maplibre-rs/pull/270) Fix shaders for Chrome 113 by [@maxammann](https://github.com/maxammann)
- [#269](https://github.com/maplibre/maplibre-rs/pull/269) Upgrade Rust to nightly-2023-03-29 and 1.68 by [@maxammann](https://github.com/maxammann)
- [#268](https://github.com/maplibre/maplibre-rs/pull/268) Add basic nix shell and direnv config (working on macOS) by [@maxammann](https://github.com/maxammann)
  Finally got to learn nix and I definitely want to use it to some extent in the project!
- [#266](https://github.com/maplibre/maplibre-rs/pull/266) Dead code by [@Tristramg](https://github.com/Tristramg)
- [#261](https://github.com/maplibre/maplibre-rs/pull/261) Remove unwrap from write_png by [@Tristramg](https://github.com/Tristramg)
  Thanks for cleaning up!
- [#255](https://github.com/maplibre/maplibre-rs/pull/255) Debug line now have same pixel width by [@Tristramg](https://github.com/Tristramg)
- [#253](https://github.com/maplibre/maplibre-rs/pull/253) Introduce Plugin API along with Raster Tiles by [@maxammann](https://github.com/maxammann)
  We have now plugins!
- [#250](https://github.com/maplibre/maplibre-rs/pull/250) Upgrade wgpu to 0.15.1 by [@maxammann](https://github.com/maxammann)
- [#249](https://github.com/maplibre/maplibre-rs/pull/249) Use prost Message from geozero by [@maxammann](https://github.com/maxammann)
- [#243](https://github.com/maplibre/maplibre-rs/pull/243) Make warning more detailed by [@nyurik](https://github.com/nyurik)
- [#241](https://github.com/maplibre/maplibre-rs/pull/241) Simplify and move Stencil reference functions by [@Tristramg](https://github.com/Tristramg)
- [#240](https://github.com/maplibre/maplibre-rs/pull/240) Update trivial dependencies by [@Tristramg](https://github.com/Tristramg)
- [#239](https://github.com/maplibre/maplibre-rs/pull/239) Apply some clippy hints by [@Tristramg](https://github.com/Tristramg)
- [#238](https://github.com/maplibre/maplibre-rs/pull/238) use geo_types::Coord as geo_types::Coordinates is being deprecated by [@Tristramg](https://github.com/Tristramg)
- [#237](https://github.com/maplibre/maplibre-rs/pull/237) Bump criterion to 0.4.0 by [@Tristramg](https://github.com/Tristramg)
- [#236](https://github.com/maplibre/maplibre-rs/pull/236) Tile source fixes by [@maxammann](https://github.com/maxammann)
- [#235](https://github.com/maplibre/maplibre-rs/pull/235) Bump prost crate version to 0.11.5 by [@Tristramg](https://github.com/Tristramg)

### 🎁 New Issues

- [#283](https://github.com/maplibre/maplibre-rs/issues/283) 3D model experiments glTF by [@maxammann](https://github.com/maxammann)
  It would be very fun to have some glTF models in maplibre-rs as a demo!

- [#263](https://github.com/maplibre/maplibre-rs/issues/263) WebAssembly: Not enough memory left by [@maxammann](https://github.com/maxammann)
  WebAssembly can run out of memory when running in threaded mode.

- [#259](https://github.com/maplibre/maplibre-rs/issues/259) Experiment with other tesselation algorithm (earcut) by [@maxammann](https://github.com/maxammann)
  This has the potential to speed things up.

- [#245](https://github.com/maplibre/maplibre-rs/issues/245) Improve buffer management by [@maxammann](https://github.com/maxammann)
  Important one. Currently buffer management is overly simplified.

- [#244](https://github.com/maplibre/maplibre-rs/issues/244) Add support for TileJSON by [@maxammann](https://github.com/maxammann)
  This would be handy for demos.

### 🧵 Current Discussions

None.

### 👋 Contributors

- [@nyurik](https://github.com/nyurik)
- [@terrorfisch](https://github.com/terrorfisch)
- [@Tristramg](https://github.com/Tristramg)
- [@kimpham54](https://github.com/kimpham54)

### About

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invitation [here](https://slack.openstreetmap.us).

---

## File: src/content/news/2022-05-20-terrain3d/index.mdx

---
title: "Terrain3D"
date: "2022-05-20"
categories: ["cool-stuff"]
authors: [oliver-wipfli]
---

import { TerrainMap } from "./TerrainMap.tsx";

The Terrain3D [pull request](https://github.com/maplibre/maplibre-gl-js/pull/1022) of Max Demmelbauer from [Toursprung](https://www.toursprung.com/en/) was merged into main. Thanks for all the hard work!

You can now try out the 3D feature yourself with the pre-release version MapLibre GL JS [`v2.2.0-pre.2`](https://www.npmjs.com/package/maplibre-gl/v/2.2.0-pre.2).

<TerrainMap client:only="solid-js" />

Here is a stand-alone Terrain3D example:

```html
<!doctype html>
<html>
  <head>
    <title>MapLibre GL JS Terrain3D Example</title>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, user-scalable=no"
    />
    <script src="https://unpkg.com/maplibre-gl@2.2.0-pre.2/dist/maplibre-gl.js"></script>
    <link
      href="https://unpkg.com/maplibre-gl@2.2.0-pre.2/dist/maplibre-gl.css"
      rel="stylesheet"
    />
    <style>
      body {
        margin: 0;
        padding: 0;
      }

      html,
      body,
      #map {
        height: 100%;
      }
    </style>
  </head>

  <body>
    <div id="map"></div>

    <script>
      var map = (window.map = new maplibregl.Map({
        container: "map",
        zoom: 12,
        center: [11.39085, 47.27574],
        pitch: 52,
        hash: true,
        style: {
          version: 8,
          sources: {
            osm: {
              type: "raster",
              tiles: ["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],
              tileSize: 256,
              attribution: "&copy; OpenStreetMap Contributors",
              maxzoom: 19,
            },
            terrainSource: {
              type: "raster-dem",
              url: "https://demotiles.maplibre.org/terrain-tiles/tiles.json",
              tileSize: 256,
            },
            hillshadeSource: {
              type: "raster-dem",
              url: "https://demotiles.maplibre.org/terrain-tiles/tiles.json",
              tileSize: 256,
            },
          },
          layers: [
            {
              id: "osm",
              type: "raster",
              source: "osm",
            },
            {
              id: "hills",
              type: "hillshade",
              source: "hillshadeSource",
              layout: { visibility: "visible" },
              paint: { "hillshade-shadow-color": "#473B24" },
            },
          ],
          terrain: {
            source: "terrainSource",
            exaggeration: 1,
          },
        },
        maxZoom: 18,
        maxPitch: 85,
      }));

      map.addControl(
        new maplibregl.NavigationControl({
          visualizePitch: true,
          showZoom: true,
          showCompass: true,
        }),
      );

      map.addControl(
        new maplibregl.TerrainControl({
          source: "terrainSource",
          exaggeration: 1,
        }),
      );
    </script>
  </body>
</html>
```

---

## File: src/content/news/2022-09-24-maplibre-rs-monthly/index.mdx

---
title: "maplibre-rs monthly"
date: 2022-09-24
categories: ["maplibre-rs"]
authors: [max-ammann]
draft: false
---

import collage from "./collage.jpeg";
import { Image } from "astro:assets";

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invitation [here](https://slack.openstreetmap.us).

## 📰 News

It has been an exciting summer - FOSS4G happened and a [paper](https://maplibre.org/news/2022-08-24-maplibre-rs-paper/) about maplibre-rs was published. The whole MapLibre team was able to meet! We met our sponsors and other awesome people from the open-source community.

And because a picture is worth a thousand words:



Behind the scenes, I was working on providing an alternative multi-threading implementation for the web platform. Because atomics are only supported by [enabling specific HTTP headers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), we really need a more portable implementation which does not rely on these atomics. Instead of doing real multithreading in the browser, we want to do multiprocessing through WebWorkers. I designed an interface which should work well for most data-processing needs. The interface is called `AsyncProcedureCall`.

```rust
#[derive(Clone)]
pub enum Message<T: Transferables> {
    TileTessellated(T::TileTessellated),
    UnavailableLayer(T::UnavailableLayer),
    TessellatedLayer(T::TessellatedLayer),
}

#[derive(Clone, Serialize, Deserialize)]
pub enum Input {
    TileRequest(TileRequest),
}

pub type AsyncProcedure<C> = fn(input: Input, context: C) -> AsyncProcedureFuture;

pub trait AsyncProcedureCall<T: Transferables, HC: HttpClient>: 'static {
    type Context: Context<T, HC> + Send;

    fn receive(&mut self) -> Option<Message<T>>;

    fn schedule(&self, input: Input, procedure: AsyncProcedure<Self::Context>);
}

```

Instead of relying on mutexes and MPSC channels, the implementation of this `APC` for the web relies on WebWorkers and sending [ArrayBuffers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer).

I'm working on this in a rather large [PR](https://github.com/maplibre/maplibre-rs/pull/174). As not much else is going on in the project, merging probably won't cause issues.

## 🏠 Housekeeping

The following will summarizes what happened last week on GitHub.

### 🎁 Merged Pull Requests

- [#169](https://github.com/maplibre/maplibre-rs/pull/169) Add watch functionality for web by [@maxammann](https://github.com/maxammann)
  We have now build tools for the web which automatically reloads the demo in the browser for changes in Rust.

- [#167](https://github.com/maplibre/maplibre-rs/pull/167) Add citation instructions by [@maxammann](https://github.com/maxammann)
  The maplibre-rs is now officially citable in others scientific work!

- [#160](https://github.com/maplibre/maplibre-rs/pull/160) Add CLI to demo by [@maxammann](https://github.com/maxammann)
  A CLI allows users now to configure the demo on Linux, Windows and macOS.

- [#154](https://github.com/maplibre/maplibre-rs/pull/154) Run scheduled builds by [@maxammann](https://github.com/maxammann)
  We regularly build our main branch now, to detect breaking dependencies.

- [#80](https://github.com/maplibre/maplibre-rs/pull/80) Refactor WebWorker pool by [@maxammann](https://github.com/maxammann)
  This is the start of a major refactor for async tasks on the web.

### 🎁 New Issues

- [#166](https://github.com/maplibre/maplibre-rs/issues/166) ReferenceError: Can't find variable: Worker by [@maxammann](https://github.com/maxammann)
  This bug blocks us currently on Safari (iOS/macOS). I'm actively working right now to provide a build which does not use atomics.

- [#164](https://github.com/maplibre/maplibre-rs/issues/164) INVALID_ENUM: framebuffertexture2d invalid attachment by [@maxammann](https://github.com/maxammann)
  This is a bug in older versions in Safari. With the release of iOS 16 and Safari 16 this is fixed now.

- [#161](https://github.com/maplibre/maplibre-rs/issues/161) Limit the maximum and minimum zoom level by [@hanchao](https://github.com/hanchao)
  We got a great bug report! It seems like people are experimenting with maplibre-rs in the wild!

### 🧵 Current Discussions

None.

### 👋 Contributors

- [@karisair](https://github.com/karisair)
- [@birkskyum](https://github.com/birkskyum)
- [@BezPowell](https://github.com/BezPowell)
- [@Quillasp](https://github.com/Quillasp) - Thanks for working on raster tile support!

---

## File: src/content/news/2022-10-11-work-on-open-source/index.mdx

---
title: "Work on Open-Source"
date: 2022-10-11
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import jobs from "./maplibre-org-jobs.svg";
import { Image } from "astro:assets";


  <a href="https://maplibre.org/jobs">
    
  </a>


We thank all our sponsors for their generous financial support and assistance in building the MapLibre Organization.

We were successful in securing initial funding and would now like to pay people from the community for coordination, maintenance, and development work.

Go to [https://maplibre.org/jobs](https://maplibre.org/jobs), read more about the available roles, and apply now if you are interested in working on open-source mapping technology!

Our first paid coordinator is Oliver Wipfli who helped with organizational tasks in the past as a volunteer and did a great job.

We are looking forward to your application!

---

## File: src/content/news/2022-10-16-call-for-bounties/index.mdx

---
title: "Call for Bounties💰"
date: "2022-12-16"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import voting from "./voting.png";
import { Image } from "astro:assets";

If you have ideas for new features which you would love to see from MapLibre, you can now share your idea
and tell us that we should allocate Bounties for it. Bounties are pre-defined cash prizes for development tasks.

Every donation from the MapLibre Sponsorship Program has a part which is reserved for Bounties and we
would like to hear from you in what direction we should take the project with the Bounties...

## Share Your Idea

To share your own idea, do this:

1. Go to the [Bounties overview page](https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions)
2. Press "New discussion"
3. Use a catchy title
4. Put an image if you have one (maps people really like visuals...)
5. Describe the idea in a few sentences

## Voting

We would love to understand better what is important to you, and you have the opportunity to up-vote ideas.

To vote, you can simply go to the [Bounties overview](https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions) and click on the up-arrow of the ideas that you like:


  <a href="https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions">
    
  </a>


We are looking forward to your feedback, all input is welcome!

---

## File: src/content/news/2022-10-28-metal-announcement/index.mdx

---
title: "Metal Announcement"
date: 2022-10-28
categories: ["maplibre-native"]
authors: [oliver-wipfli]
draft: false
---

import metal from "./metal.png";
import { Image } from "astro:assets";

MapLibre Native is planning for modularization and migration to Metal, Apple's graphics framework, for rendering on iOS mobile devices.


  


A design proposal for the modularization of the map rendering architecture can be found at https://github.com/maplibre/maplibre-native/pull/547. This modularization will allow new rendering architectures to be implemented quickly and more easily, and we anticipate that the modularization will give us a concrete framework to better interrogate various migration strategies. Feel free to share your thoughts on this approach in the Pull Request.

The modularization design proposal process will be immediately followed by a second proposal to migrate the renderer to Metal.

Stamen Design, with technical leadership by Wet Dog Weather and funding from AWS, are coordinating this effort. Stamen provides full-stack cartographic services to clients who rely heavily on projects like MapLibre, which tie all the parts of the modern mapping stack – tiles, styles, and SDKs – together.

Steve Gifford from Wet Dog Weather will be the technical lead for this project, and Stephanie May, Damon Burgett, and Camilla Mahon from Stamen will support the effort to get these plans in front of the community.

For AWS, a true Metal renderer is crucial because they identified that their iOS customers have a strong need for a Metal map renderer and are glad to support the MapLibre community with this contribution.

We are looking forward to the collaboration, and hope this can act as a catalyst to bring the project, its contributors, and MapLibre users into the Metal future.

---

## File: src/content/news/2022-12-18-maplibre-rs-monthly/index.mdx

---
title: "maplibre-rs monthly"
date: "2022-12-18"
categories: ["maplibre-rs"]
authors: [max-ammann]
draft: false
---

import egui from "./egui.png";
import extrusion from "./extrusion.png";
import raster from "./raster.png";
import video from "./sdf-rendering.webm";
import { Image } from "astro:assets";

[maplibre-rs](https://github.com/maplibre/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](https://matrix.to/#/#mapr:matrix.org) chat or join the MapLibre (#maplibre and #maplibre-rs) community within the OpenStreetMap Slack. You can get an invitation [here](https://slack.openstreetmap.us/).

## 📰 News

Technically, this is not a "monthly" as I did not find the time in the past months to regularly write these.
A lot has happened in the past months, though!

At least three major features and a few quality-of-developer-life features are cooking and are soon ready for testing.
For better debugging I integrated [egui](https://github.com/emilk/egui) into maplibre-rs. This should make it easy to display statistics like the current FPS or selected feature on the map. I could also imagine that a style editor in the style of [Maputnik](https://maputnik.github.io/) could be feasible.

Apart from egui, I also added a visualizing red border around tiles. This helped to improve the data loading performance of the renderer, as it became obvious which data loaded too slow.

<figure>
  
  <figcaption>egui integration</figcaption>
</figure>
In late summer, [@Drabble](https://github.com/Drabble) already started working
on a proof-of-concept for extruded 3D buildings. The work required several
rebases over the months, but it survived and looks stunning! As per-feature
rendering is currently missing, all buildings have the same height right now. I
hope to change that in the near future. I noticed that design changes are
usually accompanied by multiple concrete problems. As we integrate more features
which are dependent on feature properties (building height, color properties,
etc.) the required design changes will be uncovered.
<figure>
  
  <figcaption>3D building extrusion</figcaption>
</figure>
In parallel [@Quillasp](https://github.com/Quillasp) worked on adding raster
tile support to maplibre-rs. It already works on native platforms (Android, iOS,
Linux, Windows) and in browsers. The decoding of the images is done using
WebWorkers. In the future, the browser should be tasked with the decoding jobs.

<figure>
  
  <figcaption>Raster tiles</figcaption>
</figure>

Last but not least, I ported the SDF font rendering from the maps-rs prototype by [Luke Seelenbinder](https://github.com/lseelenbinder).
On the second try, it worked quite perfectly. Currently, there is no collision detection in place, which means that labels overlap while zooming in and out. Collision detection on its own is an interesting problem. On the OSM Slack we discussed whether this could be implemented on the GPU.
Current ideas for that are documented in a deck.gl [GitHub issue](https://github.com/visgl/deck.gl/issues/7374).

<figure>
  <video class="w-50 p-3" src={video} autoplay muted loop></video>

  <figcaption>Text Rendering using SDFs</figcaption>
</figure>

All the above features are not yet merged into the main branch of maplibre-rs as further design changes need to happen.
For example, the management of GPU resources is very verbose right now. Additions of GPU resources and requires changes in some core
engine `struct`. To mitigate this, further abstractions need to be invented.
After those design changes and resolving all discussions in the PRs we can merge in the features.

Apart from those new features, [kim pham](https://github.com/kimpham54) is currently working on parsing the MapLibre style specification, including its expressions.
Based on this work, the plan is that we generate statistics about the most frequently used style specification features.
This way we can create issues for all the missing features and prioritize them according to their usage.

Finally, I want to mention that maplibre-rs has now an RFC process described [here](https://maplibre.org/maplibre-rs/docs/book/rfc/0001-rfc-process.html). Based on that, I wrote an RFC about how data is exchanged between WebWorkers and the main thread [here](https://github.com/maplibre/maplibre-rs/pull/223). I think this is a great way to document progress. Let's see how that process will be used in the future!

## 🏠 Housekeeping

The following will summarize what happened last week on GitHub.

### 🎁 Merged Pull Requests

- [#227](https://github.com/maplibre/maplibre-rs/pull/227) Improve processing by [@maxammann](https://github.com/maxammann)
  Tiles are processed now immediately, instead of distributing work over frames.

- [#226](https://github.com/maplibre/maplibre-rs/pull/226) Add debug lines and improve tile queuing by [@maxammann](https://github.com/maxammann)
  Red lines around tiles were added for debugging. Queuing of tiles has also been improved.

- [#224](https://github.com/maplibre/maplibre-rs/pull/224) Automatically choose texture format based on adapter by [@maxammann](https://github.com/maxammann)
  Texture formats are now selected based on what the GPU supports.

- [#222](https://github.com/maplibre/maplibre-rs/pull/222) Improve error handling by [@maxammann](https://github.com/maxammann)
  Complete rewrite of errors throughout maplibre-rs to follow best practices.

- [#214](https://github.com/maplibre/maplibre-rs/pull/214) Make writing rendered tiles to disk optional, and disable for bench by [@maxammann](https://github.com/maxammann)
  Benchmarks no longer write PNGs to disk.

- [#213](https://github.com/maplibre/maplibre-rs/pull/213) Fix tracy by using re-export by [@maxammann](https://github.com/maxammann)

- [#211](https://github.com/maplibre/maplibre-rs/pull/211) Switch to own host for test-data by [@maxammann](https://github.com/maxammann)

- [#209](https://github.com/maplibre/maplibre-rs/pull/209) Switch to powershell by [@maxammann](https://github.com/maxammann)
  Some windows goodies.

- [#208](https://github.com/maplibre/maplibre-rs/pull/208) justfile: automatically install wasm32 target for nightly toolchain by [@julienr](https://github.com/julienr)

- [#206](https://github.com/maplibre/maplibre-rs/pull/206) Clippy fixes by [@julienr](https://github.com/julienr)

- [#195](https://github.com/maplibre/maplibre-rs/pull/195) Create a matrix job for apple by [@maxammann](https://github.com/maxammann)
  Improves CI time by a factor of 3.

- [#188](https://github.com/maplibre/maplibre-rs/pull/188) Bootstrap RFCs and add initial RFC by [@maxammann](https://github.com/maxammann)
  We have now an official RFC process!

- [#174](https://github.com/maplibre/maplibre-rs/pull/174) New WASM executor by [@maxammann](https://github.com/maxammann)
  We are no longer restricted to use SharedArrayBuffer. This means maplibre-rs runs now on any website!

- [#149](https://github.com/maplibre/maplibre-rs/pull/149) Define a minimum and maximum pitch by [@maxammann](https://github.com/maxammann)

### 🎁 New Issues

- [#229](https://github.com/maplibre/maplibre-rs/issues/229) Limit work done per frame by [@maxammann](https://github.com/maxammann)
  This should reduce frame drops.

- [#216](https://github.com/maplibre/maplibre-rs/issues/216) Upgrade criterion and use cargo-criterion by [@maxammann](https://github.com/maxammann)

- [#212](https://github.com/maplibre/maplibre-rs/issues/212) Rendering does not work on Windows+Nvidia+Vulkan by [@maxammann](https://github.com/maxammann)
  This could need some reproduction by windows folks.

- [#201](https://github.com/maplibre/maplibre-rs/issues/201) Upgrade Rust to 1.65 by [@maxammann](https://github.com/maxammann)
  New goodies!

- [#187](https://github.com/maplibre/maplibre-rs/issues/187) maplibre-demo: High CPU and GPU usage on macOS while idle by [@vollkorntomate](https://github.com/vollkorntomate)
  Discussions about idling.

- [#185](https://github.com/maplibre/maplibre-rs/issues/185) Separation of map rendering and input controls in different Rust crates by [@DerKarlos](https://github.com/DerKarlos)
  Discussion about input handling.

- [#182](https://github.com/maplibre/maplibre-rs/issues/182) Flutter support by [@maxammann](https://github.com/maxammann)
  Just an idea :)

### 🧵 Current Discussions

None

### 👋 Contributors

- [@DerKarlos](https://github.com/DerKarlos) - Thanks for discussions about input handling!
- [@julienr](https://github.com/julienr) - Thanks for code improvements!
- [@Quillasp](https://github.com/Quillasp) - Thanks for raster tile rendering!
- [@vollkorntomate](https://github.com/vollkorntomate) - Thanks for raising a discussion about CPU/GPU usage!

---

## File: src/content/news/2023-01-12-grab-talk-khmer/index.mdx

---
title: "Grab Talk Khmer"
date: 2023-01-12
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import khmer from "./khmer.png";
import { Image } from "astro:assets";

Alan Wei Chen from [GrabMaps](https://www.grab.com/sg/business/maps/) is giving a talk about how Grab renders text labels in the Khmer language using FreeType and HarfBuzz in the next MapLibre Eastern Call. Feel free to join the presentation!


  


The next MapLibre Eastern Call is on Wednesday, Feb 8th, 2023 from 9 AM to 10 AM CET. To get the link to the video call, you can join our Slack channel in the OpenStreetMap US Slack. Go to https://slack.openstreetmap.us and join the `#maplibre` channel and look for "MapLibre Eastern Call" to find the zoom link. We are looking forward to seeing you there!

Alan Wei Chen ([GitHub profile](https://github.com/alanchenboy)) and his team at GrabMaps are active contributors of MapLibre Native and we are glad that they support the open-source community and help building the best map renderer in the world together!

---

## File: src/content/news/2023-01-23-maplibre-user-group-japan/index.mdx

---
title: "MapLibre User Group Japan"
date: "2023-01-23"
categories: ["announcements"]
authors: [oliver-wipfli]
---

import userGroupJapan from "./mlug-jp_logo.png";
import { Image } from "astro:assets";

If you speak Japanese and you are interested in map rendering, have a look at the newly created MapLibre User Group Japan.






[Official Website](https://bit.ly/mug--jp)

[X Space](https://twitter.com/i/spaces/1OyKAVvlgvbGb)

Yasunori Kirimoto and Kanahiro Iguchi who are both [MapLibre Voting Members](https://github.com/maplibre/maplibre/blob/main/VOTING_MEMBERS.md) are organizing the User Group. The plan is to create online meetups and bring people together who are interested in MapLibre. They also have some nice MapLibre swag for you!

---

## File: src/content/news/2023-03-13-second-call-for-bounties/index.mdx

---
title: "Second Call for Bounties"
date: "2023-03-13"
categories: ["announcements"]
authors: [oliver-wipfli]
---

import voting from "./voting.png";
import { Image } from "astro:assets";

We are happy to invite you to a second round of voting on Bounty directions. Please let us know which features would be helpful for you and upvote existing suggestions.

## Share Your Idea

If you have an idea for a new feature or improvement in the MapLibre rendering engines then share it with everybody today.

1. Go to the ["Bounties - cross-project directions" discussion overview page](https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions).

2. Press "New Discussion"

3. Add a title describing the new feature or improvement.

4. Write what the goals are of your idea and what deliverables it includes.

## Voting

Show your support of an idea for Bounties by clicking the up arrow button in the [discussion overview page](https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions).

    <figure>

<a href="https://github.com/maplibre/maplibre/discussions/categories/bounties-cross-project-directions">
    
</a>
    
    </figure>

Feel free to also upvote ideas which are already on our roadmap. We might also allocate more resources to existing roadmap projects.

## Deadline

The submission of ideas and the voting are open until April 4th, 2023.

## Budget

The MapLibre Governing Board has already allocated USD 50,000 on Bounty directions. With this second allocation round, we are going to distribute another USD 60,000 on Bounty directions which will result in USD 110,000 available for Bounties.

## Work on Bounties

If you are interested in working on Bounties yourself, read our [step-by-step guide](https://maplibre.org/jobs/step-by-step-bounties-guide/) and apply today at [https://maplibre.org/jobs](https://maplibre.org/jobs).

## Contact

If you have any questions regarding Bounties, feel free to ask on [GitHub](https://github.com/maplibre/maplibre/issues) or in the [MapLibre Slack channel](https://slack.openstreetmap.us).

---

## File: src/content/news/2023-03-20-maplibre-newsletter-march-2023/index.mdx

---
title: "MapLibre Newsletter March 2023"
date: 2023-03-20
categories: ["newsletter"]
authors: [oliver-wipfli]
draft: false
---

import OliverAndBart from "./DSCF9186-3.JPG";
import { Image } from "astro:assets";

# MapLibre Newsletter - March 2023

## General

#### Bounty Program

We invite you to share feedback on what features and improvements in MapLibre GL JS and MapLibre Native would be helpful for you. Tell us what you need and vote for the things which are most important to you following these [feedback instructions](https://maplibre.org/news/2023-03-13-second-call-for-bounties/).

The MapLibre Governing Board will take your feedback and decide how to allocate Bounty resources on roadmap projects on April 4th, 2023.

Several Bounties are up for takers now. If you would like to work on Bounties, have a look at our updated [step-by-step Bounties guide](https://maplibre.org/jobs/step-by-step-bounties-guide/).

We encourage individuals and companies to propose epics, i.e., a series of tickets which together move MapLibre forward in one of the Bounty directions. You are free to suggest the Bounty size on each ticket yourself and propose splitting all the available resources of a Bounty direction on the tickets of your epic. A maintainer will consider your proposal and confirm the Bounty sizes.

We are proud to have paid out the first two Bounties to the developers Aidan Hendrickson and Victor Tempranova, see our [developer pool](https://github.com/maplibre/maplibre/wiki/Developer-Role#current-role-holders-developer-pool) for an overview.

#### User Stories

Several users have shared their stories how MapLibre serves their use cases and solves their business problems. Thanks everyone for the write-ups, we are glad that we can help you and are committed to doing so in the future!

Read all the stories:

- [Felt](https://felt.com/blog/maplibre-rendering-engine)
- [The Washington Post](https://www.kschaul.com/post/2023/02/16/how-the-post-is-replacing-mapbox-with-open-source-solutions/)
- [Austrian public broadcaster ORF.at](https://twitter.com/devORFat/status/1632467991269867521)
- [UK office for national statistics](https://twitter.com/DrMalcolmMorgan/status/1629848619728732161)

#### Random

We have a Mastodon account now: https://mastodon.social/@maplibre/.

## Past Events

- [Yasunori Kirimoto](https://www.linkedin.com/feed/update/urn:li:activity:7035571220767019008/) gave a talk about MapLibre at FOSS4G Hokkaido, which took place for the first time in 3 years in person again!
- [Chris Beddow](https://www.linkedin.com/in/cbed/) organized a great meetup for everybody interested in maps in Meta's Zurich office. Among several other talks, [Bart Louwers](https://maplibre.org/about/bart-louwers/) gave a talk about the past, present, and future of MapLibre Native. [Manuel Roth](https://www.linkedin.com/in/manuel-roth/) from the Swiss TV broadcaster SRF gave a talk about how they use MapLibre GL JS and MapLibre Native for the weather app SRF Meteo. Thank you both for the inspiring presentations!

The Meta maps meetup was also the first time that Oliver Wipfli and Bart Louwers met in person. It was great to see each other and discuss all things around MapLibre!

<figure>
  
  <figcaption>
    Oliver Wipfli (l.) and Bart Louwers (r.) had a floating meeting on lake
    Zurich.
  </figcaption>
</figure>

## MapLibre Native

People interested in contributing can schedule a call with Bart Louwers, maintainer native: [maplibre/maplibre-native#898](https://github.com/maplibre/maplibre-native/discussions/898).

#### Bounties 💰

Have a look at all available [Bounties in MapLibre Native](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%92%B0+bounty+S%22%2C%22%F0%9F%92%B0+bounty+M%22%2C%22%F0%9F%92%B0+bounty+L%22%2C%22%F0%9F%92%B0+bounty+XL%22%2C%22%F0%9F%92%B0+bounty+XXL%22+) and feel free to propose Bounties yourself. Read our [step-by-step Bounties guide](http://localhost:45707/roadmap/step-by-step-bounties-guide/).

#### Contributions

Contributions since February 16th, 2023:

Most notable PRs

- New supported platform: Windows.
- TypeScript types for Node.js binding.
- Freed Android SDK from proprietary dependencies making it possible to use MapLibre with Android applications submitted to F-Droid (10.0.0 release for Android).
- Render tests running on CI

Open discussions:

- Code organization proposal [maplibre-native#789](https://github.com/maplibre/maplibre-native/pull/789).

## MapLibre GL JS

#### Bounties 💰

Have a look at all available [Bounties in MapLibre GL JS](https://github.com/maplibre/maplibre-gl-js/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%92%B0+bounty+S%22%2C%22%F0%9F%92%B0+bounty+M%22%2C%22%F0%9F%92%B0+bounty+L%22%2C%22%F0%9F%92%B0+bounty+XL%22%2C%22%F0%9F%92%B0+bounty+XXL%22+) and feel free to propose Bounties yourself. Read our [step-by-step Bounties guide](http://localhost:45707/roadmap/step-by-step-bounties-guide/).

#### Contributions

Contributions since February 16th, 2023:

- ChrisLoer (Felt) improved the line label placement with `text-offset` https://github.com/maplibre/maplibre-gl-js/pull/2260
- birkskyum migrated the maplibre-gl-style-spec into a separate GitHub repo https://github.com/maplibre/maplibre-gl-js/pull/2198
- ZeLonewolf and llambanna wrote contributing docs https://github.com/maplibre/maplibre-gl-js/pull/2212 and https://github.com/maplibre/maplibre-gl-js/pull/2196
- tordans improved the docs for `styleimagemissing` https://github.com/maplibre/maplibre-gl-js/pull/2258
- We welcome new first time contributors:
  - <a href="https://github.com/maplibre/maplibre-gl-js/commits?author=maxdacruz">
      maxdacruz
    </a>
  - <a href="https://github.com/maplibre/maplibre-gl-js/commits?author=parkerziegler">
      parkerziegler
    </a>
  - <a href="https://github.com/maplibre/maplibre-gl-js/commits?author=schlosna">
      schlosna
    </a>
- Finally, we have new design proposals to improve the MapLibre Style Specification:
  - [https://github.com/maplibre/maplibre-gl-style-spec/issues/60](Design Proposal: Expanding tileSources bounds) by pramilk (Microsoft)
  - [https://github.com/maplibre/maplibre-gl-style-spec/issues/61](Design proposal: Support for refreshTiles per tile source) by pramilk (Microsoft)
  - [https://github.com/maplibre/maplibre-gl-style-spec/issues/62](Design proposal: Add elevation to symbol layer) by HarelM (maintainer web)

## Upcoming Events

The monthly technical steering committee meetings take place always on the second Wednesday of the month. The next ones are on Wed, **April 12th, 2023** from 7 PM to 9 PM CET. Everyone is welcome to join these meetings. You find the zoom links in our slack channel. We can also send you an email invite. Just let us know. You can join the `#maplibre` slack channel [here](https://slack.openstreetmap.us).

[Oliver Wipfli](https://maplibre.org/about/oliver-wipfli) and members of the MapLibre community will attend the [2023 Joint OGC-ASF-OSGeo Code Sprint](https://developer.ogc.org/sprints/20/) in Lausanne, Switzerland on **April 25th - 27th, 2023**. The topic of the code sprint is "Open Standards and Open Source Software" and we will discuss how the MapLibre Style Specification and the MVT Specification might be improved in the future. You can attend this code sprint in person or also fully remote. Feel free to join us in Lausanne and [register now](https://portal.ogc.org/public_ogc/register/230425osos_codesprint.php).

[Yuri Astrakhan](https://maplibre.org/about/yuri-astrakhan/), member of the MapLibre Governing Board, plans to attend [State of the Map US](https://2023.stateofthemap.us/) in Richmond, Virginia **June 8th - 11th, 2023**. Come to SotMUS and meet us there!

We also plan to be present in some form at [FOSS4G 2023](https://2023.foss4g.org/) in Prizren, Kosovo, from **June 26th, to July 2nd, 2023**. Unfortunately, we missed the registration deadline for talks but we plan to go there nonetheless and have some sort of presence. We are looking forward to see you at FOSS4G!

---

## File: src/content/news/2023-03-23-metal-project-team-started/index.mdx

---
title: "Metal Project Team Started "
date: 2023-03-24
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import metal from "./screenshot.png";
import { Image } from "astro:assets";

The Metal project team has started working! The goal is to deliver a Metal beta release for MapLibre Native by the end of 2023.



AWS and Meta are teaming up in this effort because they both recognize the importance of Metal as a modern graphics backend on Apple devices.

The implementation will follow the modularization and Metal [design proposals](https://github.com/maplibre/maplibre-native/tree/main/design-proposals) that were accepted at the end of 2022.

We will keep you updated on the current status of the Metal project team in our newsletter and on https://maplibre.org/roadmap/maplibre-native/metal.

Stay tuned!

---

## File: src/content/news/2023-03-27-android-navigation-version-2/index.mdx

---
title: "MapLibre Navigation Android V2.0.0 Released"
date: 2023-03-27
categories: ["announcements"]
authors: [robin-boldt]
draft: false
---

import navigationAndroid from "./maplibre-navigation-android.png";
import { Image } from "astro:assets";

We just released version 2.0.0 of [MapLibre's navigation library](https://github.com/maplibre/maplibre-navigation-android). The update comes with the latest version of MapLibre Native (10.0.2) and includes a navigation UI by default.



MapLibre Navigation Android is an open source navigation library which allows everyone to build a customized navigation experience on Android.
You can easily integrate a lot of different tiles, as you are used to from MapLibre Native.
You can integrate your own routing backend, OSRM and GraphHopper (using the `/navigate` endpoint) are easy to implement.
You can build your own navigation UI. An example implementation of such a custom implementation can be found in the [Kurviger App](https://play.google.com/store/apps/details?id=com.kurviger.app).

The full changelog of this update is:

- Initial release of Navigation UI package.
- We adapted Navigation module (mostly `RouteFetcher`) to be aligned with the implementation we need in the Navigation-UI package.
- Move Style-Url, Routing-Url and Access-Token to NavigationSettings in sample app.
- Remove unused code (mostly Mapbox Speech Service related classes).
- Updated MapLibre version to v10.0.2.
- Incremented minSdk version from 15 to 21 to work same as maplibre implementation.
- Created custom classes for `GoogleLocationEngineImpl`, `Utils`, `LocationEngineProvider` which were removed from default implementation MapLibre to provide working with GSM location.
- Corrected resource calls due to renamed res files in maplibre (from `mapbox_` to `maplibre_`).
- Updated dependencies of used libs and build tools
- Removed AccessToken usage
- Fixed Jitpack Build
- Use the navigation options instead of constants in ToleranceUtils (used in the off-route detection), if you haven't modified rerouting values in the navigation options, nothing should change

Thanks to all contributors that made this awesome release possible:

- [skienzl](https://github.com/skienzl)
- [jDilshodbek](https://github.com/jDilshodbek)
- [Brammos](https://github.com/Brammos)
- [avalanchas](https://github.com/avalanchas)
- [bertuccellimatteo](https://github.com/bertuccellimatteo)
- [frankkienl](https://github.com/frankkienl)

We are always happy for contributions, so if you miss a feature or find an issue, feel free to open a PR!

---

## File: src/content/news/2023-04-06-komoot-becomes-a-maplibre-silver-sponsor/index.mdx

---
title: "Komoot becomes a MapLibre Silver Sponsor"
date: "2023-04-06"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import komoot from "./maplibre-komoot-logo.svg";
import { Image } from "astro:assets";

We are happy to announce that komoot has joined the MapLibre Sponsorship Program and supports us as a Silver Sponsor!



Komoot is an app that lets you find, plan, and share adventures with its easy route planner. Driven by a love for nature, and powered by the outdoor community’s recommendations, komoot helps you explore more of the great outdoors—wherever and however you want.

"We use MapLibre for map rendering in our web and mobile app, and thanks to the cross-platform nature of MapLibre we have visually consistent results on all of our maps." says Daniel Gard, co-founder of komoot.

MapLibre is proud to have gained komoot as a Silver Sponsor and we thank you for trusting us. Your support strengthens our community and makes MapLibre more sustainable. Great to have you!

---

## File: src/content/news/2023-04-14-maplibre-newsletter-april-2023/index.mdx

---
title: "MapLibre Newsletter April 2023"
date: 2023-04-14
categories: ["newsletter"]
authors: [oliver-wipfli]
draft: false
---

import npm200k from "./npm-200k.png";
import tileBounds from "./tile-bounds.png";
import komoot from "./maplibre-komoot-logo.svg";
import { Image } from "astro:assets";

# MapLibre Newsletter - April 2023

## Highlights



**Komoot** joined the MapLibre Sponsorship Program as a Silver Sponsor. Welcome komoot, we are glad to have you in the MapLibre community! Read the [news announcement...](https://maplibre.org/news/2023-04-06-komoot-becomes-a-maplibre-silver-sponsor/)

We released version 2.0.0 of the **Android Navigation** library. Big thanks to Robin Boldt and everyone who helped with this! Read the [news announcement...](https://maplibre.org/news/2023-03-27-android-navigation-version-2/)

The **Metal Project Team** has now officially started to work on the MapLibre Native migration from OpenGL to Metal on Apple devices. Steve Gifford wrote a [blog post](https://www.wetdogweather.com/blog/maplibre-upgrade) about the role of WetDogWeather in this migration. Our goal is to get a Metal Beta release out by the end of 2023. Read more about it in our [news announcement...](https://maplibre.org/news/2023-03-23-metal-project-team-started/)

MapLibre is happy to host a new repository: `flutter-maplibre-gl`! This project provides MapLibre bindings for Flutter. [flutter-maplibre-gl](https://github.com/maplibre/flutter-maplibre-gl)

<a href="https://www.npmjs.com/package/maplibre-gl">
  
</a>

Finally, MapLibre GL JS has hit 200k weekly downloads on [npm](https://www.npmjs.com/package/maplibre-gl) for the first time!

#### Bounty Program

The amounts allocated to [Bounty Directions](https://github.com/maplibre/maplibre/issues?q=is%3Aissue+is%3Aopen+label%3A%22bounty+direction%22) are pre-approved budgets. If an individual or a company would like to work on a Bounty Direction but requires more funding, they can make a request to the Governing Board to increase the budget of a Bounty Direction.

## MapLibre Native

People interested in contributing can schedule a call with Bart Louwers, Maintainer MapLibre Native: [maplibre/maplibre-native#898](https://github.com/maplibre/maplibre-native/discussions/898).

#### Bounties 💰

Have a look at all available [Bounties in MapLibre Native](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%92%B0+bounty+S%22%2C%22%F0%9F%92%B0+bounty+M%22%2C%22%F0%9F%92%B0+bounty+L%22%2C%22%F0%9F%92%B0+bounty+XL%22%2C%22%F0%9F%92%B0+bounty+XXL%22+) and feel free to propose Bounties yourself. Read our [step-by-step Bounties guide](http://localhost:45707/roadmap/step-by-step-bounties-guide/).

#### Contributions

Contributions since March 20th, 2023:

Most notable PRs:

- First bounty was finalised by Loc Nguyen: Getting Started Guide MapLibre Native for Android has now step by step guides and also a demo codebase [#808](https://github.com/maplibre/maplibre-native/issues/808)
- Thanks to Tadej Novak we have our first split repository initiative. We started with Qt platform [Qt platform](https://github.com/maplibre/maplibre-native-qt)
- OpenGL 2 support is dropped. For the ones that still want to use OpenGL 2 please refer to the [opengl-2](https://github.com/maplibre/maplibre-native/tree/opengl-2) branch.

### Rendering Modularization & Metal project

Project highlights since March 20th, 2023:

- Work was focused on shaders reorg and tests
- The [Project Roadmap](https://github.com/orgs/maplibre/projects/8) is now available.
- Upgrade to OpenGL ES 3.0
  - Motivation, consequences:
    - Most Android devices are compatible with OpenGL ES 3.0
    - One platform that will suffer a drawback until the Metal backend will be implemented is macOS
    - A branch was created for OpenGL ES 2.0 support: [opengl-2](https://github.com/maplibre/maplibre-native/tree/opengl-2)

## MapLibre GL JS

#### Bounties 💰

Bounties completed since March 20th, 2023:

- Remove style-spec from the repo in favor of references to the npm package [Use @maplibre/maplibre-gl-style-spec in MapLibre GL JS](https://github.com/maplibre/maplibre-gl-js/issues/2194)
- Opacity fix for `setTerrain` by adding a warnonce when it detects that a user is using the same source for a hillshade and for 3D terrain [Opacity fix for setTerrain](https://github.com/maplibre/maplibre-gl-js/issues/2035)
- Add `queryTerrainElevation` allows getting terrain elevation in meters at specific point ([#2264](https://github.com/maplibre/maplibre-gl-js/pull/2264))

#### Contributions

Most notable PRs since March 20th, 2023:

- Yi Zhang (Microsoft) - Improve initial loading performance by lazy serializing layers only when needed. ([#2306](https://github.com/maplibre/maplibre-gl-js/pull/2306))
- Cuong Nguyen - Add `queryTerrainElevation` allows getting terrain elevation in meters at specific point ([#2264](https://github.com/maplibre/maplibre-gl-js/pull/2264))
- Karol Leśniak Improved the CSS4 color support ([#2376](https://github.com/maplibre/maplibre-gl-js/pull/2376))

## MapLibre Style Specification

The MapLibre Style Specification has been moved out of MapLibre GL JS and lives now in its own repository: [maplibre-style-spec](https://github.com/maplibre/maplibre-style-spec)

Big thanks to Birk Skyum for bringing up the new documentation website for the style spec at [MapLibre Style Spec](https://maplibre.org/maplibre-style-spec/)!

#### Debated design proposals:

- Support for `refreshTiles` per tile source [#61](https://github.com/maplibre/maplibre-style-spec/issues/61)
- Expanding `tileSources` bounds [#60](https://github.com/maplibre/maplibre-style-spec/issues/60)
- Add elevation to symbol layer [#62](https://github.com/maplibre/maplibre-style-spec/issues/62)
- Update `text-offset` to better support variable anchor placement [#112](https://github.com/maplibre/maplibre-style-spec/issues/112)

Since there are now two design proposals that expand the [TileJSON specification](https://github.com/mapbox/tilejson-spec), we plan to create a fork of TileJSON and maintain it in the MapLibre Organization.

<a href="https://github.com/maplibre/maplibre-style-spec/issues/60">
  
</a>


  Some data sources like traffic have non-global coverage. To avoid loading
  empty tiles, we want to introduce more complex source tile bounds in the
  TileJSON specification.

---

## File: src/content/news/2023-05-18-maplibre-newsletter-may-2023/index.mdx

---
title: "MapLibre Newsletter May 2023"
date: 2023-05-16
categories: ["newsletter"]
authors: [duje]
draft: false
---

import ogcsprints from "./ogc-sprint.jpg";
import { Image } from "astro:assets";

# MapLibre Newsletter - May 2023

## Highlights

#### Mierune

<a href="https://www.mierune.co.jp/?lang=en">
  
</a>

We would like to thank our first sponsor [Mierune](https://www.mierune.co.jp/) for their continued trust in MapLibre.

#### MapLibre Innovation Lab

Many real-world applications have been built with MapLibre. As suggested [here](https://github.com/maplibre/maplibre/discussions/242) it is about bringing the Community together. Implementing new ideas is what will make MapLibre thrive further. We want to recognize all of your efforts, collectively, and so decided to expand on the idea of the MapLibre Innovation Lab - stay tuned.

#### OGC Sprint

<a href="https://www.ogc.org/initiatives/ogcsprints/">
  
</a>

Left to right: Oliver Wipfli (MapLibre), Brandon Liu (Protomaps), Emmanuel Belo (CamptoCamp), Bart Louwers (MapLibre)

To engage with the Community in person, MapLibre was represented at the [OGC Code Sprint](https://www.linkedin.com/posts/camptocamp-sa_the-ogc-code-sprint-at-camptocamp-activity-7062726780234682368-9Dq_) in April. We mingled with fellow geospatial developers at the beautiful offices of the host [CamptoCamp](https://www.camptocamp.org/). We enjoyed a family-like gathering with Lake Geneva and its surrounding mountains only a stone's throw away. As of [MapLibre GL JS](https://github.com/maplibre/maplibre-gl-js), we tested a pitch-dependent field of view, which can be used to let 3D buildings 'pop out' as you change the pitch. Additionally, we experimented to make the depth buffer accessible for end users, which can be used to implement effects, such as fog, in the near future. Regarding [MapLibre Native](https://github.com/maplibre/maplibre-native), some work on CI was done: from now on, a bot leaves comments with a link of the results on PRs when render tests have run.

#### Bounty Program 💰

We would like to remind you about our news in April:

"The amounts allocated to [Bounty Directions](https://github.com/maplibre/maplibre/issues?q=is%3Aissue+is%3Aopen+label%3A%22bounty+direction%22) are pre-approved budgets. If an individual or a company would like to work on a Bounty Direction but requires more funding, they can make a request to the Governing Board to increase the budget of a Bounty Direction."

In the upcoming days, you will find a step-by-step guide on what to hand in for a "Budget Increase". On top of that, we are excited to add "Bounty Direction Suggestion". Again, both can be applied for by companies as well as individuals. All details can be found in our [wiki](https://github.com/maplibre/maplibre/wiki/Bounty-System). We are very much looking forward to your input.

## MapLibre GL JS

#### Bounties 💰

Bounties completed since April 14th, 2023:

- Replace [Playwright](https://github.com/microsoft/playwright) with [Puppeteer](https://github.com/puppeteer/puppeteer): [#2481](https://github.com/maplibre/maplibre-gl-js/issues/2481)
- Parallelize test workflow by splitting up jobs: [#2482](https://github.com/maplibre/maplibre-gl-js/issues/2482)
- Update WebGL types in vertex buffer and uniform binding: [#2515](https://github.com/maplibre/maplibre-gl-js/issues/2515)
- Split tests run to optimize CI run time: [#2411](https://github.com/maplibre/maplibre-gl-js/issues/2411)

Thanks [Birk](https://github.com/birkskyum) for the contributions!

#### Contributions

Most notable contributions since April 14th, 2023:

- Lazy load default style properties on demand to improve loading performance and reduce memory usage: [#2476](https://github.com/maplibre/maplibre-gl-js/pull/2476)
- Remove support for `hsl` CSS color in a format that does not comply with the CSS color specification. Colors defined in the following format **will no longer work**: `hsl(110, 0.7, 0.055)`. Instead **it is recommended** to use the percentage format: `hsl(110, 70%, 5.5%)`. See the PR: [#2376](https://github.com/maplibre/maplibre-gl-js/pull/2376)
- Remove "mapbox-gl-supported" package from API. If needed, please reference it directly instead of going through MapLibre: ([#2451](https://github.com/maplibre/maplibre-gl-js/pull/2451))
- Remove WebGL1 support: ([#2512](https://github.com/maplibre/maplibre-gl-js/pull/2512))

## MapLibre Native

People interested in contributing can schedule a call with Bart Louwers, Maintainer MapLibre Native: [maplibre/maplibre-native#898](https://github.com/maplibre/maplibre-native/discussions/898).

#### Contributions

Most notable contributions since April 14th, 2023:

- "maplibre-gl-native" became "maplibre-native": [#1090](https://github.com/maplibre/maplibre-native/pull/1090)
- Code format via clang-format was added: [#1086](https://github.com/maplibre/maplibre-native/pull/1086)
- Code coverage can now be checked [here](https://app.codecov.io/github/maplibre/maplibre-native/tree/main)
- Render tests are now running on Linux. The test results are uploaded and a bot posts a link to the results on a PR: [#1069](https://github.com/maplibre/maplibre-native/pull/1069)
- A size test was created for iOS. Similar as above, a bot will comment on each PR regarding the percentage size change of the library: [#1092](https://github.com/maplibre/maplibre-native/pull/1092)

## Metal

Check up on weekly updates from now on [here](https://github.com/maplibre/maplibre-native/discussions/1072) and follow the project roadmap [here](https://github.com/orgs/maplibre/projects/8).

Highlights since April 14th, 2023:

- Restructuring the code around drawables, builders and render loop
- Introducing [UBOs](https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object)
- Refactoring layers starting with BackgroundLayer, FillLayer, CircleLayer and LineLayer

## Events

We would like to point out the [MapLibre User Group Japan](https://bit.ly/mug--jp) initiated by [Yasunori](https://github.com/dayjournal). The 5th event will take place [here](https://twitter.com/i/spaces/1nAJErzVBvgxL), June 14th, 2023 19:00 (JST). At the previous event 32 listeners participated when [MapLibre Native](https://github.com/maplibre/maplibre-native) was introduced. Another focus was [FOSS4G](https://2023.foss4g.org/). Anyone who is interested, please do not hesitate to join. Everyone is welcome.

## Next Up

You will find us at [SotMUS](https://2023.stateofthemap.us/schedule). [Yuri's](https://github.com/nyurik) topic June 9th 12:25pm (GMT-4) is: "MVT Tiles and Autonomous Driving, and other non-UI usage" with a Q&A, and June 10th 4:10pm (GMT-4): "MapLibre: a perfect map vis - are we there yet?". [Steve](https://github.com/sjg-wdw) will speak about the status and future of MapLibre Native June 10th 2:45pm (GMT-4).

We are looking forward to the preparations on the upcoming Governing Board Elections that will take place August 24th, 2023.

Thank you to all of you, you are the core of it.

Your MapLibre

---

## File: src/content/news/2023-05-23-maplibre-gl-js-v3/index.mdx

---
title: "MapLibre GL JS v3"
date: 2023-05-23
categories: ["announcements"]
images:
  - header.png
authors: [birk-skyum]
draft: false
---

import minimap from "./minimap.png";
import gpugridlayer from "./gpugridlayer.png";
import colorspaces from "./colorspaces.png";
import attributetransitions from "./attributetransitions.png";
import { Image } from "astro:assets";

<meta name="x:site" content="@maplibre" />
<meta name="x:title" content="MapLibre GL JS v3" />
<meta property="x:domain" content="maplibre.org" />
<meta name="x:card" content="summary_large_image" />
<meta
  property="x:url"
  content="https://maplibre.org/news/2023-05-23-maplibre-gl-js-v3/"
/>
<meta
  name="x:description"
  content="MapLibre GL JS v3 - Improvements to Terrain3D, WebGL2, Color spaces, Performance and more!"
/>
<meta
  name="x:image"
  content="https://maplibre.org/news/2023-05-23-maplibre-gl-js-v3/header.png"
/>

This release is a big step for MapLibre GL JS! With more than 500 commits, and almost a year in the making, version 3.0.0 is surely our best release yet. Lots of features, performance improvement, bug fixes and a few potentially breaking changes that were necessary, to keep the project healthy, are to be found here.

**A note on migration:**
Most users will be able to update to v3 without code changes, but it's recommended to read the section on potentially breaking changes in the changelog carefully to assess if you're code needs migration.

Thanks for all the code contributions!

[@rotu](https://github.com/rotu), [@pramilk](https://github.com/pramilk), [@zhangyiatmicrosoft](https://github.com/zhangyiatmicrosoft), [@prozessor13](https://github.com/prozessor13), [@Pessimistress](https://github.com/Pessimistress), [@ChrisLoer](https://github.com/ChrisLoer), [@xabbu42](https://github.com/xabbu42), [@VehpuS](https://github.com/VehpuS), [@zstadler](https://github.com/zstadler), [@ZeLonewolf](https://github.com/ZeLonewolf), [@kajkal](https://github.com/kajkal), [@kevinschaul](https://github.com/kevinschaul), [@ambientlight](https://github.com/ambientlight), [@smellyshovel](https://github.com/smellyshovel), [@kircher1](https://github.com/kircher1), [@tordans](https://github.com/tordans), [@IvanSanchez](https://github.com/IvanSanchez), [@acalcutt](https://github.com/acalcutt), [@jleedev](https://github.com/jleedev), [@llambanna](https://github.com/llambanna), [@cns-solutions-admin](https://github.com/cns-solutions-admin), [@vanilla-lake](https://github.com/vanilla-lake), [@lukashass](https://github.com/lukashass)

Facilitated by:

[@HarelM](https://github.com/HarelM), [@BirkSkyum](https://github.com/BirkSkyum), [@wipfli](https://github.com/wipfli)

# Notable changes for this release

## Performance

A lot of work has been put into making this version of MapLibre GL JS faster. Here are some of the highlights:

- Lazy load default style properties on demand to improve loading performance and reduce memory usage. ([#2476](https://github.com/maplibre/maplibre-gl-js/pull/2476))
- Improve performance by sending style layers to the worker thread before processing it on the main thread to allow parallel processing ([#2131](https://github.com/maplibre/maplibre-gl-js/pull/2131))
- Improve performance when forcing full symbol placement by short-circuiting pause checks ([#2241](https://github.com/maplibre/maplibre-gl-js/pull/2241))
- Improve initial loading performance by lazy serializing layers only when needed. ([#2306](https://github.com/maplibre/maplibre-gl-js/pull/2306))
- Add validateStyle MapOption to allow disabling style validation for faster performance in a production environment. ([#2390](https://github.com/maplibre/maplibre-gl-js/pull/2390))
- Throttle the image request queue while the map is moving to improve performance ([#2097](https://github.com/maplibre/maplibre-gl-js/issues/2097))
- Improve control initial loading performance by forcing fadeDuration to 0 till the first idle event ([#2447](https://github.com/maplibre/maplibre-gl-js/pull/2447))
- Improve control performance by restricting worker count to a max of 1 except for Safari browser. ([#2354](https://github.com/maplibre/maplibre-gl-js/pull/2354))
- Bump KDBush and supercluster for better memory efficiency ([#2522](https://github.com/maplibre/maplibre-gl-js/pull/2522))
- Speed up the cross tile symbol index in certain circumstances ([#1755](https://github.com/maplibre/maplibre-gl-js/pull/1755))
- Improve rendering speed in scenes with many colliding symbolic icons and labels ([#1757](https://github.com/maplibre/maplibre-gl-js/pull/1757))
- Make request for ImageSource cancelable ([#1802](https://github.com/maplibre/maplibre-gl-js/pull/1802))
- Prevent unnecessary reload of raster sources when RTL Text Plugin loads ([#2380](https://github.com/maplibre/maplibre-gl-js/issues/2380))
- Fix event.isSourceLoaded to reflect the state of source loading for sourcedata event ([#2543](https://github.com/maplibre/maplibre-gl-js/pull/2543))

## transformCameraUpdate

<a href="https://stackblitz.com/edit/vitejs-vite-8nntze?file=src%2FMinimap.tsx">
  
</a>

This new feature makes it possible to get direct access to the camera transform, and manipulate it, continuously whenever the map is attempting to change it's viewport. It's a small hook, but it's very powerful. It's especially handy for reactive frameworks, where the camera state might be put in a store which can trigger side effects like listing the points of interest currently visible on the map. Another example of when it's relevant is when syncing multiple maps, as exemplified with a demo of a minimap and a main map that drives each other here:

Sync two maps with the camera transform - [Minimap demo](https://stackblitz.com/edit/vitejs-vite-8nntze?file=src%2FMinimap.tsx)



## Terrain 3D

The terrain is becoming more stable, with a range of improvements landing in v3.

- Add queryTerrainElevation allows getting terrain elevation in meters at a specific point ([#2264](https://github.com/maplibre/maplibre-gl-js/pull/2264))
- Adding a `warnonce` when terrain and hillshade source are the same ([#2298](https://github.com/maplibre/maplibre-gl-js/pull/2298))
- Move terrain object from style.terrain to map.terrain ([#1628](https://github.com/maplibre/maplibre-gl-js/pull/1628))
- Fix the gap between terrain elevated tiles ([#1602](https://github.com/maplibre/maplibre-gl-js/issues/1602))
- Fix wrap coords in `getTerrain` when `fitBounds` across the AM ([#2155](https://github.com/maplibre/maplibre-gl-js/pull/2155))
- Fix `getElevation()` causing an uncaught error ([#1650](https://github.com/maplibre/maplibre-gl-js/issues/1650)).
- Add map.getCameraTargetElevation() ([#1558](https://github.com/maplibre/maplibre-gl-js/pull/1558))
- Add `freezeElevation` to `AnimationOptions` to allow smooth camera movement in 3D ([#1514](https://github.com/maplibre/maplibre-gl-js/pull/1514))
- Improve rendering of areas below sea level, and remove elevationOffset workaround ([#1578](https://github.com/maplibre/maplibre-gl-js/pull/1578))
- Fix overlapping of 3D building parts when 3D Terrain is activated ([#2513](https://github.com/maplibre/maplibre-gl-js/issues/2513))
- Show 3D buildings located below sea level when 3D Terrain is activated ([#2544](https://github.com/maplibre/maplibre-gl-js/issues/2544))



## WebGL2

WebGL2 has finally reached a level of browser support that allows us, and large projects like [Unity](https://forum.unity.com/threads/removing-support-for-gles2-and-webgl1-in-2023-1a.1360090/) to embrace it fully. While WebGL2 is mostly backward compatible, it gives us lots of new features, and opportunities to improve performance through parallelization. It also removes the friction that exists when using MapLibre GL JS with libraries in the ecosystem that has moved to WebGL2 already - two examples of which can be seen in the demos below:

**Interleaved rendering of DeckGL attribute transitions**

<a href="https://codepen.io/birkskyum-1471370946/pen/VwEBPYW">
  
</a>

3.0.0 - [Animating](https://codepen.io/birkskyum-1471370946/pen/VwEBPYW) - Uses WebGL2

2.4.0 - [Not animating](https://codepen.io/birkskyum-1471370946/pen/qBJyRdR)



**Interleaved rendering of DeckGL GPU accelerated GridLayer**

<a href="https://stackblitz.com/edit/vitejs-vite-asczxg?file=package.json">
  
</a>

3.0.0 [GPU Accelerated](https://stackblitz.com/edit/vitejs-vite-asczxg?file=package.json) - Uses WebGL2

2.4.0 [Breaks](https://stackblitz.com/edit/vitejs-vite-9scpcz?file=package.json) - Browser console prints "Browser not supported"



## Color spaces

<a href="https://kajkal.github.io/maplibre-gl-style-spec-color-demo/swipe.html">
  
</a>

We now align better with the CSS Spec for color spaces, by using the D50 illuminant instead of the D65. This brings us more continuous color spaces with the `interpolate-hcl`. To see what that means in practice, the demo [here](https://kajkal.github.io/maplibre-gl-style-spec-color-demo/swipe.html) is a visualization of the color spaces. You can i.e. select 3.0.0-pre.4 and 3.0.0-pre.5, which is when the addition was made, and move the cursor up and down to compare them.

# Changelog

See a full changelog [here](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md#300), including the list of potentially breaking changes.

---

## File: src/content/news/2023-06-22-jawgmaps-becomes-a-maplibre-silver-sponsor/index.mdx

---
title: "JawgMaps becomes a MapLibre Silver Sponsor"
date: "2023-06-22"
categories: ["announcements"]
authors: [duje]
draft: false
---

import jawgmaps from "./maplibre-jawgmaps-logo.svg";
import { Image } from "astro:assets";

We are happy to announce that JawgMaps has joined the MapLibre Sponsorship Program and supports us as a Silver Sponsor!



The JawgMaps platform provides enterprise-grade mapping services built from both OpenSource and proprietary tools, as well as OpenStreetMap data. Far from simply being a map customizing tool, Jawg provides you with statistics that enable you to adapt your product according to the needs of your users.

Jones Magloire, CTO of Jawg Maps, says, quote, "We have been serving tiles to our customers since 2015, starting with Raster Tiles. In 2017, we introduced Vector Tiles through our style editor, the Jawg Lab, as we believed it was the future. That’s why in 2021, when MapLibre was launched, we chose to support the project and encourage our customers to migrate to MapLibre GL as the recommended library."

MapLibre is proud to have gained JawgMaps as a Silver Sponsor and we thank you for trusting us. Your support strengthens our community and makes MapLibre more sustainable. Great to have you!

---

## File: src/content/news/2023-06-23-maplibre-newsletter-june-2023/index.mdx

---
title: "MapLibre Newsletter June 2023"
date: 2023-06-23
categories: ["newsletter"]
authors: [duje]
draft: false
---

# MapLibre Newsletter - June 2023

## Highlights

### JawgMaps

<a href="https://www.jawg.io/en/">
  
</a>

We would like to thank JawgMaps for their trust. As you might have read in our [previous announcement](https://maplibre.org/news/2023-06-22-jawgmaps-becomes-a-maplibre-silver-sponsor/), JawgMaps has joined the MapLibre Sponsorship Program and supports us as a Silver Sponsor!

## MapLibre Native

### Getting Ready For The Mega Merge

As part of the effort to implement a Metal backend for iOS, first the renderer needed to be made [modular](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2022-10-27-rendering-modularization.md). A team of graphics engineers has been working steadily on this for the last few months, and the PRs for this big refactor of the existing OpenGL ES rendering architecture will be landing soon.

These are the most significant architectural changes to MapLibre Native since the fork. Not only will they allow the creation of alternate rendering backends (including using [Metal](<https://en.wikipedia.org/wiki/Metal_(API)>)), the library will also be more extendable and 'hackable' in general. **We are looking for external graphics engineers, in particular with OpenGL (ES) and C++ software design experience, to help review these changes.** See the suggested PR process from Steve Gifford, project lead of the Metal project, on [Slack](https://osmus.slack.com/archives/C02B2CBSNBU/p1686938801960959) and keep an eye out for the PRs that will start popping up near the end of this month.

### Design Proposals

- [Android Annotations proposal](https://github.com/fynngodau/maplibre-native/blob/annotations-proposal/design-proposals/2023-06-17-android-annotations.md) Fynn Godau wrote this design proposal with the aim to revamp the Annotations API on Android. Leave your thoughts on the PR: [#1255](https://github.com/maplibre/maplibre-native/pull/1255).
- [FFI Design Proposal](https://github.com/maplibre/maplibre-native/pull/1254). Joel Winarske proposes to add a C API to MapLibre Native to enable an ABI stable interface to the library. This would play well with code generation tools for performant Flutter and Rust bindings.

### Contributions

- Fynn Godau replaced over 10.000 references to `mapbox` for the Android platform ([#1201](https://github.com/maplibre/maplibre-native/pull/1201)).
- Siarhei Fedartsou implemented and added the slice and index-of expressions to the Core and added them to the Android API. ([#1113](https://github.com/maplibre/maplibre-native/pull/1113), [#1133](https://github.com/maplibre/maplibre-native/pull/1133)).
- Hsieh Chin Fan Android contributed two [getting started guides for Android](https://maplibre.org/maplibre-native/docs/book/android/annotation-guide.html). The code of these example guides has been added to the example app inside the repo and included by reference, which makes it possible to ensure they keep working.
- Fynn Godau fixed 5 Android instrumentation tests (i.e. tests running on actual hardware). We only have 1 failing test with 616 passing. We expect Android CI to be green again soon.
- After adding the render tests to the coverage report, we are now at [79% coverage](https://app.codecov.io/github/maplibre/maplibre-native).
- Birk Skyum contributed various PRs.

## MapLibre GL JS

### Version 3

As with our best release yet of v3 you find the separate post [here](https://maplibre.org/news/2023-05-23-maplibre-gl-js-v3/). Worth noting with v3.1 is that a WebGL1 fallback was added to accommodate users without WebGL2 support: [#2653](https://github.com/maplibre/maplibre-gl-js/issues/2653)

## Martin

Martin, a blazingly fast tile server that supports generating and serving vector tiles on the fly from large PostGIS databases, PMTiles, and MBTile files has released v0.8.7. What's new?

### Dynamic Sprite Support

Given a directory with SVG images, Martin will dynamically generate a sprite index and a PNG image, for both low and high resolution displays. Per MapLibre sprites API, the new feature supports:

`/sprite/<sprite_id>.json`: Metadata about the sprite file - all images from a directory
`/sprite/<sprite_id>.png`: All images combined into a single PNG
`/sprite/<sprite_id>@2x.json`: Same but for high DPI devices
`/sprite/<sprite_id>@2x.png`

### Copy MBTile Tool

The `mbtiles` tool lets users partially copy an mbtiles file, filtering to specific zooms, and convert de-duplicated to a flat mbtiles format from now on.

## Bounties 💰

As with every newsletter, we would like to call attention to the fact that we have monetary awards available for developers wanting to push MapLibre forward in [one of the Bounty Directions](https://github.com/maplibre/maplibre/issues?q=is%3Aissue+is%3Aopen+label%3A%22bounty+direction%22). For MapLibre Native in particular, we are looking for **iOS developers with Objective-C experience** to help [modernize the iOS codebase](https://github.com/maplibre/maplibre-native/issues/1248).

Check out the [Step-by-Step Bounties Guide](https://maplibre.org/jobs/step-by-step-bounties-guide/) and get in touch via GitHub or [Slack](https://slack.openstreetmap.us/) (`#maplibre-native`).

---

## File: src/content/news/2023-07-30-maplibre-newsletter-july-2023/index.mdx

---
title: "MapLibre Newsletter July 2023"
date: 2023-07-30
categories: ["newsletter"]
authors: [duje]
draft: false
---

# MapLibre Newsletter - July 2023

## Highlights

### COVTiles

We want to emphasize [Markus Tremmel's](https://github.com/mactrem) input of prototyping a new vector tile format called [COVTiles](https://github.com/mactrem/cov-tiles#cloud-optimized-vector-tiles-covtiles).

## MapLibre Native

### Harfbuzz

[Alan Wei Chen](https://github.com/alanchenboy) has shared a demo using Harfbuzz to render complex text. Check out [#1439](https://github.com/maplibre/maplibre-native/pull/1439).

### Renderer Modularization PRs

The new Modularized renderer architecture based on Drawables is being merged. The `topic/drawable` will be merged into `topic/drawable-reviewed`. The last improvement and fixes will be made on this branch, and then we will merge the changes into `main`. The legacy renderer pass will remain active until the Drawable renderer pass is stable enough. At that point, we will flip the switch and eventually the legacy renderer code will be removed. If you are interested in following along or make code reviews, please see an overview of the relevant PRs [on GitHub](https://github.com/maplibre/maplibre-native/issues/1389).

- [Original Design Proposal](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2022-10-27-rendering-modularization.md)
- [MapLibre Phase 1 Design: Results](https://docs.google.com/document/d/1QtsUgDyD-Rt1McvJFz7HbHvEKli3tRVfxdW7fLDF-g8/edit#heading=h.dwpgby211stb)

### iOS

Alex Polvi contributed an [iOS getting started guide](https://github.com/maplibre/maplibre-native/blob/main/platform/ios/README.md), both for end-users of the library and those wanting to work on the library directly. It is now again possible to make developer builds of the test app for people that do not have a paid Apple Developer subscription. Thanks Alex!

As mentioned during the Technical Steering Committee this month, we now exclusively use Bazel for iOS build and Xcode configuration. Thanks to this it is possible to 'flatten' the confusing macOS and iOS directory structure. Marc Wilson is preparing a [PR](https://github.com/maplibre/maplibre-native/pull/1393) for this

We are now running an iOS render test on an a real iOS device for every PR. Thanks to the credits we have from AWS this is possible. You should be greeted with a green checkmark from your friendly MapLibre Native Bot when making a PR:



### Android

The design proposal from Fynn Godau to [overhaul the Annotations API on Android](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2023-06-17-android-annotations.md) has been merged.

### Metal

Work on the Metal rendering backend has started, and the first important steps have been completed. The first one being: drawing nothing with Metal. And the second one being: drawing a triangle with Metal!



(Screenshot from Tim Sylvester showing a triangle rendered with Metal.)

## MapLibre GL JS

A rewrite of the new documentation site can be found [here](https://maplibre.org/maplibre-gl-js/docs/).

In addition, we released [v3.2.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v3.2.0) and [v3.2.1](https://github.com/maplibre/maplibre-gl-js/releases/tag/v3.2.1) with a lot of exciting new features and a lot of bug fixes. Click on the links above to see a detailed list of all the changes in each version.

## Events

[Bart Louwers](https://github.com/louwers) will be [holding a talk](https://www.linkedin.com/feed/update/urn:li:ugcPost:7090276373935620096/) at [FOSS4G NL](https://foss4g.nl/) in [Middelburg](https://www.openstreetmap.org/search?query=Middelburg#map=13/51.5053/3.6178) September 14th, 2023.

[Yuri Astrakhan](https://github.com/nyurik) will represent MapLibre at [FOSS4G NA](https://foss4gna.org/) in [Baltimore](https://www.openstreetmap.org/search?query=Baltimore#map=12/39.2847/-76.6205) October 23rd to 25th, 2023.

Come by and get to know us in person.

## Next Up

The Governing Board Elections 2023 are taking place August 24th, 2023. Please follow [this issue](https://github.com/maplibre/maplibre/issues/298) for all relevant news. You can suggest a new Voting Member thru [this issue](https://github.com/maplibre/maplibre/issues/300).

---

## File: src/content/news/2023-08-02-governing-board-elections-2023/index.mdx

---
title: "Governing Board Elections 2023"
date: 2023-08-02
categories: ["announcements"]
authors: [duje]
draft: false
---

# Governing Board Elections 2023

The Governing Board Elections 2023 will take place August 24th, 2023. We want to emphasize the process of nominating Candidates for the Governing Board as well as new Voting Members and are looking forward to your suggestions.

## Timeline

Please note the following timeline:

#### August 10th, 2023

Registrations for Candidates for the Governing Board close on: Thursday, August 10th, 2023
Nominations for new Voting Members close on: Thursday, August 10th, 2023

#### August 17th, 2023

Approval of new Voting Members take place on: Thursday, August 17th, 2023

#### August 24th, 2023

Governing Board Elections take place on: Thursday, August 24th, 2023

Further information can be found [here](https://github.com/maplibre/maplibre/issues/298).

---

## File: src/content/news/2023-08-11-radar-becomes-a-maplibre-silver-sponsor/index.mdx

---
title: "Radar becomes a MapLibre Silver Sponsor"
date: "2023-08-11"
categories: ["announcements"]
authors: [duje]
draft: false
---



Radar is joining the MapLibre Sponsorship Program as a Silver Sponsor.

[Tim Julien](https://github.com/tjulien), CTO at Radar, was so kind to share a few insights into Radar and its relationship to MapLibre below:

MapLibre: Radar is Location Infrastructure for mobile and web apps. What role does MapLibre play in your products?

Tim: Radar’s location SDKs run on hundreds of million devices across web and mobile platforms. Our customers have been searching for a cost effective all-in-one location stack, so this year we’ve launched [Radar Maps](https://radar.com/documentation/maps/maps) to complete our vision of “a location platform for every product and service”. MapLibre powers Radar Maps within that user base.

MapLibre: With your sponsorship of MapLibre you are directly supporting the open-source maps ecosystem. How did you decide to sponsor MapLibre?

Tim: With the momentum behind MapLibre over the past year it’s an exciting time for the open-source mapping community. Since we incorporated MapLibre into [Radar Maps](https://radar.com/documentation/maps/maps) it was only natural to sponsor the project to support core development.

MapLibre: Do Radar's products require some new features in the MapLibre toolkit which do not exist yet?

Tim: Not at the moment!

MapLibre is glad to have you and looks forward to a productive and sustainable common future!

---

## File: src/content/news/2023-08-26-maplibre-newsletter-august-2023/index.mdx

---
title: "MapLibre Newsletter August 2023"
date: 2023-08-26
categories: ["newsletter"]
authors: [duje]
draft: false
---

# MapLibre Newsletter - August 2023

## Highlights

### Governing Board Elections

We want to thank each and every of our 92 (49 new!) [Voting Members](https://github.com/maplibre/maplibre/blob/main/VOTING_MEMBERS.md) for their vote and are looking forward to a next great year with our vibrant community. The result of the election will be published separately next week.

## MapLibre Native

### Drawable

The new modularized renderer [has been reviewed](https://github.com/maplibre/maplibre-native/issues/1389). This happened in three stages: first the architectural changes were reviewed (new concepts), then these were tied into the exiting rendering loop in a another PR and finally a PR that contained all updates layers that update `Drawable`s. There are some [Q&A meeting notes](https://github.com/maplibre/maplibre-native/discussions/1532) available for the last PR for those interested.

The next step is to check in the now reviewed `topic/drawable` branch into `main`. This will likely happen before the end of August, and requires fixing the last remaining rendering inconsistencies. The code of the legacy renderer is left in place. Using a build config the new Drawable renderer can be activated. At this point we will make pre-releases for at least Android and iOS and invite the community to test out these pre-releases in their real world apps and projects.

After we are confident that the new renderer is stable, another PR will be created that enables the drawable renderer by default. At some point in the future the code of the legacy renderer can be removed altogether.

### Metal

The architectural changes part of the modularized renderer are paying off, since the Metal team is now implementing the Metal renderer at an impressive pace, with barely any changes needed to the now platform agnostic layers. Keep an eye on the incoming PRs and the [project board](https://github.com/orgs/maplibre/projects/8) to stay updated on the progress.

<video controls style="max-width: 100%;">
  
</video>

_Video from Alex Cristici showing the Heatmap layer rendered with Metal_

### General

- The C++ Unit Tests are now running on a real iOS device as part of the PR checks.
- CodeQL code scanning has been enabled for C++ code. This mitigation strategy has been added to the [security policy](https://github.com/maplibre/maplibre-native/security/policy) and a tag was created to keep track of potential [security](https://github.com/maplibre/maplibre-native/labels/security) improvements.

### iOS

Ian Wagner showed a demo using SwiftUI to declaratively control MapLibre Native. He is very interested in your feedback. Check out the [repository](https://github.com/stadiamaps/maplibre-swiftui-dsl-playground) and the short demo below.





### Android

Fynn Godau has outlined a detailed plan to [revamp and modernize the annotations API on Android](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2023-06-17-android-annotations.md). He will use a feature branch until the changes are complete. Keep an eye [on his PRs](https://github.com/maplibre/maplibre-native/pulls?q=is%3Apr+is%3Aopen+label%3Aandroid+author%3Afynngodau). Reviews and comments welcome.

## MapLibre GL JS

### text-variable-anchor-offset

<video controls style="max-width: 100%;">
  
</video>

We've added a new style spec property and implementation called `text-variable-anchor-offset` which is very exciting! Check out our demo [here](https://maplibre.org/maplibre-gl-js/docs/examples/variable-offset-label-placement/). [This](https://github.com/maplibre/maplibre-style-spec/issues/112) has been the initial design proposal.

### General

- We've improved the docs by removing some internal classes.

- [v3.2.2](https://github.com/maplibre/maplibre-gl-js/releases/tag/v3.2.2) and [v3.3.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v3.3.0) were released this month.

## Events

### FOSS4G NL

We would like to remind you of what we have mentioned in our newsletter in July: [Bart Louwers](https://github.com/louwers) will be [holding a talk](https://www.linkedin.com/feed/update/urn:li:ugcPost:7090276373935620096/) at [FOSS4G NL](https://foss4g.nl/) in [Middelburg](https://www.openstreetmap.org/search?query=Middelburg#map=13/51.5053/3.6178) September 14th, 2023.

### State of the Map Europe

MapLibre will be represented by [Bart Louwers](https://github.com/louwers) and [Luke Seelenbinder](https://github.com/lseelenbinder) at [State of the Map Europe](https://stateofthemap.eu/) in [Antwerp](https://www.openstreetmap.org/search?query=Filip%20Williotstraat%209%2C%202600%20Antwerpen%2C%20Belgien#map=19/51.18690/4.43596) November 10-12th, 2023.

### FOSS4G (Seoul)

For late November, [Jashanpreet Singh](https://github.com/jashanbhullar) plans to hold a talk on the state of Maplibre at [FOSS4G in Seoul](https://foss4g.asia/2023/).

Come by and get to know us in person.

---

## File: src/content/news/2023-08-30-results-governing-board-election/index.mdx

---
title: "Results of the 2023 MapLibre Governing Board Election"
date: 2023-08-30
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

The MapLibre Governing Board Elections are finished - all existing Board members have been reelected.

<hr />
<h1 class="text-center">MapLibre Governing Board 2023</h1>


  
    
      
      <h3 class="m-3">Birk Skyum</h3>
    
    
      
      <h3 class="m-3">Harel Mazor</h3>
    
    
      
      <h3 class="m-3">Luke Seelenbinder</h3>
    
    
      
      <h3 class="m-3">Petr Pridal</h3>
    
    
      
      <h3 class="m-3">Yuri Astrakhan</h3>
    
  


<hr />

Congratulations to the elected Board members and a big thank you to Jonah Adkins for running for the Board as the only newcomer!

Prior to the Governing Board Elections, 50 new Voting Members were nominated and confirmed by the existing Voting Members. This means that there are now 93 MapLibre Voting Members in total, see [list of all Voting Members](https://github.com/maplibre/maplibre/blob/main/VOTING_MEMBERS.md).

Out of the 93 Voting Members, 58 participated in the vote, resulting in a voter turnout of 62 percent.

Since the voting body is a small group of people, we used ranked-choice voting based on the Meek STV method. For a detailed run-down of the calculation, see the [voting results](https://www.opavote.com/results/5696407649386496) ([mirror](https://github.com/maplibre/maplibre/blob/main/2023-polls/MapLibre-Governing-Board-Election-Results.pdf)).

Thanks to all Voting Members for participating in the election, and thanks to all new Governing Board members for volunteering your time for MapLibre!

---

## File: src/content/news/2023-09-18-maplibre-newsletter-september-2023/index.mdx

---
title: "MapLibre Newsletter September 2023"
date: 2023-09-18
categories: ["newsletter"]
authors: [oliver-wipfli, harel-mazor, bart-louwers]
draft: false
---

import speakers from "./speakers.jpg";
import { Image } from "astro:assets";

# MapLibre Newsletter - September 2023

### Governing Board Elections

It is already one year now that MapLibre has an elected Governing Board, and as the Board members serve a one-year-term, it was time for new Governing Board Elections. We held the Elections and all existing Board members have been re-elected. Read more [here](https://maplibre.org/news/2023-08-30-results-governing-board-election/).

### FOSS4G NL and Open Visualization Collaborator Summit

MapLibre was represented at two events in the last month:

- Bart Louwers, Maintainer Native, gave a talk at [FOSS4G NL](https://foss4g.nl/) in Middelburg.
- Yuri Astrakhan, MapLibre Governing Board Member, and Haowen You, Engineering Manager at AWS, gave talks at the [Open Visualization Collaborator Summit](https://deck.gl/events/new-york-summit-2023/) in New York City.

Thank you all for promoting MapLibre at these events!




  From left to right: Bart Louwers at FOSS4G NL, Yuri Astrakhan and Haowen You
  at the Open Visualization Collaborator Summit.


### Engineering Proposals by Wet Dog Weather

Wet Dog Weather, the engineering contractor of AWS that led the Metal migration in MapLibre Native, has filed a series of engineering proposals, see [here](https://github.com/maplibre/maplibre/discussions?discussions_q=is%3Aopen+author%3Asjg-wdw+).

The proposals include things like **Terrain 3D**, **Globe View**, and many other exciting features for MapLibre Native. If your company is interested in these features, get in touch with Steve Gifford, CEO of Wet Dog Weather, to discuss funding opportunities. You can find him in the [MapLibre Slack channel](https://slack.openstreetmap.us/).

## MapLibre Style Specification

Last month, several design proposals were opened in the [MapLibre Style Spec repo on GitHub](https://github.com/maplibre/maplibre-style-spec). Here is an overview:

- Add a `pitch` style spec expression similar to the `zoom` expression. [#346](https://github.com/maplibre/maplibre-style-spec/issues/346).
- Support arbitrary base and interval values in RasterDEM sources [#326](https://github.com/maplibre/maplibre-style-spec/issues/326).
- Change default value for text-font to Noto Sans Regular [#311](https://github.com/maplibre/maplibre-style-spec/issues/311).

Furthermore, there is an ongoing discussion about how to support more writing systems such as Indic scripts with Harfbuzz text shaping. Read more [here](https://github.com/maplibre/maplibre-style-spec/discussions/312).

## MapLibre Native

### Metal Port



On January 4th, 2022 Steve Gifford posted a [thread on GitHub Discussions](https://github.com/maplibre/maplibre-native/discussions/202): have we considered a [Metal](https://developer.apple.com/metal/) port? It seemed like a momentous effort at the time, and not just from an engineering perspective, because it was. Thanks to the persistence of some key players and the hard work of graphics engineers who were part of the 'Metal team' this year, that Metal port is closer than ever.

This month, we have pushed out an [early access pre-release](https://github.com/maplibre/maplibre-native/issues/1609) of MapLibre Native for iOS with Metal support.

Thanks to everyone who gave it a spin thus far and that let us know their experiences with it. We will continue to push out pre-releases regularly as the last features are implemented and performance is further improved.

### Android Annotations

Fynn Godau's work on a [user-friendly Kotlin-based Annotations API](https://github.com/maplibre/maplibre-native/issues/1491) is ongoing. We are highly appreciative of Fynn's work done as part of the [Modernization](https://maplibre.org/roadmap/maplibre-native/modernize-codebase/) bounty direction. Also thanks to Artak Kalantarian for helping review some of this work.

### iOS Modernization

With the release of Swift 5.9 with seamless C++ interoperability and a powerful macro system, new avenues are opening up for [modernizing the iOS codebase](https://github.com/maplibre/maplibre-native/issues/1248). Ian Wagner is playing with some ideas. Join us in the `#maplibre-ios` channel on Slack or leave a comment on GitHub if you are interested in this as well.

## MapLibre GL JS

We've released version 3.3.1 with a few minor bug fixes related to typings and improved license.txt file handling for packaging tools.

## Upcoming Events

### State of the Map Europe

MapLibre will be represented by [Bart Louwers](https://github.com/louwers) and [Luke Seelenbinder](https://github.com/lseelenbinder) at [State of the Map Europe](https://stateofthemap.eu/) in [Antwerp](https://www.openstreetmap.org/search?query=Filip%20Williotstraat%209%2C%202600%20Antwerpen%2C%20Belgien#map=19/51.18690/4.43596) November 10-12th, 2023.

### FOSS4G (Seoul)

For late November, [Jashanpreet Singh](https://github.com/jashanbhullar) plans to hold a talk on the state of MapLibre at [FOSS4G in Seoul](https://foss4g.asia/2023/).

Come by and get to know us in person.

### MapLibre Meetup Japan

The MapLibre User Group Japan will organize an in-person meetup in November. If you are interested in joining the meetup in Japan, contact Yasunori Kirimoto in the [MapLibre Slack channel](https://slack.openstreetmap.us/). They even have MapLibre t-shirts!

### MapLibre Online Conference Day

We plan to do an online conference day. The date is still to be defined, but if you are interested in giving a talk, you can fill out the following form already now: [link](https://forms.gle/AKg63TnASSWXfZi66)

More info on the conference day will follow in the MapLibre Slack channel, on social media, and here in the Newsletter.

---

## File: src/content/news/2023-10-30-maplibre-newsletter-october-2023/index.mdx

---
title: "MapLibre Newsletter October 2023"
date: 2023-10-30
categories: ["newsletter"]
authors: [oliver-wipfli, harel-mazor, bart-louwers]
draft: false
---

# MapLibre Newsletter - October 2023

## MapLibre GL JS

Just in time for this newsletter, MapLibre GL JS has gained over [5000 Stars on GitHub](https://github.com/maplibre/maplibre-gl-js/stargazers). Great that we got so far and thanks to everyone who contributed in the past and made this possible!

In the last month, 5 releases of MapLibre GL JS were made. Below you find some highlights, for a full list of improvements please have a look at the [changelog](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md).

- Safari DEM fix: In a new version of the Safari browser, Apple has introduced some random noise in images in private mode. While usually users don't notice this effect, it had drastic consequences for terrain3d and client-side hillshading. Mike Barry fixed this issue by using the browser's video frame API to decode PNGs. See [pull request](https://github.com/maplibre/maplibre-gl-js/pull/3185).
- High-resolution CJK: Users of Chinese Japanese and Korean (CJK) languages get to enjoy labels now at twice the resolution. This makes CJK text labels more readable and the map overall more appealing. Thanks Brandon Liu for contributing this! See [pull request](https://github.com/maplibre/maplibre-gl-js/pull/3006).
- Custom raster DEM encoding: Isaac Besora Vilardaga from Felt made the encoding of raster digital elevation model (DEM) tiles configurable. This means that the user can now specify a custom base and interval value for the DEM tiles. See [pull request](https://github.com/maplibre/maplibre-gl-js/pull/3087).

Finally, we are working on moving some of the old callback-based design to more modern JavaScript Promises allowing the use of async and await. While this change is still in the making, it will most likely lead to a series of breaking changes. Feedback on this design change is more than welcome. Feel free to share your thoughts in this [pull request](https://github.com/maplibre/maplibre-gl-js/pull/3233).

## MapLibre Native

The iOS pre-release with Metal support has received numerous performance optimizations. We are inviting users of MapLibre Native on iOS to try out a recent pre-release and [share feedback](https://github.com/maplibre/maplibre-native/issues/1609). The upcoming MapLibre Native iOS 6.0.0 release will use Metal for rendering.

The project to implement a Metal backend for MapLibre Native is now nearing its completion. Steve Gifford, who led the effort, is now exploring options for a follow-up project. He has made [various proposals](https://github.com/maplibre/maplibre/discussions?discussions_q=is%3Aopen+author%3Asjg-wdw+Native). Please have a look and share your thoughts.

Keeping binary size low is very important for some users of MapLibre Native. We now have [Bloaty](https://github.com/google/bloaty) running on CI to analyze and report on binary size differences on PRs. We are welcoming contributions that reduce binary size. Going forward, binary size (increase) will be an acceptance criterion for contributions. Ideally it should be possible to opt-out of future functionality that significantly adds to binary size using compile options.

There is an open PR from Alan Wei Chen that [integrates HarfBuzz into the toolkit](https://github.com/maplibre/maplibre-native/pull/1439) to be able to render Khmer, Burmese and Hindi.

Related to the point above, Oliver Wipfli wrote a great article on [text rendering in MapLibre](https://github.com/wipfli/about-text-rendering-in-maplibre). He concludes:

> It is an exciting time to work on text rendering in MapLibre because it is not perfect yet and any improvement will likely mean that millions if not billions of people get to enjoy vector maps in their native language. So it is well worth the effort...

Tadej Novak is making progress on splitting out the Qt platform to [its own repository](https://github.com/maplibre/maplibre-native-qt). The Qt platform will be used to experiment with platform bindings living in a separate repository.

## Martin

The [Martin Tile Server v0.10](https://github.com/maplibre/martin/releases/tag/v0.10.0) was just released, adding support for dynamic font glyph range generation. Now you can provide any fonts to Martin, and it will automatically create SDF glyph ranges for MapLibre-GL with `/font/<name>/<start>-<end>` endpoint. Fonts also allow glyph fallback: list font names as comma-separated values, and whichever font first has the glyph, that's the glyph that will be included. This way you can specify fallback fonts: `/font/Font1,Font2,Font3/0-255`.

Other new features include MBtiles diffing and patching for the `mbtiles` utility, and improvements to the Martin startup time with auto bounds computation timeout.

## Upcoming Events

### State of the Map Europe

MapLibre will be represented by [Bart Louwers](https://github.com/louwers) and [Luke Seelenbinder](https://github.com/lseelenbinder) at [State of the Map Europe](https://stateofthemap.eu/) in [Antwerp](https://www.openstreetmap.org/search?query=Filip%20Williotstraat%209%2C%202600%20Antwerpen%2C%20Belgien#map=19/51.18690/4.43596) November 10-12th, 2023.

### FOSS4G (Seoul)

For late November, [Jashanpreet Singh](https://github.com/jashanbhullar) plans to hold a talk on the state of MapLibre at [FOSS4G in Seoul](https://foss4g.asia/2023/).

Come by and get to know us in person.

### MapLibre Meetup Japan

The MapLibre User Group Japan will organize an in-person meetup in November. If you are interested in joining the meetup in Japan, contact Yasunori Kirimoto in the [MapLibre Slack channel](https://slack.openstreetmap.us/). They even have MapLibre t-shirts!

### MapLibre Online Conference Day

We plan to do an online conference day. The date is still to be defined, but if you are interested in giving a talk, you can [fill out the form](https://forms.gle/AKg63TnASSWXfZi66) already.

More info on the conference day will follow in the MapLibre Slack channel, on social media, and here in the Newsletter.

---

## File: src/content/news/2023-11-08-meta-continues-to-support-maplibre/index.mdx

---
title: "Meta continues to support MapLibre"
date: "2023-11-08"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import meta from "./maplibre-meta-logo.png";
import { Image } from "astro:assets";

Meta continues to support MapLibre and increases its donation from the Silver to the Gold tier in its second year of sponsorship.






The Gold tier donation of USD 150,000 will be used to 25 percent for development of new features and to 75 percent for general maintenance of the MapLibre codebases and project coordination.

But not only is Meta supporting MapLibre financially. In 2023, Meta contributed a substantial amount of engineering time to the Metal project team in MapLibre Native. The fact that today we have a working early-access [prerelease](https://github.com/maplibre/maplibre-native/issues/1609) for Metal is in large part thanks to the excellence, team play, and graphics expertise that Meta provided.

Meta is also supporting a range of other geospatial open-source projects, see [https://maps.atmeta.com/](https://maps.atmeta.com/).

We thank everyone at Meta for your trust, your contributions, and for the generous Gold sponsorship!

It is great to collaborate with such amazing people and we are looking forward to a productive future.

---

## File: src/content/news/2023-11-30-maplibre-newsletter-november-2023/index.mdx

---
title: "MapLibre Newsletter November 2023"
date: "2023-11-30"
categories: ["newsletter"]
authors: [oliver-wipfli, yuri-astrakhan, bart-louwers]
draft: false
---

import img from "./img.jpg";
import globe from "./globe.jpg";
import { Image } from "astro:assets";

# MapLibre Newsletter - November 2023

## MapLibre GL JS

### v4

Versions 3.5.2, 3.6.0, 3.6.1 were released, and we started going into the pre-release mode for MapLibre GL JS v4. The most significant breaking change in version 4 will be the replacement of outdated JavaScript callbacks with Promises in several public APIs.

You can now start testing the version 4 pre-releases at https://github.com/maplibre/maplibre-gl-js/releases. Your feedback and bug reports are more than welcome!

### Globe

Not just one, but actually two proofs of concept for a globe view were shared by two independent developers this month. See https://github.com/maplibre/maplibre/discussions/161.

We are excited to see where this will bring us!

<a href="https://pheonor.github.io/globe-demo/">
  
</a>



  Globe view proof of concept by Vivan Larrieu. Link:
  https://pheonor.github.io/globe-demo/.


## MapLibre Native

### Metal Project

The Metal project is now in its final stage. A big push was made this month to get the render tests to a 100% success rate again with the new Metal based renderer. Check out [this PR](https://github.com/maplibre/maplibre-native/pull/1855) for an overview of the changes that were needed. Interestingly, aside from a handful of exceptions, the team got the Metal renderer to conform to OpenGL renderer without adjusting the acceptable pixel difference threshold or generating a new set of expected images.

The target of at most 5% binary size increase will be hit after the [shader tooling overhaul](https://github.com/maplibre/maplibre-native/pull/1848) PR is merged.

Another current focus is performance. While frame times on iOS were comparable to the legacy renderer with a non-moving map, benchmarking with a moving map (doing a tour) revealed performance degradations especially on symbol-heavy maps ([iOS results](https://github.com/maplibre/maplibre-native/pull/1873#issuecomment-1820845760), [Android benchmark](https://github.com/maplibre/maplibre-native/pull/1850)). The plan is to investigate these findings and fix the found bottlenecks. Work is underway to run these benchmarks on CI to track progress and prevent regressions.

With regards to stability of the Metal rendering backend, no crashes have been reported on the [pre-release issue](https://github.com/maplibre/maplibre-native/issues/1609). More conclusive results on stability require testing on a wide variety of devices and as a part of real applications. Such results are expected early next year, when big users will start an A/B rollout of the new renderer.

Re-enabling macOS support using the Metal renderer (native macOS, Qt, Node.js) will be one of the last topics to be addressed as part of the Metal project.

### Other Developments

- Tadej Novak has made a lot of progress with the [MapLibre Native Qt repo](https://github.com/maplibre/maplibre-native-qt). In the future, the Qt platform will live in this repository instead of the main repository.

- [Multi-sprites support for MapLibre Native](https://github.com/maplibre/maplibre-native/pull/1858) is expected to land soon. More information about this feature can be found in the [MapLibre Style Spec documentation](https://maplibre.org/maplibre-style-spec/sprite/).

- Two design proposals were accepted this month:
  - [Complex, Animatable, Interactive Annotations Proposal](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2023-11-08-complex-animatable-interactive-annotations.md)
  - [Ambient cache initialization speed improvement](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2023-11-06-ambient-cache-initialization-speed-improvement.md)

## Martin

Martin tile server has a new tool similar to `tilelive-copy` and `tippecanoe` to bulk-copy tiles from any supported source. The `martin-cp` tool uses the same source configuration system/CLI parameters as Martin itself, but without starting up the whole tile server in order to generate them. The tool is available as a standalone binary with no external dependencies.

Use case: generate several areas of the map from PostgreSQL tables/functions or other sources, and even merge multiple tile layers together into a single .mbtiles tileset file.

In other news, `mbtiles summary` tool can now print in-depth details about an mbtiles file such as per-zoom statistics.

See https://github.com/maplibre/martin/releases/tag/v0.11.0

## Past Events

## State of the Map Europe 2023

[State of the Map Europe](https://stateofthemap.eu/) was held the 10-12th of November, 2023 in Antwerp. [Luke Seelenbinder](https://maplibre.org/about/luke-seelenbinder/) and [Bart Louwers](https://maplibre.org/about/bart-louwers/) represented the MapLibre team at the event and gave a talk to spread the word about MapLibre.

Jonas Vautherin presented a talk about [Ramani Maps](https://github.com/ramani-maps/ramani-maps), a plugin for MapLibre Native that wraps the core Android library, allowing a declarative syntax with Jetpack Compose.







  SotM EU speakers. From left to right: Bart Louwers, Luke Seelenbinder, Jonas
  Vautherin.


We thank the organizers of SotM EU for organizing a great event and for bringing the open data and open source geospatial communities together!

## Upcoming Events

### Maptime Meetup

Some members of the MapLibre Community will participate in the Maptime Meetup at the TomTom office in Amsterdam on December 15th, 2023. [Read more...](https://www.meetup.com/maptime-ams/events/297537707/?isFirstPublish=true)

---

## File: src/content/news/2023-12-30-maplibre-newsletter-december-2023/index.mdx

---
title: "MapLibre Newsletter December 2023"
date: "2023-12-30"
categories: ["newsletter"]
authors: [oliver-wipfli]
draft: false
---

import happy2024 from "./happy-2024.jpg";
import { Image } from "astro:assets";

# MapLibre Newsletter - December 2023

<a href="https://demotiles.maplibre.org">
  
</a>

MapLibre wishes you all the best for 2024! https://demotiles.maplibre.org

2023 was an interesting year for MapLibre. It was the first time that we had paid maintainers who took care of MapLibre GL JS and MapLibre Native. Harel Mazor and Bart Louwers are the main people who served in this role and thanks to their great effort, contributing to MapLibre was faster and smoother than ever before.

It was also the first time that a large engineering collaboration between two main corporate sponsors took place. The codebase modernization and implementation of a Metal rendering backend in MapLibre Native was supported by AWS and Meta. A team of people from different backgrounds and employers all worked together in a productive way and delivered by the end of this year a Metal pre-release that meets expectations. This was only possible thanks to the tireless work of people like Haowen You from AWS, Marc Regan and Marc Wilson from Meta, Steve Gifford and Tim Sylvester from Wet Dog Weather, and Alex Cristici and Stefan Karschti. Thank you all for being so professional!

MapLibre would not be what it is today without the financial support of our sponsors. They are the ones who enable this organization to deliver professional maintenance, fast code reviews, and support for newcomers. We are convinced that only with paid maintainers we can keep up with the complexity and workload entailed by a state-of-the-art maps toolkit.

So, big thanks to all our [sponsors](/sponsors) - you are essential to everyone's success!

# MapLibre GL JS

- Two 4.0 pre-releases were published.
- Two plugin owners that were affected by the 4.0 breaking changes had updated their code to facilitate the new version.
- Some 3D bugs were solved by Aiden (snailbones).
- Globe POC is continuing.
- There is an initial discussion about MapLibre components being separated from the main core code in the v4 breaking changes [issue](https://github.com/maplibre/maplibre-gl-js/issues/3052).

# MapLibre GL Native

The Metal team made a lot of progress with the Metal renderer being on-par with the legacy OpenGL renderer. Performance on Android is also expected to be at the original level soon. Read the full November status report [here](/roadmap/maplibre-native/metal/).

# MapLibre Flutter GL

We published two new releases recently: 0.18.0 and 0.17.0.

0.18.0 contains a major new feature: you can now set arbitrary layer properties at runtime (#303). We also improved the documentation for users and contributors (updated old docs and added new docs) and work continues on pushing releases to pub.dev (The version currently published on pub.dev does not work on the web #309).

0.17.0 contains a lot of new features and bugfixes (too many to list all of them here) that lived in the repo for some time but had not been "officially released" so far. 0.17.0 also contains some breaking changes, but the release notes contain instructions on how to easily fix them. Also, developers do not need to adapt their Podfile for iOS apps anymore as it was previously described in the Readme. Developers who previously added these lines should remove them, since not removing these lines may cause a build failure on iOS.

---

## File: src/content/news/2024-01-19-metal-support-for-maplibre-native-ios-is-here/index.mdx

---
title: "Metal Support for MapLibre Native iOS Is Here!"
date: 2024-01-19
categories: ["announcements"]
authors: [bart-louwers]
draft: false
---

import screenshot from "./screenshot.png";
import { Image } from "astro:assets";

We are excited to announce the release of MapLibre Native for iOS v6.0.0 with Metal support!






[MapLibre Native](https://github.com/maplibre/maplibre-native) is a map rendering toolkit written in C++ that can be used on many different [platforms](https://github.com/maplibre/maplibre-native?tab=readme-ov-file#platforms). For GPU accelerated real-time rendering, MapLibre Native traditionally relied only on the industry standard graphics API called OpenGL ES. However, in 2018 Apple announced that it would be phasing out OpenGL ES on all Apple platforms in favor of [Metal](<https://en.wikipedia.org/wiki/Metal_(API)>). This put MapLibre at risk of being unusable on Apple devices in the case that OpenGL ES support should be discontinued. With the new Metal rendering backend we are no longer exposed to this risk and users will benefit from the advantages of a state-of-the-art graphics framework.

Building a Metal rendering backend was a monumental engineering effort, well over a year in the making. Credit goes to the graphics engineers of the “Metal team” led by Steve Gifford consisting of Alex Cristici, Marc Wilson, Stefan Karschti and Tim Sylvester.

The work has been sponsored by AWS and Meta. We would like to extend a big Thank You to Haowen You from AWS and Marc Regan from Meta for coordinating this collaboration. Metal has been the biggest engineering initiative that MapLibre has seen so far and that we were able to realize this as an industry collaboration makes us even more happy!

## Try It Out Today!

If you develop for iOS, the new v6.0.0 release is available on [GitHub](https://github.com/maplibre/maplibre-native/releases/tag/ios-v6.0.0), [CocoaPods](https://cocoapods.org/) and the [Swift Package Index](https://swiftpackageindex.com/maplibre/maplibre-gl-native-distribution).

---

## File: src/content/news/2024-01-30-maplibre-newsletter-january-2024/index.mdx

---
title: "MapLibre Newsletter January 2024"
date: "2024-01-30"
categories: ["newsletter"]
authors: [oliver-wipfli]
draft: false
---

# MapLibre Newsletter - January 2024

A lot of great things happened this January: Maputnik, Metal, new releases of MapLibre Native Node bindings and Martin, and hopefully our last prerelease of MapLibre GL JS v4 all appeared this month.

# MapLibre GL JS

We have published a prerelease for MapLibre GL JS v4, see [here](https://github.com/maplibre/maplibre-gl-js/releases/tag/v4.0.0-pre.6). Unless there should be some bug reports, this will be our final prerelease for version 4. There are several breaking changes around the replacement of callbacks with JavaScript Promises. As usual, you find a list of all breaking changes in the [changelog](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md).

Just in time for this Newsletter Jakub Pelc, a master student who does a project at [Windy.com](https://windy.com), published a new demo of his **globe** implementation, see [here](https://github.com/maplibre/maplibre/discussions/161#discussioncomment-8300538).

Furthermore, [sky spec](https://github.com/maplibre/maplibre-style-spec/pull/478) was approved and should hopefully be incorporated in a future version. The original [pull request](https://github.com/maplibre/maplibre-gl-js/pull/3645) was updated.

Finally, a proposal to facilitate style spec extensions was made, see [here](https://github.com/maplibre/maplibre-style-spec/issues/516).

# MapLibre Native

MapLibre Native for iOS version 6.0.0 was released on January 16th, 2024, and it comes with the brand new Metal rendering backend. Read more in this [announcement](https://maplibre.org/news/2024-01-19-metal-support-for-maplibre-native-ios-is-here/)...

# Further MapLibre Projects

## Maputnik

We are happy to announce that Maputnik, the style editor with a web-based user interface, has been migrated by Harel Mazor with the help of several others to the MapLibre GitHub Organization. Maputnik allows map style designers and cartographers to instantly see changes and it is an essential tool in the MapLibre ecosystem. We hope that the new home allows us to bundle efforts and maintain this great project together.

https://github.com/maplibre/maputnik

## MapLibre Native Node Bindings

Andrew Calcutt released a new maplibre-native node version, [node-v5.3.1](https://github.com/maplibre/maplibre-native/releases/tag/node-v5.3.1), which adds support for `index-of` and `slice` expressions, and webp decoding support. This follows [node-v5.3.0](https://github.com/maplibre/maplibre-native/releases/tag/node-v5.3.0) which added support for node 20 and Ubuntu 22.04.

## Martin

Martin Tile Server [v0.13](https://github.com/maplibre/martin/releases/tag/v0.13.0) is out, adding support for tile cache. Users can control how much memory to use for caching Postgres query results, as well as MBTiles and PMTiles access. Note that compression results are not yet cached (see [#1112](https://github.com/maplibre/martin/issues/1112)), and neither are fonts and sprites.

---

## File: src/content/news/2024-02-20-msft-announcement/index.mdx

---
title: "Microsoft joins the MapLibre Sponsorship Program"
date: "2024-02-20"
categories: ["announcements"]
authors: [oliver-wipfli]
draft: false
---

import msft from "./maplibre-msft-logo.png";
import { Image } from "astro:assets";

Microsoft joins the MapLibre Sponsorship Program as a Silver Sponsor.






The Silver tier [donation](https://opencollective.com/maplibre/contributions/733415) of USD 80,000 will be used to 20 percent for development of new features and to 80 percent for general maintenance of the MapLibre codebases and project coordination.

From the very beginning Microsoft was instrumental in building the MapLibre Organization and with the membership in the MapLibre Sponsorship Program, Microsoft lays out the foundation for a sustainable common future.

Microsoft uses MapLibre GL JS in both consumer and enterprise map products.

Bing Maps deploys MapLibre GL JS in production, a feat which was only possible thanks to performance improvements that were contributed to MapLibre by Bing Maps Engineers.

Azure Maps serves business customers all around the world with high-quality mapping products which are built on top of MapLibre GL JS.

We look forward to all the great contributions from Microsoft and are honored to have Microsoft as a Sponsor!

---

## File: src/content/news/2024-02-29-maplibre-newsletter-february-2024/index.mdx

---
title: "MapLibre Newsletter February 2024"
date: "2024-02-29"
categories: ["newsletter"]
authors: [oliver-wipfli, harel-mazor, bart-louwers]
draft: false
---

import downloads from "./downloads.png";
import { Image } from "astro:assets";

# MapLibre Newsletter - February 2024

In February 2024, we were happy to [announce](https://maplibre.org/news/2024-02-20-msft-announcement/) that Microsoft has joined the MapLibre Sponsorship Program. With Amazon, Meta, and Microsoft we now have three companies that have a seat in the MapLibre Advisory Council which meets with members of the MapLibre Governing Board on a quarterly basis.

MapLibre's fiscal host is called Open Source Collective, a non-profit organization based in the US. We would like to emphasize that Open Source Collective is a fully independent organization from Open Collective Foundation despite the similarity in name. Since the two entities are fully independent, the announced dissolution of the Open Collective Foundation will have no consequences to the operations of Open Source Collective and therefore will also have **no consequences for MapLibre and its sponsors**. You can read more about it in this in [blog post](https://opencollective.com/opensource/updates/regarding-the-announcement-to-dissolve-open-collective-foundation) of Lauren Gardner, the Executive Director of Open Source Collective.

# MapLibre GL JS

Version 4.0.0, 4.0.1 and 4.0.2 were released and we are back with releasing versions more often after we finalized all the breaking changes in version 4.

We had an interesting discussion about `geometry-type` in the monthly meeting and we are looking for more feedback from the community around how to move forward. Share your thoughts [here](https://github.com/maplibre/maplibre-style-spec/discussions/536).

Lastly, we are happy to mention that Sergei Bachinin was added as a contributor to maplibre-gl-js.

# MapLibre Native

### Core

- Support for [multiple sprite sources](https://maplibre.org/maplibre-style-spec/sprite/#multiple-sprite-sources) is now available in the main branch and will be part of the next platform releases. Thanks to [@geolives](https://github.com/maplibre/maplibre-native/pull/1858) for their contribution.

### iOS

- After some trial and error, the release process for iOS is now fully automated. When the `VERSION` file and `CHANGELOG.md` are updated as part of a PR, the release workflow will automatically run. By getting changes in the hands of end-users quicker, we hope to encourage contributions for the iOS platform.

- The legacy `MGLStyleLayer` allowed using custom OpenGL ES code and shaders. A similar custom layer has been revived with the MapLibre Native iOS 6.1 release with [`MLNCustomStyleLayer`](https://github.com/maplibre/maplibre-native/pull/2041), but of course now Metal needs to be used.

- [New documentation for iOS](https://maplibre.org/maplibre-native/ios/latest/documentation/maplibre/) is available. It uses the [DocC](https://www.swift.org/documentation/docc/) documentation generator from Apple.

### Android

- The [pre-release of MapLibre Native Android 11.0.0](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.0.0-pre0) is out. Since the library underwent significant changes to the rendering architecture, we are gathering [feedback](https://github.com/maplibre/maplibre-native/issues/1608) before making a final release. Once the 11.0.0 release is out we will have a more regular release cadence again for MapLibre Native Android.

- Download statistics for MapLibre Native Android can be found below.

---

## File: src/content/news/2024-03-25-maplibre-newsletter-march-2024/index.mdx

---
title: "MapLibre Newsletter March 2024"
date: "2024-03-25"
categories: ["newsletter"]
authors: [oliver-wipfli, harel-mazor, bart-louwers]
draft: false
---

import screenshot from "./screenshot.png";
import { Image } from "astro:assets";

# MapLibre Newsletter - March 2024

In March 2024, we onboarded [maplibre-gl-inspect](https://github.com/maplibre/maplibre-gl-inspect) into the MapLibre GitHub organization. MapLibre GL Inspect is a small plugin for MapLibre GL JS that allows you to inspect the contents of vector tiles including the attributes of vector tile features. Special thanks to [Andrew Calcutt](https://github.com/acalcutt) who maintained this plugin over the last years and made sure it works with MapLibre GL JS.

## MapLibre GL JS

We are happy to share that this month the first [Globe Pull Request](https://github.com/maplibre/maplibre-gl-js/pull/3783) was reviewed and merged into a special branch in MapLibre GL JS. With this branch, we hope to foster collaboration between the people who are working on the Globe, which includes so far mainly [Jakub Pelc](https://github.com/kubapelc) and [Vivian Larrieu](https://github.com/pheonor).

Furthermore, we release versions [4.1.0](https://github.com/maplibre/maplibre-gl-js/releases/tag/v4.1.0) and [4.1.1](https://github.com/maplibre/maplibre-gl-js/releases/tag/v4.1.1) of MapLibre GL JS. Thanks to everyone who contributed new features and bug fixes to these versions.

## MapLibre Native

Here are the March updates from MapLibre Native:

- The MapLibre Native for Android 11.0.0 [pre-release](https://github.com/maplibre/maplibre-native/releases/tag/android-v11.0.0-pre0) has been out for almost a month now. We thank everyone for their feedback so far! Please give it a spin, and [report any issues](https://github.com/maplibre/maplibre-native/issues/1608) you encounter, see [Maven Central](https://central.sonatype.com/artifact/org.maplibre.gl/android-sdk). The final release is set for the 28th of March if no critical issues are reported.

- We have additional [benchmarks](https://github.com/maplibre/maplibre-native/tree/main/benchmark) using Google's Benchmark library that are running on CI now. Keep an eye out for the results that show up on PRs. Contributors are invited to add additional benchmarks for performance critical code.

- Tim Sylvester added a PR to track what dependencies are used by expressions ([#2113](https://github.com/maplibre/maplibre-native/pull/2113)).

- Marc Wilson fixed an implementation issue with the location indicator on Android, which was causing threads to be constantly created and destroyed ([#2182](https://github.com/maplibre/maplibre-native/pull/2182)).

- A `#maplibre-swift` channel was created on Slack for discussion about a possible Swift-based iOS platform.

- Due to the switch to OpenGL ES 3.0 last year, builds for macOS from the `main` branch were temporarily not possible. Now that MapLibre Native has a Metal backend, macOS support can return on `main`. This was delayed a few times, but this month rendering for macOS was made possible again, by brining sample AppKit app back ([#2205](https://github.com/maplibre/maplibre-native/pull/2205)). Next, GLFW will be made to run on macOS (useful for development purposes), and later Qt and Node.js are to return to macOS with Metal support. To everyone interested in using MapLibre Native on macOS, thanks for your patience!

---

## File: src/content/news/2024-03-26-mappedin-announcement/index.mdx

---
title: "Mappedin joins the MapLibre Sponsorship Program"
date: "2024-03-26"
categories: ["announcements"]
authors: [birk-skyum]
draft: false
---

import Mappedin from "./maplibre-mappedin-logo.png";
import { Image } from "astro:assets";

Mappedin joins the MapLibre Sponsorship Program at the Silver tier.






With a yearly [donation](https://opencollective.com/maplibre/contributions/746466) of USD $10,000, Mappedin supports the maintenance of MapLibre’s codebases and ensures a stable future for the project.

By supporting MapLibre, Mappedin strengthens the open-source maps ecosystem and makes its map rendering technology available to everyone. This collaboration unlocks future opportunities and projects for the broader open-source community.

Mappedin, a global leader in indoor mapping and spatial data management, uses MapLibre in its user-friendly maps. With their Maps for Good initiative, one of their goals is to further the use of maps and mapping technology for schools, firefighting, and other public sector and response-focused solutions.

Stay tuned for more updates as Mappedin continues to work closely with MapLibre and contributes to the evolution of open-source mapping technology. In addition, Mappedin works with organizations and businesses to create enterprise mapping solutions as well as individuals and professionals who can sign up for Mappedin subscriptions and start making indoor maps for free at [mappedin.com](https://www.mappedin.com?utm_campaign=maplibre&utm_source=website&utm_medium=post&utm_content=textlink&utm_id=maplibre_news).

We would like to express our gratitude for the generous donation and the trust you put in us. Thank you, Mappedin, for being a Sponsor!

---

## File: src/content/news/2024-04-30-maplibre-newsletter-april-2024/index.mdx

---
title: "MapLibre Newsletter April 2024"
date: "2024-04-30"
categories: ["newsletter"]
authors: [oliver-wipfli, harel-mazor, bart-louwers, robin-boldt]
draft: false
---

import globe from "./globe-with-atmosphere.jpg";
import mappedin from "../../../../public/img/mappedin-logo.svg";
import { Image } from "astro:assets";

# MapLibre Newsletter - April 2024

At the end of March, we were happy to announce that Mappedin, a global leader in indoor mapping and spatial data management, joined the MapLibre Sponsorship Program. Let us give a warm welcome to our latest sponsor Mappedin!


  <a href="https://www.mappedin.com/">
    
  </a>





In addition to the usual monthly meetings for MapLibre GL JS and MapLibre Native, we now also have a monthly call to talk about **MapLibre Navigation** (thanks Ian Wagner for the initiative!). As always, the monthly calls take place on the second Wednesday of the month. You find the zoom links in our [slack channel](https://slack.openstreetmap.us/) and the next dates are:

- MapLibre Navigation, Wed May 8th, 2024, 6 to 7 PM CEST
- MapLibre Native, Wed May 8th, 2024, 7 to 8 PM CEST
- MapLibre GL JS, Wed May 8th, 2024, 8 to 9 PM CEST

## MapLibre GL JS

MapLibre GL JS versions [4.1.2](https://github.com/maplibre/maplibre-gl-js/releases/tag/v4.1.2) and [4.1.3](https://github.com/maplibre/maplibre-gl-js/releases/tag/v4.1.3) were released this month.

We have recently merged a [text fit feature](https://github.com/maplibre/maplibre-gl-js/pull/4019) by Microsoft that allows keeping the aspect ratio of an image in some cases constant. Shields are the main motivation for this feature, which will be available in the next release.

The globe branch is progressing nicely with the addition of fill-extrusion, hillshade and lines.

Atmosphere is in discussion in terms of spec, and has an initial implementation that looks really awesome!






  A MapLibre raster tile globe with an atmosphere layer. See [source
  code](https://github.com/maplibre/maplibre-gl-js/pull/4020).


## MapLibre Style Spec

The style spec docs were rewritten to use the awesome [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), which allows search and easy maintenance.

While the spec is not changing rapidly as we invest a lot of effort to keep it future-ready on one hand and backward-compatible on the other, making sure the docs are helpful is one of the most important aspects. This is vital so the community will be able to use it, and enjoy it.

We are looking for more expression examples in order to enrich the docs. This is probably the most complicated part of the spec, and we believe examples are very important to understand how things work.

The [sky spec discussion](https://github.com/maplibre/maplibre-style-spec/issues/163) has started looking at the atmosphere definitions as part of it, and there is a [projection discussion](https://github.com/maplibre/maplibre-style-spec/issues/568) for the globe.

A new type of source was [proposed and approved](https://github.com/maplibre/maplibre-style-spec/issues/583): `contour`. This is the first time in a very long time a new type of source was approved! Very exciting!!

Feel free to join the discussions about the future of MapLibre!

## MapLibre Native

The long awaited Android 11.0.0 release is around the corner! Last-minute blocking issues can be reported in the [pre-release thread](https://github.com/maplibre/maplibre-native/issues/1608). Several issues have been addressed this month (e.g. [#2296](https://github.com/maplibre/maplibre-native/issues/2296)). We have a [milestone](https://github.com/maplibre/maplibre-native/milestone/16) with currently one to-be-resolved issue before we will push out the Android 11.0.0 release. Thanks to everyone that helped with testing!

MapLibre Native is being deployed in larger settings and several crashes have been [reported](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+crash+created%3A%3E%3D2024-04-01+label%3Abug) this month. We now include debug symbols for iOS and Android in every release. If you encounter a crash, you can symbolicate the crash report to more easily identify where the issue occurred.

A (wide vector) shader was successfully transplanted from another mapping toolkit ([#2183](https://github.com/maplibre/maplibre-native/pull/2183)). We want to make it possible to extend MapLibre Native. As seen in the PR, we're not quite at the point where you can do this without changing internals, but it's becoming easier.

Metal-cpp comes with its own smart pointers. We were using them inappropriately in a few places, resulting in a memory leak. Resolved by [#2254](https://github.com/maplibre/maplibre-native/pull/2254) and [#2257](https://github.com/maplibre/maplibre-native/pull/2257).

We now go through the entire iOS test app in an UI test to make sure nothing crashes as a smoke test ([#2258](https://github.com/maplibre/maplibre-native/pull/2258)). We also run that UI test with an undefined-behavior sanitizer on CI ([#2280](https://github.com/maplibre/maplibre-native/pull/2280)).

Some uniform buffer objects were moved to the global level, others to the layer level, resulting in fewer binds ([#2266](https://github.com/maplibre/maplibre-native/pull/2266) and [#2247](https://github.com/maplibre/maplibre-native/pull/2247) and [#2292](https://github.com/maplibre/maplibre-native/pull/2292)).

Allow changing User-Agent on iOS [#2293](https://github.com/maplibre/maplibre-native/pull/2293). This was the first pull request from [@hactar](https://github.com/hactar). 💪

MapLibre Native for Node.js 5.4.0 was [released](https://github.com/maplibre/maplibre-native/releases/tag/node-v5.4.0).

## MapLibre Navigation iOS

We are currently reviving [maplibre-navigation-ios](https://github.com/maplibre/maplibre-navigation-ios). After having improved [maplibre-navigation-android](https://github.com/maplibre/maplibre-navigation-android) recently, we are now doing the same for iOS.

- We have updated dependencies like maplibre-native to version 6 with Metal support.
- We use SPM instead of CocoaPods for dependency management.
- We have added hooks to make customizing some of the navigation functions possible.

Robin Boldt who works for Kurviger, a motorcycle app, and is one of the main maintainers of MapLibre Navigation for iOS, is currently beta-testing with maplibre-navigation-ios. He invites you to give the app a spin [here](https://testflight.apple.com/join/Y2eMnS3D).

In the future we also want to make it easier to customize the out of the box navigation UI and to move the Android and iOS navigation libraries closer together.

Would you like to join the effort? PRs and contributions are welcome. And join our MapLibre Navigation meeting in May!