MeeGo 1.2 Harmattan Developer Documentation Develop for the Nokia N9

Changes since Fremantle

What is new in MeeGo 1.2 Harmattan compared to Maemo 5/Fremantle

This section includes both completely new implementations and updates to existing functionalities. The information is mainly useful if you are porting Maemo applications to the Harmattan platform. For guidelines on porting applications, see Porting applications to Harmattan.

Major updates since Fremantle

The main differences between Fremantle and Harmattan are:

  • Qt is upgraded to version 4.7.4.
  • Qt is the primary application framework.
    • Qt Quick is the recommended UI framework for application development.
  • GTK+ user interface toolkit is no longer used.
  • gcc is upgraded to version 4.4.
  • glibc is upgraded to version 2.10.
  • Kernel is upgraded to version 2.6.32.
  • The Qt SDK is the primary development environment.

Additions to the platform content

This section lists functionalities on the Harmattan platform that are not available in Maemo 5. For the complete list of changes between Maemo 5 and the current Harmattan release, see Differences between Fremantle and Harmattan releases.

Account Management

Account Management provides a storage solution for user accounts. Account management can be done using the APIs provided by libaccounts-glib for glib-based applications or using Accounts-Qt for Qt-based applications.

Project home page

libaccounts-glib

Accounts-Qt

Links to Harmattan API reference documentation

Platform API reference: See the libaccounts-glib library.

Accounts-Qt

Calendar Engine

Instead of the calendar-backend component used in Fremantle, Harmattan uses libkcalcore as the backend of the Calendar and Notes applications, and libmkcal which extends kcalcore with persistence storage (SQLite) and tracker integration.

Links to Harmattan API reference documentation

Platform API reference: See the libmkcal library.

Content Framework

Content Framework provides data and metadata storage and retrieval for the platform. It contains the following software components:

  • Tracker: A daemon to store and query metadata (for more information, see the upstream documentation). The project name is the same as in Fremantle, but the architecture is completely different.
  • Tumbler: A daemon extensible through plug-ins to create thumbnails with a D-Bus interface (an upstream project). Replaces the Hildon Thumbnailer daemon (hildon-thumbnailer) of Fremantle.
  • libthumbnailer: A C++ library wrapping the Tumbler API. Replaces the Hildon thumbnail library (libhildon-thumbnail) used in Fremantle.
  • MContentWidgets: A set of widgets to choose from and to tag content using the other Content Framework components.
  • GObject-based library to access the store libtracker-sparql abstracting the IPC communication.
  • QtSparql: A Qt-style API that wraps libtracker-sparql with a Qt-style API.
  • libcontentaction: A library to discover available actions for the content types stored in Content Framework.

Note: Harmattan ships Tracker 0.10 with a simpler API, more powerful query language, and a completely new architecture compared to the previous 0.6 version included in Fremantle. For more information, see the upstream documentation.

Project home pages

Tracker

Tracker in upstream (GNOME)

Tracker for Maemo (Upstream + Debian packaging for Maemo)

libqttracker repository

Links to Harmattan API reference documentation

QtSparql

Platform API reference: See the libcontentaction and libthumbnailer libraries.

Context Framework

Context Framework collects contextual information from the system, cleans it up and offers the information through a simple API.

Note: Qt Mobility also provides the QtPublishSubscribe API for similar purposes.

Project home page

contextkit

Links to Harmattan API reference documentation

QtPublishSubscribe

Platform API reference: See the contextkit, libcontextprovider, and libcontextsubscriber libraries.

Feedback Framework

Feedback Framework enables applications to give non-graphical feedback on user actions, abstracting the available feedback hardware and the underlying software infrastructure used to drive that hardware.

Note: Qt Mobility also provides the QtFeedback API for similar purposes.

Project home page

MeeGo Touch Feedback

Links to Harmattan API reference documentation

QtFeedback

Platform API reference: See the meegofeedbackd library.

Graphics

Changes in the graphics architecture and pipeline include the following:

  • Pageflip implementation in OpenGL and X11 drivers, exchanges the back and front buffers instead of copying the content, triplebuffering.
  • Synchronization of rendering to display refresh rate (vertical refresh synchronization, ‘tear elimination’).
  • Multipoint-touch driver, XInput2 support.
  • Display driver sends framebuffer data to the display framebuffer. Each LCD panel update is triggered ‘manually’ from user space.
  • Several additional EGL and GLES2.0 extensions, more capabilities.

Links to Harmattan API reference documentation

EGL 1.4

OpenGL ES 2.0

Qt Games API

Input Method Framework

