You are on page 1of 24

Maemo

SR.NO
1 2 3 4 5 6 7

TOPICS
INTRODUCTION FEATURES TECHNICAL OVERVIEW MAEMO DEVELOPMENT ENVIRONMENT SCREENSHOTS ROLE OF NOKIA IN MAEMO PLATFORM DEVELOPMENT FUTURE MAEMO REFERENCES

Maemo

Introduction:
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 N770 product. 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 an easy to use development, build and test environment on Linux workstations. 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 project that aims to provide Free Software GUI environment for palmtop/handheld computers running the GNU/Linux operating system. The GPE Palmtop Environment aims to provide a Free Software GUI environment for

Maemo

palmtop/handheld computers running the GNU/Linux operating system. GPE uses the X Window System, and the GTK+ widget toolkit.

The GPE Palmtop Environment provides a user interface environment for palmtop/handheld computers running the GNU/Linux operating system. GPE is an entire environment of components which make it possible to use your GNU/Linux handheld for standard tasks such as Personal Information Management (PIM), multimedia playing, games, etc. In addition GPE provides an infrastructure for easy application development and good compatibility to existing desktop solutions. GPE uses the X Window System, and the GTK+ widget toolkit. Besides providing core software such as shared libraries, and perhaps more importantly, the GPE environment defines standards for program design and interaction. It is based on the C programming language and other common standards such as SQL, XML, and DBUS. GPE is not a single piece of software, but an entire environment of components which make it possible to use your GNU/Linux handheld for standard tasks such as Personal Information Management (PIM). GPE makes it easy for developers to create powerful programs, by giving them the infrastructure they need. Besides providing core software such as shared libraries, and perhaps more importantly, the GPE environment fixes standards for program interaction, such as SQL, XML, and other data schemas. 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

Maemo Enables application development using Hildon User Interface and 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

4 Application

Maemo technical overview


Some of the key decisions made during the development of the Nokia 770 product 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 Nokias long-term experience with end user interface interaction and mobile user interface design.

Maemo

The development platform could be logically separated into the core middleware and end user interface framework referred to as the hildon application framework

