White Paper

Maemo is an open development platform for applications and technology innovation for handheld devices. It was developed by Nokia as part of its development process for the Nokia Internet Tablets devices and subsequently opensourced and offered to the community. It brings to developers an easy to use development environment and a new optimized end user interface customized for handheld screen size and usage.

Maemo platform is composed of mainstream Linux and open source software widely deployed in the most popular Linux distributions. At its core is Hildon Application framework, which is based on GNOME technology. GNOME provides an intuitive and attractive PC desktop for end-users based on Linux, and a powerful framework for building applications that integrate into the rest of the PC desktop. Maemo adapts this widely deployed desktop technology to handheld devices with extensions and modifications to evolve a user interface framework more suited for handheld category devices. The development platform is targeted towards open source developers and innovation houses developing applications and new technologies for Linux based Internet connected handheld devices.

History and background of maemo

Maemo is a result of Nokia's effort to develop a handheld device based on Linux and open source technologies. The first product that resulted from this effort is the Nokia 770 Internet Tablet. Maemo development platform enables development for the Nokia Internet Tablet product category. The motivation behind maemo and its availability to the open source community is to stimulate mobile Linux technology development and adoption.

Brief overview of maemo

Maemo provides a powerful Linux based development, build and test environment. The host development environment runs the same software as that available on the target device, eliminating the need of target hardware emulation on host and providing more accurate test environment. This simplification of development for handheld devices enhances developer productivity and learning curve, lowering the barriers to mobile application development and deployment.

