A Reference Architecture for
Distributed Software
ter verkrijging van de graad van doctor
aan de Technische Universiteit Delft,
op gezag van de Rector Magnificus prof. ir. K.C.A.M. Luyben,
voorzitter van het College voor Promoties,
in het openbaar te verdedigen
op maandag 3 juni 2013 om 15:00 uur door
ingenieur informatica
geboren te Numansdorp
Dit proefschrift is goedgekeurd door de promotor:
Prof. dr. A. van Deursen
Copromotor: Dr. E. Visser
Samenstelling promotiecommissie:
Rector Magnificus voorzitter
Prof. dr. A. van Deursen Delft University of Technology, promotor
Dr. E. Visser Delft University of Technology, copromotor
Prof. dr. R. di Cosmo University of Paris-Diderot
Prof. dr. ir. D. H. J. Epema Delft University of Technology
Eindhoven University of Technology
Prof. dr. Y. Tan Delft University of Technology
Dr. E. Dolstra LogicBlox Inc.
Dr. S. Malek George Mason University
The work in this thesis has been carried out at the Delft University of Tech-
nology, under the auspices of the research school IPA (Institute for Program-
ming research and Algorithmics). The research was financially supported by
the Netherlands Organisation for Scientific Research (NWO)/Jacquard project
638.001.208, PDS: Pull Deployment of Services.
Copyright © 2013 Sander van der Burg
Cover: Lions Gate Bridge Vancouver, British Columbia, Canada
Printed and bound in The Netherlands by CPI Wöhrmann Print Service.
ISBN 978-94-6203-335-1
I vividly remember the first PhD defence ceremony that I have attended of
a fellow villager, which was coincidentally also at Delft University of Tech-
nology. At the same time, I just started studying for a master’s degree in
Computer Science at the same university. Although the ceremony made a
lasting impression on me, I concluded that becoming a PhD student was a
career step I would definitely never make however, it turned out that I was
I have always had a deep interest in programming and software technology
from a very young age. For example, I wrote my very first computer program
in the BASIC programming language on a Commodore 64.
At some point, I became interested in do-it-yourself (DIY) construction of
Linux distributions, also known as a project called Linux from Scratch (LFS)
as I could never get satisfied with any of the common Linux distributions.
The Linux from Scratch (LFS) project basically provides a book describing
how to construct your own Linux system using nothing but source packages.
Although it was fun to get a fully customised system working, it turned out
that maintaining and upgrading such customised systems was complicated,
time consuming and a big burden.
In the final year of my master’s study, I met Eelco Vissor, my co-promotor.
Initially, I was looking for a Model Driven Engineering (MDE) thesis project,
but after I told him about my interest in Linux from Scratch, he proposed
me to take a look at a different project of a former PhD student of him (Eelco
Dolstra), who had developed a package manager called Nix with very uncom-
mon, yet very powerful features.
In the beginning, I was sceptic about Nix. However, when I read Eelco
Dolstra’s PhD thesis I learned more about the concepts and started liking
it more and more. I also got involved with the rest of the Nix community
that had already attracted quite some developers from various places over the
world. Eventually, I have decided to focus myself on using Nix and to change
NixOS (a Linux distribution based on Nix) to have the features that I wanted,
instead of doing everything myself.
Moreover, my master’s thesis project was also a collaboration with an in-
dustry partner, namely Philips Research. At Philips, I met Merijn de Jonge
who had been involved with the early stages of the development of Nix. As
part of my master thesis project, I have developed the first Disnix prototype,
allowing developers to deploy service-oriented systems in network of ma-
chines, with a Philips system as a case study.
Although the initial prototype showed us a number of promising results, it
also raised many additional questions that had to be answered. Fortunately,
Philips and our research group had been working on a research project pro-
posal, called the Pull Deployment of Services (PDS) project. When I was
approached to become a PhD researcher in the PDS project, it was simply an
offer I could not refuse. Therefore, I broke the promise that I had made to
myself years ago.
This thesis is the result of the work I have been doing for the last 4 years (or
perhaps a bit longer). In the early stages of my research I had a very