2D experience fallback

Registered by David Barth

The blueprint captures the requirements and action items for delivering a smooth transition to the classical 2D Gnome 2.x Desktop (aka 2D Experience) when the system HW doesn't support Unity. The blueprint discusses when (requirements / conditions) and how the transition should happen. See UDS notes at the end of the whiteboard or in the related gobby document on gobby.ubuntu.com

Blueprint information

David Barth
Didier Roche
Unity Team
Series goal:
Accepted for natty
Milestone target:
Started by
David Barth
Completed by
David Barth

Related branches



Work items (natty-alpha-1):
[didrocks] work with the dx team on the detection module to get the 2 given modes (fallback compiz as unity can't run but acceleration is available)/fallback to metacity when no acceleration): DONE
refine the design of the detection module and its integration: DONE

Work items (natty-alpha-2):
[jaytaoko] provide detection module in devel/learning mode: DONE
[didrocks] refactor the detection module code to run outside of compiz: DONE
[didrocks] integrate with the new upstream gnome-session fallback mechanism: DONE
[didrocks] show a dialog the first time that we fallback to classic gnome mode to tell that you don't get the full ubuntu experience (with the new detection system): DONE
[didrocks] get a "classic gnome desktop" item/session in gdm forcing the detection module to skip phase 1: DONE
[didrocks] fix the guest session to work with the two session mode: DONE
[didrocks] fix failsafe session to launch metacity: DONE

Work items (natty-alpha-3):
[jaytaoko] provide detection module in release mode: TODO
[ev] tweak ubiquity to propose nvidia installation on reboot, a label to tell that the interface will change on reboot is needed: DONE
[pitti] add a label in case of the nvidia driver to tell that the interface will look different at reboot: DONE
[loicm] nux to provide an helper for compiz as well: DONE
[didrocks] adapt compiz/metacity fallback once nux can detect the compiz case: DONE
[didrocks] discuss on session saving: DONE

Work items (natty-beta-1):
[didrocks] optimize the nux helper detection tool: DONE

Note from the session:

== Compiz and 2D Mode ==

As of Compiz 0.9.0, Compiz has supported pluggable rendering backends, including no rendering backend for composite. This means that you will not need to use metacity if you wish to have a 2D experience. (Some work will need to be done on the reparenting decorators though, and some new plugins need to be written in order to make this a reality)

 * What is the 2d experience fallback?
 * What is the 2d experience btw?
 * What's left to be defined?
 * Corner cases and alternative scenarios: livecd, installer, nvidia, etc.
 * Next steps: work items, schedule

2D experience running with Compiz?
-> the general recommendation is to stay with metacity
Plan of record: we don't use compiz in 2D mode (until much later, Natty+1)

== 2D fallback scenario ==

Different cases in general:
 * If GL is using SW renderering -> refuse to run
 * Drivers that "lie", that are Open Source -> patch the drivers; not use the quirks file
 * Proprietary drivers that also "lie" -> can't patch, so will use quirks for that

Where do we put detection?

1. 2D/3D detection, where?

2. Quirks adjustments, that goes into Unity

New "modules" in the architecture:
 - quirks file
 - quirks component inside Unity
 - 2D / 3D detection module (release mode)
  * this detects that 3D is available, AND that the particular extensions that Unity requires are present AND that they are not blacklisted (we need a blacklist feature)
  * the module needs also to detect that it is not being respawned too fast

 - 2D / 3D detection module (devel. mode)
  This particular version would actually do GL calls and exercise the actual features we need. In case of a crash would record the issue (apport) to help collecting quirks

Boot sequence during the development cycle:
 * boot
 * run the 2D/3D detection (devel. mode) and potentially collect quirks in case of a crash
 * start compiz and unity

Boot sequence in release mode:
 * boot
 * if there is a flag indicating that the HW was tested previously -> start compiz and unity directly
 * if not, run the 2D/3D detection module (release mode) and start unity or the 2D exp.
 * in case of a driver update or any (detectable) changes that could impact unity, remove the flag and let the detection module run again

gnome-session patch required
 * a patch exist
 * we need to gently lobby upstream to accept it ;)
 * didrocks will file a bug upstream

When transitioning to the 2D experience (classic Gnome 2.x shell), we will put a dialog box on screen for the user to know what happens. The dialog should be displayed while the 2D session is loaded.

== Particular scenarios ==

Nvidia drivers: not shipped by default => unity can't run by default

== gnome-appearance-properties ==
Unity experience and switch between them: we don't want that anymore as there as the UI are too different. The patch has to be removed.

Work that has already been done in compiz
 -> Added reparenting interface for decorations (reparenting is done by default)
 -> Compiz can run without the composite and opengl plugins and acts like a normal X11 window manager
 -> In this case the decoration plugin defaults to WINDOW_DECORATION_TYPE_WINDOW property and decorators must now create a window and paint into that

What needs to be done:
 -> The basic experience is there, although a few plugins should be created
 -> Transition needs a LOT of work (ugly reparenting
    things, etc, etc, often the decorators will not like the switch)


Work Items