Launchpad entry: client-1404-unity8-on-desktop
Created: 25 November 2013
Contributors: Stephen M. Webb
Packages affected: unity8, qtubuntu, platform-api, others
This is the specification for the goal of prividing a Unity 8 Desktop Preview Session for evaluation and demonstration in the Ubuntu 14.04 (Trusty Tahr) timeline.
One of the longer-term Ubuntu goals is to provide a fully convergent cross-platform operating environment, from the mobile phone form factor through tablets, netbooks, notebooks, desktops, and workstations to the big screen television entertainment system experience. Today's, and tomorrow's, technology can provide hardware that transforms between one or more of those form factors and the aim is to provide a consistent, adaptive interface for all and any of those targets. There will be one single operating environment, Unity, build from a single code base and adaptable across multiple form factors and platforms.
Good things take time to develop properly. In the mean time, the existing Unity (version 7) desktop environment continues to be a flagship part of the Ubuntu experience and will be the default for Ubuntu 14.04 LTS, then next long-term support release of Ubuntu. The next generation of Unity (version 8) is available on Ubuntu Touch (mobile) images. To reach the goal of a converged Unity experience, we want to provide an alternative Unity 8 desktop session for evaluation and demonstration for Ubuntu 14.04 LTS, able to be installed in parallel with the standard Unity 7 Desktop session.
The purpose of this specification is to define the work required to achieve a Unity 8 Desktop Session that can be installed parallel to the default Unity 7 Desktop Session available by default in Ubuntu 14.04 LTS.
The intended audience of this specification is the developers, testers, and documenters involved with developing the software that will implement the Unity 8 Desktop Preview Session. This software is free software; any interested parties are welcome to study, evaluate, and comment on this specification.
This specification applies to a Unity8 Desktop Preview Session package, and possibly changes to associated packages.
Unity 8 is the future Ubuntu interface for all form factors. It is intended to be a desktop shell, just like the existing Unity 7 desktop shell. This product, the Unity 8 Desktop Preview Session, is a transitional piece of technology that will allow early adopters, developers, and reviewers to choose to run a prerelease of the Unity 8 Desktop shell as a login-time alternative session in addition to their default Unity 7 Desktop Shell or other desktop shells installed on their system.
The Unity 8 Desktop Preview Session will function much as any other Ubuntu login session, within the limits of functionality available in Unity8 itself. At the very least, the following session functions shall be provided.
- The Unity 8 Desktop Session shall run as the authenticated user with all privileges and restrictions associated with that user.
The session will have access to the authenticated user's home directory.
- The available input devices (keyboard, pointing device, touchscreen) shall be available for shell and application use.
Output devices should work. It is unclear what level of support for multiple monitors, projectors, or hot pluggable devices will be available in the Unity 8 Desktop Preview Session.
A minimal subset (to be determined) of indicators shall be available, including a means for the user to terminate the session (log out).
The Unity 8 Desktop Preview Session will not be required to provide the following functions.
- Window management.
- Remote sessions.
- Multiple simultaneous login sessions.
The expected users of the Ubuntu 14.04 Unity 8 Desktop Preview Session are technically-savvy early adopters eager to get a glimpse of the future converged desktop, Unity 8 app developers who want to verify their app works on platforms other than the phone, and hipster individual who want to be able to say say thet were running Unity 8 before it was officially released for the desktop.
The Unity 9 Desktop Preview Session runs on Mir, which is only targeted to run on video display hardware with Free drivers in the Ubuntu 14.04 LTS timeframe.
LightDM is the program used (usually at login) to select the type of session to run. It currently supports many different customizable X11-based sessions, including Unity7. It has the ability to support a Mir system compositor if the unity-system-compositor package is installed, which means all of the X11-based sessions will run using XMir. This will allow an X11-based Unity8 session to be run.
Running a Mir-based Unity8 requires either the integrated Mir server in Unity8 work on top of the integrated mir server in unity-system-compositor (the Mir-on-Mir scenario) or else LightDM needs to be modified to support session-based seats, that is to say the display server belongs to the session rather than the system globally.
Currently, neither scenario is working. The two alternative scenarios include the following.
Mir-on-Mir support in Mesa: Mir platform support in Mesa EGL is unimplemented for any but Android platforms. This woud need to be developed by an expert in Mesa and Mir internals.
session-based seats in LightDM: The LightDM program would need to be heavily modified to remove its assumption that all seats will use the same display server.
The existing Unity7 session uses session-mode Upstart as session manager. Unfortunately, this is done through the X11 startup process spawned by LightDM and involves a number of third-party Upstart and X11 configuration scripts. At the very least, the LightDM wrapper scripts and some of the Upstart configuration files need to be modified to support the alternative display server on the desktop.
Currently identified work tasks include the following.
- modify the LightDM wrapper-script to identify the display server and perform alternative actions
- identify which Upstart session scripts need to be modified
- patch third-party Upstart session scripts where necessary
- modify or provide other upstream Upstart scripts as required
See this merge proposal for a mod to Mir that implements a nested Mir-on-Mir server on the Desktop.
Apparently this project simply needs repackaging with a non-Android configuration. See bug #1246851.
The existing platform-api project builds exclusively for Android-based targets and is effectively a wrapper around libhybris. It provides a NULL implementation for a number of key components (in other words, the factory functions return NULL pointers that immediate get dereferenced in client code and Unity8 segfaults).
Since many key components (accelerometers, cameras, and so on) just do not exist in a typical desktop, the entire stack should handle this situation far more gracefully. The platform-api libraries should return a valid but functionless object if the hardware is not available.
Key core Ubuntu Touch applications need to be installable and runnable under the desktop Unity8 session (since X11 will not be available). The same applications will also be available under the Unity7 session and have also been targeted for interaction polish.
Targeted Core Ubuntu Touch Applications
Targeted Interaction Refinements
- mouse and keyboard interactions in platform-sdk
- menu changes for desktop form factor
- dash behaviour