##(see the SpecSpec for an explanation)
''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.''
* '''Launchpad Entry''': UbuntuSpec:mobile-app-framework
* '''Packages affected''':
== 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)<
>
(Yes, the diagram is a little sloppy, but that's what you get with UML open source project (http://uml.sourceforge.net/index.php)
{{attachment:Hildon UML.png}}
== Outstanding Issues ==
== BoF agenda and discussion ==
----
CategorySpec