This weekend at FOSDEM 2012 what Kristian Høgsberg is expected to say in Brussels will surprise many of you: Wayland 1.0 is gearing up for release as their first -- stable -- release. Wayland is supposed to be ready to take on the Linux desktop world.
While much progress has been made and I have been tracking it since its inception, I was quite surprised to hear that Wayland 1.0 is now approaching as their first release -- there haven't been any experimental releases up to this point but just the active Git repository.
With the 1.0 release of Wayland and Weston, the developers will be maintaining the Wayland core protocol and library APIs as stable. "We're getting ready to do a 1.0 release, which marks a point where the core Wayland protocol and library APIs are going to be stable. It used to be that you would have to compile a special KMS pageflip kernel, a custom mesa branch and my standalone, halfbaked EGL library. Today, everything is upstream and we're working on closing the gaps in toolkit support."
Kristian will be telling this to the world this weekend in Belgium along with, "So aside from the technical Wayland content, I'd also like to tell about our path to 1.0, get the message out that we're peeling off the 'EXPERIMENTAL' sticker and invite people to get involved."
For those that might not have read all of the Wayland articles on Phoronix up to this point, here's the founder's description of the project: "Wayland is a new window system architecture aiming to be a good fit for everything from embedded and mobile devices to full-blown desktop environments. Wayland builds on most of the graphics driver, desktop and UI infrastructure we have today, but distils out just the display server functionality we actually use today. The toolkits, device drivers, compositors and desktop environments we use today all play their parts, but the X server is essentially reduced to an awkward, 500kloc IPC mechanism."
In the interview, Kristian Høgsberg also talks how he has focused Wayland strictly around Linux APIs and other interfaces. Unlike the X11 Server that can run on a variety of operating systems thanks to abstracting many of the interfaces, using lots of platform-agnostic code, and handling lots of things "in-house", Kristian has focused Wayland to take best advantage of Linux.
It's certainly possible to port Wayland to other operating systems, but they'll have to provide the same level of infrastructure as Linux does. One of the things that went wrong with X was that we tried to pull too much of the OS into X so that we could run on every old platform out there. Or to put it more bluntly, bending over backwards for fringe platforms. There's a real cost to that; the code gets encrusted in #ifdefs, codepaths that never get tested and bad architecture decisions such as userspace PCI bus enumeration and writing your own dynamic linker.
I also find that the Linux kernel has a lot of cool features that can make applications faster, safer and simpler, and we often don't use those in the name of portability. There is an accept4 syscall that lets you accept a connection on a socket and sets O_CLOEXEC atomically. The epoll mechanism with timerfd and signalfd does most of what many complex userspace event loops do in many thousands of lines of code. We need to embrace all the new features the kernel offers and not insist on some outdated lowest common denominator.
With Wayland approaching a 1.0 stable state, it will be interesting to see how the Linux desktop changes and at what pace. The big question that comes up is what NVIDIA and AMD will do about supporting their binary graphics drivers for Wayland, since there is still the dependency upon kernel mode-setting (KMS) and in-kernel memory management. Right now only the open-source Linux drivers with KMS and DRI2 support are playing in Wayland's playground.