Simplifying the use of free and upstream boot software with Origami-Paper
Nowadays, a significant number of devices are supported by free software projects related to hardware support, such as coreboot, U-Boot and ARM-Trusted-Firmware, sometimes without any proprietary blob left in the boot process. While each device and associated platform presents various specificities, they are abstracted away by generic software interfaces in upstream projects, where the source code for all the supported platforms and devices is merged in a single tree. However, the installation process for deploying the software on an actual device is not always straightforward, especially when starting with building the code. Although each project may provide (more or less comprehensive) instructions for producing a software image for the device, the required procedure for preparing and installing the produced images to the device can be rather technical and complex. These steps are generally specific to the platform or family of the device and often involve specific tools.
Origami-Paper is a project that aims to ease the development, preparation and installation of free software and logic configuration projects related to hardware support. Technically, it consists of a build system with a collection of scripts, which provide a consistent interface to build, prepare and install upstream free boot software projects for specific devices. They allow simplifying each action involved in the process, by bringing the focus away from the specifics of each project's build system and usage, including tools specific to the device, platform or family. By reducing the overhead of the process, using free boot software becomes more accessible to non-developers!
The Origami-Paper project will be presented through an overview of the rationale behind it, its development, its features and examples describing how to use it in practice. Additional areas of focus of the project will also be mentioned, such as automated deployment and providing information about the support status in free upstream projects related to hardware support for specific platforms and devices as well as documentation and both source and binary releases.