As recently announced by Mark Shuttleworth, Ubuntu will be moving towards using Wayland as its display manager.
What are biggest differences between X11 and Wayland? Why will Wayland make Ubuntu better?
You can see the Wayland architecture page to see how it differs in design. It's supposed to simplify the whole graphics stack by forcing everything through a standard GEM/DRM stack straight into the kernel and managing compositing itself.
Compare that to the X stack where you have bits and bobs all over the place. Some of the X mess has been through flexible design, some have been growing pains. All the compositors (Compiz/Metacity/Mutter/KWin/etc) have been added as an afterthought. They are, at their core, hacks to do what X should probably be doing itself. If things carry on expanding outwards like they have been, we'll get to a point where the project become unmaintainable.
All in all, when hardware support is there, it should make the whole stack more efficient and less painful to use in standard setups.
However there are a couple of issues that I haven't seen remedies for so far:
Either way, we're talking years (probably two to three IMO) before anything like this is ready for stable testing and even longer before you'd have to give up X (if Wayland was clearly better).
There are lots of differences between X and Wayland. Probably the biggest one from the graphics side is that Wayland doesn't do any drawing.
X has two drawing APIs. One of these is a part of the core X11 protocol, which is ancient, useless, and nobody uses. The other is the XRender extension which provides modern composite operations, among other things such as gradients. This is what Cairo, for example, uses. X also has font drawing APIs.
Wayland has no drawing APIs. A Wayland client gets a DRM buffer handle, which is basically a pointer to some graphics memory; Wayland doesn't know or care how the client draws to that buffer. In X terms this means that all applications get direct rendering - drawing requests don't need to go through the server.
The only rendering Wayland does is to copy the client's buffers onto the screen.
In terms of benefits, Wayland is a lot less complex than X which should make it easier to maintain - although some of this simplicity comes from pushing the complexity (eg: how to actually draw onto that buffer, network transparency) to other layers of the stack. By making clients responsible for all of their rendering the clients can be smarter about things things like double-buffering.
There are other benefits outside of graphics. It's much easier to sandbox applications, for example.
The major difference in my eyes is that Wayland is closer to the kernel than X-Server. With the move of graphics drivers from X to the kernel (known as kernel mode setting, KMS), Wayland plans to use this new functionality to replace X. You could expect to see the following...
Less of a footprint than X - because the display is handled by the kernel Wayland will not have to implement as much to become usable. This goes both ways as I suspect X forwarding (look at one screen on another PC) may go away with X.
KMS features: Being able to change screen resolution without restarting X server (though I believe this was fixed in X a while back, at least for nvidia), debug console on kernel panic for intel chipsets (moving to nouveau) if you're into that sort of thing.
Can anyone correct me on any of this if I'm wrong?
Simply put, the hope is for better graphics (less buggy, faster, easier to use). Even things might be possible one day that were not before. I personally think this will at least spice up things, as competition always does.
In addition to the above, the X Windowing Server was also not designed to be used like Ubuntu uses it. Like the name implies, it is mostly developed for server use, like remote desktop use or to link several thin clients to a single operating system.
Essentially, Wayland will drop the server support to make things faster. However, an X server can be run on top of Wayland for backward compatibility.
Edit Here is where I got the information: http://wayland.freedesktop.org/architecture.html
Client: Software using services provided by a server.
Server: 1) Software, or hardware running mainly server software, that listens for and acts on client requests. 2) Software that controls a resource eg. database, network access, filesystems, industrial machinery et al
In the X world: The Server controls the hardware (the monitor, keyboard, and mouse) so you would find this on a desktop machine. The client is an application that requests display, on the monitor, and asks to be notified of events (keypresses or mouse movement or clicks)
In a three (3) tier application:
1) The backend machine runs as server. Perhaps a database server that listens for requests and provides results, such as a SQL command and its result set.
2) The end user's machine (desktop?) runs an X-server providing display services and sending events to the client such as cursor movement commands. (This can be VERY chatty. Imagine moving your mouse pointer from one side of your screen to the other)
3) The application machine is the client for both servers, taking keypress and mouse click events determining hat box was typed into or which button was clicked and translating that into action requests for the backend. Sending the backend requests and getting the results and then translating THAT into changes to the display changes for the X-server
Sorry for the long post but the whole X-server on the client machine bothers me. The machine is NOT the client the software is!!!
In a simplified setup the X-server and the applicatiion are run on the same machine with their communication all local it is easy to think of the backend as "the server". Try to avoid this type of error. If you run all three tiers on the same machine is your desktop the server and the client? No it is still the desktop and the software is still clients and servers.