In many ways maemo could be compared to the GPE (http://gpe.handhelds.org) project that aims to provide Free Software GUI environment for palmtop/handheld computers running the GNU/Linux™ operating system. What makes maemo different is the ease of development it provides to the handheld application developers and a new user interaction design based around task based usage referred to as the Hildon User Interface and Hildon Application Framework. Hildon enables the development of commercial grade look & feel interfaces that are intuitive, appealing and easy to use, and targeted to normal end consumers.

Maemo features

  • Enables application development using Hildon User Interface and Application Framework
  • Provides development environment for Internet connected applications
  • Provides test environment on x86
  • Enables debugging on x86
  • Ability to configure multiple development environments
  • Incremental upgrade of development environments
  • Extensive documentation for developers
  • Mailing lists for discussion, announcements and support

Maemo technical overview

Some of the key decisions made during the development of the Nokia Internet Tablet products are today reflected in the maemo development platform and its features. Most noteworthy is the use of GNOME technologies as the base for the device user interface. The user interface is further enhanced and combined to include Nokia’s long-term experience with end user user interface interaction and mobile user interface design.

The development platform could be logically separated into the core middleware and end user interface framework refered to as the Hildon application framework.

Image 1

The core non-UI middleware is composed almost entirely of the mainstream open source components like glibc, bluez bluetooth stack, standard Linux networking (ppp, autoip, openobex, iptables, wlan etc), Xserver, expat XML parser, D-BUS to name a few. Some of the components have been modified from mainstream versions to meet the resource constraints of a handheld device.

Hildon Application Framework

The application framework is based on basic GNOME technologies like GTK+ widgets (extended and modified, refered to as Hildon widget set), theming engine, Pango for supporting localization and multi lingual text layout, input method framework, Gconf configuration system and gnome VFS. Maemo utilizes the Matchbox window manager that is more suitable for handhelds than the window managers typically available on Linux desktop environment.

Hildon UI is composed of GTK+ standard widgets extended to better support the stylus-based usage, high display pixel density, and limited set of hardware buttons. Hildon widget set also implements a set of new widgets to meet the handheld end user usage scenario such as time editor and popup.

Hildon application framework also introduces a new desktop for handheld devices. It is composed of:

  • Task Navigator: The Task Navigator to start programs and to switch between applications. Task Navigator has some novel capabilities built into it like its ability to show e-mail headers and browser bookmarks inside the menu.
  • Home: Provides the idle screen to embed different plugins e.g news feed reader plugin, clock plugin etc.
  • Status Bar: Provides a plugin interface, used to communicate device status changes.
  • Control Panel: Provides a framework for running applets used to change user settings. These applets are libraries that provide an interface to change/modify or set configurations.
Image 2

Hildon also provides system wide services like Global search, Help and plugin interfaces to different desktop components like the Task Navigator, Home, Status bar and Control panel

One notable deviation from traditional desktop GNOME is the replacement of bonobo and related technologies built around the usage of CORBA with the more simple and lightweight interapplication messaging protocol, D-BUS.

Connectivity subsystem

Connectivity subsystem is based on standard Linux connectivity architecture. With Nokia Internet Tablets connection to the Internet can be done either by using Bluetooth dial-up profile to make a GPRS or circuit-switched data call connection or by establishing a WLAN (Wi-Fi) connection. Maemo provides the API's and the required developer libraries to enable writing applications utilizing the connectivity subsystem.

Multimedia subsystem

Multimedia subsystem is based around the Gstreamer framework, Helix and the EsoundD, which have been been modified to support DSP based multimedia solution to leverage OMAP architecture on the Nokia Internet Tablets. Linux DSP gateway project (http://dspgateway.sourceforge.net), which is now merged to mainstream linux-omap port project is used to achieve this.

Also included is the support for SDL to facilitate low-level access to audio and screen, typically used for developing games.

Maemo development environment

The development environment is based around Scratchbox Cross Compilation Toolkit (http://www.scratchbox.org) that provides a sandboxed development environment. maemo.org provides a Scratchbox compatible rootstraps, which are software packages containing all the development libraries and header files required for application development. Two of these are made available to developers, one that contains precompiled development libraries for the x86 and the other for ARMEL. This enables almost all development and debugging on the x86 PC host environment, and before finally validating and packaging it against the ARMEL environments for final device deployment.

Ability to develop in an x86 development environment drastically cuts down development time as most desktop Linux development tools can be used.

Writing graphical applications for maemo is no different from writing for desktop Linux based on GNOME/GTK+2.6 using C. Maemo brings to the developer new open widgets and API’s for the Hildon user interface framework to make appealing applications for handheld devices.

Maemo is built around Debian packaging system and mainstream Debian tools that provide the crucial software package management infrastructure. This also enables easy updating of the development environment when new versions of the software components are made available.

One of the unique features of Scratchbox is that it simplifies the building of source packages based on autoconf/automake tools for non-x86 platforms. The autoconf/automake tools use sophisticated methods, like compiling and running test programs to determine the capabilities of the host. This usually causes an issue for cross compiling packages when no native hardware is available for running and validating these tests during the configuration phase. Scratchbox solves this uniquely through the use of QEMU or CPU_Transparency. This significantly cuts down the development time and porting of existing Linux desktop software to handheld devices.

How to get started with maemo

  • Download a maemo compatible version of Scratchbox from www.scratchbox.org
  • Download the developer rootstraps (these are software bundles installed and configured inside scratchbox, to provide developers with the development environment) from maemo.org
  • Configure the developer rootstraps inside scratchbox
  • Follow the steps outlined in the “Maemo SDK Tutorial” available from maemo.org to start handheld-based application development.

Future of maemo

Some exciting new tools and features are lined up for future releases of maemo. For example, support for using UI builder tool with Hildon widgets, a better development environment update feature, the ability to create custom rootstraps by end developers, IDE/Scratchbox integration, better support for multimedia application development on x86, etc. The developer community is strongly encouraged to contribute and work together to define the direction and roadmap of maemo.

Related Links

http://www.maemo.org

http://www.gtk.org/

http://www.gnome.org

http://www.scratchbox.org

http://dspgateway.sourceforge.net

http://www.libsdl.org/index.php

http://www.freedesktop.org/Software/dbus

http://gstreamer.freedesktop.org/

https://helixcommunity.org/

http://www.bluez.org/

http://projects.o-hand.com/matchbox/