Aura and Ash in Chrome OS Explained


I had this question, I know many others who asked the same question, here on the Blog and on Google Plus, what are these Aura and Ash in Chrome OS and how are they related or different from each other. Ben Goodger from Google explained these two concepts on the Chromium dev group the other day. I am posting it here for everyone.

If you don’t touch code in src/chrome you can probably ignore this.

chromebook  Aura and Ash in Chrome OS Explained

*Aura vs. Ash*

Aura is evolving to encompass more than just the window manager/shell
environment work for ChromeOS. I’m going to attempt to spell out some of
the differences here so that it’s clear what defines to use in code and to
help everyone get a better understanding.

*Aura *is the hardware accelerated UI framework built on CC.[1]
*Ash (the Aura SHell[2])* is the ChromeOS window manager, desktop
environment etc. Ash depends on Aura and Views. Ash is built with use_ash=1
in your GYP_DEFINES, which #defines USE_ASH. This also implies USE_AURA.

At the time of writing, it’s not really possible to have a build of Chrome
using Aura without Ash, since there’s no one to set up the container that
hosts the environment. *This is changing.* Elliot is working on
self-hosting Aura in Views. What this means is there’ll be a Chrome build
on Linux that can be enabled by specifying use_aura=1 in your GYP_DEFINES,
which #defines USE_AURA (not USE_ASH).

Are you confused yet?

Think of it this way. Aura is the accelerated window framework. We built a
window manager (ash) on top of it for ChromeOS. We are conducting initial
explorations to determine how we can use this underlying framework for UI
in non-ChromeOS. If we can get it to work, it means we’ll be able to do
some of the cool things we’re able to do on ChromeOS on other platforms.

*What does this mean for the developer?*

Not much, except that many of the places we use #if defined(USE_AURA) in
src/chrome were wrong, and Elliot’s had to fix them. If you’re doing
something ChromeOS-specific, it’s probable that unless it reflects an Aura
framework change, it needs to be #if defined(USE_ASH) instead.

*Any other dependency things I should be aware of?*

James Cook produced a nice diagram here showing the basic dependencies:

http://dev.chromium.org/developers/design-documents/aura/aura-and-she… 

But also note that Ash is a pretty high level thing (with user features
etc) and so src/content is also not allowed to know about it, though
src/content is allowed to know about Aura.

-Ben

[1] We actually use a small shim API between us and CC, which lives in
src/ui/gfx/compositor right now. ui::Layer wraps a WebLayer.
[2] Yes I know there’s a Unix shell called ash. Sorry. It was either this,
or AuraProxyStubImplHostDelegateFactoryStubProxyViewImpl.

Source : Chromium Dev

1 Comment

Add yours →

  1. Simon Strandman

    01/05/2012 — 3:39 pm

    Does this mean chrome OS wont be using X11 anymore?

Comments are closed.