Wayland

*** Please note that we are no longer considering Wayland, but instead we will be moving to Mir. ***

Wayland and Ubuntu

What is Wayland?

Wayland is a new protocol that enables 3D compositors to be used as primary display servers, instead of running the 3D compositor as an extension under the (2D) X.org display server.

Or, in layman's terms, it assumes you're using a 3D desktop from the start, instead of bolting on 3D capabilities to an 2D framework.

See the Wayland website for more details.

What is the official word on Ubuntu moving to Wayland?

See Mark Shuttleworth's blog post, Unity on Wayland.

Is Ubuntu dropping X?

No, X will be retained for backwards compatibility. It will be run inside the Wayland/Unity instance when needed.

When will Wayland become the default on Ubuntu?

This has not been decided. This decision will be made at a future Ubuntu Developer Summit (UDS).

It's possible we'll roll it out for some limited scope initially, since it may take time before it's adequately supported across a broad enough range of hardware.

Are Wayland packages available in the Ubuntu archive?

From natty and beyond, Wayland is available as a package in universe.

Also, Bryce Harrington is providing them in a PPA for early testers:

As this is very new, there is no support provided. Patches are accepted though.

These packages are confirmed to work only on Intel graphics gm45. Other 9xx gpus might work. -nouveau and -ati are untested and probably won't work.

How do I build Wayland manually on Ubuntu?

You need to install the following packages (tested with Ubuntu 12.10):

sudo apt-get install build-essential libtool makedepend xutils-dev bison flex x11-dev libx11-dev glproto-dev libglproto-dev x11proto-gl-dev x11proto-dri2-dev libxext-dev libxdamage-dev libxdamage-dev libxfixes-dev libx11-xcb-dev libxcb-glx0-dev libxcb-dri2-0-dev libudev-dev libxcb-xfixes0-dev llvm-dev

Then, follow the instructions at Compiling Wayland.

What is the reason for making Wayland? Why does X have to be replaced?

These days we only use a fraction of what X was originally designed to do. X11, by definition, is a big protocol of rendering primitives and font management and lots of other stuff. Most of that stuff we don't really need or use in modern desktops.

At the same time, with today's 3D-centric desktops, toolkits, and window managers, the compositor is a critically important piece and in the future will likely become a hard requirement, yet in X11 it is limited to being merely an out-of-process extension to the X server.

Thus Wayland, from a high-level view, is about making the compositor the central process and the X server the optional add-on you can activate for legacy X applications.

Will video drivers need to be rewritten for Wayland?

No. Most of the open source drivers have been undergoing rewrites in recent years to support KMS, GEM, and other modern graphics technologies which move more of the graphical functionality into the Linux kernel. Wayland leverages (and requires) these technologies; indeed the whole reason Wayland can exist is because of these changes. But those changes were underway for X in general. In the future Wayland and X will both be using the same graphics drivers.

What about the graphics drivers still in X?

Graphics drivers such as Intel, Nouveau, and Radeon include both kernel drivers and an X driver. With Wayland we only need the kernel drivers. Under the KMS/DRM/GEM architecture, that's where most of the real functionality is, such as modesetting, memory management, and graphics rendering. The remaining bits on the X side of things are used just to interface with the X server and aren't needed by Wayland.

Can Wayland be used with the closed source proprietary graphics drivers?

No, not at this time. fglrx, nvidia, psb, and other closed source drivers are developed externally to X.org and externally to Ubuntu. As far as we know, work to update them to conform to the new KMS/GEM/etc. architecture is not planned (at least, not publicly) and would need to be done before they could be used under Wayland.

According to Kristian closed drivers need 2 things:

  • A way to set the graphics mode (like KMS, but it could also be a standalone library)
  • A way to share video memory buffers (for example an EGLImage) between processes

psb already is capable of mode setting. I (adamw) don't know if it can share buffers.

Where does Compiz fit in with this new architecture?

Compiz will be the display server, using the Wayland protocol to talk to the clients. Ubuntu's Unity would be a compiz plug-in.

In this architecture, Compiz would communicate with the kernel video drivers using the EGL+GLES2 and evdev protocols. So for getting "Wayland support" in Compiz, it means enabling Compiz to communicate with these protocols.

On the other side, Compiz would communicate with the client applications via libwayland-server

What other compositors are there besides Compiz?

In addition to Compiz, there is Gnome Shell, KWin, and Meego's mcompositor.

What about network transparency?

The X11 protocol was designed around running graphical apps across the network. While some people use this feature, it's far from common. Wayland drops this requirement as a way to greatly simplify its architecture.

There are other ways to share graphical sessions and applications across a network. Wayland also permits running an X11 server inside itself, so you also always have the option of just running X11 clients on top of the server.

Another possible idea is discussed here: NetworkTransparency.

Will toolkits (Qt, GTK+, etc.) need to be ported to work on Wayland?

Yes. This is an area of heavy development currently. The toolkits must be ported as one of the pre-requisites to getting existing applications running on Wayland. Much progress has been made on Qt, GTK+, Clutter, SDL, and EFL.

Will window managers need to be rewritten for Wayland?

Yes. Canonical is investing in making Compiz Wayland-enabled and running Unity on top. It is expected that other window managers will be written for Wayland, and perhaps existing WMs will be ported to it in time, as well.

Will applications need to be rewritten or modified to work on Wayland?

Yes, due to the technical design differences of the Wayland protocol compared with X11, changes need to be made to client applications. In some cases, a simple recompilation using Wayland-enabled GTK+/Qt will be enough; in other cases minor changes are needed; in a few cases where extensive X11 functionality is used directly in the app, it will necessitate more extensive porting work.

I have more questions not answered here

You might also like this FAQ: https://groups.google.com/forum/?fromgroups#!forum/wayland-display-server

In case you still have questions after that, this is a wiki, so add your questions above this one.

Wayland (last edited 2013-08-05 06:25:46 by jose)