mus+ash (pronounced "mustash") is a project to separate the window management and shell functionality of ash from the chrome browser process. The benefit is performance isolation for system components outside of the browser, and a sharper line between what components are considered part of the ChromeOS UX and what are part of the browser. mus+ash is built on top of Mandoline UI Service ("Mus") and the Ash system UI and window manager.
|Milestone||Description||Crbug Label||Target Date|
|Window Service 2||The window service runs as part of the ash process, instead of in a separate process. This allows us to write small apps the use the window service mojo APIs, as preparation for making the very large chrome browser use those APIs..||Proj-Mash-WS2||Q2/3 2018|
|Keyboard Shortcut Viewer||Migrating KSV into a separate app using the window service mojo APIs from above.||Proj-Mash-KSV||Q3 2018 (M69 Beta, M70 Stable)|
|Single Process Mash||Ash header refactoring to support making single process Mash work. Allows chrome browser to use the window service APIs, but still has ash and browser in a single process. This lets us exercise very complex window APIs without having to finish all the ash / browser decoupling.||Proj-Mash-SingleProcess||Q4 2018|
|Multi Process Mash||Ash header refactoring to support making ash and the browser run in separate processes. This is the end goal of the mustash project.||Proj-Mash-MultiProcess||Q2/Q3 2019|
Label Name Use Proj-Mash Label for tracking all Mustash related issues (bugs, features) Proj-Mash-WS2 Tracking Window Service 2 work Proj-Mash-KSV Tracking KSV migration Proj-Mash-SingleProcess Tracking ash refactoring support mash in single process Proj-Mash-MultiProcess Tracking ash refactoring support mash in multi process Proj-Mash-Cleanup Label for tracking clean up tasks.
- Intent to Implement on chromium-dev with high level tactical details
- Notes in //ash/README.md
- Googlers: See go/mustash and linked documents
mus+ash builds only for Chrome OS (either for device or on Linux with target_os="chromeos"). It requires aura and toolkit_views. There are no special build flags other than target_os.
autoninja -C out/foo chrome
By default, each service will run in its own process, including chrome and all of chrome's renderers.