2D experience fallback
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
- Status:
- Complete
- Approver:
- David Barth
- Priority:
- Essential
- Drafter:
- Didier Roche-Tolomelli
- Direction:
- Approved
- Assignee:
- Unity Team
- Definition:
- Approved
- Series goal:
- Accepted for natty
- Implementation:
- Implemented
- Milestone target:
- None
- Started by
- David Barth
- Completed by
- David Barth
Whiteboard
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)
Agenda
* 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-appearanc
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_
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)