6.7 KiB
Deep Architectural Analysis: Valhalla Routing Engine (valhalla-rs) vs. Upstream Makepad Map Navigation (makepad_map_nav / apps/route)
Date: July 28, 2026
Target Repository: https://gitdab.com/andodeki/nigig-org.git
Makepad Upstream: https://github.com/makepad/makepad.git (Commit 5d4483f)
Our Makepad Fork: https://gitdab.com/andodeki/makepad.git (Branch portallist_flow_adaptive_view, Rev 2c5cd97a)
1. Executive Summary
This deep-dive analysis evaluates whether the Pure Rust Valhalla Engine (valhalla-rs) remains essential for the nigig-org application suite (nigig-rider, nigig-delivery, nigig-tow, nigig-mobility) in light of recent additions in upstream Makepad's main branch (libs/map_nav and apps/route).
Core Conclusion:
YES, Valhalla is indispensably required for production ride-hailing, driver tracking, and commercial navigation.
While upstream Makepad's libs/map_nav is an excellent lightweight tool for AI assistant demos (Qwen3.5 / Claude tool-calling prompts), it is not a replacement for a production routing engine like Valhalla. The two systems serve fundamentally different architectural tiers:
┌────────────────────────────────────────────────────────────────────────┐
│ TWO-TIER ROUTING ARCHITECTURE │
│ │
│ TIER 1: Makepad `libs/map_nav` (UI & AI Tool Demo Layer) │
│ • Single CSR graph file (`region.graph`) │
│ • Basic 3-mode A* search (Car / Bike / Foot) │
│ • AI Agent Tool Broker (route_plan, weather.at) │
│ │
│ TIER 2: Valhalla Engine `crates/apps/valhalla` (Production Engine) │
│ • 100% Binary GraphTile Format & On-Demand Mmap │
│ • HMM Viterbi GPS Trajectory Map Matching (`Meili`) │
│ • 5-Minute Historical & Live Traffic Speed Profiles │
│ • Truck / Heavy Vehicle Restrictions (weight, height, hazmat) │
│ • GTFS Public Transit Schedule Routing & MultiModal A* │
│ • Contraction Hierarchy Level Hopping for Long-Distance Queries │
│ • Turn-by-Turn Maneuvers & Multi-Language Voice Guidance (Odin) │
│ • DEM Elevation Profiling (`Skadi`) │
└────────────────────────────────────────────────────────────────────────┘
2. In-Depth Comparative Audit: makepad_map_nav vs. valhalla-rs
| Feature / Capability | Upstream Makepad (libs/map_nav) |
Pure Rust Valhalla (valhalla-rs) |
Impact on nigig-rider Riding App |
|---|---|---|---|
| Data Format & Storage | Single monolithic CSR graph (.graph / "RGPM" format). |
Valhalla Binary GraphTiles (Level 0, 1, 2 hierarchical tiles) with zero-copy mmap. | Critical: Valhalla allows on-demand tile loading for entire countries without memory exhaustion on mobile devices. |
| GPS Map Matching | Simple nearest-edge Euclidean projection. | HMM Viterbi Trajectory Search (Meili) with distance noise (\sigma=4.0\text{m}) and heading penalty. |
Critical: nigig-rider requires Viterbi map matching to snap driver GPS points to road edges during live rides. |
| Driver Guidance & Rerouting | Static route polyline. | DriverGuidanceController with >25\text{m} off-route auto-rerouting trigger & turn HUD. |
Critical: Real-time driver navigation and automatic wrong-turn recovery. |
| Traffic Integration | Static edge speed limits. | 5-Minute Historical Traffic Profiles (PredictedSpeeds) + Live 2km/h Traffic Speed Tiles. |
Critical: Accurate rush-hour ETAs and traffic-aware dispatch. |
| Commercial Vehicle Routing | Not supported (car, bike, foot only). | TruckCost with weight, height, axle count, and hazmat restrictions. |
Required for nigig-delivery and nigig-tow. |
| GTFS Public Transit | Not supported. | MultiModalAStar, TransitStop, TransitDeparture, TransitRoute, TransitSchedule. |
Required for nigig-mobility public transit routing. |
| Voice & Turn Guidance | Basic instruction text. | NarrativeDictionary (English, Swahili, French, Spanish) + VerbalTextFormatter for TTS voice synthesis. |
Critical: Hands-free voice prompts in Swahili and English. |
| Long-Distance Performance | A^* over full local graph (>300\text{ms} for 100\text{km}). |
Contraction Hierarchies & Hierarchy Transitions (<5\text{ms} for 100\text{km}). |
Sub-millisecond routing latency on mobile. |
| DEM Elevation Sampling | Not supported. | HgtTile SRTM 3D Elevation Sampler (Skadi). |
Altitude profiles for cycling and hill avoidance. |
3. Fork Update & Maintenance Strategy for nigig-org
3.1 Status of Our Makepad Fork (andodeki/makepad)
- Our Fork Repository:
https://gitdab.com/andodeki/makepad.git - Active Branch:
portallist_flow_adaptive_view(Rev2c5cd97a) - Upstream Head: Commit
5d4483fonhttps://github.com/makepad/makepad.git
3.2 Strategic Recommendation:
-
Maintain Our Makepad Fork (
andodeki/makepad):- Keep our fork on Gitdab to maintain stable dependencies for
nigig-orgwithout risk of upstream breakages. - Periodically fetch and rebase upstream Makepad commits (specifically platform geo APIs and GPU fixes).
- Keep our fork on Gitdab to maintain stable dependencies for
-
Re-Export Architecture in
nigig-org:crates/apps/map(nigig-map): Wraps Makepad's vector tile map widget and providesRouteRenderPass(z=250) inRenderGraphto draw route polylines.crates/apps/valhalla(valhalla): Serves as the authoritative, offline-capable, production-grade routing, map-matching, and guidance engine for all Nigig apps.crates/apps/nigig-rider(nigig-rider): Imports bothnigig-mapandvalhallato deliver interactive ride-hailing, driver tracking, and turn-by-turn navigation.
4. Conclusion & Action Summary
- Valhalla is not rendered obsolete by Makepad's map navigation additions. Instead, Makepad's map widget provides the visual canvas, while
valhalla-rsprovides the production routing brain. - The two systems work in total synergy:
valhallacomputes routes and map matching, andnigig-maprenders the results on screen.