The core non-UI middleware is composed almost entirely of the mainstream open source components like glibc (Glibc , also known as libc6, is the GNU project's C standard library, licensed under the LGPL), 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.

Maemo GTK+

GTK+ is a multi-platform toolkit for creating graphical user interfaces. Hildon UI is basically modified GTK+ with additional widgets and suitable theming modifications. GTK+ toolkit in maemo is based on GTK+ 2.6. Modified Hildon GTK+ is more suitable for embedded device, but it's still binary-compatible with normal GTK+. So no changes are needed to make current GTK+ applications run in maemo, although they don't appear as native maemo applications without small changes listed in this document. Matchbox Matchbox is a base environment for the X Window System running on embedded platforms. It is a lightweight window manager for X11 supporting PDA style windowing. Matchbox in maemo is modified to fit the platform GUI style. Xserver server is the part of platform which handles drawing graphics on the screen. Xserver in maemo is optimized for embedded usage and the specific hardware platform. D-BUS D-BUS message bus system, which is used for applications and libraries to talk to one another. DBUS supplies both a system daemon and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two applications to communicate directly. Maemo platform uses D-BUS for these things: System notifications (e.g. Battery low). Every application can receive these events and proceed accordingly. For separating applications UI and engine, for example this way email engine can be used from different applications.

Maemo

For launching the applications from task navigator. D-BUS is used to be able launch each application only once, and application can receive different messages from task navigator to e.g. save its state. GnomeVFS GnomeVFS (GNOME Virtual File System) is a library which makes accessing various kinds of file systems transparent to the user and developer. With GnomeVFS, various protocols like HTTP, FTP and local files are all used in the exact same way. The API for accessing files follows closely the POSIX standard with some minor changes. In maemo, GnomeVFS is used to access files in user space, which abstracts file tree structure. Access to external memory is also done over GnomeVFS. GConf GConf is a system for storing application preferences, widely used in Gnome desktop. GConf provides a preferences database, which is like a simple file system. The file system contains organized hierarchy of keys and values. All application settings in maemo are stored to Gconf, which makes handling them easy. 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. Introduction to GTK+: GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. GTK+ is free software and part of the GNU Project. However, the licensing terms for GTK+, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties.

Maemo GTK+ is based on three libraries developed by the GTK+ team:

GLib is the low-level core library that forms the basis of GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.

Pango

is a library for layout and rendering of text, with an emphasis on

internationalization. It forms the core of text and font handling for GTK+-2.0.

The ATK library provides a set of interfaces for accessibility. By supporting the ATK interfaces, an application or toolkit can be used with such tools as screen readers, magnifiers, and alternative input devices.

GTK+ has been designed from the ground up to support a range of languages, not only C/C++. Using GTK+ from languages such as Perl and Python (especially in combination with the Glade GUI builder) provides an effective method of rapid application development.

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.

Maemo

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. 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

Maemo

10

Main differences between GNOME and Hildon application framework

Hildon application framework is based on components from GNOME open source platform. From developer point of view this means certain differences and additions compared to mainstream GNOME development:

Maemo does not contain all GNOME libraries. Only such components that match the requirements of a handheld device are included. For example, Bonobo was considered too heavy although it is an essential element of GNOME.

Several new widgets to help building applications faster and making them behave similarly. Most important new widgets which each maemo applications should use are HildonApp and HildonAppView.

Menu's and toolbars use GTK+ methods with small additions to make them attach better to the platform. Many GTK+ widgets have been slightly modified so that they can be themed for maemo GUI style. GTK+ resource files (RC) are very powerful but still don't include enough properties to fit whole maemo UI and layout style. Even with these changes Hildon UI is binary compatible with GTK+ 2.6.

Better support for touch screen usage with tap-and-hold functionality implemented in GtkWidget. This way it can be used with any widget, usually to open context-sensitive menus.

Overview of maemo GUI applications


Hildon is a graphical user interface designed for use on small mobile devices. This chapter aims to assist developers in getting started with the development of Hildon-compatible applications, both developments from scratch for those coming from a GTK+ background. Most GTK+ widgets and methods work unaltered in Hildon environment, but to make applications fit in maemo GUI platform some source code changes to plain GTK+ applications are required.

Maemo

11

Basic Hildon layouts


This chapter shows basic layout modes of Hildon User interface. Applications can use all these and change dynamically between different views. In all views Application area can be of course shared with any possible ways using GTK+ containers (e.g. GtkHBox, GtkVBox and GtkTable). Normal view Figuresbelow describe the basic layout of Hildon user interface in normal view. This view consists of Task Navigator area, statusbar/titlebar area, application area and three areas of inactive skin graphics. Task Navigator area at the left is 80 pixels wide Statusbar/titlebar area is 720x60 pixels Application area of 672x396 pixels in the middle

Normal view with toolbar

Maemo

12

This basic layout contains all types of functional areas. The layout is basically the same as Normal View, but there is a toolbar area at the bottom replacing the inactive skin graphic area. Toolbar area weight is 720 pixels and height varies depending on the toolbar area height: 360 pixels with a single toolbar 310 pixels with both the application and the Find toolbar

Full screen view In this view the whole screen (800x480 px) is used by the application area. Full screen mode can be activated and deactivated by a hardware button or from from application code, however required.

Maemo

13

Full screen view with toolbar This is a variation of the full screen view. There is a toolbar area at the bottom of the screen reducing the available space for the application area. Because toolbar can be visible in both normal and full screen modes, it should be made scalable. With a single toolbar the application area height is 420 pixels. Multiple toolbars can be used (e.g. Find toolbar) simultaneously. They appear then all at the bottom of screen, on top of each other reducing application area. With two toolbars application area height is 370 pixels.

Maemo

14

Connectivity subsystem
Connectivity subsystem is based on standard Linux connectivity architecture. With Nokia 770 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 modified to support DSP based multimedia solution to leverage OMAP architecture on the Nokia 770 product. Linux DSP gateway project (http://dspgateway.sourceforge.net), which is now merged to mainstream linux-omap port project is used to achieve this. GStreamer is a library that allows the construction of graphs of mediahandling components, ranging from simple Ogg/Vorbis playback to complex audio (mixing) and video (non-linear editing) processing. Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface. GStreamer is released under the LGPL.

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

15

Maemo development environment


The development environment is based around Scratchbox cross compile toolkit (http://www.scratchbox.org) that provides a sandboxed development Environment. Maemo.org provides a Scratchbox compatible rootstrap, which is a software package 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 ARM. This enables almost all development and debugging on the x86 PC host environment, and before finally validating and packaging it against the ARM environments for final device deployment.

Ability to develop in an x86 development environment drastically cuts down Development time as all the widely used Linux desktop development tools could be utilized. 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 APIs for the Hildon user interface framework to make appealing applications for handheld devices. Maemo is built around debian packages and mainstream debian tools that provide the crucial package (software components) 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 simplify 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

Maemo

16

CPU_Transparency. This significantly cuts down the development time and porting of existing Linux desktop software to handheld devices.

Supported hardware and device UI form factors


Currently maemo is developed for Internet Tablet devices, in particular for the Nokia 770 Internet Tablet. In the future maemo will be developed towards being more independent from particular device hardware and form-factors. The minimum constraints for supported hardware and form-factors are following:

Screen resolution of 800x480 pixels Includes a pointer device (e.g. touch screen) ARM or x86 CPU Minimum 32Mbytes ROM, and 64MBytes RAM

Maemo Screenshots
Screenshot showing Hildon menus

Maemo Hildon virtual keyboard

17

Basic maemo desktop, showing the task navigator on the left and status bar on the top

Maemo

18

Screenshot showing task based user interface. You can access most common applications features right from the task navigator, rather than invoking explicitly the application like creating a new email or list of new emails

Drop down menu from the home to customize the desktop

Maemo Email application screenshot

19

File manager

Maemo Video player

20

Role of Nokia in maemo development platform

The Maemo development platform is contributed and operated by Nokia. The Nokia 770 Internet Tablet is the first product from Nokia that is compatible with maemo. Nokia aims to use maemo as a development platform in subsequent products in this category as well. As maemo is fully open source, it means a whole new degree of openness for developers using Nokia products. With maemo Nokia aims to encourage others to adopt, use and contribute technologies for handheld products and applications. This will result in a feature rich, mature and well-supported software base that could evolve as a de-facto standard for Linux handhelds via the open source process. During the creation of the Nokia 770 Internet Tablet, Nokia has been already working with many open source projects and initiatives, contributing and adopting upcoming open standards. Nokia and Open Source

Maemo Nokia acknowledges the value in creating open source software, and Nokia currently hosts, contributes to and sponsors several of open source software projects and initiatives. A number of Nokia developers are directly involved in open source projects creating, refining, testing, using, and supporting open source software. Listed below are a few examples of projects that Nokia has been involved in either by directily contributing code or by sponsoring the work of open source developers. Linux Kernel: Nokia has contributed to the Linux operating system kernel enhancements related to general OMAP support, OMAP/DSP gateway, Bluetooth, journaling flash file systems, power management, 2D graphics support of fbdev-subsystem on OMAP (omapfb), and USB (Unversal Serial Bus). Connectivity Affix is a Bluetooth Protocol Stack for Linux developed by Nokia Research Center and released under GPL. Nokia has contributed extensions to the BlueZ and OpenObex libraries. The overall

21

goal of BlueZ is to make an implementation of the Bluetooth wireless standards specifications for Linux. OpenObex is working on making an open source implementation of the Object Exchange (OBEX) protocol Application Middleware GnomeVFS is a file system abstraction library allowing applications plugable transparent access to a variety of "real" file systems. Nokia has contributed the GnomeVFS OBEX module, which allows using the GnomeVFS API for file operations on remote devices connected over Bluetooth and OBEX. Nokia has sponsored the development of GnomeVFS using D-BUS. D-BUS is a message bus system that enables applications to talk to one another (used in place of Bonobo or Corba). It receives messages from applications and routes them to appropriate receiver applications. It is also able to launch an application if it is not already running.

Maemo Graphical User Interface

22

Nokia has sponsored the development of several feature enhancements to the Matchbox window manager and user environment including Pango support (for localizing to non-western languages), X composite extension support (support for translucent windows and window shadows), a test suite, and performance and memory optimizations (for example, specific support for 16-bit graphics). Applications Nokia has sponsored the Minimo (Mini Mozilla) project, which focuses on porting the Mozilla browser to small consumer devices and optimizing code-size and footprint for such devices.

GStreamer is a streaming-media framework that provides a comprehensive component library for multimedia applications such as media players, video editors and streaming media broadcasters. Development Tools Nokia has sponsored the development of the Scratchbox cross-compilation toolkit for embedded Linux application development. With Scratchbox, resource intensive development tasks such as configuration and cross-compiling, are automated and done on a desktop machine instead of on the target device, making the development process much faster

Things not yet part of maemo SDK


These things are still missing from maemo SDK and this tutorial: Wireless connectivity functionality (WLAN, Bluetooth). Emulating portable media card (MMC) access. Multimedia framework support. Hildon plugin interfaces for control panel applets, status bar applets and home screen plugins.

Maemo

23

Also, no detailed documentation is provided about the mainstream open source software used in maemo platform (D-BUS, GnomeVFS, GTK+). Information about these are best to be learned from their own dedicated websites.

How to get started with maemo


Download a maemo compatible version of Scratchbox from www.scratchbox.org Download the developer rootstrap (this is a software bundle installed and configured Inside scratch box, to provide developers with the development environment) from maemo.org Configure the developer rootstrap inside scratch box 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.

Maemo

24

References
Maemo: http://www.maemo.org/ Scratch box : http://www.scratchbox.org/ DSP Gateway: http://dspgateway.sourceforge.net/ GTK: http://www.gtk.org/ GNOME: http://www.gnome.org/ SDL: http://www.libsdl.org/index.php D-BUS: http://www.freedesktop.org/Software/dbus Gstreamer: http://gstreamer.freedesktop.org/ Helix: https://helixcommunity.org/ Bluez Bluetooth Stack: http://www.bluez.org/ Matchbox Windows Manager: http://projects.o-hand.com/matchbox/ Wikipedia: http://en.wikipedia.org

You might also like