Not designed reviewed
These are raw developer thoughts and mockups haven't been generally discussed yet.
Some designer feedback added at the end, but the page has not been updated with it yet.
GNOME 3 and the GNOME 3 shell is a new and better experience for users. We want it to be the face of GNOME - the brand experience for GNOME. We want reviewers to try the new UI out and not review GNOME 3 as a dual experience. Unfortunately, GNOME 3 does require graphics and hardware capabilities that are not going to be present on every machine. We also can't escape the fact that some people will strongly want to stay with GNOME 2 even when their hardware is capable of it. The hardware might be marginal and run GNOME 3 but not smoothly. Some users will just have a strong wish to avoid changing what they've gotten used to. Site administrators may want to avoid retraining users. So we need to provide both ways to detect systems where GNOME 3 won't work and fall back to GNOME 2 and to let the user select between GNOME 2 and GNOME 3.
In the above, I've described "falling back to GNOME 2" or "selecting between GNOME 2 and GNOME 3", but what we're really talking about is selecting between GNOME 3 with the GNOME 3 shell, and a combination of the GNOME 3 libraries and many GNOME 3 components with versions of the GNOME 2 shell components: principally gnome-panel, metacity, notification-daemon. I think using the terms "GNOME 2" and "GNOME 3" is going to be the simplest way to identify the choice - even a user who has absolutely no idea what GNOME 2 is may be able to figure out that "GNOME 2" is the older stuff that they are used to and "GNOME 3" is the newer and better stuff that they should be using if it works for them. Perhaps some other terminology like "Default Desktop" vs. "Classic Desktop" would be better, but I think it's just using simple looking terms to obscure what is going to be a confusing situation in any case. (The very idea that a computer might have two different modes where basic components are in different places and act differently is inherently going to be hard for users.)
In the user interface, I'm proposing to use the term "User Experience" to refer to the GNOME 2 vs. GNOME 3 choice.
There are a number of different reasons why a system might be incompatible with GNOME 3:
- The hardware might be too old to support the GL extensions and capabilities that we need.
- The hardware might be technically capable, but unable to provide sufficient performance
- OpenGL might only be supported for certain resolutions - it's typical for older hardware to only support a rendering area of 2048x2048 or 2560x2560 for OpenGL.
- The hardware might be too new to be supported with the installed drivers. (There might exist drivers that work but can't be distributed and aren't installed by default.)
In many cases we should be able to figure out whether the hardware is capable or not automatically. We can look at OpenGL renderer string and see whether we have hardware or software rendering. We can examine the size limits on textures and fbo's (GL_MAX_RENDERBUFFER_SIZE_EXT) and see if they are smaller than the current resolution. In other cases, especially for the case of hardware that is just too slow, we'll need to rely on some sort of blacklist mechanism. (This may be as simple as an installed file with a list of regular expressions that are matched against the OpenGL renderer string.
Selecting the user experience
Because there are legitimate reasons that a user might want or need GNOME 2, we need to provide a user interface to do that. A System Settings panel to do that might look like:
The selection is instant apply, and has "Click here if you can see this" type configuration to avoid leaving the user in a completely broken state. If GNOME 3 can't be run on the system using our automatic detection logic, then it would look like:
(mockup has wrong option selected - GNOME 2 should be selected.) If GNOME 2 isn't installed on the system, then it would look like:
The "Learn more about GNOME 3" link would take the user to user-centric page on www.gnome.org that described what's new and great about GNOME 3 and also contained some information about fallback to GNOME 2
System is not GNOME 3 capable
If the system is not capable of running GNOME 3 but is configured to run GNOME 3, the user will see:
Clicking OK switches to GNOME 2 and logs the user in. QUESTION: does it make sense to open System Settings to the User Experience pane after login to give the user some idea of what option was changed and so they get the "Learn more about GNOME 3" link?
System is not GNOME 3 capable because of multihead
Multiple monitors connected may take a system past the limits of their graphics card. We don't want connecting a projector to a computer to change the user experience, so what we should do is force clone mode in this case on login or monitor connection, and if the user goes to the Monitors system settings panel they would see something like:
If there is a single monitor connected that exceeds the limits of the graphics card, then we would act as if the system wasn't GNOME capable at all.
System becomes GNOME 3 capable
After we've switched to GNOME 2 because the system can't support it, the user might install new graphics drivers or upgrade their graphics card. If the system is in GNOME 2 mode because we had to fall back, the first time the user logs in and the system is GNOME 3 capable, we should show the user:
The "Select User Experience" button logs in to GNOME 2 and shows the "User Experience" pane in System Settings. QUESTION: better to have a "Switch to GNOME 3" button?
Some care is necessary for NFS homedirs - we don't want to continually bug the user with questions if they are using two systems with different capabilities and the same homedir. But on the other hand, we do want to offer the user the choice if they save their homedir but reinstall the rest of the system or move their homedir to a new computer. Possibly we should just only ever show this dialog once for a user and never show it again.
It's not unlikely that some hardware will be broken in such a way that that our checks pass, but the system crashes, freezes, or runs but without visible output to the user. We probably can detect this case by noticing that in the last session, gnome-session was started, gnome-shell was started, but the user never launched any applications or explicitly chose to log out of the system or shut the system down cleanly. (False positives are possible if the user logs in then immediately yanks the power cord, but probably not that common.)
In that case, we might want to show a dialog like:
QUESTION: Kill the quotes here or use them in the other dialogs?
(Had a lot of trouble wording this dialog, and we can't offer a way for the user to get more information easily since we aren't yet logged in to the session and can't run a web browser. Unless we ship some sort of mini-show-a-local-web-page-with-webkit thing we can use here.)
Most of the mockups above were created using the following GtkBuilder file and python script. It takes a numeric argument 1-6 to select which mockup to show:
[AlexanderLarsson] I've talked to jimmac a bit about this design and come up with a few changes:
- Don't show dialogs before logging in, just log in to Gnome 2 and then display a dialog
New mockups for these dialogs: http://gitorious.org/gnome-design/gnome-design/blobs/master/mockups/session/fallback.png
- Use the word "Legacy" instead of Gnome 2 to avoid confusion with the actual Gnome 2 (with a different feature set) and to make it less of a decision that has to be made (gnome 3 vs gnome 2).