Writing FOSS software is fun. But re-using software of other people tends to be the opposite of fun, often because we can not even install it from source.
This talk will present how to properly open source software for reusability. We will introduce the concept of software packaging, existing solutions from well-known Linux distributions and modern all-rounders such as conda up to from-source distributing package managers such as spack. We will introduce the concepts, benefits and short-comings of selected solutions and how one can not only install but also switch seamlessly between software environments without spawning a full-flavored VM/docker/vagrant environment.
Our special focus is set on developers (and users) of open source software, e.g. with Python/C/C++ dependencies, transient dependency trees and special performance requirements that are not satisfied with a simple "ship me a pre-build 64bit binary" but want more flexible control, including an arbitrary number of parallel installed versions of compilers and dependencies. We will also graze the world of containers, virtual machines and continuous integration and highlight why we need better, automated ways to provision those. (Hint: via a package manager!)