Nux and Unity
Canonical is developing its next desktop user interface called Unity. Previously, Unity was based Mutter (Metacity+Clutter). Not long ago, it was decided that Unity will switch from Mutter to Compiz. There are many reasons the for this transition. Chief among them is graphics rendering performance. That doesn’t mean that Mutter or Clutter are not performant. It is just that for what we want to achieve, we need different tools.
For those who don’t know, Compiz is a window manager. Recently, it has been rewritten in C++ (from C). Compiz provides nice desktop effects and transitions. Also, its performance is good for our goal.
Compiz is one aspect of Unity. The other one is Nux. As I said before, Unity was built above the Clutter API. Clutter is a dynamic graphical user interface API with a nice animation framework. In the next version of Unity, Nux is replacing Clutter. Nux is the glue between Compiz and Unity. Nux was originally conceived as a standalone rendering framework but we extended it with what we call an “embeded mode”. The embeded context gives Nux the ability to plug itself into Compiz and allows Unity to be rendered.
Part of my job is to evaluate the graphics features that are required so Unity can run on as many systems as possible. For instance, Unity will support GPUs with OpenGL GLSL but also the old vertex and fragment programs. The list of graphics features required for Unity is still being defined, but we are getting close to having a baseline configuration that, we hope, covers a great number of systems.