This post is intended to provide a rundown of exactly what we’re doing and why, to comprehensively include all of our updates and ambitions as they currently are, as there have been some direction changes that are notably significant, and, it seemed like it would be good to create a view for people to see if they feel like jumping in to help out.
This project has several goals and products associated with it, all related and towards a single end.
SURRO Linux: A Basic Product
On the outside, we’re building a new Linux distribution — a very clean one intended to appeal to engineering and scientific environments.
The distribution is called SURRO Linux.
It’s Open-Standards Centric
During a time when critical standards that made Linux the engineering marvel that it is are no longer being adhered to by all major distributions, SURRO Linux will ultimately be LSB 5 certified and FHS 3.0 compliant unless a newer version of either of these standards is out before our first release.
There will never be a question about where a file should exist on the system.
Binary compatibility will be limited only by the LSB 5.0 standard.
It’s Not Based On Another Distro
SURRO Linux will not be based on another Linux distribution and will not be a child distribution.
It’s Raw and Fresh
There will be no copying of precompiled binaries from an ancestor distribution for its creation. The entire distribution is compiled from raw source code for all components before being distributed as a binary package centered distribution.
It’s not just a Distro, Though
Along the way there are several tools that accomplish the creation of the distro for us that we’re building to get there. These tools are designed to be either generic in purpose or to help others develop better products.
Aside from the technical merits: SURRO Linux is not controlled by corporations, or investor interests — but technical needs.
Build Your Own Distribution: Foster
We’ve brought the Infrastructure as Code (IaC) concept to the OS Layer in the OSI model.
Foster is an intermediary distribution that can be easily modified to create your own Linux distribution. We use an internally created build system that serves as configuration for the generated product, which means that the entire build process for the whole distribution, from sources, is automated and version controlled.
This will mean that the problems that we’ll be solving to get a bootable environment from nothing but source will be shared with the community, allowing others who might do better or have more resources to do so in a version-controlled, auditable manner.
We’re also targeting Container Crowds
This is also important to cloud and container solution providers in creating very minimal or controlled images with a great deal of granularity about what gets put on the image, auditability, change control and more for their base images — no more golden images that get cluttered over time — a version controlled image configuration is the apex of controlled container image management.
While we will be using Foster to create the SURRO Linux installer ISO, you could build your own — ISO or docker image.
It’s Host OS Agnostic
We use a docker container to wrap the build process for host/build OS abstraction. Once the First bootable Foster image is reached we will be using it as our source image for that container and rewriting Foster to compile on itself. This is for the purpose of providing the clean image to the community and to remove dependencies in our automations on third party providers.
The end result is that Foster should be able to compile on Windows, BSD, Linux, or even OSX in a very clean way.
Build and Automate Anything: Examplar
Examplar is an automation orchestration and rudimentary configuration management tool, or a build system, depending on how you look at it. During the process of compiling Foster, Examplar is the tool that gets executed to kick off and orchestrate all of the build scripts and automations in place. It is configured entirely in JSON allowing levels of complexity able to support automation of the scale required to build an entire operating system from source.
Examplar is its own product, generic in purpose, written entirely in C++ with no external system library dependencies, meaning it can compile and run just about anywhere on just about any operating system.
Examplar is also evolving as we build Foster with it, with new features being added frequently to accomplish our goals.
Once Foster is released we will be using Foster as the base image for the SURRO Linux installer ISO — we will be using Examplar to drive the configuration and installation of a new SURRO Linux system.
The first release of SURRO Linux will use RPM as a package manager, systemd as its init system, and will have public binary package repositories. It will be curses-driven for installation.
Later releases will have menu options to select preferred components, such as bootloader, potentially the init system, package manager, desktop environment, and more. Later versions are also intended to accept “profiles” that select these options in an unattended manner for CI systems.
The project is slow-moving, mostly due to resources being needed and research time. With an increased headcount we could move faster. With funding we could move faster. The SURRO Linux project is currently entirely funded by Chris Punches in conjunction with donations to the project GoFundMe. Join or contribute today.