2017 was a wild year for Mir: when Canonical withdrew from a major downstream project (Unity8) the future of Mir seemed uncertain. And, indeed, we needed to re-organize and re-plan.
But at the end of 2017, Mir is doing well: We’ve a new website, released a raft of new functionality, and the last two releases of Mir have been made available on both Ubuntu and Fedora.
Unity8 is dead, long live Unity8!
The community outside of Canonical has picked up Unity8 and other projects for UBports. UBports started the year focused on porting Canonical Ubuntu Touch phone software to other devices, but when Canonical stepped down they stepped up to the challenge and are continuing the project by themselves.
This was no easy thing as there was no organized handover of the code but they were up to the challenge and are doing great! Not only have they just released their third “Over the Air” update, they have been working to move the codebase to Ubuntu 16.04LTS in 2018.
What we’ve done in 2017
There used to be no central place to find information on Mir, it was spread across various Canonical wikis, launchpad, and blogs.
We now have https://mir-server.io/ with the important information and links to the Mir code. Mir code is no longer hosted on launchpad but it is now on GitHub: https://github.com/MirServer/mir
Mir Release PPA
To make the latest version of Mir easily available for all supported versions of Ubuntu we’ve created “Release”. “Release Candidate” and “Latest Integration” PPAs: New Mir PPAs for Ubuntu.
Mir was designed to support “convergence” - allowing the shell and the clients to co-operate to deliver a seamless experience across a range of form factors and input capabilities.
Before 2017 we concentrated mostly on the phone and tablet. But this year we delivered the Mir functionality needed for a full “desktop environment”.
As mentioned above Canonical is no longer developing Unity8 but, if you are on Ubuntu 17.04 “Zesty” you can try the latest version of Mir with final Canonical version of Unity8: Ubuntu Unity 8 with Mir 0.29.0 test - YouTube.
Mir Abstraction Layer
At the end of 2016 I was largely concerned with addressing the ABI instability of libmirserver. We’ve now integrated the work done there into the Mir project so that shell developers have the stable libmiral ABI to work to.
Mir was always designed on the principle of separating different concerns so that they may be reimplement. One of these separable concerns was the communication with the client. Thanks to some pioneering work by @raof we are able to offer support for clients using Wayland protocols.
To support our (or anyone else’s) work supporting Wayland protocols we’ve started a compositor-independent Wayland Conformance Test Suite.
Not just Ubuntu
Mir was, until this year, restricted to Ubuntu because its EGL implementation required changes to Mesa. These were never upstreamed and so were carried as “distro patches”.
Since Mir now supports Wayland clients and Wayland’s EGL implementation has been upstreamed that restriction no longer applies. It should be possible to build and use Mir on other distributions.
So far, only Fedora provides Mir from its archives but we’re open to working with those that understand the packaging process for other distributions.
“Out of tree” Mir platforms
Mir’s architecture allows it to run on a number of “platforms”. At the beginning of the year we were supporting the following:
As Canonical are no longer working on android-based phones we didn’t have the resources to continue the support for “libhybris/android”. We worked with some of the UBports developers to enable “platform” plugins to be developed separately (“out of tree”) and they have found time to get the latest Mir working on their phones. They also have the beginnings of support for running on Wayland.
There are three parts to our plan for next year:
We will continue to extend our support for Wayland with further (extension) protocols so that we can offer apps the same features features needed for desktop and convergence as with the legacy libmirclient APIs.
While developing Unity8 we had to “hook in” to Mir in ways that were not easy. We don’t yet have replacement functionality exposed by our new libmiral API, but will build it.
Our use of Mir for Internet of Things deployment has identified a number of opportunities we are keen to exploit. (But I cannot talk about them yet.)
Last year I promised we would ship Mir 1.0 in 2017. But, although we shipped the functionality that we planned for that release we chose to call it “0.28”. Maybe next year…