AppFramework

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

This is a proposal to use the Hildon Application Framework found in the Maemo project and used by Nokia N770 and N800 projects as the application framework for Ubuntu Mobile and Embedded project.

Release Note

Ubuntu mobile includes the Hildon Application Framework from Maemo and the Nokia N770 and N800 projects.

Rationale

Mobile internet devices and tablets for which this distribution is targeted need an application framework that can provide a way to create applications with a very consistent look and feel and be prepared to run and interface nicely using restricted resources found on small devices like small resolution, little CPU power and storage. In addition, applications should be designed for touchscreen use, finger-friendly navigation, gestures, etc. Thus a specific UI framework, prepared for this kind of demand is necessary.

The Hildon Application Framework is one of a few existing frameworks designed for small devices and is a good candidate for tablet use. It has strong support from Nokia and will be separated from Maemo and become part of GNOME Mobile. This allows Ubuntu community and others to contribute in a way that benefits all users.

Use Cases

  • Peter is a free software developer who has a GPS mapping tool which works well on laptops. He would like it to work on his new mobile device as well. Since Ubuntu uses the Hildon application framework, porting it to look and feel like a native application is well-documented and straight forward.

Scope

Affects hildon, and osso-related packages as well as gtk+. The list of GTK+ changes is available at http://live.gnome.org/Maemo/Gtk210Changes , but we will most likely not need all of them for Ubuntu mobile.

Design

We want a application framework that is easy to develop for and which has good documentation. It should have support for various hardware devices and should be themable.

Implementation

Hildon, from the maemo project provides us with the code we are interested in. They are working on porting it to a newer GTK+ which should make it easier for us to adopt it. Hildon does not provide enough and good enough developer documentation, something we will have to work on. It is also a bit too tied to the Nokia 770 and N800, but both upstream and we are working on fixing that.

Hildon is currently in transition moving from Maemo 3.x version to the next Maemo 4.x version. Hildon also doesn't yet have an official independent release. Currently we are working to import v0.0.18+

We will bring each Hildon component from the maemo subversion repository into the Ubuntu archive, clean them up and make sure they work correctly on the devices we want to support.

Hildon Packages

A useful description of the hildon components offered by Tommi Komulainen: "The following is in somewhat prioritized order (from top down) to reach what you could call Hildon UI. I'd say the minimum would be to get hildon-desktop, hildon-1, hildon-fm, and hildon-theme-plankton, with minimal dependencies (which probably aren't conveniently optional at the moment.)

Hope this helps.

hildon-desktop*

  • [Bob Spencer: a UML diagram of major hildon-desktop classes is included at the bottom of this page]
    • Hildon Desktop is the main UI component of the Maemo UI. It consists of two panels and the Home area. Each panel can house plugins and basically function like on an ordinary desktop environment except for that this user interface was designed for touch screen use on mind and was originally developed to Nokia 770 Internet tablet. Build-Depends: libhildon1-dev, libosso-dev, osso-af-settings, libhildonfm2-dev, libhildonhelp-dev Very closely tied with hildon-theme-plankton.

hildon-1

  • The Hildon widgets. Contains generic application window as well as several specialized widgets designed for internet tablets. Very closely tied with hildon-theme-plankton.

hildon-fm

  • File management widgets. Implementation of GtkFileChooser designed for internet tablets. Build-Depends: libosso-dev, maemo modified gtk+ (for exporting

    parts of GtkFileSystem), libhildon-thumbnail-dev, osso-gwconnect-dev, mce-dev, libhildon1-dev, libhildonmime-dev

hildon-thumbnail

  • API for getting thumbnails for files. Similar to

    GnomeThumbnailFactory but asynchronous, designed for low memory low performance devices. Includes thumbnailer plugin for files supported by GdkPixbuf. Build-Depends: libosso-dev

libhildonmime

  • API for activating applications to handle certain MIME types. Similar to gnome_vfs_url_show() but uses X-Osso-Service field in .desktop files and activates applications with DBus directly. Includes hildon-update-category-database which is update-mime-database (from shared-mime-info) modified to recognize additional elements.

gnomevfs-obex

  • obex:// module for gnome-vfs Build-Depends: libopenobex1-dev, libgwobex-dev, osso-gwconnect-dev

gnome-vfs-filechooser-backend

  • gnomevfs backend for GtkFileChooser gtkfilesystemmemory GtkTreeStore which can be used as a in-memory file system backend for hildon-fm. Build-Depends: maemo modified gtk+ (for exporting parts of

    GtkFileSystem)

