As announced today at linux.conf.au, Empathy will soon support publishing your physical location to your contacts, and reading your contact’s location. This feature has been developed over the past months by Alban Crequy, Daffyd Harries and myself. While the first version will be limited to automatic location discovery with Geoclue, future versions will allow more parameters and settings.
This feature allows you to publish your location (including complete address, latitude and longitude) to the contacts on your contact list only. Of course, the level of detail can be tuned and limited. The information is published using the XMPP protocol using XEP-0080. To make a long story short, your XMPP server will need to support PEP. Turns out that pretty much everyone but Google Talk supports it: you will still be able to receive your contact’s location, but your location won’t be published.
All clients implementing this XEP will be able to display your location. Empathy will display your contacts location on a map using the map widget provided by libchamplain.
This feature will allow you to stay in touch with you friends, knowing where they are, and possibly, how late they’ll be at the restaurant!
Now the technical details. Upon startup, empathy will setup Geoclue to get your current position. Geoclue will try to figure your location using all the resources you specified (among network, cell, GPS). Upon connection, Empathy will send that information.
When you are receiving location information from your contacts, it will be stored until you decide to access that information. Upon displaying the map view, if the information doesn’t contain a latitude and a longitude, Empathy will use Geoclue to geocode the user’s location. Geocoding is converting a street address to a latitude, longitude pair.