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

(Comparing Maemo and Symbian OS: disambiguate some links)
(wikify slightly)
 
(One intermediate revision not shown)
Line 1: Line 1:
-
= Comparing Maemo and Symbian OS =
+
The picture below (figure [[#figure-maemo_for_symbian_dev_comparing_symbian_os_and_maemo_architectures|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.
-
 
+
-
The picture below (figure [[#fig:maemo-for-symbian-dev-comparing-symbian-os-and-maemo-architectures|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.
+
-
 
+
-
 
+
-
 
+
-
{| summary="Comparing Symbian OS and Maemo architectures"
+
-
|+ align="BOTTOM" |'''Figure 2.1:''' Comparing Symbian OS and Maemo architectures
+
-
|-
+
-
|
+
-
[[Image:MaemoSymbianArchitecture.png|Image MaemoSymbianArchitecture]]
+
-
|}
+
-
 
+
 +
<div id="figure-maemo_for_symbian_dev_comparing_symbian_os_and_maemo_architectures">
 +
[[Image:MaemoSymbianArchitecture.png|frame|center|alt=Diagram of Maemo and Symbian architectural comparison|Figure 2.1: Comparing Symbian OS and Maemo architectures]]
 +
</div>
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.
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.
Line 18: Line 9:
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.
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.
-
{| class="wikitable" border="1" cellpadding="3"
+
{| class="wikitable"
|+ '''Table 2.1:''' Comparison between Maemo and Symbian platforms
|+ '''Table 2.1:''' Comparison between Maemo and Symbian platforms
|-
|-
Line 25: Line 16:
! Description
! Description
|-
|-
-
| colspan="3" | '''''Base Services'''''
+
! colspan="3" | Base Services
|-
|-
-
! '''DBMS'''
+
! DBMS
-
| '''SQLite'''
+
| 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 [http://www.sqlite.org/capi3.html on the SQLite website].
| 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 [http://www.sqlite.org/capi3.html on the SQLite website].
|-
|-
-
! '''File server'''
+
! File server
-
| '''GnomeVFS'''
+
| 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 [http://library.gnome.org/devel/gnome-vfs-2.0/unstable/ in the GnomeVFS API reference].
| 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 [http://library.gnome.org/devel/gnome-vfs-2.0/unstable/ in the GnomeVFS API reference].
|-
|-
-
! '''ECOM framework'''
+
! ECOM framework
-
| '''Core libs'''
+
| 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 (<code>GModule</code>) 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 [http://library.gnome.org/devel/glib/stable/glib-Dynamic-Loading-of-Modules.html in the GLib API documentation].
| There is no direct equivalent component for the ECOM framework on the Maemo platform. The developer may use the dynamic load of modules (<code>GModule</code>) 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 [http://library.gnome.org/devel/glib/stable/glib-Dynamic-Loading-of-Modules.html in the GLib API documentation].
|-
|-
-
! '''Central repository'''
+
! Central repository
-
| '''Libosso, GConf '''
+
| 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 <code>libosso</code>. To store application specific settings, the developer can use GConf component. See [http://projects.gnome.org/gconf/ the GConf website for more].
| There is no Central Repository for system information in Maemo. To recover system information such as device state and mode, the developer may use <code>libosso</code>. To store application specific settings, the developer can use GConf component. See [http://projects.gnome.org/gconf/ the GConf website for more].
|-
|-
-
! '''User library'''
+
! User library
-
| '''GNU C / LibStd C++'''
+
| 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 [http://gcc.gnu.org/onlinedocs/libstdc++/ 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 [http://gcc.gnu.org/onlinedocs/libstdc++/ GNU C / LibStd C++].
|-
|-
-
! '''Cryptographic library'''
+
! Cryptographic library
-
| '''OpenSSL'''
+
| OpenSSL
| This library includes some non-RSA algorithms, hash functions, and so on, that are easily found in [http://www.openssl.org/ OpenSSL] library.
| This library includes some non-RSA algorithms, hash functions, and so on, that are easily found in [http://www.openssl.org/ OpenSSL] library.
|-
|-
-
! '''Store'''
+
! 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.
| 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'''
+
| Video4Linux
| A Linux kernel integrated video capture API. It supports several types of cameras.
| A Linux kernel integrated video capture API. It supports several types of cameras.
|-
|-
|
|
-
| '''dpkg'''
+
| dpkg
| <code>dpkg</code> 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.
| <code>dpkg</code> 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.
|-
|-
-
| colspan="3" | '''''OS Services'''''
+
! colspan="3" | OS Services
|-
|-
-
! '''Certificate management'''
+
! Certificate management
-
| '''OpenSSL'''
+
| 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.
| 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'''
+
! MMF, Camera
-
| '''MAFW, gStreamer'''
+
| [[Documentation/Maemo 5 Developer Guide/Using Multimedia Components/Media Application Framework (MAFW)|MAFW]], gStreamer
-
| The MAFW was added to the Frematle 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.
+
| 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'''
+
! ICL
-
| '''Cairo, GDK'''
+
| Cairo, GDK
| These libraries handle a wide number of image types.
| These libraries handle a wide number of image types.
|-
|-
-
! '''OpenGL ES'''
+
! OpenGL ES
-
| '''OpenGL ES'''
+
| OpenGL ES
| Until Maemo 4.1 (Diablo) Open GL ES was not supported. In Maemo 5 (Fremantle) [[OpenGL-ES|OpenGL ES 2.0]] is supported.
| Until Maemo 4.1 (Diablo) Open GL ES was not supported. In Maemo 5 (Fremantle) [[OpenGL-ES|OpenGL ES 2.0]] is supported.
|-
|-
-
! '''Window Server'''
+
! Window Server
-
| '''X'''
+
| X
| X Window System, that provides windowing on bitmap displays and event handling from inputs. Low level, usually not used directly by the developer.
| 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'''
+
! Font and Bitmap Server
-
| '''Pango'''
+
| 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+.
| 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'''
+
! Device Backup
-
| '''Backup'''
+
| [[Documentation/Maemo 5 Developer Guide/Using Generic Platform Components/Using Backup Application|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.
| 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 '''
+
! Remote file management  
|
|
| There is no API for remote file management.
| There is no API for remote file management.
|-
|-
-
! '''Remote SW'''
+
! Remote SW
|
|
| There is no equivalent component for remote software installation in the Maemo platform.
| There is no equivalent component for remote software installation in the Maemo platform.
|-
|-
-
! '''Telephony server, SMS utilities, WAP stack'''
+
! Telephony server, SMS utilities, WAP stack
|
|
| There is no equivalent component in the Maemo platform.
| There is no equivalent component in the Maemo platform.
|-
|-
-
! '''TCP/IP + security'''
+
! TCP/IP + security
-
| '''Core libs'''
+
| Core libs
| Low-level operating system APIs (file and network handling, standard C libraries). SSL and TLS are supported through OpenSSL.
| Low-level operating system APIs (file and network handling, standard C libraries). SSL and TLS are supported through OpenSSL.
|-
|-
-
! '''Bluetooth'''
+
! Bluetooth
-
| '''BlueZ'''
+
| BlueZ
| Official Bluetooth stack for GNU/Linux. More information can be found [http://www.bluez.org/ on the BlueZ website].
| Official Bluetooth stack for GNU/Linux. More information can be found [http://www.bluez.org/ on the BlueZ website].
|-
|-
-
! '''OBEX'''
+
! OBEX
-
| '''Openobex'''
+
| Openobex
| The Maemo platform makes use of [http://sourceforge.net/projects/openobex Openobex] implementation.
| The Maemo platform makes use of [http://sourceforge.net/projects/openobex Openobex] implementation.
|-
|-
-
! '''CommDB'''
+
! 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.
| 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
| GUPnP is an object-oriented open source framework for creating [http://www.upnp.org/ UPnP] devices and control points, written in C using [http://developer.gnome.org/doc/API/2.0/gobject/index.html GObject] and [http://live.gnome.org/LibSoup libsoup].
| GUPnP is an object-oriented open source framework for creating [http://www.upnp.org/ UPnP] devices and control points, written in C using [http://developer.gnome.org/doc/API/2.0/gobject/index.html GObject] and [http://live.gnome.org/LibSoup libsoup].
|-
|-
|
|
-
| '''D-Bus'''
+
| D-Bus
-
| The D-BUS message bus system is used for applications and libraries to deliver messages to each another.
+
| The D-Bus message bus system is used for applications and libraries to deliver messages to each another.
|-
|-
|
|
-
| '''System SW'''
+
| System SW
| The System Software subsystem provides system-wide services to applications and users. The services include device state management (<code>dsm</code>), mode control (<code>mce</code>), battery management (<code>bme</code>) and a few graphical user interface elements to manage the behaviour of the services.
| The System Software subsystem provides system-wide services to applications and users. The services include device state management (<code>dsm</code>), mode control (<code>mce</code>), battery management (<code>bme</code>) and a few graphical user interface elements to manage the behaviour of the services.
|-
|-
|
|
-
| '''Clipboard'''
+
| 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.
+
| 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
| [http://farsight.freedesktop.org/wiki/FrontPage 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.
| [http://farsight.freedesktop.org/wiki/FrontPage 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'''
+
| FM transmitter
| [[Documentation/Maemo 5 Developer Guide/Using Multimedia Components/FM Transmitter API Usage|Maemo API to access FM transmitter]] radio.
| [[Documentation/Maemo 5 Developer Guide/Using Multimedia Components/FM Transmitter API Usage|Maemo API to access FM transmitter]] radio.
|-
|-
-
| colspan="3" | '''''Application Services'''''
+
! colspan="3" | Application Services
|-
|-
-
! '''PIM'''
+
! PIM
-
| '''EDS'''
+
| EDS
| The [http://www.go-evolution.org/EDS_Architecture Evolution Data Server] provides a single database for common, desktop-wide information, such as a user's address book or calendar events.
| The [http://www.go-evolution.org/EDS_Architecture Evolution Data Server] provides a single database for common, desktop-wide information, such as a user's address book or calendar events.
|-
|-
-
! '''Messaging system'''
+
! Messaging system
-
| '''Telepathy'''
+
| 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.
| 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'''
+
! Data synchronization
-
| '''SyncML'''
+
| SyncML
| Maemo supports SyncML. More information can be found on [http://syncevolution.org/ the SyncEvolution website].
| Maemo supports SyncML. More information can be found on [http://syncevolution.org/ the SyncEvolution website].
|-
|-
-
! '''Internet, web and multimedia protocol support (RTP, SIP, HTTP)'''
+
! Internet, web and multimedia protocol support (RTP, SIP, HTTP)
-
| '''Telepathy, gStreamer, curl HTTP'''
+
| Telepathy, gStreamer, curl HTTP
| For SIP and a great number of different session protocols, Maemo uses [http://telepathy.freedesktop.org/wiki/ Telepathy]. For RTP you can use [http://gstreamer.freedesktop.org/ GStreamer] and for HTTP you can use [http://curl.haxx.se/ curl HTTP] that supports FTP, TELNET, HTTP, HTTPS, and so on.
| For SIP and a great number of different session protocols, Maemo uses [http://telepathy.freedesktop.org/wiki/ Telepathy]. For RTP you can use [http://gstreamer.freedesktop.org/ GStreamer] and for HTTP you can use [http://curl.haxx.se/ curl HTTP] that supports FTP, TELNET, HTTP, HTTPS, and so on.
|-
|-
|
|
-
| '''PulseAudio'''
+
| PulseAudio
| [http://pulseaudio.org/ 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.
| [http://pulseaudio.org/ 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'''
+
| GSF
| The GNOME Structured File Library ([http://library.gnome.org/devel/gsf/unstable/index.html GSF]) is an I/O abstraction for reading/writing compound files.
| The GNOME Structured File Library ([http://library.gnome.org/devel/gsf/unstable/index.html GSF]) is an I/O abstraction for reading/writing compound files.
|-
|-
|
|
-
| '''Installer'''
+
| Installer
| Application installer includes automatic dependency management. Uses a standard Debian package format.
| Application installer includes automatic dependency management. Uses a standard Debian package format.
|-
|-
|
|
-
| '''Alarm Framework'''
+
| [[Documentation/Maemo 5 Developer Guide/Using Generic Platform Components/Alarm Framework|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.
| 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'''
+
| 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.
| 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'''
+
| Vibra service
| A new service added in Fremantle. The access can be made through D-Bus.
| A new service added in Fremantle. The access can be made through D-Bus.
|-
|-
|
|
-
| '''Device orientation'''
+
| Device orientation
| An API that enable developers to respond to changes in orientation and discover current orientation.
| An API that enable developers to respond to changes in orientation and discover current orientation.
|-
|-
-
| colspan="3" | '''''UI Framework'''''
+
! colspan="3" | UI Framework
|-
|-
-
! '''Uikon, Avkon, CONE'''
+
! Uikon, Avkon, CONE
-
| '''GTK+'''
+
| 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.
| 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'''
+
! FEP
-
| '''Input methods'''
+
| 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.
| 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'''
+
! Animation
-
| '''Clutter'''
+
| Clutter
| Clutter provides a very clean high-level API for developing sophisticated animations on top of OpenGL ES.
| Clutter provides a very clean high-level API for developing sophisticated animations on top of OpenGL ES.
|-
|-
|
|
-
| '''Matchbox'''
+
| Matchbox
| [http://matchbox-project.org/ 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.
| [http://matchbox-project.org/ 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'''
+
| Tracker
-
| Provides tracker (mod, s3m, and so on) music support for built-in music player. More information about the project can be found [https://garage.maemo.org/projects/mgstmodplug/ here].
+
| Provides semantic indexing and search capabilities. More information is available on [http://projects.gnome.org/tracker/ the Tracker website].
|-
|-
|
|
-
| '''Hildon Control Panel'''
+
| Hildon Control Panel
| Hildon Control Panel is a general interface for application configuration and is extended by control panel plug-ins.
| Hildon Control Panel is a general interface for application configuration and is extended by control panel plug-ins.
|-
|-
|
|
-
| '''Hildon Home Applets'''
+
| Hildon Home Applets
| Hildon Home is the root desktop, which can be customized by Hildon home applets.
| Hildon Home is the root desktop, which can be customized by Hildon home applets.
|-
|-
|
|
-
| '''Hildon Status bar'''
+
| Hildon Status bar
| Hildon Status bar provides area for information and quick-access items used mainly to communicate device status changes.
| Hildon Status bar provides area for information and quick-access items used mainly to communicate device status changes.
|}
|}
[[Category:Documentation]]
[[Category:Documentation]]

Latest revision as of 10:24, 4 November 2010

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.