Maemo Development Platform
-
Upload
tko -
Category
Technology
-
view
4.598 -
download
0
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