It’s taken us a while to release the next installment of internal code. Sometimes the simplest things take the longest time. With the device software now fully open source, the next logical step is the backend services. Our backend services are all built on a uniform base image called resin-base. This image is based on resin/amd64-systemd:jessie
- an in-house base image which is the same image we push to our devices. Our universal base image is a resin/amd64-debian:jessie
that reflects a lot of iteration on the core container: a stripped down Debian, with systemd calling the shots.
On top of that core, we add the fundamental packages needed for a service to function within the resin architecture.
One group of tools is focused on debugging. Others are for the deployment workflow. Others still are the languages we use across the stack: Node.js and the occasional Python. Another set is related to inter-service communication.
It may sound crazy, but open sourcing this image has taken the longest time, as we needed to remove several sensitive pieces of information (such as keys, etc.) from its history, and create an additional internal add-on to it that contains what’s left of the keys. As we open-source more and more services, the internal layer will also become thinner, until it disappears.
This process has held up our open sourcing programme, which we hope to now continue at a faster pace, with substantial pieces of code being released.
Prime candidates for the first internal resin.io services to be released are our Container Registry (thin layer around Docker Registry), our git server, our VPN service, and our Container Delta server