hildon-thumbnail-libid3

  • hildon-thumbnail plugin for audio files (as supported by libid3.) (This is actually abusing the thumbnailing API by using the thumbnail for passing metadata about the audio files.) Build-Depends: libhildon-thumbnail-dev

hildon-theme-plankton

  • The plankton theme (matchbox + gtk) Contains one big png which when built with the layout and tools produces a standalone theme package. Build-Depends: hildon-theme-layout-4, hildon-theme-tools sapwood The theme engine. Similar to pixbuf engine but uses client-server design and pixmaps rather than pixbufs. Faster and more memory efficient than pixbuf engine, but doesn't do scaling or gradients.

hildon-theme-cacher

  • A tool for generating a bytecode-ish cache file for gtkrc files to improve application startup time. Depends on maemo modified gtk+ (though the support for caching is actually missing at the moment.)

hildon-theme-layout-4

  • gtkrc template for themes. The idea is that we maintain single gtkrc template (which is closely tied with the code) and implement different themes by only drawing a single png file. Build-Depends: hildon-theme-tools hildon-theme-tools Tools for handling the theme building process.

libosso

  • DBus convenience wrappers and hardware related callbacks. Build-Depends: mce-dev

hildon-home-webshortcut

  • Plugin for hildon-desktop, shows a an image and opens a URL in browser when clicked. Build-Depends: libhildon1-dev, libosso-dev, osso-af-settings, libconic0-dev, libhildonfm2-dev, libhildonmime-dev, libhildondesktop-dev, hildon-desktop-dev

hildon-control-panel

  • Control panel shell roughly similar to gnome-control-center. Control panel plugins are shared libraries rather than executables to save memory. Currently undergoing migration to hildon-1 in

https://stage.maemo.org/svn/maemo/projects/haf/branches/hildon-control-panel/refactoring

  • Build-Depends: libhildon1-dev, libosso-dev, osso-af-settings, libhildonhelp-dev

clipboard-manager

  • Subset of gnome-settings-daemon functionality, namely the cliboard manager to retain the clipboard contents after application exit and GConf-Xsettings bridge for a couple of settings.

maemo-launcher

  • Application startup time optimizer, a bit similar to kdeinit. Taking advantage of maemo-launcher doesn't require code changes, merely recompile.

hildon-initscripts

  • Startup script, settings and environment variables for running gtk and matchbox with proper look and feel. Depends: osso-af-startup

osso-af-startup

  • Startup scripts for for target device. Depends: osso-af-utils, osso-core-config

hildon-help

  • API for integrating with help UI. (The UI is closed source, but it may be possible to use yelp instead.) Build-Depends: libosso-dev, libhildon1-dev

mce-dummy

  • Dummy package to satisfy package dependencies for mce.

osso-af-settings

  • Contains pkgconfig file providing directories where to put application, task navigator, status bar, home .desktop files, etc.

osso-af-utils

  • Small utilities, for booting up and periodically cleaning up temporary files. Includes transparent cursor theme to hide the pointer.

osso-app-killer

  • Scripts for clearing user data and settings, resetting factory settings, shutting down application before running restore.

posix-locales

  • Locale data for the languages supported on 770/n800

gazpacho-hildon

  • Hildon support for Gazpacho UI builder

hail

  • Accessibility support for hildon-1 and hildon-fm Build-Depends: hildon-libs-dev, hildon-fm-dev

The following packages are obsolete:

hildon-base-lib: file monitoring provided by gnomevfs / inotify
hildon-lgpl: replaced by hildon-1
hildon-libs: replaced by hildon-1
hildon-theme-layout-2: replaced by hildon-theme-layout-4
hildon-theme-layout-3: replaced by hildon-theme-layout-4
libglade-hildon: outdated
libosso-common-error: not so useful in the end, not used
libosso-help: replaced by hildon-help
libossomime: replaced by libhildonmime
maemo-af-desktop: replaced by hildon-desktop
osso-gnomevfs-extra: replaced by gnomevfs-obex
osso-thumbnail: replaced by hildon-thumbnail
"

Diagram of hildon-desktop classes

hildon-desktop consists of:

  • libhildonwm: Window management code/libraries
    libhildondesktop: base classes for home area, containers, panels, statusbar, navbar, and applets
    src: Implementation classes derived from libhildondesktop base classes.

Here is a UML diagram of the organization (names of classes as of June 28th, 2007)

Outstanding Issues

BoF agenda and discussion


CategorySpec

MobileAndEmbedded/AppFramework (last edited 2008-08-06 16:30:32 by localhost)