Mir release 0.28

Mir 0.28

We are pleased to announce that Mir 0.28 has been released and is available in Ubuntu 17.10 (Artful).

As the content (and even the name) of this release has changed over the time we’ve been working towards it now is probably a good time to reflect on what it is, and what it isn’t after all.

What is in Mir 0.28?

There is now a stable server ABI

This simplifies the use of “Mir snaps” making it possible to release new library versions without breaking servers.

One of the barriers to the adoption of Mir has been the potential for Mir releases to break downstream projects that depend on a stable ABI. This is provided by libmiral, which is now part of Mir.

The Yunit project which uses Mir as part of its graphics stack has already started migrating code to use libmiral for this reason.

The start of Wayland support

The desktop community has adopted Wayland as the client-server protocol of choice for replacing X11. This is already supported by several server implementations (Weston, Kwin and Mutter are the best known). By providing Wayland support we will make Mir servers compatible with the various toolkits and libraries that already have Wayland backends.

Our MVP goal for Mir 0.28 has been to support a Wayland client with a single fullscreen surface. We have slightly exceeded this goal in 0.28 as you can see from this short video:

https://www.youtube.com/watch?v=sfcZrpkc2NU

We will continue to expand on this Wayland support in future releases.

The MirAL shells are part of Mir

The miral-kiosk shell is used by the mir-kiosk-snap to provide graphics support on UbuntuCore. This release includes a number of improvements to miral-kiosk based on feedback from potential users.

The miral-shell is now the canonical example of writing a Mir server. We’ve dropped several older examples that used other APIs (and reworked mir_demo_server to fit the new server APIs).

There is a (currently unstable) API for “graphics platform” plugins

We had planned to stabilize the graphics platform API and ABI before publishing it but we had to change that plan. Canonical no longer has the infrastructure to test and maintain the “android platform”. However there is was interest from UBports both in continuing to support the “android platform” and for developing a “Wayland platform”.

What is NOT in Mir 0.28?

We have not upstreamed Mesa distro patches

These patches support “Mir EGL” which forms part of the Mir client API. With the adoption of Wayland (and Wayland EGL) it looks likely that these will not have a long term future and upstreaming a wasted effort.

This should also become less of an issue as it only affects EGL clients using the legacy Mir client APIs. Software rendering, Xmir and Xwayland clients will work without these patches.

4 Likes

so i have this silly game in SDL2, i think i’ve enabled all them flags, wayland, mir, x11 video etc… them game will just run now on mirserver, right? at least with the current level of support, if i understand correctly this is like initial wayland support in mirserver and such.

Yup, Ive been testing wayland clients on miral for a few weeks now!

Before running miral you’ll need to make sure XDG_RUNTIME_DIR is set which is required to be set for the wayland socket to be created. Most distros will have this set by default!

  1. A running miral server which is at lease 0.28 or higher as you’ll need to find the wayland socket that is created by the server.
  2. Point your SDL2 application to SDL_VIDEODRIVER=wayland and WAYLAND_DISPLAY=<socket_name>

Here is an example of an SDL2 wayland client running on a miral server!
https://i.imgur.com/HGXnSqs.png

If you have any questions or get stuck on anything feel free to ask away!

(I know it’s different when debugging this stuff, but…)

If users start a Mir server the recommended way (i.e. using the miral-app or miral-desktop scripts), then $WAYLAND_DISPLAY will be set correctly for them.

Yup, its really easy to run your application once you’ve installed mir-demos:

miral-app -kiosk -launcher /path/to/your/app

An example:

miral-app -kiosk -launcher mir_demo_client_eglplasma