Canonical announced a new display server – Mir, and it is good for the consumer

Canonical have last week announced that they are developing their own display server to replace the ubiquitous X display server, a project called Mir, and the shit storm has begun anew(as what happened after Unity, Ubuntu Touch and other Canonical announcements). Contrary to popular belief, I think that this happening is a good thing for the Linux community in whole.

There are many reasons why I think this is good, most are not really concrete technical things, but I can list a few:

  • X11 is showing its age. There were some internal efforts to modernize it (e.g. kdrive which have mostly merged into the existing code) and some external efforts to replace it (Fresco and Wayland to name a few), but none have made much of an impact on the current state of Linux display.
  • From first look, Mir is a modern code base written in C++11 and Boost, which I like.
  • Diversity is generally a good thing.

If we go over the last point in a bit more depth, I think we can see why Mir would generally be a good thing for Linux developers and users and why people should stop being negative.

Is Mir the anti-Wayland?

Wayland is a much a lauded effort to replace the X display server with something modern and new, and was accepted with great enthusiasm but has yet to deliver something a Linux user (not a developer) can use. As is the nature of open-source hobbyist projects, these things take time1. Canonical initially announced plans to use Wayland as the future display server for Ubuntu2, but the latest announcement have scrapped these plans.

The original ambitious Wayland plan for Ubuntu (to be released for 12.10, which didn’t happen) would have been a great boost to Wayland development and would have seen its first use in a real world setting. We can only assume that part of the reasoning behind the Mir plans is the failure of Canonical to deliver on that promise. But does Canonical choosing to write their own display server really a bad thing for Wayland? I believe not – Both Wayland and Mir are based on the same EGL API3. EGL is already heavily used in the mobile internet devices scene and Android’s display server, “Surface Flinger” is based on that.

Which is quite likely the reason why Mir was created in the first place – if you read Mir as just a “not Wayland” you will be missing the message that Canonical have been trying to deliver in the last few months – integration across all devices. The same code base should run on your mobile internet device, your desktop computer and your server. If Wayland is not up to that then Canonical should take what they can and create something that solves their problem – neatly and efficiently (and not trying to run the server on a mobile device – something that it was never designed to do and with the amount of cruft it gathered in almost 30 years this code base was around, probably can’t be done4 ).

Who needs EGL?

The way I see it, EGL is the right thing and putting more effort behind getting it seriously adopted by graphics drivers on the desktop (in the mobile space everyone is already doing EGL) will be good for everyone. In that regard Wayland and Mir have a lot in common and work on both will advance the state of the technology for both, as well as for future display servers which will have a lower entry bar, as explains Mir developer Christopher Rogers.

The Mesa OpenGL software implementation already supports EGL 1.4, which is mostly the work of , the open source Intel display driver apparently has some support for it5, and AMD and Nvidia are reportedly also working on full EGL support for their drivers – if not for Wayland/Mir, then for Android for sure.

Diversity is a good thing

With a small but full-time dedicated group of developers working on Mir, with modern development technologies, and with many giant shoulders to stand on, I do believe Canonical can delivery a new display server for a near-future release of Ubuntu (not the next one, but in 2014? sure). What it will mean for the Linux community and industry? I believe it essentially strengthen the market – like the GNOME 3 desktop split that pitted GNOME shell vs. Unity and eventually left us with 4 desktop environments based on GTK+ (Shell, Unity, Cinnamon and MATE) – each with its own benefits, so will the display server brouhaha leave us with several useful contenders for users and integrators to pick and choose.

If developers will be smart (and not get offended by other developers doing their own thing instead of everyone eating the same dog food) and cooperate on standard APIs and interoperability, the result will be a more robust market with more and better software.

Related Posts

  1. Though 5 years is a long time even in these terms. But still,  a display server is a complicated beast []
  2. as did Fedora []
  3. which is the current native windowing system API for OpenGL, instead of the X-Windows specific GLX []
  4. I know that’s what Tizen tries to do – which might explain why you don’t see many Tizen devices around []
  5. The Intel graphics driver actually uses Mesa for its 3D implementation []

4 Responses to “Canonical announced a new display server – Mir, and it is good for the consumer”

  1. ik_5:
    Fatal error: Uncaught Error: Call to undefined function comment_dir() in /vhosts/coil/geek/public_html/wp-content/themes/modern-bluish/single-comment2.php:17 Stack trace: #0 /vhosts/coil/geek/public_html/wp-content/themes/modern-bluish/functions.php(8): include() #1 /vhosts/coil/geek/public_html/wp-includes/class-walker-comment.php(179): themed_comment() #2 /vhosts/coil/geek/public_html/wp-includes/class-wp-walker.php(144): Walker_Comment->start_el() #3 /vhosts/coil/geek/public_html/wp-includes/class-walker-comment.php(139): Walker->display_element() #4 /vhosts/coil/geek/public_html/wp-includes/class-wp-walker.php(387): Walker_Comment->display_element() #5 /vhosts/coil/geek/public_html/wp-includes/comment-template.php(2229): Walker->paged_walk() #6 /vhosts/coil/geek/public_html/wp-content/themes/modern-bluish/comments.php(26): wp_list_comments() #7 /vhosts/coil/geek/public_html/wp-includes/comment-template.php(1539): require('/vhosts/coil/ge...') #8 /vhosts/coil/geek/public_html/wp-content/themes/modern-bluish/single.php( in /vhosts/coil/geek/public_html/wp-content/themes/modern-bluish/single-comment2.php on line 17