State of the App
Hi. So Mapzen’s not an app company. We make open source tools and provide services for web mapping. But we believe that one of the best ways to improve open source tools is to put them in production—basically, eating our own dog food. Open source mapping has improved by leaps and bounds in the last few years, but in consumer mapping applications it’s often still augmented with proprietary data or software. We decided to make a mapping app entirely from open source software and open data as a demonstration of the current state of open source mobile mapping and how it stacks up against its closed counterparts.
We named the app Open, because that’s what it’s supposed to be. It’s not really that open yet—currently it’s available for use in North and South America, but we’re adding support for more places over the coming weeks. It’s also only available for Android because you know, open platform. If you don’t feel like reading any amazing insights into how and why we built it, you can stop reading and go download it in the Google play store here, or if you prefer sideloading apps, the APK is here.
Open is built with OpenStreetMap at its foundation. We use OSM for the basemap, the road network for routing, and POIs for search. We’re also using OSM OAuth as a requirement for using the app—you need to have or make an OpenStreetMap account. We made that a requirement because while the app is in navigation mode it can optionally upload a GPS trace to your OSM account. It’s a very low effort, completely optional way for users to contribute data to OSM.
So what does a “traditional mapping app” do? These are the things we focused on:
- Show a map
- Find you on that map
- Find things around you
- Get you to those things
Let’s get into how we did that.
Show a map
We use our vector tile service to send vector data down to the phone and then OpenScienceMap to render it.
Find you on the map
Normally this is a solved problem, but when your mission is to be 100% open source, this becomes slightly trickier. Google does a great job at easily interfacing with Android’s location client through Google Play Services. However, Google Play Services is not open source. We wrote a drop in replacement for it called LOST which interfaces directly with Android’s location client.
Find things around you
For search and geocoding we use Pelias. Pelias is a modular open source geocoder that uses ElasticSearch for fast autocomplete and forward and reverse geocoding. It’s designed to support a variety of datasets, including Geonames, Quattroshapes, OSM, and whatever else you can throw at it.
Get you to those things
Once you have something on a map, the next step is getting there. Enter Open Source Routing Machine, which does exactly what you expect. Built and maintained by Dennis Luxen, it does driving, walking and biking directions over the OpenStreetMap road network. It allows us to provide the turn-by-turn directions which users have come to expect. We provide our own instance of OSRM, which also powers Open.
Open is a proof of concept, meant to show the state of open source mobile mapping tools and open data. In some cases, it demonstrates how far open source geo has come. In others, it demonstrates that open source still has a way to go before achieving parity with proprietary services. When an app is built on open data, that data is only as good as the community supporting it. And the great thing about open source is that you can actually do something about it. Open is a starting point, and as more users (users like you, maybe) contribute to the libraries, tools, and data source it uses, it can only improve. We built Open so its components could be improved upon by a larger community, and we’re looking forward to seeing what you create.