In order for our customers to have a FRAME machine which they can rely on, the FRAME needs to be shipped with software which our customers can rely on. We will ship software in two ways:

  1. Software which we pre-load in the FRAME machine before delivery to customers.
  2. Future software updates which the customers will download onto the FRAME, as described by ‣ ).

For either software delivery mechanism, the software should be:

This DN describes our process for planning and managing and executing new releases of all of our software so that we can deliver stable software releases to:

  1. the production line which will load our software onto hardware (as discussed in ‣ )
  2. customers who will download software updates directly onto their FRAME machines

Technical version identifiers

All software is version-controlled using Git, so that any version of our source code is identified with a Git commit hash. We will make certain commits easier to identify by giving them human-readable (developer-facing) technical version identifiers, i.e. technical version numbers. These version identifiers should communicate some information about the significance of the version, e.g. whether it’s a version which a customer should use or whether it’s only for internal testing.

Any software binary we provide to the customers (e.g. flashed SD cards, SD card images, Docker container images, firmware binaries) must be fully traceable back to a particular Git commit of our source code, so that we can determine the source code of whatever software is running in a customer machine. This means that we should try to minimize changes to binary which aren’t captured as changes to source code in a Git repository. For any such changes which we must make (e.g. as customer-specific or machine-specific config files, config variables in flash memoryo and/or EEPROM, etc.), we must be especially careful about recording exactly what changes we make. Being disciplined about recording that information is necessary in order to maintain the traceability and reproducibility of what we deliver to our customers.

openUC2 OS

openUC2 OS is a combination of many individual software components; some components (such as ImSwitch) are written, maintained, and distributed by openUC2, while other components (such as the Cockpit administration dashboard and the system file browser) are written, maintained, and distributed by other open-source software projects. Each component has its own release schedule and version numbering system; the specific combination of releases and versions of all these components will change over time as these components change, and we represent each total combination of all software components in a particular release of openUC2 OS by a single version number assigned to that release.

For releases of openUC2 OS, we use a calendar-based version numbering system with three numeric components and an optional pre-release suffix. Specifically: