mus+ash
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.
Contact
Schedule/Milestone
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 |
Bug Tracking
-
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.
Links
- Intent to Implement on chromium-dev with high level tactical details
- Bugs
- Notes in //ash/README.md
- Googlers: See go/mustash and linked documents
Build Instructions
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.
Build chrome:
autoninja -C out/foo chrome
Run
out/foo/chrome --enable-features=Mash
By default, each service will run in its own process, including chrome and all of chrome's renderers.