Rewriting firware tools in rust, lowering the barrier with web tools
"If you cannot use a CLI, you probably have no business in doing firmware."
This used to be true. Firmware is a hard thing to get into. You need to get familiar with a lot of things before you can do something meaningful. At least part of this barrier is having to use a CLI.
Rust has many advantages. When people advocate for rust it's usually about it being memory safe, rust having a good tooling like package managers and linters/formatters, a strong compiler telling exactly what you messed up, ... This is all very true and also applies when making CLI tools that relate to firmware development, but this talk wants to highlight another advantage of rust.
Rust has a wasm target arch which makes it easy to support both a CLI as well as a web application in the same codebase. The advantage of a web application for beginners is substantial: no need to download and compile a tool, no need to copy a command of which you understand only half, just visit a website and be greeted with an intuitive UI.
The goal of this talk is to showcase how making a webui alongside a CLI is possible and give some examples.
Some examples
https://rflasher.9elements.com
https://rem100.9ements.com
https://github.com/ArthurHeymans/NORbert/pull/9 (PR for web tool)
I'm Arthur Heymans. I've always been quite interested in how computers work, however, this interest only fully developed much later. While studying physics and philosophy at the university, I became very interested in the concept of free software via the "about GNU" page in my editor of choice, Emacs. The GNU/Linux OS is very usable as free software these days, however, firmware and some low-level drivers tend to present a different, much more closed story. This led me to discover coreboot, which is a project that offers an alternative to closed-source firmware/BIOS. Fast forward a few years and I'm a regular contributor to coreboot and have learned a great deal from incredible people who were willing to invest time in reviewing my patches. I secured a job at 9elements, which professionally involved me in multiple open-source firmware projects.
These days I'm expanding my horizon with firmware related web applications, rust firmware and FPGA programming.