Some links related to Baserock and associated activities.


Ansible is an automation and configuration management tool. It focuses on simplicity, uses YAML as a data format and is implemented in Python. This makes it similar in approach to Baserock, and we encourage people deploying systems with Baserock to use Ansible for any post-creation configuration.

It's possible to use other configuration management tools in Baserock, such as CFEngine, Chef, Puppet and SaltStack. You will find that a lot of these tools except to work with a running, configurable 'base' system where they can then install prebuilt packages from some 3rd-party package repository. This is rather at odds with the approach of Baserock, where each system is built from source with exactly the software it needs, then booted and configured.

The GENIVI Alliance

The GENIVI Alliance define a platform suitable for making automotive in-vehicle entertainment devices, composed of various open source components.

The Baserock project produces the Baserock GENIVI Baseline, which implements the platform defined by the GENIVI alliance.


The goals of the Nix package manager and its reference distribution NixOS, which are laid out in a 2004 paper introducing the project, overlap a lot with those of Baserock. Unlike with Baserock, reducing complexity is not one of the stated aims of the project, and neither is it designed to be used 'piecemeal'. This creates an unfortunate barrier to newcomers. However, NixOS is a mature project built on a very solid foundation, and should be of interest to anyone interested in Baserock.

GNU Guix and the GuixSD system distribution is a separate, incompatible project, which uses a dialect of Scheme (GNU Guile) for build definitions. It is heavily inspired by Nix and NixOS.

OpenEmbedded / Yocto

The Yocto Project was launched in October 2010, backed by the Linux Foundation and with commercial sponsors including Intel and Wind River, with the goal of simplifying the build process for teams working on embedded systems. This is very similar to the goal of the Baserock project, but the approach taken is quite different. Yocto aims to adapt and improve existing build tools (primarily BitBake, from the OpenEmbedded Project) and an existing reference distribution (Poky, a subset of the OpenEmbedded reference distribution).

The OpenEmbedded Project is much older than Yocto, and has a less focused, more community-driven basis than Yocto. Yocto and OpenEmbedded continue to be different projects, but with a significant amount of collaboration: both use the BitBake build tool, and use BitBake Recipes to define their reference distributions. The Yocto reference distribution (Poky) and the OpenEmbedded reference distribution differ in size, scope and governance, but they share a common core.

In comparison, the Baserock project began in 2011 at Codethink with the aim of developing a build tool, a definitions format and a reference distribution from scratch (the scope later widened to handle mirroring of source code as well). The goal with starting from scratch was to create something that was an order of magnitude simpler than existing tools.



OSTree is a tool for storing and deploying operating system binaries. It uses hardlinks to make deployment of different versions very quick, and it deduplicates the content at the file level so that storage is efficient. The use of hardlinks means that there must be protection against the deployment content being overwritten at runtime, to avoid corrupting the OSTree store.

We have looked at using OSTree in Morph for artifact storage:!/story/48. We could also look at using OSTree as an deployment/upgrade mechanism for the Baserock reference systems.

Existing users of OSTree include the gnome-continuous automated build and test system, and Project Atomic (via the rpm-ostree package composition and deployment tool).