We have found that mapping the toolchain alone is not always enough. It should be explained and documented so that it can be understood especially by newcomers.
The repository contains all the files needed for development and production. It is divided into subfolders for better organization.
The mechanical components of the project are designed using FreeCAD. With KiCAD the electronic components (PCB) are designed and production files are exported. As interface between FreeCAD and KiCAD, for the exchange of 3D geometries, kicadStepUp is used. The firmware and the documentation is created with a text editor. Manufacturing files for 3D printing (g-code) are created with Cura.
For version control management, to record file changes, git is used. Its full functionality git reaches only with purely text-based files. For better management of binary files (CAD files, images, videos, etc.), git-lfs comes into play. An important feature of git-lfs is the ability to lock files, which helps avoid conflicts when merging with binary files. This is especially useful when multiple people are working in the same repository. We’re recently working on a PDM like git interface and created a first mock up, feel free to send feedback.
Gitlab, as a version control web application, allows collaboration with other people. It also offers an issue tracking system, web hosting for documentation (GitLab Pages) and certain process steps can be automated via the pipeline with Continuous Integration and Continuous Delivery (CI/CD). With the help of CI/CD, up-to-date production files can always be provided. Furthermore, documentation is generated via a static site generator (SCG) and published as a web page.
The toolchain is not always linear, because especially in development there can be loops that are run through again and again until the desired result is achieved.
The example of a toolchain shown here can serve as a blueprint for the upcoming hackathon and the plan to replace the toolchain of the nimble project with a toolchain using FLOSS.
We at the Open Toolchain Foundation are interested in knowing what your project’s toolchain looks like! To do this, you can either share your toolchain in our forum, or you can contact us and we will help you document and share your toolchain with the community.
Title image by Bernard Spragg