1 Distributing Free Software: Herding Cats

The basic challenge when distributing Free and Open Source Software (FOSS) is compiling into machine code all of the source code that the awesome community produces. It may sound simple, but it isn’t. A typical GNU/Linux distribution consists of thousands of individual software projects. They build on top of each other, have functional dependencies, some of the projects are interdependent, conflict with each other and what not. In short, it's like herding cats. Another challenge distributing software is that, sadly, software is sometimes defective and people, even developers, make mistakes. One has to master the art of exchanging pieces without breaking the whole: in other words, software updates. The Open Build Service (OBS) is a tool that makes this possible. It is a generic system to build and distribute binary packages from sources in an automatic, consistent and reproducible way. The OBS is free software itself; you can run, copy, distribute, study, change and improve it. The source code and the developers are on github (https://github.com/openSUSE/open-build-service).

1.1 Goals of the OBS

The goals of the OBS are oriented towards the three groups of people that use it: People who contribute to the Free Software community by building binary packages of software, so called packagers. Free Software projects and Independent Software Vendors (ISV) who provide complete software stacks and distributions to their users. And, of course, users who are looking to install software on their GNU/Linux distribution.

1.1.1 Automated software builds for packagers

For people who contribute to the Free Software community by packaging software, so called packagers, the OBS tries to automate that task as much as possible. Especially the need to maintain a lot of different operating system (OS) installations, of different OS versions, on a lot of different hardware architectures is something the OBS makes easier.

1.1.2 Reproducibility for Free Software projects and Independent Software Vendors (ISV)

The OBS emphasizes making builds reproducible. It builds packages in a jailed environment that the OBS sets up from scratch each time; once the build succeeds it also rebuilds all the dependent software. This ensures that changes propagate throughout the entire stack and that users get a consistent product to install. Reproducibility is especially needed if the delivered software stack consists of a lot of parts that have functional dependencies. Because if something is reproducible, it is predictable, and that is what projects and ISVs aim for. If you can predict how each of the software packages within your GNU/Linux distribution influences the other, you can make sure that if you change one of them, the whole thing still works as expected. The OBS also has collaboration among developers baked-in to its structure and workflows, which helps projects and ISVs to harness the power of the open source development model.

1.1.3 Easy access to software for users

The OBS aims to make it easy for users to download the latest version of software as binary packages for their operating system. They don't have to know about tarballs, make install, package formats or other stuff from the 90's. Another priority is to make use of the package management tools of the user's OS with which they are already familiar. Users should get their software from the OBS just as they get software from their OS supplier, no special tools needed. And once users are connected to a repository, they get served with maintenance or security updates or even add-ons for their software.

1.2 History of the OBS

From building packages on workstations over autobuild to OBS.

1.3 Future of the OBS

With the advent of test-driven development and similar agile methods in recent years, the software development community has shown a clear trend towards automated and continuous integration (https://en.wikipedia.org/wiki/Continuous_Integration), deployment (https://en.wikipedia.org/wiki/Continuous_deployment) and delivery (https://en.wikipedia.org/wiki/Continuous_delivery). The OBS is moving more and more from a standalone solution to be one link in the chain of software development tools. And while "software is eating the world", it is also becoming more complex every day. This prompts for the need to know who changed what and when. And when and how was that delivered to the users? Tracking and analyzing this, making trends visible to be able to act upon them is another challenge for the future. All of this besides the general challenge of keeping up with the fast and disruptive evolution of the Free Software ecosystem, which constantly supports new hardware, software, standards and tools makes for a very interesting future.

Print this page