Documentation/Maemo 5 Developer Guide/Architecture/Changes

The Maemo 5 platform software is based on the Debian GNU/Linux distribution. While Debian provides a significant amount of our current code base, it also defines policies for build process, packaging, file system hierarchy and other processes. The intention is to follow current Debian code and processes as closely as possible, and deviate only when it is required due to technical or legal reasons. Differences between Debian and our policies and practices are documented in Packaging/Guidelines.


[edit] Architectural changes since Maemo 4

  • OMAP3 based application processor
  • USB flashing and charging
  • Hardware sensors such as accelerometer and proximity
  • Portrait mode
  • Upstart based boot scripts
  • OpenGL ES 2.0 Graphics acceleration
  • IVA 2.2 Video Acceleration

[edit] Connectivity

  • BlueZ bluetooth stack updated to Bluez 4.x
  • New Bluetooth chip driver introduced which supports BT2.1 configuration, which implies that mandatory BT2.1 features are added to the kernel and userspace BlueZ stack.
  • WLAN architecture is changed to use the Linux mac80211 framework, which means that the closed source WLAN UMAC component in the kernel is removed and the new WLAN kernel implementation is fully open source.

[edit] Multimedia

  • Clean split of decoders/sinks and encoders/sources
    • Audio
      • ARM optimised audio codecs
      • Unmodified pulse/alsa /sink/source plugins
    • Video
      • DSP optimised video codecs (some via openmax)
  • PulseAudio
    • Audio routing and policy
    • Audio pre- & post processing
  • Camera-bin
    • High level api for still-image and video capture
  • New GStreamer plugin introduced that wraps openmax-il components under the gstreamer API
  • Speex introduced
  • esound replaced by libcanberra
  • Upgraded multimedia framework with technology novelties such as TV-out, A2DP stereo Headsets, FM-TX and expanded codec support: H.264, Mpeg-4 ASp (Xvid), WMA10.

[edit] UI framework

  • Removal of left side Task Navigator and plugins.
  • Separate processes for status bar, home and desktop.
  • hildon-desktop process implements window management, task launcher and task switcher. The task launcher is a menu with application icons.
  • hildon-home process implements notification manager, desktop background and graphical widgets.
  • hildon-status-menu process implements the status menu and status area.
  • Removal of stylus keyboard
  • Clutter introduced to access the hardware accelerated OpenGL graphics functionality. It is assumed that we have only one OpenGL drawing context and thus a single process running in the system is using clutter at a time. This process is hildon-desktop.
  • UI style changes (navigation logic in applications, visual style of dialogs, menus etc)

[edit] RTCOM

  • Farsight API break: Farsight upgraded/rewritten as Farsight2
  • Mission control:
  • Logger API: rtcom-eventlogger introduced whose purpose is to serve as a general framework for storing and accessing a persistent log.
  • libtelepathy replaced by telepathy-glib
  • libgalago and galago-daemon dropped

[edit] Location Framework

  • Deprecated low level GPS libraries removed such as libgpsbt, libgpsmgr, gpsd daemon.
  • gpsd replaced by liblocation API library and a set of on-request daemon processes for different location methods (Eg: gypsy-daemon for bluetooth GPS, location daemon for integrated GPS and network based methods)

[edit] Calendar Backend

calendar-backend is a new component that provides a C++ calendar API for external applications. It interacts with SQlite database, implements the iCal RFC to store the calendar entries and handles the database transactions.

[edit] Media Application Framework

The Media Application Framework (MAFW) provides an open, flexible and extensible layer that eases the development of multimedia applications for the Maemo platform. It is a complement to the Multimedia framework that has been heavily improved in Fremantle. MAFW provides:

An extendable, pluggable framework interface, which allows to develop new plugins that provide integration with new multimedia services or rendering engines, that can be seamlessly integrated in all MAFW based applications. Easy to use APIs that speed up application developing, providing support for playback control, discovery and browsing of multimedia resources and playlist manipulation. Independence of the technology. Since MAFW is a plugin based framework, it is not tied to a particular multimedia technology (GStreamer, MPlayer, Tracker). Plugin developers have freedom to choose the technologies they want to use in their plugins, and application developers do not need to know about them.