Hiker:
An Application Framework for Linux
An application framework is a set of services that provide a way to install and manage applications, along with providing the ability for applications to interact with each other and the user. It can also provide other services, such as facilitating the exchange of structured data, providing security services, and managing global settings and preferences.
Smartphones and mobile devices have small form factors with limited memory, storage and display space, and as a result, these devices must do things differently than a typical PC platform. Indeed, the usage model for smartphones and mobile devices is made up of short tasks interrupted by many events, such as receiving calls or messages, while doing other activities. It is with these concepts in mind that the Hiker Application Framework has been developed and is today the first open source mobile Linux® Application Framework...
About Hiker...
The components which make up the Hiker application framework are:
- Application Manager—handles end-to-end application “lifetime” and execution
- Bundle Manager—defines a format for “packaging” applications for use by the Application Manager
- Notification Manager—implements a general mechanism for programmatic “alerts” between one running process and another
- Alarm Manager—provides a service of time-based programmatic alerts
- Attention Manager—implements the foundation for communicating system events to the user (exclusive of specific UI)
- Abstract IPC—a high-level API for efficient interprocess communication which can be based on a variety of standard system IPC mechanisms
- Security Framework—a combination of a Security Policy Manager and a Linux Security Module to provide flexible control of access to system facilities and resources
- Exchange Manager—a central facility to allow the sharing and use of structured information (e.g. appointments, tasks, songs, etc.) between different devices and different applications on a device
- Global Settings—a common API and store for user preferences, system settings, configuration information, etc.
- libsqlfs—a utility library which allows a file system to be placed within an SQLite database file
The following diagram illustrates, in a general way, the usage some of the Hiker application framework components in the context of the ACCESS Linux Platform, for which they were originally developed.

Viewed another way, the Hiker components can be subdivided functionally
- Some components (Application Manager, Bundle Manager) handle the application lifecycle: installation, launching a task, transitioning to a different task, exiting a task and removing an application, while presenting a common view of various types of applications (e.g. GTK apps, "enhanced" GTK apps, Java "applets", ACCESS Garnet apps, etc.)
On mobile devices, where screen real estate is at a premium, a task-oriented paradigm is more appropriate than either an application- or document-oriented framework. The Application Manager can provide these services, via a plug-in architecture of launch pads, to applications from any variety of execution contexts.
- Other components (Notification Manager, Attention Manager, Alarm Manager) allow tasks to notify one another, or the user of the device, of event- or time-based information; target tasks can receive notifications whether or not they're actually running at the time the notification is sent by the source task.
- The Exchange Manager presents a plug-in architecture which allows tasks to associate different types of structured data (e.g. a contact, an appointment, an audio file) with "verbs" than can operate on that data (e.g. "call a contact", "decline an appointment", "play an audio file" to enable transparent access to different kinds of data by the range of tasks and applications on a device.
- The Global Settings component forms the basis of a tree-structured and access-protected registry for system information. Global Settings is based on the open source component libsqlfs which creates a virtual file system within an SQLite database.
- Security-related components (Security Policy Manager, Hiker Security Module) create an overall environment, based on standard certificates and signed binaries, which enables management of different capabilities via explicit policy. APIs can be "sand-boxed" into various "access tiers" so that an open development environment can be maintained while still protecting sensitive resources from manipulation by code which has not been authorized to do so.
- Other support services include libsqlfs (mentioned above) and the Abstract IPC Service, which provides a simplified and thin canonical API for interprocess communications, and which can be layered on top of any other available IPC mechanism.
Benefits
The development of Linux-based systems has been primarily focused on servers and desktop devices. In order to effectively use Linux to create a mobile device, and particularly to enable general applications development for such a device, several additional services are required.
Because much of the work to date has not been focused in the mobile and embedded device space, where solutions to some of these gaps have existed (e.g. SELinux for security, ACPI for power management, etc.), they have not been well-adapted for such devices. In many cases, no such services exist, or a number of partial solutions do.
The goal of Hiker is to provide sufficient additional services as reference implementations in order to facilitate applications development, for device manufacturers, carriers and third-party developers.
The components which we will be releasing, broadly speaking, focus on several key areas:
- presenting a common view of applications to the user (Application Manager and Bundle Manager),
- communicating time-based and asynchronous events between applications or between an application and the user (Notification Manager, Alarm Manager, Attention Manager);
- interoperability of applications and sharing of information between them (Exchange Manager, Global Settings), and
- performing these functions in a secure context (Security Policy Framework/LSM)
Abstract IPC is used by these components in order to simplify their implementation and allow them to generally take advantage of improved underlying mechanisms through a single gating set of APIs. Taken together, they provide mechanisms to allow seamless interoperability and sharing of information between suites of applications in a trusted environment.
It is our hope that the release of these components will offer several benefits to the open source community at large:
- Providing the open source community with real reference implementations that could serve as the basis for application developers who want to write interoperable applications for mobile devices
- Jump-starting activities in open source development for mobile devices in several key areas (e.g. security) by filling a number of current gaps in the services available to applications in that space
- Generally increasing interest in application development for Linux-based mobile devices
- Encouraging others to participate in these projects and to contribute new projects as well
Detailed documentation on the Hiker framework's APIs, data structures and internals, generated by doxygen, can be found starting here.
(The image on this page is copyright © ACCESS Co., Ltd., 2007, and is used by permission.) |