Comparing maemo and Windows Mobile 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.

Windows Mobile 6

As the maemo platform is designed for Internet Tablets without mobile phone functionality, the closest equivalent Windows Mobile platform version would be Windows Mobile 6 Classic. It is possible to find correspondence between maemo and Windows Mobile platforms, but they are not directly interchangeable due to significant differences.

In addition, the .NET Compact Framework is a collection of APIs in the same namespace which are very different when compared to the maemo platform component collection. Often similar functionality is provided straight via .NET Compact Framework class libraries and on some specific situations through native interoperability by using COM interop and platform invoke. Therefore, the following table is only a rough guide to simplify the comparison of both platforms on a very high level. Many of the "missing" components are also available as 3rd party solutions.

Platform documentation is available in the Microsoft Developer Network as well as the .NET CF documentation.

Maemo platform component Description Windows Mobile 6 equivalent
Basic OS libraries Low-level operating system APIs (file and network handling, standard C libraries) Various parts of .NET Compact Framework.
X X Window System, provides windowing on bitmap displays and event handling from inputs. Low level, usually not used directly by the developer. Low level, usually not used via .NET CF, although some things are possible via various parts of .NET Compact Framework.
GLib A cross-platform software utility library. No direct equivalent.
D-Bus D-BUS message bus system is used for applications and libraries to deliver messages to each another. See Interoperability and Connectivity and Communications (esp. Interprocess Communication).
HAL Hardware Abstraction Layer. No direct equivalent.
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+. Various parts of .NET Compact Framework, see especially Graphics and Drawing.
Cairo 2D graphics library with SVG image format support. Used internally in GTK+. No direct equivalent.
Pango Library for laying out and rendering text, with an emphasis on internationalization. Forms the core of text and font handling for GTK+. Various parts of .NET Compact Framework, see especially Globalization.
ATK Accessibility toolkit. Changing UI to suit people with disabilities. Used internally in GTK+. No direct 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. Various parts of .NET Compact Framework, see especially Windows Forms and this article.
Hildon widgets GTK+ based UI components with modifications, for better support for the maemo platform. Various parts of .NET Compact Framework, especially see Windows Forms and the article Utilizing Windows Mobile-specific Controls.
Sapwood Theme engine for GTK+. More or less GTK+ internals, not to be confused with UI themeing. No direct equivalent.
Hildon file UI Common UI Widget for accessing files. Various parts of .NET Compact Framework.
GStreamer Multimedia framework. No direct equivalent, but similar functionality is possible via various parts of .NET Compact Framework. See especially Windows Media Player Mobile Control.
Matchbox Window manager for X Window System. No direct equivalent.
GConf A system for storing application preferences. Intended for user preferences, not for storing large amounts of data or complex configuration of software components. No direct equivalent, but see Registry and Registry class for similar possibilities.
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). No direct equivalent, but similar functionality is possible via various parts of .NET Compact Framework.
BlueZ Official Bluetooth stack for GNU/Linux. No direct equivalent, but native implementations can be used via interoperability. See Bluetooth.
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. Pocket Outlook Object Model. For a .NET CF example, see Incorporating Pocket Outlook Data into Your Microsoft .NET Compact Framework-based Applications and Microsoft.WindowsMobile.PocketOutlook namespace.
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. No direct equivalent, but some of the functionality is available via Voice over IP Phone Services.
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 who you can chat with, find printers to print to, or files being shared. Universal Plug and Play
Desktop The desktop is visible when no other application is running in the foreground. Developers can write applets to be shown on the desktop (for instance, an RSS reader can display the latest news using a Desktop Widget). Today Screen
Control Panel A centralized place for applications to expose settings for the user. Uses applets like the Desktop mentioned above. No direct equivalent.
Alarm Provides a way to manage timed events. No direct equivalent, but some similar functionality is possible via the Pocket Outlook Object Model. For a .NET CF example, see Incorporating Pocket Outlook Data into Your Microsoft .NET Compact Framework-based Applications.
Installer Application installer, includes automatic dependency management. Uses standard debian package format. For similar possibilities, see Delivering Applications.
libhildon Base of the Hildon Application Framework. Contains the Hildon widgets and more. Various parts of .NET Compact Framework, see especially Windows Forms.
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, but similar functionality is possible via various parts of .NET Compact Framework.
Help Centralized Help Framework. Provides a uniform way for applications to present help to the user. Building and Testing Windows Mobile-based Pocket PC Help.
Search Non-public, expandable API for searching different items (local or network). No direct equivalent.
Backup The backup application saves and restores user data. ActiveSync
Text Input Text input from virtual keyboard visible in touchscreen. Software-based Input Panel. For a .NET CF example, see InputPanel Class.