Documentation/Maemo For Symbian Developers Guide/Comparing Maemo and Symbian OS

The picture below (figure 2.1) presents a direct comparison between the software components of both operating systems, although the the structure of the Maemo platform and the underlying GNU/Linux operating system differ significantly from Symbian OS. The picture shows the layered architecture of Symbian OS and tries to distribute the Maemo software components in layers according to their correspondent functionalities on the Symbian OS.

File:MaemoSymbianArchitecture.png
Figure 2.1: Comparing Symbian OS and Maemo architectures

In some cases 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.

The table below (table 2.1) compares the main software components of the Symbian platform with those of the Maemo platform. This table can be used as a quick reference to find the proper software component that should be used in the Maemo platform given the desired component of the Symbian platform. Also, the table shows some components that are specific to Maemo platform, explaining their use.

Table 2.1: Comparison between Maemo and Symbian platforms
Symbian Component Maemo Component Description
Base Services
DBMS SQLite The Maemo platform provides an SQL database, SQLite 3, which can be used to store user application data. The SQLite database is accessed through a library interface whose documentation can be found on the SQLite website.
File server GnomeVFS The system uses the GnomeVFS, which is an extendable file system abstraction library that applies transparent access to different file systems types. More information can be found in the GnomeVFS API reference.
ECOM framework Core libs There is no direct equivalent component for the ECOM framework on the Maemo platform. The developer may use the dynamic load of modules (GModule) provided by GLib library. It is implemented in C and there is no support for automatic module load. Code must be written by the developer in order to do this. GModule API reference can be found in the GLib API documentation.
Central repository Libosso, GConf There is no Central Repository for system information in Maemo. To recover system information such as device state and mode, the developer may use libosso. To store application specific settings, the developer can use GConf component. See the GConf website for more.
User library GNU C / LibStd C++ The user library defines the core idioms for Symbian OS programming. In Maemo development, this is based on standard C/C++ so the matching for the core idioms could be GNU C / LibStd C++.
Cryptographic library OpenSSL This library includes some non-RSA algorithms, hash functions, and so on, that are easily found in OpenSSL library.
Store Provides an abstraction for internalizing and externalizing objects to different storage media. There is no equivalent component in Maemo. GLib binding for D-Bus has some primitive functions to do object marshal. However there are plenty of open source projects that provide serialization tools for C++. The developer may use the preferred one.
Video4Linux A Linux kernel integrated video capture API. It supports several types of cameras.
dpkg dpkg is the software at the base of the Debian package management system that is used in Maemo. dpkg is used to install, remove and provide information about .deb packages files that are the software installation unit for Maemo in comparison to the .sisx files of Symbian OS.
OS Services
Certificate management OpenSSL Certificate management is done by OpenSSL in the Maemo platform. This system library offers similar mechanisms to store and manage certificates, keys, and so on.
MMF, Camera MAFW, gStreamer The MAFW was added to the Fremantle Maemo version and provides a highly modular infrastructure for consuming and extending Maemo's multimedia functionality. MAFW is an abstraction layer that is largely decoupled from its underlying components. It will be possible to snap in a number of media backends, such as GStreamer and MPlayer. The gStreamer, that was used to handle multimedia in previous versions, has a similar design choice as MMF. It has a minimum core, and functionalities are added through plug-ins. It also makes use of pipeline through sinks and sources for each element to build the wanted operation.
ICL Cairo, GDK These libraries handle a wide number of image types.
OpenGL ES OpenGL ES Until Maemo 4.1 (Diablo) Open GL ES was not supported. In Maemo 5 (Fremantle) OpenGL ES 2.0 is supported.
Window Server X X Window System, that provides windowing on bitmap displays and event handling from inputs. Low level, usually not used directly by the developer.
Font and Bitmap Server 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+.
Device Backup Backup Maemo has an application that can backup user data and application configuration on a memory card. At time of writing there is no support for remote device backup on Maemo.
Remote file management There is no API for remote file management.
Remote SW There is no equivalent component for remote software installation in the Maemo platform.
Telephony server, SMS utilities, WAP stack There is no equivalent component in the Maemo platform.
TCP/IP + security Core libs Low-level operating system APIs (file and network handling, standard C libraries). SSL and TLS are supported through OpenSSL.
Bluetooth BlueZ Official Bluetooth stack for GNU/Linux. More information can be found on the BlueZ website.
OBEX Openobex The Maemo platform makes use of Openobex implementation.
CommDB There is no specific shared data base for communication settings in Maemo. Even CommDB use in Symbian OS is being replaced by Central Repository. You can use GConf to store data or even SQLite.
GUPnP GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup.
D-Bus The D-Bus message bus system is used for applications and libraries to deliver messages to each another.
System SW The System Software subsystem provides system-wide services to applications and users. The services include device state management (dsm), mode control (mce), battery management (bme) and a few graphical user interface elements to manage the behaviour of the services.
Clipboard In Maemo, there are a number of clipboard enhancements to the X clipboard and GTK+, in order to enable: supporting retaining the clipboard data, when applications owning the clipboard exit; copying and pasting rich text data between GTK+ text views in different applications; providing a generally more pleasant user experience; making it easy for application developers to gray out Paste menu items when the clipboard data format is not supported by the application.
Farsight2 Farsight2 is an Audio/Video Communications Framework. The main target clients for Farsight are Instant Messaging applications. It uses gStreamer for all its media streaming needs.
FM transmitter Maemo API to access FM transmitter radio.
Application Services
PIM EDS The Evolution Data Server provides a single database for common, desktop-wide information, such as a user's address book or calendar events.
Messaging system 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.
Data synchronization SyncML Maemo supports SyncML. More information can be found on the SyncEvolution website.
Internet, web and multimedia protocol support (RTP, SIP, HTTP) Telepathy, gStreamer, curl HTTP For SIP and a great number of different session protocols, Maemo uses Telepathy. For RTP you can use GStreamer and for HTTP you can use curl HTTP that supports FTP, TELNET, HTTP, HTTPS, and so on.
PulseAudio PulseAudio is a sound server for POSIX and Win32 systems. A sound server is basically a proxy for your sound applications. It allows you to do advanced operations on your sound data as it passes between your application and your hardware. Things like transferring the audio to a different machine, changing the sample format or channel count and mixing several sounds into one are easily achieved using a sound server. Maemo 5 uses PulseAudio.
GSF The GNOME Structured File Library (GSF) is an I/O abstraction for reading/writing compound files.
Installer Application installer includes automatic dependency management. Uses a standard Debian package format.
Alarm Framework The Maemo alarm framework provides an easy way to manage timed events in the device. It is powerful, and not restricted only to wake-up alarms. The framework provides also many other features.
Launcher Maemo Launcher launches most applications on the Maemo platform. It is there to speed up the application start-up by sharing some of the initialization data of an application start-up. Maemo Launcher is composed of two parts: (I) the Maemo-invoker, which is executed by D-Bus daemon or scripts to start the given (application) service, and (II) Maemo-launcher, a server that has initialized most of the data used by the applications.
Vibra service A new service added in Fremantle. The access can be made through D-Bus.
Device orientation An API that enable developers to respond to changes in orientation and discover current orientation.
UI Framework
Uikon, Avkon, CONE GTK+ A 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.
FEP Input methods The Maemo platform is intended to be used on embedded devices. It is a quite straightforward request that one might want to have different input methods from the ones available by default, or just simply want a different layout for the virtual keyboard. For this reason, Maemo 4.1 introduced a way to enable writing custom plug-ins for Hildon Input Method.
Animation Clutter Clutter provides a very clean high-level API for developing sophisticated animations on top of OpenGL ES.
Matchbox Matchbox is an Open Source base environment for the X Window System running on non-desktop embedded platforms. Matchbox consists of a number of interchangeable and optional applications that can be tailored to a specific non desktop platform to enhance usability in a constrained environment.
Tracker Provides semantic indexing and search capabilities. More information is available on the Tracker website.
Hildon Control Panel Hildon Control Panel is a general interface for application configuration and is extended by control panel plug-ins.
Hildon Home Applets Hildon Home is the root desktop, which can be customized by Hildon home applets.
Hildon Status bar Hildon Status bar provides area for information and quick-access items used mainly to communicate device status changes.