he future of continuous integration in gnome

Post on 18-May-2015

312 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

In Free and Open Source Software (FOSS) projects based on Linux systems, the users usually install the software from distributions. The distributions act as intermediaries be- tween software developers and users. Distributors collect the source code of the different projects and package them, ready to be installed by the users. Packages seems to work well for managing and distributing stable major and minor releases. It presents, however, various release management challenges for developers of projects with multiples dependencies not always available in the stable version of their systems. In projects like GNOME, composed of dozens of individual components, devel- opers must build newer versions of the libraries and applications that their applications depend upon before working in their own projects. This process can be cumbersome for developers who are not programmers, such as user interaction designers or technical writers. In this paper we describe some of the problems that the current distribution model presents to do continuous integration, testing and deployment for developers in GNOME, and present ongoing work intended to address these problems that uses a git- like approach to the building and deployment of applications.

TRANSCRIPT

Colin Walterswalters@verbum.org

Daniel M. Germandmg@uvic.ca

Germán Poo-Caamañogpoo@gnome.org

The Future ofContinuous Integration

in GNOME

Motivation

● Colin's experience in Fedora and GNOME:

“Easier for Fedora QA to install LXDE than to help to debug and fix GNOME”

“User Experience Designers want to see what they are designing”

Release Management in FOSS

Developmentreleases

Majorend–user

stablereleases

Minorreleases

[Michlmayr et al, 2007]

Release Management in FOSS

Developmentreleases

Majorend–user

stablereleases

Minorreleases

People can only test releases when all the components work together, which usually

is a distribution

Interrelated Components

GTK+ Clutter

GIO

GStreamer EDS

GLib libnotify gnomekeyring

Geographically Distributed

[https://live.gnome.org/GnomeWorldWide]

Distributed Through Intermediaries

Current Workflow

Late Detection of Regressions

Problems

● Challenge for collaboration between different kind of contributors (Interaction between designers and programmers)

● Barrier of entry for potential new developers as building the system becomes more complex

● Detection of regressions can be delayed making the quality assurance process slower

● Difficult to test development versions as a whole without the risk of breaking the system

Research Goal

● How can the release management process be improved to allow any potential contributor to try the latest versions available without breaking their system, and allow them to easily switching between a testing and a development environment?

OSTree: Continuous Integration System

● Version Control System designed for binaries● Build system for applications● Deploy a Linux–based operating system in a similar

way as developers use version control system

Deploy an entire operating system in one single checkout and to allow

rollback to a previous version

Expected Workflow

Benefits

● Developer do not have to build the dependencies for their projects

● Test a development version by running them on a daily basis

● Does not disrupt developer's existing system● Possible to bisect across operating system builds● User can participate bisecting● Provides a reference system

Status

● It is being used by some early adopter developers● The build system is working for one specific architecture● Images to test

– http://ostree.gnome.org/work/images/z/current/● More details in paper and https://live.gnome.org/OSTree● Source code:

– https://git.gnome.org/browse/ostree– https://git.gnome.org/browse/gnome-ostree

Conclusions

● It is difficult to deploy test versions when there are too many components interrelated. As a consequence, this reduces the participation of users and potential new contributors

● OSTree combines features from a version control and package systems to offer multiple versions of a program and multiple parallel installations.

● It makes possible to try a project like GNOME minutes or hours after a change has been committed in the source code repository.

top related