A multitude of factors are contributing to a mobile computing renaissance. Some of these factors include the growing availability of ubiquitous mobile Internet connectivity and the rising popularity of netbooks and other Internet-enabled small form-factor devices. These changes are inspiring a renewed interest in location-aware software and web services.

A framework called GeoClue aims to enable integration of location-aware technologies in Linux desktop applications. It is an abstraction layer that makes geolocation functionality accessible through a standardized desktop-neutral API that is easy for applications to consume. It will provide a C library and also expose its functionality through D-Bus, an interprocess communication system that is widely used on Linux.

There are a lot of different technologies--WiFi triangulation, cell tower positioning, and GPS--that can be used to ascertain the location of a user. There is also a lot of variation between the individual implementations of those technologies. Although most GPS devices use the standardized National Marine Electronics Association (NMEA) format for describing satellite-based positioning, different GPS devices have subtly different programmatic interfaces and different capabilities. In many cases, the way that these devices are designed to operate makes it difficult to access them from more than one application at a time.

A growing number of devices--especially cell phones--use a combination of technologies to detect location depending on the current circumstances. Managing their use together, while accounting for resource overhead and battery consumption, adds extra complexity. If every desktop application has to reinvent the wheel and handle all of these things, it would make it virtually impossible for geolocation to become a pervasive part of the computing experience.

There are already some nice Linux-based frameworks that abstract away a lot of the complexity associated with GPS. One example is Gypsy--a multiplexing daemon that sits on top of GPS devices, parses the location data, and makes it accessible to other applications on the system via D-Bus. It provides an effective solution for some of the biggest challenges associated with integrating GPS functionality into desktop applications.

Another intriguing project in this area is the GSMLoc initiative, which seeks to compile a database of user-contributed cell tower geolocation data under a Creative Commons license. A Web API on top of the database can be used to obtain estimated location coordinates from CellID values.

The GeoClue framework can leverage all of these and expose the data through a single consistent API so that applications can regard the underlying service, hardware, and protocol as a mere implementation detail. It could also eventually correlate this physical location data with information from geolocation Web services to provide a richer and more expansive assortment of functionality. For example, it could use a Web API to seamlessly provide the address of the user's location based on the coordinates.

Mapping user interface components

There are also some impressive open source frameworks emerging higher up in the stack that help facilitate the development of location-aware applications. One of these that has recently become popular is libchamplain, a GTK+ library that provides preintegrated mapping controls that can be embedded in applications. It leverages the GObject-based Clutter canvas framework for rendering and uses free map images from services like OpenStreetMap and OpenAerialMap.

The GTK+ widgets provided by libchamplain have already been adopted by several GNOME applications. A new plugin for the GNOME image viewer, for example, will display a map with markers to show the location of images with geolocation metadata. The library is also going to be used in Empathy, the GNOME instant messaging client. Empathy's new location-aware functionality uses an XMPP extension that describes a wide range of location metadata. It is built on top of GeoClue and uses libchamplain to display a graphical user interface.

These frameworks clearly bring a lot of value to Linux applications on the desktop and on mobile devices. As the technology matures, mapping and location features could become a more natural and tightly-integrated part of the computing experience.