<aside> ℹ️ If you found this manifesto later and are looking for some code, head over here (which also has updates on the current status): https://github.com/stadiamaps/ferrostar

</aside>

Definitions

Routing - The process of computing one or more routes given some goals and constraints Most commonly these consist of a start and end point, with constraints typically represented a costing model (aka profile by some vendors), most commonly named for the mode of travel (ex: automobile, bicycle, etc.). This is most frequently handled by an external service, which applications talk to via an HTTP API, but may take other forms such as on-device generation.

Navigation - A user experience providing turn-by-turn guidance This could be as simple as text on a screen, but most modern applications involve a (usually 2.5D/3D) map showing the user’s location, route path, display of the current road name, the distance to the next maneuver, and voice guidance.

Background and Motivation

There are already number of mobile navigation SDKs available. A non-exhaustive list is available below.

This is not an exhaustive list, but is an illustrative sample. However, all of them fall short in one or (usually) more respects which inhibit their usability by a wide audience. In broad terms:

While a number of map apps have navigation features (ex: Organic Maps, which is FOSS), this functionality is often homegrown and tightly coupled to other parts of the app, making it not reusable for other apps.

Untitled

At the risk of becoming another xkcd trope, we propose building a new navigation SDK. This will allow us to build something that’s usable by both major vendors and hobbyists alike, and hopefully eliminate at least some of the waste from repeatedly solving the same problems.

We propose starting fresh (though definitely taking inspiration from other open-source work) as this will result in a better foundation. Dev tooling and the ability to ship safe code on mobile has dramatically improved over the last few years, and we have a lot more motivating use cases, both technologically (ex: embedded Flutter in infotainment systems) and practically (ex: municipalities offering navigation services for golf carts). By being mindful of these as we build, we’ll be able to lay a solid foundation that enables future innovation.

MapLibre has proven that it’s possible to produce a high-quality, community-driven, open-source map renderer. We propose doing the same for a navigation SDK. In some ways, this is a bit more ambitious given that our proposal is to start fresh, but we believe strongly that start with the right foundation will enable much more innovation from developers in the future.