7B Industries logo

Nimble Project Wrap-Up

Author: Jeremy Wright
Published: 2025-10-20
Last Updated: Never
License: CC BY-SA 4.0
Previous Post: First Nimble Project Update

Contents

Introductionhyperlink

Note: There is a companion post on the Wakoma blog which gives the high-level "why" of Nimble, and it is a nice comlement to this post which covers the low-level "how" of the technical implementation.

This is a wrap-up post for the Nimble project work funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. This post can be read in isolation, but the previous post on this project will give some additional context.

As a quick recap, this development team met at a hackathon hosted by the Open Toolchain Foundation (OTFN) in March 2023. OTFN exists to "promote the adoption and support the development of tools (software) for designing products, machines, etc. (hardware), namely Open Source software tools for engineering." At that hackathon a prototype was built of a system that created parametric documentation which stayed in sync with its associated CAD when changes were made. The prototype focused on the Nimble network rack and worked well, but it had a long way to go to be production-ready. NLnet funded the development of this production-ready system so that Wakoma and the team could bring it to reality. There was also a focus on the part of NLnet to ensure the toolchain was independent of the Nimble project so that it would be useful to a wider range of hardware projects. I believe that the team has met this goal.

The Resulthyperlink

If you want to skip straight to seeing the end result, there is a hosted version of the Nimble Configurator here. A screenshot of the final user interface with a sample configuration is shown below

Nimble Configuration User Interface

CadOrchestrator also has an example cup holder tree project which demonstrates how flexible CadOrchestrator can be in serving other projects. The example uses OpenSCAD instead of CadQuery as its CAD tool, showing that users are not locked in to a single CAD system. A hosted version of that example project can be found here.

A flow chart of this project's initial architecture was provided in the previous blog post. While the end result uses most of the same pieces, there are some key changes in how things are organized. The following updated diagram, created by Julian Stirling, goes into much more detail on the final architecture and how the data flows.

Updated Nimble Architecture

The diagram itself provides some explanation text, and what follows is additional information on the components. It is important to note that with the exception of the Nimble-specific source files and the hardware database, these tools can be used for other hardware projects besides Nimble.

Reflections on the Resulthyperlink

Creating a truly modular, automatic, infinitely configurable system that generates CAD, renders, and documentation on the fly was ambitious.

The team learned valuable lessons during this project. As always with programming, generating something that is simple and flexible is easy enough, as is generating something complex and inflexible. We used this project to create the complexity we needed to build and document the Nimble, and then at regular intervals we paused to refactor it into more self-contained and flexible tools and functions.

This project has not fully reached the holy grail of a highly complex and truly flexible system that is usable for any project. Aspects of the codebase were easy to generalize, and these have been generalized into their own tools. Other aspects likely still need additional refinement, and that is discussed in the next section.

Where to Next?hyperlink

A great first step would be for other open hardware projects to implement parts (or the whole of) this architecture for their own projects. The separate parts of this toolchain are listed above, but two good high-level project repositories to use as templates and discussion spaces would be the Nimble and CadOrchestrator-Example repositories.

By implementing this system for other real-world hardware projects, it is hoped that it can be refined and improved into a system that can be applied universally to any hardware project.

There are many options for where the development of this project could go next. Below are a few ideas.

Thankshyperlink

Two organizations were directly involved in making this project happen.

In addition, this team would never have met if it had not been for the Hackathon hosted by the Open Toolchain Foundation.

Teamhyperlink

The following people were members of the team for this project.

Editorshyperlink

The following people contributed feedback on this blog post, and it is much appreciated.


© 2018-2025 7B Industries