The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)


Architecture

From Mer Wiki
(Difference between revisions)
Jump to: navigation, search
(System Control)
 
(22 intermediate revisions by one user not shown)
Line 10: Line 10:
  
 
== Essentials ==
 
== Essentials ==
 +
 +
=== Central Libraries ===
 +
<!-- http://swdocwiki.nokia.com/agilebrowser2/index.php?requested=%22/Essentials/Central%20Libraries%22&dataFile=/home/carsten/AgileBrowser/meego-deps-gen/mer-core-conn-xorg.packages-deps.txt&requestedDepth=2&depsLevel=2&dir=both&layoutName=default&closeGroups=&mode=&postFilter=&color=&area=--&width=--&height=--&condensed=&cLevel=0&nAttr=&label=&zoom=0.6305053314789059&x=-5.0&y=-556.025&legend=false&ownerNode=&featureFlags=&nTips=&dTips=&classMatch=&sourceMatch=&dAttrMatch=false&ownerMatch=&fFlagMatch=&attrMatch=false&descrMatch= -->
 +
 +
[[Image:Architecture_Centrallibraries_Context.png|frame|none|alt=alt text|Essentials/Central Libraries in context]]
 +
 +
Mer utilizes [http://www.eglibc.org EGLIBC 2.15] as it's central C Library, with [https://launchpad.net/gcc-linaro Linaro GCC 4.6] as toolchain.
 +
 +
=== GNU utilities ===
 +
 +
<!-- http://swdocwiki.nokia.com/agilebrowser2/index.php?requested=%22/Essentials/GNU%20utilities%22&dataFile=/home/carsten/AgileBrowser/meego-deps-gen/mer-core-conn-xorg.packages-deps.txt&requestedDepth=2&depsLevel=2&dir=both&layoutName=default&closeGroups=&mode=&postFilter=&color=&area=--&width=--&height=--&condensed=&cLevel=0&nAttr=&label=&zoom=1.0&x=-99.5&y=-248.5&legend=false&ownerNode=&featureFlags=&nTips=&dTips=&classMatch=&sourceMatch=&dAttrMatch=false&ownerMatch=&fFlagMatch=&attrMatch=false&descrMatch= -->
 +
 +
[[Image:Architecture_Gnuutilities_context.png|frame|none|alt=alt text|Essentials/GNU utilities in context]]
 +
 +
Mer standard build-time and run-time configuration utilizes GNU utilities such as [http://www.gnu.org/software/bash/ bash], [http://www.gnu.org/software/coreutils/ coreutils], [http://www.gnu.org/software/sed/ sed], [http://www.gnu.org/software/ncurses ncurses], [http://www.gnu.org/software/gzip/ gzip], [http://www.gnu.org/software/gawk/ gawk], [http://www.gnu.org/software/findutils findutils], [http://www.gnu.org/software/readline readline], etc.
 +
 +
For the utilities making it into run-time images, we try to avoid GPLv3 versions. In the future it will be possible to utilize [http://busybox.net/ busybox] as a replacement for run-time to solve this issue better.
  
 
=== Base Essentials ===
 
=== Base Essentials ===
 +
 +
[[Image:Architecture_Baseessentials_Context.png|frame|none|alt=alt text|Essentials/Base Essentials in context]]
 +
 +
=== Linux utilities ===
 +
 +
[[Image:Architecture_Linuxutils_Context.png|frame|none|alt=alt text|Essentials/Linux utilities in context]]
  
 
=== D-Bus ===
 
=== D-Bus ===
 +
[[Image:Architecture_Dbus_Context.png|frame|none|alt=alt text|Essentials/D-Bus in context]]
  
 
For inter-process communication, Mer utilizes [http://www.freedesktop.org/wiki/Software/dbus D-Bus] as messaging bus.
 
For inter-process communication, Mer utilizes [http://www.freedesktop.org/wiki/Software/dbus D-Bus] as messaging bus.
Line 20: Line 44:
  
 
=== Package Manager ===
 
=== Package Manager ===
 +
 +
[[Image:Architecture_Packman_Context.png|frame|none|alt=alt text|Software Management/Package Manager in context]]
  
 
Mer utilizes the [http://www.rpm.org RPM package manager] as backend for the [http://en.opensuse.org/Portal:Zypper Zypper package manager], which handles repositories and fetching RPMs and looking for available updates, etc.
 
Mer utilizes the [http://www.rpm.org RPM package manager] as backend for the [http://en.opensuse.org/Portal:Zypper Zypper package manager], which handles repositories and fetching RPMs and looking for available updates, etc.
Line 34: Line 60:
  
 
=== Bluetooth ===
 
=== Bluetooth ===
 +
 +
[[Image:Architecture_Bluetooth_Context.png|frame|none|alt=alt text|Communications/Bluetooth in context]]
  
 
Mer utilizes the [http://www.bluez.org/ BlueZ] Bluetooth protocol stack
 
Mer utilizes the [http://www.bluez.org/ BlueZ] Bluetooth protocol stack
  
 
=== Proxy Management ===
 
=== Proxy Management ===
 +
 +
[[Image:Architecture_Proxy_Context.png|frame|none|alt=alt text|Communications/Proxy Management in context]]
  
 
Mer provides the [http://code.google.com/p/libproxy/ libproxy API], with [http://www.kernel.org/pub/linux/network/connman/ pacrunner] as backend
 
Mer provides the [http://code.google.com/p/libproxy/ libproxy API], with [http://www.kernel.org/pub/linux/network/connman/ pacrunner] as backend
Line 44: Line 74:
  
 
=== X11 ===
 
=== X11 ===
 +
 +
[[Image:Architecture_X11_Context.png|frame|none|alt=alt text|Graphics/X11 in context]]
 +
  
 
=== OpenGL ES ===
 
=== OpenGL ES ===
 +
 +
[[Image:Architecture_Opengles_Context.png|frame|none|alt=alt text|Graphics/OpenGL ES in context]]
  
 
3D-accelerated Software built against Mer should be utilizing the [http://www.khronos.org/opengles/2_X/ OpenGL ES 2.0] and [http://www.khronos.org/egl EGL native platform interface] APIs. Mer Core provides the open source [http://mesa3d.org/ Mesa 3D Graphics Library] containing OpenGL ES 2.0 and EGL libraries to link and build against, which can at image build time be replaced with device-specific OpenGL ES 2.0/EGL implementations.
 
3D-accelerated Software built against Mer should be utilizing the [http://www.khronos.org/opengles/2_X/ OpenGL ES 2.0] and [http://www.khronos.org/egl EGL native platform interface] APIs. Mer Core provides the open source [http://mesa3d.org/ Mesa 3D Graphics Library] containing OpenGL ES 2.0 and EGL libraries to link and build against, which can at image build time be replaced with device-specific OpenGL ES 2.0/EGL implementations.
Line 52: Line 87:
  
 
=== Font management ===
 
=== Font management ===
 +
 +
[[Image:Architecture_Fontmanagement_Context.png|frame|none|alt=alt text|Graphics/Font Management in context]]
  
 
=== Input Adaptation ===
 
=== Input Adaptation ===
Line 58: Line 95:
  
 
=== Imaging ===
 
=== Imaging ===
 +
 +
[[Image:Architecture_Imaging_Context.png|frame|none|alt=alt text|Graphics/Imaging in context]]
 +
  
 
=== Fonts ===
 
=== Fonts ===
 +
 +
[[Image:Architecture_Fonts_Context.png|frame|none|alt=alt text|Graphics/Fonts in context]]
 +
 +
Mer provides a minimum of freely distributable fonts, the [http://www.freedesktop.org/wiki/Software/CJKUnifonts CJKUni fonts], [http://www.droidfonts.com/ Droid fonts], [https://fedorahosted.org/liberation-fonts/ Liberation fonts].
  
 
== System ==
 
== System ==
  
 
=== Startup Services ===
 
=== Startup Services ===
 +
 +
[[Image:Architecture_Startupservices_Context.png|frame|none|alt=alt text|System/Startup Services in context]]
 +
  
 
=== Sensor Framework ===
 
=== Sensor Framework ===
  
 
=== System Control ===
 
=== System Control ===
 +
 +
[[Image:Architecture_Systemcontrol_Context.png|frame|none|alt=alt text|System/System Control in context]]
 +
  
 
Mer utilizes the [http://www.freedesktop.org/wiki/Software/systemd systemd] system and service manager for Linux. This approach is much different from typical SysV init scripts, but is also more suitable for mobile systems due to on-demand starting of daemons.
 
Mer utilizes the [http://www.freedesktop.org/wiki/Software/systemd systemd] system and service manager for Linux. This approach is much different from typical SysV init scripts, but is also more suitable for mobile systems due to on-demand starting of daemons.
Line 76: Line 126:
  
 
=== GStreamer ===
 
=== GStreamer ===
 +
 +
Mer utilizes the [http://gstreamer.freedesktop.org/ GStreamer] multimedia framework for playback, encoding, filtering of media, etc.
  
 
=== PulseAudio ===
 
=== PulseAudio ===
 +
 +
Mer utilizes the [http://www.freedesktop.org/wiki/Software/PulseAudio/About PulseAudio] networked sound server.
  
 
=== Codecs ===
 
=== Codecs ===
 +
 +
Mer provides codecs such as [http://flac.sourceforge.net/ FLAC], [http://xiph.org/downloads/ Ogg Vorbis/Theora/Speex], with ability to add more through the GStreamer Framework.
  
 
=== ALSA ===
 
=== ALSA ===

Latest revision as of 18:49, 27 April 2012

Contents

[edit] Mer Architecture

Mer architecturally derives from the MeeGo 1.3 architecture. The big changes in MeeGo 1.3 compared to MeeGo 1.2 was systemd inclusion, which simplified much of the startup process and services handling. Mer architecture was based around the need for a minimal Core that could be the basis of many different kinds of products.

As such, in the transformation of MeeGo to Mer, only packages and dependencies that served a practical purpose for the criteria of booting up to a Xorg+Qt qmlviewer with connectivity and ability to expand upon that was left in. This meant a much smaller set of packages were put together and hence your favourite package will probably not be part of Mer.

Another difference from MeeGo is that in Mer, we do not contain hardware adaptations and reference user interfaces. Architecturally, hardware adaptations are plugging into abstract 'adaptation interfaces' of the Mer Core, which means that when you couple the Mer Core with a hardware adaptation, you get a booting system. If you add a user interface of your selection on top, you have a working device with UI.

The reasoning for no hardware adaptations or reference user interfaces stems from experiences within MeeGo, where hardware adaptations were often completely out of sync with the release schedule of the Core and the reference user interfaces reflected badly on the MeeGo Core's actual abilities, along with release pressures giving a lesser quality Core, UIs and hardware adaptations.

[edit] Essentials

[edit] Central Libraries

alt text
Essentials/Central Libraries in context

Mer utilizes EGLIBC 2.15 as it's central C Library, with Linaro GCC 4.6 as toolchain.

[edit] GNU utilities

alt text
Essentials/GNU utilities in context

Mer standard build-time and run-time configuration utilizes GNU utilities such as bash, coreutils, sed, ncurses, gzip, gawk, findutils, readline, etc.

For the utilities making it into run-time images, we try to avoid GPLv3 versions. In the future it will be possible to utilize busybox as a replacement for run-time to solve this issue better.

[edit] Base Essentials

alt text
Essentials/Base Essentials in context

[edit] Linux utilities

alt text
Essentials/Linux utilities in context

[edit] D-Bus

alt text
Essentials/D-Bus in context

For inter-process communication, Mer utilizes D-Bus as messaging bus.

[edit] Software Management

[edit] Package Manager

alt text
Software Management/Package Manager in context

Mer utilizes the RPM package manager as backend for the Zypper package manager, which handles repositories and fetching RPMs and looking for available updates, etc.

[edit] Communications

[edit] ConnMan

Mer utilizes the ConnMan connection manager for managing internet connections.

[edit] Cellular Framework

Mer utilizes the oFono telephony stack

[edit] Bluetooth

alt text
Communications/Bluetooth in context

Mer utilizes the BlueZ Bluetooth protocol stack

[edit] Proxy Management

alt text
Communications/Proxy Management in context

Mer provides the libproxy API, with pacrunner as backend

[edit] Graphics

[edit] X11

alt text
Graphics/X11 in context


[edit] OpenGL ES

alt text
Graphics/OpenGL ES in context

3D-accelerated Software built against Mer should be utilizing the OpenGL ES 2.0 and EGL native platform interface APIs. Mer Core provides the open source Mesa 3D Graphics Library containing OpenGL ES 2.0 and EGL libraries to link and build against, which can at image build time be replaced with device-specific OpenGL ES 2.0/EGL implementations.

In Mer Core, Mesa is built to be utilizing LLVMpipe for fast software rendering with no hardware specific drivers enabled.

[edit] Font management

alt text
Graphics/Font Management in context

[edit] Input Adaptation

[edit] Display & Graphics Adaptation

[edit] Imaging

alt text
Graphics/Imaging in context


[edit] Fonts

alt text
Graphics/Fonts in context

Mer provides a minimum of freely distributable fonts, the CJKUni fonts, Droid fonts, Liberation fonts.

[edit] System

[edit] Startup Services

alt text
System/Startup Services in context


[edit] Sensor Framework

[edit] System Control

alt text
System/System Control in context


Mer utilizes the systemd system and service manager for Linux. This approach is much different from typical SysV init scripts, but is also more suitable for mobile systems due to on-demand starting of daemons.

[edit] Context Framework

[edit] Multimedia

[edit] GStreamer

Mer utilizes the GStreamer multimedia framework for playback, encoding, filtering of media, etc.

[edit] PulseAudio

Mer utilizes the PulseAudio networked sound server.

[edit] Codecs

Mer provides codecs such as FLAC, Ogg Vorbis/Theora/Speex, with ability to add more through the GStreamer Framework.

[edit] ALSA

[edit] Qt

[edit] Qt

[edit] Qt Mobility

[edit] Qt WebKit

[edit] Qt Messaging Framework

Personal tools