Maemo Development Platform

download Maemo Development Platform

If you can't read please download the document

Transcript of Maemo Development Platform

Maemo Development Platform

Tommi Komulainen
Nokia

Maemo Development Platform

2006 Nokia. All rights reserved.

Outline

Background

Maemo Development Platform

Things to consider

Future?

Background

Background

End-user optimized interface

Desktop optimized software

Handheld hardware

No memory, no CPU, no HW acceleration

High resolution touch screen

Maemo is...?

Nokia 770

Nokia 770 OS

Distribution

Development platform

http://maemo.org/

#maemo @ freenode

This is an abridged list of all the things people have been calling maemo.Maemo is not the Nokia 770 device nor the OS for the 770. The OS (Internet Tablet Software Edition) is a combination of the maemo platform and additional software such as the browser.Maemo is also not a distribution.

Maemo is...?

Nokia 770

Nokia 770 OS (= Maemo + more)

Distribution

Development platform

http://maemo.org/

#maemo @ freenode

Maemo is a development platform and the website and IRC channel are elements supporting development.

Note the larger number of plugins, applets and applications in the product software in the background.X terminal is a nice tool for developers, but doesn't make much sense in the product.

Desktop

Home, Status bar, Task Navigator

Matchbox

Input methods

Control Panel

GNOME Desktop

Nautilus / gDesklets, gnome-panel applets / notification area, gnome-panel menus / window list applet / window selector applet

Metacity

Hardware keyboard

gnome-control-center

Similar in functionality, different constraints, heavily influenced by overall UI design.

GNOME Development Platform

atk

at-spi

audiofile

esound

gail

GConf

glib

gnome-mime-data

gnome-vfs

gtk+

gtk-doc

intltool

libart_lgpl

libbonobo

libbonoboui

libglade

libgnome

libgnomecanvas

libgnomeui

libIDL

libxml2

libxslt

ORBit2

pango

pkgconfig

Components in GNOME 2.14 development platform.

Maemo Development Platform

atk

at-spi

audiofile

esound

gail

GConf

glib

gnome-mime-data (*)

gnome-vfs

gtk+

gtk-doc

intltool

libart_lgpl

libbonobo

libbonoboui

libglade (*)

libgnome

libgnomecanvas

libgnomeui

libIDL

libxml2

libxslt (*)

ORBit2

pango

pkgconfig

Components from GNOME development platform that exist (or not) in maemo.

Legend:

included both on platform and device

included only in platform (*)

not available

Maemo Development Platform

Bluez

D-BUS

GStreamer

SDL, SDL_mixer

Other non-GNOME free and open source components in Maemo Development Platform.

Maemo Development Platform

Hildon widgets

libosso

maemo-launcher

Connectivity

GConf-SDL integration (tunjos)

New components written from scratch, more or less.

libosso is a collection of convenience APIs from RPC to device state event callbacks.maemo-launcher is nice-ish hack which pre-parses the gtkrc(.cache) and creates the structures in memory. The application inherits the memory structures when started by forking without exec which reduces memory consumption.

Things to consider

Things to consider

Hildon UI Style

Memory and performance

Small differences

Hildon UI Style

Small, high DPI touch screen

Stylus, thumbs, a few hardware keys

Virtual keyboard, handwriting recognition

Only one application window at a time

Limited memory, storage and CPU

No wobbly windows...

http://www.maemo.org/community/UI_Style_Guide_Summary_1.0.pdf

Hildon UI Style Essential Widgets

http://www.maemo.org/platform/docs/api-index.html

One needs to use HildonApp and HildonAppView to get the application look and feel match the rest of the platform. They provide the special theming for application windows and toolbars as well as the handling of application menus.Notes are more or less GtkMessageDialog following Hildon style guide rather than HIG.Banners are for small transient notifications, to replace conventional status bar messages and some of popup dialogs.

Hildon UI Style Essential Widgets

Windows and views

HildonApp, HildonAppView

Notes, banners

HildonNote, gtk_infoprint_*

http://www.maemo.org/platform/docs/api-index.html

gtk_infoprint_* is actually in hildon-lgpl (nowadays hildon-libs) but long time ago it was planned to be added to gtk+ to be displayed whenever an insensitive button was clicked.

Hildon UI Style Other Widgets

File, color and font selectors

http://www.maemo.org/platform/docs/api-index.html

Some of existing gtk+ widgets have been reimplemented to be more usable given the device constraints. It is preferrable to use the new widgets instead of gtk+ stock widgets whenever there is a replacement provided.

Hildon UI Style Other Widgets

Special purpose

Volume, seeking

Number, range

Date, time, weekday

http://www.maemo.org/platform/docs/api-index.html

Memory and performance

64M ought to be enough for 770

Memory and performance

Single instance

Bonobo vs. D-BUS

State saving, power management

Heavy gtkrc:

Nokia 770: 5529 lines, 460 images

Clearlooks: 136 lines

Grand-Canyon: 777 lines

We needed D-BUS anyway, and having Bonobo which does roughly the same things would've been nothing but bloat. Using D-BUS only removes the need for several components.

State saving and power management events are exported to applications through libosso.

gtkrc parsing is slow, out of 7s application startup time gtkrc parsing takes about 3s. It also ends up creating lots of small objects which are identical in all running applications.

To work around the issue there are two hacks:

gtkrc.cache byte code which skips textual parsing

Maemo-launcher (see earlier slide)

Small differences

.desktop files

Debian packaging

GStreamer

Connectivity

MIME types and URI schemes

Backup

/usr/share/applications - /usr/share/applications/hildonX-Osso-Service to hold the D-BUS service name (with implicit com.nokia prefix)

Current application installer installs packages under /var/lib/install separated from the base system.

MIME types should avoid magic and rely on extension only. Instead of gnome_vfs_url_show() one should use osso_mime_open() to get single instance and also get the 'Loading...' banner properly displayed.

Future?

Future?

Application installer

HildonWindow

Scalability improvements

Gazpacho

Bindings (Python, C++)

evolution-data-server, Galago, Telepathy

Things that might be happening for Maemo in the future.

Application installer no longer installing in special location. The backend should be normal apt+dpkg. It is not yet decided how powerful features (like replacing libc?) will be provided for end users.

Hildon widgets and the desktop are pretty much hardcoded for 800x480 at 225 DPI. Things are slowly being improved.

Bindings probably need to be installed separately, but it should be simple with new application installer.

Conclusion

Further information

Maemo SDK Tutorial
http://www.maemo.org/platform/docs/tutorials/Maemo_tutorial.html

HOWTOs
http://www.maemo.org/platform/docs/how-to.html

API reference
http://www.maemo.org/platform/docs/api-index.html

Mailing lists
http://www.maemo.org/community/mailing-lists.html

Source code
https://stage.maemo.org/svn/maemo/projects/haf/

#maemo @ freenode

Click to edit the title text format

Click to edit the outline text format

Second Outline Level

Third Outline Level

Fourth Outline Level

Fifth Outline Level

Sixth Outline Level

Seventh Outline Level

Eighth Outline Level

Ninth Outline Level

2006 Nokia. All rights reserved.

Click to edit the notes format