Release Engineering can be a science. Like any science, there is a goal of controlling for variables to understand how change impacts the results of the overall system (in this case the software delivery pipeline). At Puppet Labs, our goal is to control for variances on operating systems, package managers, service managers, et al, so that our customers don’t have to. But to achieve this, we must purposely add variables into our release train. We currently build and test for more than 60 operating system targets, and that number is only increasing. When you ship an abstraction layer, you have have to test and build for all of the underlying components, and at our scale that must be automatic and developer serviceable.