I’ve talked a bit about why Wayland is cool. I really think that this architecture is where the graphics environment needs to go. It does have some hurdles to overcome, chiefly the sheer volume of applications target towards X11. Luckily, Wayland is designed cleverly enough that supporting an X11 application on a Wayland-based system should be easy enough!
As I explained here Wayland abstracts a lot of X concepts, which makes them more flexible. It not does however, use the X protocol in any way, breaking API compatibility for all X clients. Wayland has a way to work around this though, so that you probably won’t even know the difference when the first Wayland distro (maybe even Ubuntu) is released!
This backwards incompatibility is not an insurmountable barrier. Say a program was written in an X11 environment. Likely this program was written using one of the common Linux graphics toolkits, GTK or Qt. As it is, it won’t run on Wayland directly. However, if we rewrite GTK’s or Qt’s library to use Wayland as its backend, the application won’t even have to be recompiled to be a native Wayland client! This makes it really easy for most application developers. Most of them won’t even care what backend their toolkit (GTK/Qt/etc) is using, and it will be a seamless transition.
Ideally, a Wayland based system would be 100% X11-free. However, due to various little problems, this probably won’t be achieved in practice for a few years yet to come. Luckily, its very easy to support an application that needs X11. You simply run an X11 server as a client of Wayland. This “legacy” way of running programs would limit the application being ran through the X11 server to what we have as a desktop app today, but it could still run the way it used to. As a matter of fact, the first Wayland-based distro will likely just run everything in this “legacy-X11” manner until more and more toolkits and applications get running on top of Wayland natively.
So in moving from X to wayland, there are two ways to tackle the problem, and these will make it easy to transition to this cool new graphics environment:
- Rewrite the toolkit backends to use Wayland instead of X. Most programs can then just run right on top of Wayland
- Support X11 “legacy” programs by using an X11 server as a client of Wayland.
This gives us an easy, and reasonable way to move from X. With support of companies like Canonical and Novell, I’d bet this transition moves forward well!