Comparing maemo and Symbian OS, S60, and UIQ platforms at the architectural level

Maemo platform overview

Maemo built on top the Gnome Mobile
Image:The maemo platform built on top of Gnome Mobile.

Symbian developers are probably familiar with how the Symbian OS is divided into different subsystems and components. Unfortunately the structure of the maemo platform and the underlying GNU/Linux operating system differs significantly from Symbian OS, S60, and UIQ.

In some cases these Symbian OS subsystems and APIs can be directly mapped to maemo platform components, but usually the relations are not 1:1. Therefore, this chapter provides just a generalized comparison of the platforms.

Maemo component Description Symbian OS equivalent
Basic OS libraries Low-level operating system APIs (file and network handling, standard C libraries). Parts of User Library E32, Networking subsystem, System libraries.
X X Window System, provides windowing on bitmap displays and event handling from inputs. Low level, usually not used directly by the developer. WSERV and GDI in the Graphics subsystem.
GLib A cross-platform software utility library. User Library E32.
D-Bus The D-BUS message bus system is used for applications and libraries to deliver messages to each another. No direct equivalent component, but the Publish and Subscribe API in User Library E32 comes close.
HAL Hardware Abstraction Layer. HAL in Base subsystem.
GDK Computer graphics library. A wrapper around the low-level drawing and windowing functions provided by the underlying graphics system (X Window System). Handles basic rendering. Used internally in GTK+. GDI and FBSERV in the Graphics subsystem.
Cairo 2D graphics library with SVG image format support. Used internally in GTK+. No equivalent in Symbian OS.
Pango Library for laying out and rendering of text, with an emphasis on internationalization. It forms the core of text and font handling for GTK+. FBSERV and FNTSTORE in Graphics subsystem.
ATK Accessibility toolkit. Changing UI to suit people with disabilities. Used internally in GTK+. No equivalent.
GTK+ Widget toolkit for the X Window System, for creating GUIs. The used GTK+ has been modified for the maemo platform, but it is binary compatible with the original.
Symbian FBSERV in Graphics subsystem. UIKON, CONE in Application framework subsystem.
S60 Avkon UI components, Avkon UI utilities.
UIQ Qikon components.
Hildon widgets GTK+ based UI components with modifications for better support for the maemo platform.
S60 Avkon UI components, Avkon UI utilities.
UIQ Qikon components.
Sapwood Theme engine for GTK+. More or less GTK+ internals. Not to be confused with UI themeing. No equivalent.
Hildon file UI Common UI Widget for accessing files.
S60 Common File Dialogs API in UI Utilities.
UIQ Related Qikon dialog classes (CQikSelectFileDlg, CQikSelectFolderDlg).
GStreamer Multimedia framework Multimedia Framework from Multimedia subsystem.
Matchbox Window manager for X Window System. No equivalent.
GConf A system for storing application preferences. Intended for user preferences, not for storing large amounts of data or complex configurations of software components. Central repository in system libraries.
GnomeVFS Abstraction layer for reading, writing, and execution of files. Allows applications to transparently access various types of file systems through a uniform interface (e.g. WebDAV, ftp, local filesystem). File server F32.
BlueZ Official Bluetooth stack for GNU/Linux. Bluetooth subsystem.
E-D-S The Evolution Data Server provides a single database for common, desktop-wide information, such as a user's address book or calendar events. Calendar and Contacts in Application engines.
Telepathy The Telepathy project aims to provide a unified framework for all forms of real time conversations, including instant messaging, IRC, voice calls, and video calls.
Symbian Messaging subsystem, excluding SMS and e-mail.
S60 Instant messaging in Messaging Application Support subsystem.
Avahi A system which facilitates service discovery on a local network. This means that you can connect your laptop or computer to a network and instantly be able to view other people you can chat with, find printers to print to, or shared files. No equivalent.
Desktop The desktop is visible when no other application is running in the foreground. You can write applets to be shown on the desktop (for instance, an RSS reader can display the latest news using a Desktop Widget).
S60 Active Idle, aka Active Standby, not a public API.
Control Panel A centralized place for applications to expose settings for the user. Uses applets like the Desktop mentioned above. No equivalent.
Alarm Provides a way to manage timed events. Alarm server in Application services.
Installer Application installer, includes automatic dependency management. Uses a standard debian package format. Software installation engine and SIS files.
libhildon Base of the Hildon Application Framework. Contains the Hildon widgets and more.
S60 Avkon
UIQ Qikon
libosso Library for user applications. Includes wrapping frequently-used D-Bus services, registering new MIME type(s), logging functions, and other miscellaneous utilities. No direct equivalent, same functionality spread all over several subsystems.
Help Centralized Help Framework. Provides a uniform way for applications to present help to the user. HLPMODEL in Application Services.
Search Non-public, expandable API for searching different items (local or network). No equivalent.
Backup The backup application saves and restores user data. Backup and restore in Connectivity subsystem.
Text Input Text input from virtual keyboard visible in touchscreen.
UIQ TextInput server, text input modules.