📦 CDPD - Container Driven Product Development
Cliff Brake December 04, 2025 #containers #development #tooling #ci #workflow #team #automation #collaboration #friction #preparation
When updating the Simple IoT documentation, the
question arose - how to install mdbook and a few plugins? Of course pacman
has part of what is needed. In the past cargo has been used, but that is slow
and not a good fit for shared tools. Then it became clear:
Any shared tools used by the team (build, linting, formatting, CI/CD) etc. should be put in containers up front (before development starts)
.. and use them for development builds as well as CI/CD.
Why?
- It is pretty easy these days with Claude Code.
- Gitea, GitHub, and likely other Git hosting platforms now provide convenient "package" registries. You no longer need to go through the hassle of using the Docker registry.
- It is easy to onboard new devs - no need to spend time installing SDKs and a host of tools.
- Versions are locked down, eliminating the possibility of different people using different versions.
- They get exercised a lot, so quality is high.
- It is much easier to move into CI/CD.
- A Dockerfile is easier to maintain than a long document describing how to manually install all the tools needed.
- NPM and Python packages are a pain to install locally, so why not just eliminate that pain?
- It is easier to get everyone on the team using the entire toolset (linting, formatting, etc.).
- No longer fighting differences between developers' machines. If one developer wants to run Arch and another Ubuntu, no problem.
Developers are still free to use their favorite editor, Git client, and other local tools.
This is another case where a little time spent up front is quickly regained, then compounded by not continually redoing stuff, and fighting problems that can be solved once.