2DLauncher

Summary

It is desireable to have netbook launcher that runs well on platforms that do not have accelerated OpenGL drivers for X. This spec attempts to detail the specifics of a 2D netbook launcher for use on these platforms.

Release Note

The appropriate version of the launcher will be automatically started on boot based on the capabilites of the system. No end user configuration required.

Rationale

There are some platforms where it is desirable to run UNR that don't have the necessary graphics drivers to run the current netbook-launcher, which is GL based and requires GL X drivers. Most notably, the ARM platform falls into this category. Many virtual machines do not have proper gl support as well.

Most of the ARM platforms have accelerated OpenGL or GL-ES drivers, but this only enables full-screen GL applications not running in X. UNR and netbook-launcher use X windows, and therefore require OpenGL drivers for X and this is the main piece that is missing from current solutions. See http://www.opengl.org/documentation/specs/glx/glx1.4.pdf for background information on GLX.

An implementation of the netbook-laucher is needed (2D version) that does not require these drivers in order to run on platforms where there are no GLX drivers.

User stories

  • A user wants to try UNR in a virtual-machine (like vmware) and wants the launcher to be useable.
  • A user wants to use UNR or netbook-launcher on an platform (ARM netbook, Handheld device) that does not have OpenGL X drivers.
  • A user wants to run UNR on old, slow hardware where GL performance is not acceptable.

Assumptions

Based on the technology choosen for the 2D launcher, it is possible new dependencies would need to be packaged and included in the archive.

Design

The following requirements apply to the 2D launcher:

  • Work is underway to split out major data providers for netbook-launcher into it's own library, called liblauncher. Regardless of toolkit choosen for 2D launcher, the implementation should utilize the functions in liblauncher library to ensure code-resuse and ease of maintenance. liblauncher should be used by all netbook-launcher implementations, including 3D clutter version and new 2D versions.
  • The UI for the 2D launcher should match that of UNR 2.0, which is planned for Karmic. This includes a similar layout of panels and other features that do not require GL or special plugin code which may be platform specific.
  • Translation/i18n support via gettext/intltool, etc
  • Support for existing netbook-launcher gconf defaults to add branding, customer logo, custom background image, etc..
  • RTL (right to left) support for languages that need this - Arabic/Hebrew
  • 2D launcher will be coded in C
  • 2D launcher will be a separate package from the clutter based 3D launcher and both should be able to co-exist in an installation.
  • It is suggested that we use a script similar to the Compiz enabling script (compiz-wrapper) as a way of managing which version of the launcher launches (3D or 2D) based on the platform capabilites.

Implementation

There are two proposals currently on the table for implementing the 2D launcher, one using GTK and the other EFL (Enlightenment Foundation Libraries). Note: QT is not being considered at this time. Each proposal will be prototyped and then analyzed for the following criteria to decide how to proceed:

Capability

GTK+

Clutter

EFL

Disk Footprint

Memory Footprint

Rendering Performance

Development Complexity

Effects

Right To Left Language Support

Accessibility Support

Keyboard Nav. w/ Custom Widgets

Support

Main Language

Language Bindings

Requires OpenGL

Styling, Theming

Projects Using

Canonical Knowledge

License

Corporate Sponsor

Time to marke

The implementation details of GTK and EFL launchers will be described in additional specifications. A Launchpad project will be created for the 2D launcher work and prototypes will be uploaded to the project's PPA.

UI Changes

  • 2D launcher should look equivalent to 3D launcher (UNR 2.0 launcher) in layout, although some features/animations may not map one-to-one.
  • Do we want to provide a UI to switch between 2D and 3D launchers?

Code Changes

  • netbook-launcher will be modified to use liblauncher library for 9.10
  • 2D launcher will be a separate package, called netbook-launcher-xxx where xxx is either efl or gtk.
  • UNR seed will need to be updated to pull in applicable 2D launcher packages.
  • script to be written to auto-detect GL capabilites and launch correct version of launcher.

Migration

Should be transparent to end user. When running UNR, the correct launcher should be started automatically without requiring user interaction.

Test/Demo Plan

  • Fill out compatibility table from above when prototypes complete
  • Test on systems without OpenGLX drivers
  • Test on systems with OpenGLX drivers
  • Test in virtual machine (vmware).

Unresolved issues

  • UI for switching launchers
  • Toolkit to move forward with

BoF agenda and discussion

Objective of this session is to find a replacement widget set to clutter.

Constraints

  • Ability to add customer logo, change the overall colour theme and have different background images

Minutes

  • Much of devices that don't have proper 3D acceleration
  • some people want to try out UNR in a virtual machine, 3d support for
    • vm's is not great yet
  • Those devices don't have OpenGL drivers, and can't run UNR
  • We should have one single source tree for netbook-launcher, so factor
    • out the 3D code, and make it selectable
  • Clutter needs to replaced with another backend, and removing the
    • OpenGL from Clutter is difficult
  • Theming is a critical task, oem's ofthen want to theme the launcher, a
    • generalized way of theming that works across both launchers should be implemented
  • Implementation to be done in C if possible
  • The launcher will be a separate package from the clutter based one
  • It is suggested that we use the Compiz enabling script as a way of managing which version of the launcher launches (3D or no 3D) (packagename: compiz-wrapper)
  • GTK+ is a good solution to our objective as it provides RTL, accessibility
  • QT is diverges too much from the base set of widgets Ubuntu is based on not to mention the CD image size constraints

Action Items

  • What will it look like without 3d support (ie. just static icons, how do we show visual feedback of what has been clicked?)
  • How do we implement switching from clutter based to 2d based (separate config program / in Preferences > Appearance...)

  • We need to develop a front end based on GTK+ to hook into the APIs that Neil is finishing up
  • The current clutter based launcher will need refactoring to separate the Cairo portion out
  • We should (not decided yet) if we are to do a performance eval at the end of the code cycle
  • Due to ARM constraints, we should look at the memory foot print and examine it carefully (ARM systems run 256MB, or 512MB memory)
  • proposed resources to do the work:
  • Paul Liu from Canonical OEM (on load to platform so we need to get the ok from DavidM)
  • Bill Filler from Canonical OEM
  • Gustavo Barbieri from Canonical OEM


CategorySpec

Specs/2DLauncher (last edited 2009-06-25 21:18:59 by rev-199-232-43-50)