I write things here.

The archive.

Mozilla Location Services

I’m currently using Arch Linux with GNOME on my laptop, (as a bit of an experiment) and had an issue with geolocation. There are various components within GNOME that like to adjust themselves based on where they physically think you are in the world e.g. automatically settings the timezone. This ended up being wrong a couple of times, so I was interested in what the data source for this was, and how it worked.

It turns out that GNOME leans quite a lot on the Mozilla Location Serivce, an open service that relies on user contributions to be able to map an environment that a device senses (available WiFi networks, bluetooth beacons etc.) to a physical location. Google have piled a bunch of effort into doing a similar thing, although they have a much larger data source, having the ability to turn every Android device with Google Play Services into a client for them.

Mozilla don’t have this size of userbase, but they do allow anyone who wants to be able to contribute - all that’s needed is a ‘Stumbler’ app (I use Mozilla Stumbler) on some sort of Android phone. It runs in the background and correlates the current GPS fix with the GSM/WiFi environment and posts the data back to MLS. Even better, the app can also show you for a given measurement the delta between what the MLS currently thinks the geolocation for that measurement should be, and where the phone actually was. The greater this, the less accurate MLS previously was, so in theory the more useful the contribution.

There’s a few reasons why I like this. Firstly, MLS is an open service with an open dataset. I like open things, because transparency blah blah. Also, anyone can download the dataset, and run their own instance of the service.

Secondly, it’s nice to contribute back to something I find useful. I’m apparently number #28 of 92 stumblers in the UK, although apparently I’ve contributed around 0.2% of the amount the person in the lead has. Some way to go…

Finally, the nature of the way the dataset is built means it will tend to be more accurate over the very long term. I’ve often noticed that while Google’s location service is pretty accurate, it occasionally has a bit of a wobbly and jumps my location to a seemingly random nearby location, before jumping back again. There’s literally nothing I can do so correct this. With MLS, it would (in theory, I guess?) be possible to correct the data source to remove the error. This is similar to the Google Maps vs Open Street Maps debate, where ultimately user contributions to OSM leads to a more accurate, more detailed map. I’ve written before about how I’ve run a little location tracker to plot where I’ve been. This currently uses a combination of GPS and Google’s location services, so errors mean I have to spend time finding and correcting / removing data points that have been wrongly located. I’m wondering how different the results would be if I switched to MLS.