Input Method Framework provides the framework for entering text into the text fields of applications. It uses MInputContext (an implementation of QInputContext defined by Qt) to interact with the applications through the MeeGo Touch Framework. This input context enables input services for both native MeeGo Touch and Qt applications. The input context is created automatically by the application process and acts a messenger between the server and the applications.

Links to Harmattan API reference documentation

Platform API reference: See the libmeegoimframework library.

Location Framework

Location framework provides:

  • Access to location information.
The API for positioning is part of Qt Mobility API.
  • APIs for landmark handling, geocoding, and reverse geocoding.
  • A widget for picking a location from a map or by using text search.

Links to Harmattan API reference documentation

Location

Platform API reference: See all libraries under Location.

Multimedia Application Framework

Multimedia Application Framework (MAFW) has become an internal part of media playback functionality.

Platform API reference: See the qmafw library.

Qt Development Framework

Harmattan is based on Qt, which is a cross-platform application and UI development framework. Qt replaces the GTK+ user interface toolkit used in Fremantle.

Links to Harmattan API reference documentation

Qt 4.7

Qt Messaging Framework

Qt Messaging Framework (QMF) is a library that provides a set of APIs that support the most common operations related to arbitrary messages, such as creation, modification, retrieval, storage and display of messages. The mail client for Harmattan platform called Fenix is heavily based on this framework, as opposed to Modest in Fremantle.

Note: Qt Mobility also provides the QtMessaging API for similar purposes.

Project home page

messaging-framework

Links to Harmattan API reference documentation

QtMessaging

Platform API reference: See the libqmf library.

Qt Mobility

Qt Mobility APIs allow you to build and maintain a single application which can be deployed across several mobile (and desktop) platforms. Qt Mobility APIs provide standard mobile functionalities for your application.

Project home page

Qt Mobility

Links to Harmattan API reference documentation

Qt Mobility

Real-Time Communications (RTCom)

Most changes are due to the fact that in Harmattan, Call UI, Call History and Dialer, Messaging UI and Presence are Qt-based, which assumes Qt data models for messaging and call history. They are provided by libcommhistory, together with the storage interface (using tracker through libqsparql). Instead of Eventlogger used in Fremantle, the messages and call events log has changed to the Communications History deamon, which works as a Telepathy observer for messaging and call channels.

The Telepathy-Qt4 library provides Qt bindings to Telepathy interface specifications for developing clients and connection managers.

Note: Qt Mobility also provides the QtMessaging API for similar purposes.

Links to Harmattan API reference documentation

QtMessaging

Telepathy-Qt4

Platform API reference: See all libraries under RTCom.

Security Framework

Security Framework protects Harmattan device users against various threats, such as:

  • The user's personal and private data and passwords being stolen and used for malicious purposes.
  • Malware misusing the device and incurring extra costs for the user.
  • The user accidentally breaking the device software.
  • The platform not being a safe execution environment for third-party software.

Links to Harmattan API reference documentation

Platform API reference: See all libraries under Security.

Single Sign-On

The Single Sign-On subsystem is responsible for providing secure storage of credentials, and it provides a framework for authentication plug-ins for services to use.

Links to Harmattan API reference documentation

SignOn

Synchronization Framework

Synchronization Framework is responsible for keeping the user data synchronised between various entities, such as a device, a computer, or Cloud.

The main change between Fremantle and Harmattan is that the Synchronization Framework is completely re-written in Qt. It contains the following components:

  • Sync framework: Third-party developers can add their own synchronisation plug-ins. By default, SyncML and MTP plugins are provided. You can simply add an XML file to start support for an online synchronisation solution that uses SyncML (by default, Ovi Contacts, Google contacts, mobical, and memotoo are supported).
  • SyncML: A Qt-based OMA 1.1, 1.2 compliant implementation of the OMA DS specification.
  • MTP: A Qt-based MTP 1.0 compliant implementation of Media Transfer Protocol.
  • Contran: A plug-in that retrieves contacts from non-Nokia phones (such as Blackberry, iPhone, Windows, and Google Nexus).

In terms of personal information management (PIM) synchronisation, interoperability (IOP) is maintained between Harmattan devices and Fremantle devices (N900).

Links to Harmattan API reference documentation

Platform API reference: See the sync-fw library.

System Software

Sensor Framework

Sensor Framework collects sensors as a logical entity from the Harmattan architecture and provides an interface to hardware sensors through these logical sensors.

Links to Harmattan API reference documentation

QtSensors

QmSystem API

Qt style APIs are provided for:

  • System heartbeat
  • Time and alarms
  • User activity
  • Device modes, such as the offline mode and the power save mode
  • Battery state
  • Display state (on, dimmed, off)
  • Access to special keys

Links to Harmattan API reference documentation

QmSystem