How NixOS Is Enabling Edge and IoT Projects
For edge deployments where there is a high amount of…
Open source developers working with Arm have to go down a lot of rabbit holes, including the intricate (and often unforeseen) dependencies and interdependencies that can pop up during a build.
With build systems, the thing you do first is in almost every system is compute dependency analysis. Then once you have some understanding of all there is to do, you decide what tasks to perform in parallel — especially on multi-core systems.
The problem is, what to do first in a complex environment is not always obvious. What you need for success is an evolved approach — one that doesn’t depend on proof of concept (POC), but that focuses on repeatable success and scalability.
Once things work, if you want them to rinse and repeat, then you enter into a world of CI/CD. Here, not only does the project have to work during POC, but it also has to continue to work over time for your architecture.
Having collaborated on more than 100 projects, some of the CI/CD challenges specific to Arm that I’ve run into include lack of native support, imperfect emulation in QEMU, complexity of cluster build environments, and of course, a poor understanding of dependencies up and down the chain.
Pulling a rabbit out of your hat can get tricky to say the least.
When I think of rabbits, I think of creatures that are fast and quick to multiply. Fast-growing active projects are similar in nature, and when combined with a finite amount of resources can lead to endless tunneling in deep, dark rabbit holes.
These can be overcome with much diligence and effort (so much digging!) — plus a few juicy carrots (read: tools that help make the journey more enjoyable) to enable fast-path growth and help make solving all those build problems much easier.
Here are five of my favorite carrots for accelerating tricky projects:
There’s a lot to learn about build systems, and dozens of examples of good practices and innovative tools that I didn’t include here. If you have a favorite, please share it with me ([email protected]) to include in a future feature or on social media!