Project Mu aims to make it easier for developers to quickly create and frequently update the firmware of their devices, enabling devices to adopt a "Firmware as a Service (FaaS)" evolution model. Project Mu contains the same code leveraged in several of products, including the Microsoft Surface and Hyper-V, Microsoft says.
Project Mu is based on TianoCore’s edk2, a cross-platform firmware development environment for the Unified Extensible Firmware Interface (UEFI) and Platform Initialization (PI) specifications that Microsoft adopted for the Surface. In the process of developing FaaS for the Surface, Microsoft learned that TianoCore was not optimized to support rapid update cycles across multiple product lines. Thus, they set out to build Project Mu on top of TianoCore.
Project Mu contributes numerous UEFI features targeted at modern Windows based PCs. It also demonstrates a code structure and development process for efficiently building scalable and serviceable firmware.
According to Microsoft, Project Mu is highly modular and, although born for Windows PCs, it can be scaled up or down for whatever kind of device, including IoT, servers, and other form factors. New features brought by Project Mu include an on-screen keyboard, secure management of UEFI settings, high-performance boot, and others. Microsoft also took the chance to get rid of unnecessary legacy code, which should improve security by reducing the available attack surface.
Besides tuning TianoCore for modern devices, Microsoft also hopes Project Mu will foster an industry shift when it comes to shipping and maintaining UEFI products:
For too long the industry has built products using a "forking" model combined with copy/paste/rename and with each new product the maintenance burden grows to such a level that updates are near impossible due to cost and risk.
To make it possible for as many partners as possible to adopt the framework, Microsoft designed Project Mu so it can co-exist with any closed-source, proprietary assets that partners might require for their devices. This is made possible, Microsoft says, by Project Mu distributed build system and its modular design. Indeed, Project Mu is made of a number of different repositories, which are organized by function, partner, license, and dependencies:
-
Mu Basecore, providing the foundations of the project, including parts of the build system, the API layer addressing the UEFI and ACPI specs, etc.
-
Mu Common Plus, providing a number of optional packages on top of Mu Basecore.
-
Mu Tiano Plus, which includes modules that were originally sourced from TianoCore.
To get started with Project Mu, have a look at its GitHub repositories and make sure you check out the contributing guidelines.