Canonical Voices

What racarr's blog talks about


Current Projects!

Have been putting off writing another post! Some nonsense about trying to crystallize thoughts…Found myself with some extra time during the work day and thought I would take some time to write about what I am working on over the last few weeks!

Currently my two largest areas of focus are:

1. Client Side Input

2. Preparation for Unity Next (Inprocess EGL)

Client Side Input

Conceptually this is exactly what it sounds like: Deliver input events (key, touch) to Mir clients! Over the last few months we’ve been working to adapt an isolated version of the Android input stack in to the Mir code base. Now that all the building blocks are coming together under test some exciting things are starting to happen. Last week code landed to hook the input dispatch subsystem (previously only functioning as a server side event filter) to the shell focus model, i.e. Which application gets which key events?

This week I am working on a pending branch for the client side API for receiving input. With this in place you can run a mir server today and receive input all the way to clients. It was pretty exciting to see the first full stack key events pass acceptance test!

I spent some time too working on Qt Mir support to enable input. Prior to the stabilization of the Ubuntu touch code there qmir was created as it’s own QPA plugin and has served us well! However now the QtUbuntu plugin from the Phone and Tablet images has become a lot more mature and come to contain a lot of useful code! So I have made a version of QtUbuntu which works on top of Mir through abstracting the Ubuntu Platform API and providing a libmirclient-based implementation.

I’d still like to write a post describing Input in Mir end to end. I think there are a lot of interesting observations (mostly not made by me ;) ) at every level of the stack from androidinput, to Mir, to Qt, which change the problem from an un-tangleable FUD bubble to something as simple as it conceptually sounds: Read input events from physical devices and route them where needed :) . Hard to find the time for technical writing though.

Preparation for Unity Next

On a separate line I have been working to prepare Mir for the rendering needs of Unity next. Namely, Unity (using mirserver as a library) will wish to create surfaces and EGL contexts for rendering certain shell components (such as the Launcher or the Dash). It would be a shame (and get in the way of certain other requirements) for this to happen over the IPC protocol!

A pipeline has been in the works the last few weeks to enable this: The interface between mesa-egl-platform-mir-server was abstracted through a NativeDisplay interface with both client and server implementations. Now with pending work the same Mesa backend can work for in and out of process clients.

Using the same QtUbuntu backend mentioned before, I played around with an in-server implementation of the platform API to get a quick QML demo going up using in-server rendering!

The End

Quick! hit publish before I get caught in endless revisionism.


Read more


Community has been a big concept for me in 2013. Perhaps it reads as cliche, I’m not cynical! I feel as if I’m struck every day amazing power of community, the ability of individuals to organize, communicate, share and create something better. Continually amazed by the deepness and complexity to the connections between all of us and the spaces (physical or virtual!) we inhabit.

In this line, I’ve been thinking a lot about building more of an online home for myself! Why not start with a blog? A place to share my thoughts, to share what I learn, to share my problems and successes! I’m not sure what I want to become, but one step at a time!

I will admit I have put it off for some time, the usual anxiety!

However with the public announcement of Mir, which has been my focus at Canonical for many months, I can’t hold it in any more! Reputedly there is some controversy on the internet over Mir ;) . I have to say though, it’s a piece of software that I am immensely proud to be a part of creating. I think we have solved a lot of hard problems, and generated a lot of interesting thought. I want to share this, so we can all collaborate to find better solutions to the next problems (for Mir or otherwise).

Lately in work I have been working on enabling input for native Mir clients, and am looking forward to writing some posts on the important concepts and features throughout the Mir input stack.

Lately in life I am living in San Francisco and learning to love and share a little more every day.

Who knows what else I will write about? Perhaps the top 100 versions of Scarlet Begonias, perhaps life in San Francisco, perhaps just musings. I’m hoping to find my voice.

Read more