publications: - title: "Software deployment in a dynamic cloud: From device to service orientation in a hospital environment" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" year: "2009" month: "May" doi: "http://dx.doi.org/10.1109/CLOUD.2009.5071534" abstract: "Hospital environments are currently primarily device-oriented: software services are installed, often manually, on specific devices. For instance, an application to view MRI scans may only be available on a limited number of workstations. The medical world is changing to a service-oriented environment, which means that every software service should be available on every device. However, these devices have widely varying capabilities, ranging from powerful workstations to PDAs, and high-bandwidth local machines to low-bandwidth remote machines. To support running applications in such an environment, we need to treat the hospital machines as a cloud, where components of the application are automatically deployed to machines in the cloud with the required capabilities and connectivity. In this paper, we suggest an architecture for applications in such a cloud, in which components are reliably and automatically deployed on the basis of a declarative model of the application using the Nix package manager." links: doi: "http://dx.doi.org/10.1109/CLOUD.2009.5071534" tags: - "deployment" - "software architecture" - "software components" - "distributed deployment" - "meta-model" - "architecture" - "software deployment" - "Nix" - "software component" - "Meta-Environment" researchr: "https://researchr.org/publication/BurgDV09" cites: 0 citedby: 0 booktitle: "CLOUD" kind: "inproceedings" key: "BurgDV09" - title: "Crowdsourcing GUI Tests" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Raynor Vliegendhart" link: "https://researchr.org/alias/raynor-vliegendhart" - name: "Johan A. Pouwelse" link: "https://researchr.org/alias/johan-a.-pouwelse" year: "2013" doi: "http://doi.ieeecomputersociety.org/10.1109/ICST.2013.44" links: doi: "http://doi.ieeecomputersociety.org/10.1109/ICST.2013.44" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icst/DolstraVP13" researchr: "https://researchr.org/publication/DolstraVP13" cites: 0 citedby: 0 pages: "332-341" booktitle: "icst" kind: "inproceedings" key: "DolstraVP13" - title: "Secure sharing between untrusted users in a transparent source/binary deployment model" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2005" doi: "http://doi.acm.org/10.1145/1101908.1101933" links: doi: "http://doi.acm.org/10.1145/1101908.1101933" tags: - "deployment" - "source-to-source" - "open-source" researchr: "https://researchr.org/publication/Dolstra05%3A0" cites: 0 citedby: 0 pages: "154-163" booktitle: "ASE" kind: "inproceedings" key: "Dolstra05:0" - title: "Service configuration management" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2005" doi: "http://doi.acm.org/10.1145/1109128.1109135" abstract: "The deployment of services --- sets of running programs that provide some useful facility on a system or network --- is typically implemented through a manual, time-consuming and error-prone process. For instance, system administrators must deploy the necessary software components, edit configuration files, start or stop processes, and so on. This is often done in an ad hoc style with no reproducibility, violating proper configuration management practices. In this paper we show that build management, software deployment and service deployment can be integrated into a single formalism. We do this in the context of the Nix software deployment system, and show that its advantages --- co-existence of versions and variants, atomic upgrades and rollbacks, and component closure --- extend naturally to service deployment. The approach also elegantly extends to distributed services. In addition, we show that the Nix expression language can simplify the implementation of crosscutting variation points in services. " links: doi: "http://doi.acm.org/10.1145/1109128.1109135" tags: - "programming languages" - "SCM" - "deployment" - "software components" - "software deployment" - "Nix" - "software component" - "software configuration" - "service configuration management" - "context-aware" - "systematic-approach" researchr: "https://researchr.org/publication/DolstraBV05" cites: 0 citedby: 0 pages: "83-98" booktitle: "SCM" kind: "inproceedings" key: "DolstraBV05" - title: "The purely functional software deployment model" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2006" doi: "https://www.base-search.net/Record/a08129eedcb8dd41edc5134cf8566ada4a47661d260060bc635445e825564b73" links: doi: "https://www.base-search.net/Record/a08129eedcb8dd41edc5134cf8566ada4a47661d260060bc635445e825564b73" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/basesearch/Dolstra06" researchr: "https://researchr.org/publication/basesearch-1061" cites: 0 citedby: 0 school: "Utrecht University, Netherlands" kind: "phdthesis" key: "basesearch-1061" - title: "Charon: declarative provisioning and deployment" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Shea Levy" link: "https://researchr.org/alias/shea-levy" year: "2013" doi: "http://dl.acm.org/citation.cfm?id=2663365" links: doi: "http://dl.acm.org/citation.cfm?id=2663365" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icse/DolstraVL13" researchr: "https://researchr.org/publication/DolstraVL13" cites: 0 citedby: 0 pages: "17-20" booktitle: "ICSE" kind: "inproceedings" key: "DolstraVL13" - title: "The Purely Functional Software Deployment Model" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2006" month: "January" abstract: "Software deployment is the set of activities related to getting software components to work on the machines of end users. It includes activities such as installation, upgrading, uninstallation, and so on. Many tools have been developed to support deployment, but they all have serious limitations with respect to correctness. For instance, the installation of a component can lead to the failure of previously installed components; a component might require other components that are not present; and it is generally difficult to undo deployment actions. The fundamental causes of these problems are a lack of isolation between components, the difficulty in identifying the dependencies between components, and incompatibilities between versions and variants of components. This thesis describes a better approach based on a purely functional deployment model, implemented in a deployment system called Nix. Components are stored in isolation from each other in a Nix store. Each component has a name that contains a cryptographic hash of all inputs that contributed to its build process, and the content of a component never changes after it has been built. Hence the model is purely functional. This storage scheme provides several important advantages. First, it ensures isolation between components: if two components differ in any way, they will be stored in different locations and will not overwrite each other. Second, it allows us to identify component dependencies. Undeclared build time dependencies are prevented due to the absence of “global” component directories used in other deployment systems. Runtime dependencies can be found by scanning for cryptographic hashes in the binary contents of components, a technique analogous to conservative garbage collection in programming language implementation. Since dependency information is complete, complete deployment can be performed by copying closures of components under the dependency relation. Developers and users are not confronted with components’ cryptographic hashes directly. Components are built automatically from Nix expressions, which describe how to build and compose arbitrary software components; hashes are computed as part of this process. Components are automatically made available to users through “user environments”, which are synthesised sets of activated components. User environments enable atomic upgrades and rollbacks, as well as different sets of activated components for different users. Nix expressions provide a source-based deployment model. However, source-based deployment can be transparently optimised into binary deployment by making pre-built binaries (keyed on their cryptographic hashes) available in a shared location such as a network server. This is referred to as transparent source/binary deployment. The purely functional deployment model has been validated by applying it to the deployment of more than 278 existing Unix packages. In addition, this thesis shows that the model can be applied naturally to the related activities of continuous integration using build farms, service deployment and build management." tags: - "programming languages" - "rule-based" - "deployment" - "completeness" - "meta programming" - "software components" - "meta-model" - "modeling language" - "modeling" - "language modeling" - "functional programming" - "software component" - "source-to-source" - "information models" - "programming" - "Meta-Environment" - "process modeling" - "systematic-approach" - "open-source" researchr: "https://researchr.org/publication/Dolstra2006" cites: 0 citedby: 0 school: "Utrecht University" address: "Utrecht, The Netherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "S. Doaitse Swierstra" link: "http://www.cs.uu.nl/staff/doaitse.html" kind: "phdthesis" key: "Dolstra2006" - title: "Finding software license violations through binary code clone detection" author: - name: "Armijn Hemel" link: "https://researchr.org/alias/armijn-hemel" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Rob Vermaas" link: "https://researchr.org/profile/robvermaas/publications" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2011" doi: "http://doi.acm.org/10.1145/1985441.1985453" links: doi: "http://doi.acm.org/10.1145/1985441.1985453" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/msr/HemelKVD11" researchr: "https://researchr.org/publication/HemelKVD11" cites: 0 citedby: 0 pages: "63-72" booktitle: "msr" kind: "inproceedings" key: "HemelKVD11" - title: "Disnix: A toolset for distributed deployment" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2010" month: "September" abstract: "The process of deploying a distributed system in a network of machines is often very complex, labourious and time consuming, while it is hard to guarantee that the system will work as expected and that certain non-functional requirements from the domain are supported. In this paper we describe the Disnix toolset, which enables automatic deployment of a distributed system in a network of machines from declarative specifications and offers properties such as complete dependencies, atomic upgrades and rollbacks to make this process efficient and reliable. Disnix has an extensible architecture, allowing the integration of custom modules to build a distributed deployment architecture that takes non-functional requirements of the domain into account. Disnix has been under development for almost two years and has been applied to several types of distributed systems, including an industrial case study." tags: - "deployment" - "completeness" - "case study" - "architecture" - "type system" researchr: "https://researchr.org/publication/vanderburg10disnix" cites: 0 citedby: 0 booktitle: "Third International Workshop on Academic Software Development Tools and Techniques (WASDeTT-3)" kind: "inproceedings" key: "vanderburg10disnix" - title: "Preventing injection attacks with syntax embeddings" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" month: "July" abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g. SQL) into that of the host language (e.g. Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of context-free host and guest languages." links: published: "https://researchr.org/publication/BravenboerDV10" tags: - "programming languages" - "Java" - "generic programming" - "injection attack" - "XML" - "embedded software" - "XML Schema" - "SQL" - "programming" - "context-aware" - "systematic-approach" - "grammar" - "query language" researchr: "https://researchr.org/publication/preprint-BravenboerDV-SCP-2009" cites: 0 citedby: 0 type: "Preprint" kind: "techreport" key: "preprint-BravenboerDV-SCP-2009" - title: "Mixed Data-Parallel Scheduling for Distributed Continuous Integration" author: - name: "Olivier Beaumont" link: "https://researchr.org/alias/olivier-beaumont" - name: "Nicolas Bonichon" link: "https://researchr.org/alias/nicolas-bonichon" - name: "Ludovic Courtès" link: "https://researchr.org/alias/ludovic-court%C3%A8s" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Xavier Hanin" link: "https://researchr.org/alias/xavier-hanin" year: "2012" doi: "http://doi.ieeecomputersociety.org/10.1109/IPDPSW.2012.7" links: doi: "http://doi.ieeecomputersociety.org/10.1109/IPDPSW.2012.7" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ipps/BeaumontBCDH12" researchr: "https://researchr.org/publication/BeaumontBCDH12" cites: 0 citedby: 0 pages: "91-98" booktitle: "ipps" kind: "inproceedings" key: "BeaumontBCDH12" - title: "Automating System Tests Using Declarative Virtual Machines" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2010" doi: "http://dx.doi.org/10.1109/ISSRE.2010.34" links: doi: "http://dx.doi.org/10.1109/ISSRE.2010.34" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/issre/BurgD10" tags: - "testing" researchr: "https://researchr.org/publication/BurgD10" cites: 0 citedby: 0 pages: "181-190" booktitle: "issre" kind: "inproceedings" key: "BurgD10" - title: "Preventing injection attacks with syntax embeddings" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2007" doi: "http://doi.acm.org/10.1145/1289971.1289975" abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g., SQL) into that of the host language (e.g., Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of host and guest languages." links: doi: "http://doi.acm.org/10.1145/1289971.1289975" successor: "https://researchr.org/publication/BravenboerDV10" tags: - "programming languages" - "syntax embedding" - "Java" - "preventing injection attacks" - "generic programming" - "injection attack" - "SDF" - "XML" - "embedded software" - "XML Schema" - "SQL" - "security" - "language embedding" - "DSL" - "programming" - "systematic-approach" - "ASF+SDF" - "grammar" - "query language" researchr: "https://researchr.org/publication/BravenboerDV07" cites: 0 citedby: 4 pages: "3-12" booktitle: "GPCE" kind: "inproceedings" key: "BravenboerDV07" - title: "Maximal Laziness: An Efficient Interpretation Technique for Purely Functional DSLs" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2009" doi: "http://dx.doi.org/10.1016/j.entcs.2009.09.042" links: doi: "http://dx.doi.org/10.1016/j.entcs.2009.09.042" tags: - "laziness" - "DSL" researchr: "https://researchr.org/publication/Dolstra09" cites: 0 citedby: 0 journal: "ENTCS" volume: "238" number: "5" pages: "81-99" kind: "article" key: "Dolstra09" - title: "Preventing injection attacks with syntax embeddings" author: - name: "Martin Bravenboer" link: "http://martin.bravenboer.name/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1016/j.scico.2009.05.004" abstract: "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g. SQL) into that of the host language (e.g. Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of context-free host and guest languages." links: doi: "http://dx.doi.org/10.1016/j.scico.2009.05.004" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/BravenboerDV10" technicalreport: "https://researchr.org/publication/preprint-BravenboerDV-SCP-2009" tags: - "injection attack" researchr: "https://researchr.org/publication/BravenboerDV10" cites: 0 citedby: 0 journal: "SCP" volume: "75" number: "7" pages: "473-495" kind: "article" key: "BravenboerDV10" - title: "Report on the tenth ICFP programming contest" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Jurriaan Hage" link: "http://www.cs.uu.nl/wiki/Hage/WebHome" - name: "Bastiaan Heeren" link: "http://www.open.ou.nl/bhr/" - name: "Stefan Holdermans" link: "https://researchr.org/alias/stefan-holdermans" - name: "Johan Jeuring" link: "http://people.cs.uu.nl/johanj/" - name: "Andres Löh" link: "http://people.cs.uu.nl/andres/" - name: "Clara Löh" link: "https://researchr.org/alias/clara-l%C3%B6h" - name: "Arie Middelkoop" link: "https://researchr.org/alias/arie-middelkoop" - name: "Alexey Rodriguez" link: "https://researchr.org/alias/alexey-rodriguez" - name: "John van Schie" link: "https://researchr.org/alias/john-van-schie" year: "2008" doi: "http://doi.acm.org/10.1145/1411204.1411259" abstract: "The ICFP programming contest is a 72-hour contest, which attracts thousands of contestants from all over the world. In this report we describe what it takes to organise this contest, the main ideas behind the contest we organised, the task, how to solve it, how we created it, and how well the contestants did. This year's task was to reverse engineer the DNA of a stranded alien life form to enable it to survive on our planet. The alien's DNA had to be modified by means of a prefix that modified its meaning so that the alien's phenotype would approximate a given \"ideal\" outcome, increasing its probability of survival. About 357 teams from 39 countries solved at least part of the contest. The language of choice for discriminating hackers turned out to be C++. " links: doi: "http://doi.acm.org/10.1145/1411204.1411259" tags: - "programming languages" - "C++" - "programming" researchr: "https://researchr.org/publication/DolstraHHHJLLMRS08" cites: 0 citedby: 0 pages: "397-408" booktitle: "ICFP" kind: "inproceedings" key: "DolstraHHHJLLMRS08" - title: "NixOS: A purely functional Linux distribution" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Andres Löh" link: "https://researchr.org/alias/andres-l%C3%B6h" - name: "Nicolas Pierron" link: "https://researchr.org/alias/nicolas-pierron" year: "2008" doi: "http://dx.doi.org/10.1017/S0956796810000195" links: doi: "http://dx.doi.org/10.1017/S0956796810000195" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/jfp/DolstraLP08" researchr: "https://researchr.org/publication/DolstraLP08" cites: 0 citedby: 0 journal: "JFP" volume: "20" number: "5-6" pages: "577-615" kind: "article" key: "DolstraLP08" - title: "Disnix: A toolset for distributed deployment" author: - name: "Sander van der Burg" link: "https://researchr.org/alias/sander-van-der-burg" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2014" doi: "http://dx.doi.org/10.1016/j.scico.2012.03.006" links: doi: "http://dx.doi.org/10.1016/j.scico.2012.03.006" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/scp/BurgD14" researchr: "https://researchr.org/publication/BurgD14" cites: 0 citedby: 0 journal: "SCP" volume: "79" pages: "52-69" kind: "article" key: "BurgD14" - title: "Efficient Upgrading in a Purely Functional Component Deployment Model" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2005" doi: "http://dx.doi.org/10.1007/11424529_15" links: doi: "http://dx.doi.org/10.1007/11424529_15" tags: - "deployment" researchr: "https://researchr.org/publication/Dolstra05" cites: 0 citedby: 0 pages: "219-234" booktitle: "cbse" kind: "inproceedings" key: "Dolstra05" - title: "Purely Functional System Configuration Management" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Armijn Hemel" link: "https://researchr.org/alias/armijn-hemel" year: "2007" doi: "http://www.usenix.org/events/hotos07/tech/full_papers/dolstra/dolstra.pdf" links: doi: "http://www.usenix.org/events/hotos07/tech/full_papers/dolstra/dolstra.pdf" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/hotos/DolstraH07" researchr: "https://researchr.org/publication/DolstraH07" cites: 0 citedby: 0 booktitle: "hotos" kind: "inproceedings" key: "DolstraH07" - title: "Tracing software build processes to uncover license compliance inconsistencies" author: - name: "Sander van der Burg" link: "https://researchr.org/alias/sander-van-der-burg" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Shane McIntosh" link: "https://researchr.org/alias/shane-mcintosh" - name: "Julius Davies" link: "https://researchr.org/alias/julius-davies" - name: "Daniel M. Germán" link: "https://researchr.org/alias/daniel-m.-germ%C3%A1n" - name: "Armijn Hemel" link: "https://researchr.org/alias/armijn-hemel" year: "2014" doi: "http://doi.acm.org/10.1145/2642937.2643013" links: doi: "http://doi.acm.org/10.1145/2642937.2643013" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/BurgDMDGH14" researchr: "https://researchr.org/publication/BurgDMDGH14" cites: 0 citedby: 0 pages: "731-742" booktitle: "ASE" kind: "inproceedings" key: "BurgDMDGH14" - title: "A self-adaptive deployment framework for service-oriented systems" author: - name: "Sander van der Burg" link: "https://researchr.org/alias/sander-van-der-burg" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2011" doi: "http://doi.acm.org/10.1145/1988008.1988039" links: doi: "http://doi.acm.org/10.1145/1988008.1988039" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/icse/BurgD11" researchr: "https://researchr.org/publication/BurgD11" cites: 0 citedby: 0 pages: "208-217" booktitle: "ICSE" kind: "inproceedings" key: "BurgD11" - title: "NixOS: a purely functional Linux distribution" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Andres Löh" link: "http://people.cs.uu.nl/andres/" year: "2008" doi: "http://doi.acm.org/10.1145/1411204.1411255" abstract: "Existing package and system configuration management tools suffer from an imperative model, where system administration actions such as upgrading packages or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to run multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a purely functional system configuration model. This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogously to a heap in a purely function language. We have implemented this model in NixOS, a non-trivial Linux distribution that uses the Nix package manager to build the entire system configuration from a purely functional specification. " links: doi: "http://doi.acm.org/10.1145/1411204.1411255" tags: - "meta-model" - "modeling language" - "language modeling" - "Meta-Environment" - "state machines" researchr: "https://researchr.org/publication/DolstraL08" cites: 0 citedby: 0 pages: "367-378" booktitle: "ICFP" kind: "inproceedings" key: "DolstraL08" - title: "Crowdsourced user interface testing for multimedia applications" author: - name: "Raynor Vliegendhart" link: "https://researchr.org/alias/raynor-vliegendhart" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Johan A. Pouwelse" link: "https://researchr.org/alias/johan-a.-pouwelse" year: "2012" doi: "http://doi.acm.org/10.1145/2390803.2390813" links: doi: "http://doi.acm.org/10.1145/2390803.2390813" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/mm/VliegendhartDP12" researchr: "https://researchr.org/publication/VliegendhartDP12" cites: 0 citedby: 0 pages: "21-22" booktitle: "mm" kind: "inproceedings" key: "VliegendhartDP12" - title: "A Self-Adaptive Deployment Framework for Service-Oriented Systems" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2011" month: "May" abstract: "Deploying components of a service-oriented system in a network of machines is often a complex and labourious process. Usually the environment in which such systems are deployed is dynamic: any machine in the network may crash, network links may temporarily fail, and so on. Such events may render the system partially or completely unusable. If an event occurs, it is difficult and expensive to redeploy the system to the take the new circumstances into account. In this paper we present a self-adaptive deployment framework built on top of Disnix, a model-driven distributed deployment tool for service-oriented systems. This framework dynamically discovers machines in the network and generates a mapping of components to machines based on non-functional properties. Disnix is then invoked to automatically, reliably and efficiently redeploy the system." tags: - "rule-based" - "deployment" - "meta-model" - "Meta-Environment" - "process modeling" - "meta-objects" researchr: "https://researchr.org/publication/vanderburg11selfadaptive" cites: 0 citedby: 0 booktitle: "6th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS)" kind: "inproceedings" key: "vanderburg11selfadaptive" - title: "Declarative Testing and Deployment of Distributed Systems" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2010" month: "July" abstract: "System administrators and developers who deploy distributed systems have to deal with a deployment process that is largely manual and hard to reproduce. This paper describes how networks of computer systems can be reproducibly and automatically deployed from declarative specifications. Reproducibility also ensures that users can easily instantiate a test environment, before deploying the specification to the production environment. Furthermore, from the same specifications we can instantiate virtual networks of virtual machines for both interactive and automated testing. This makes it easy to write automated regression tests that require external machines, need special privileges, or depend on the network topology. We instantiate machines from the specifications using NixOS, a Linux distribution built from a purely functional specification. We have applied our approach to a number of representative problems, including automatic regression testing of a Linux distribution and deployment of a continuous integration environment." tags: - "deployment" - "meta-model" - "testing" - "Meta-Environment" - "systematic-approach" - "meta-objects" researchr: "https://researchr.org/publication/vanderburg10ddeploymentandtesting" cites: 0 citedby: 0 institution: "Delft University of Technology" number: "TUD-SERG-2010-020" address: "Delft, The Netherlands" kind: "techreport" key: "vanderburg10ddeploymentandtesting" - title: "Nix: A Safe and Policy-Free System for Software Deployment" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2004" doi: "http://www.usenix.org/publications/library/proceedings/lisa04/tech/dolstra.html" abstract: "Existing systems for software deployment are neither safe nor sufficiently flexible. Primary safety issues are the inability to enforce reliable specification of component dependencies, and the lack of support for multiple versions or variants of a component. This renders deployment operations such as upgrading or deleting components dangerous and unpredictable. A deployment system must also be flexible (i.e., policy-free) enough to support both centralised and local package management, and to allow a variety of mechanisms for transferring components. In this paper we present Nix, a deployment system that addresses these issues through a simple technique of using cryptographic hashes to compute unique paths for component instances." links: doi: "http://www.usenix.org/publications/library/proceedings/lisa04/tech/dolstra.html" tags: - "deployment" - "software components" - "software deployment" - "Nix" - "software component" researchr: "https://researchr.org/publication/DolstraJV04" cites: 0 citedby: 0 pages: "79-92" booktitle: "lisa" kind: "inproceedings" key: "DolstraJV04" - title: "Integrating Software Construction and Software Deployment" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2003" doi: "http://link.springer.de/link/service/series/0558/bibs/2649/26490102.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/2649/26490102.htm" tags: - "deployment" researchr: "https://researchr.org/publication/Dolstra03" cites: 0 citedby: 0 pages: "102-117" booktitle: "SCM" kind: "inproceedings" key: "Dolstra03" - title: "Building Interpreters with Rewriting Strategies" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2002" doi: "https://doi.org/10.1016/S1571-0661(04)80427-4" abstract: "Programming language semantics based on pure rewrite rules suffers from the gap between the rewriting strategy implemented in rewriting engines and the intended evaluation strategy. This paper shows how programmable rewriting strategies can be used to implement interpreters for programming languages based on rewrite rules. The advantage of this approach is that reduction rules are first class entities that can be reused in different strategies, even in other kinds of program transfor- mations such as optimizers. The approach is illustrated with several interpreters for the lambda calculus based on implicit and explicit (parallel) substitution, different strategies including normalization, eager evaluation, lazy evaluation, and lazy eval- uation with updates. An extension with pattern matching and choice shows that such interpreters can easily be extended." links: doi: "https://doi.org/10.1016/S1571-0661(04)80427-4" tags: - "laziness" - "programming languages" - "optimization" - "semantics" - "rule-based" - "pattern language" - "dynamic rewrite rules" - "interpreter" - "Stratego/XT" - "dynamic rules" - "parallel programming" - "reuse" - "graph-rewriting" - "rules" - "pattern matching" - "programming" - "program optimization" - "rewriting" - "systematic-approach" - "rewriting strategies" - "interpreters" - "Stratego" researchr: "https://researchr.org/publication/DolstraV02" cites: 0 citedby: 0 journal: "ENTCS" volume: "65" number: "3" pages: "57-76" kind: "article" key: "DolstraV02" - title: "Automated Deployment of a Heterogeneous Service-Oriented System" author: - name: "Sander van der Burg" link: "https://researchr.org/alias/sander-van-der-burg" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2010" doi: "http://doi.ieeecomputersociety.org/10.1109/SEAA.2010.10" links: doi: "http://doi.ieeecomputersociety.org/10.1109/SEAA.2010.10" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/euromicro/BurgD10" researchr: "https://researchr.org/publication/BurgD10-0" cites: 0 citedby: 0 pages: "183-190" booktitle: "euromicro" kind: "inproceedings" key: "BurgD10-0" - title: "Transparantie in variabiliteit: Heldere keuzes in een eenduidige configuratieomgeving" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Gert Florijn" link: "https://researchr.org/alias/gert-florijn" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2004" month: "February" abstract: "Elk eerbiedwaardig softwaresysteem biedt tegenwoordig de mogelijkheid om gedurende de levensduur de eigenschappen ervan te wijzigen. Om deze variatiepunten te modelleren wordt in het Jaquard-project TraCE gewerkt aan transparante configuratieomgevingen." researchr: "https://researchr.org/publication/DolstraFJV04" cites: 0 citedby: 0 journal: "Informatie" volume: "46" number: "1" pages: "18-21" kind: "article" key: "DolstraFJV04" - title: "Disnix: A toolset for distributed deployment" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2013" month: "May" researchr: "https://researchr.org/publication/vanderburg13disnix" cites: 0 citedby: 0 journal: "Science of Computer Programming (SCP)" kind: "article" key: "vanderburg13disnix" - title: "Automated Deployment of a Heterogeneous Service-Oriented System" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" year: "2010" month: "Sep" doi: "http://doi.ieeecomputersociety.org/10.1109/SEAA.2010.10" abstract: "Deployment of a service-oriented system in a network of machines is often complex and labourious. In many cases components implementing a service have to be built from source code for the right target platform, transferred to the right machines with the right capabilities and activated in the right order. Upgrading a running system is even more difficult as this may break the running system and cannot be performed atomically. Many approaches that deal with the complexity of a distributed deployment process only support certain types of components or specific environments, while general solutions lack certain desirable non-functional properties, such as atomic upgrading.This paper shows Disnix, a deployment tool which allows developers and administrators to reliably deploy, upgrade and roll back a service-oriented system consisting of various types of components in a heterogeneous environment from declarative specifications." links: doi: "http://doi.ieeecomputersociety.org/10.1109/SEAA.2010.10" "url": "http://www.st.ewi.tudelft.nl/~sander/pdf/publications/vanderburg10-automateddeployment.pdf" tags: - "deployment" - "type system" - "source-to-source" - "Meta-Environment" - "systematic-approach" - "open-source" researchr: "https://researchr.org/publication/vanderburg10automateddeployment" cites: 0 citedby: 0 pages: "183-190" booktitle: "36th EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA)" kind: "inproceedings" key: "vanderburg10automateddeployment" - title: "Imposing a Memory Management Discipline on Software Deployment" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" year: "2004" doi: "https://doi.org/10.1109/ICSE.2004.1317480" abstract: "The deployment of software components frequently fails because dependencies on other components are not declared explicitly or are declared imprecisely. This results in an incomplete reproduction of the environment necessary for proper operation, or in interference between incompatible variants. In this paper we show that these deployment hazards are similar to pointer hazards in memory models of programming languages and can be countered by imposing a memory management discipline on software deployment. Based on this analysis we have developed a generic, platform and language independent, discipline for deployment that allows precise dependency verification; exact identification of component variants; computation of complete closures containing all components on which a component depends; maximal sharing of components between such closures; and concurrent installation of revisions and variants of components. We have implemented the approach in the Nix deployment system, and used it for the deployment of a large number of existing Linux packages. We compare its effectiveness to other deployment systems." links: doi: "https://doi.org/10.1109/ICSE.2004.1317480" tags: - "programming languages" - "rule-based" - "program analysis" - "deployment" - "completeness" - "meta programming" - "generic programming" - "software components" - "program verification" - "meta-model" - "memory management" - "modeling language" - "language modeling" - "software deployment" - "Nix" - "software component" - "analysis" - "programming" - "Meta-Environment" - "systematic-approach" researchr: "https://researchr.org/publication/DolstraVJ04" cites: 0 citedby: 0 pages: "583-592" booktitle: "ICSE" kind: "inproceedings" key: "DolstraVJ04" - title: "Atomic Upgrading of Distributed Systems" author: - name: "Sander van der Burg" link: "http://www.st.ewi.tudelft.nl/~sander/" - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" - name: "Merijn de Jonge" link: "https://researchr.org/profile/merijndejonge/publications" year: "2008" doi: "http://doi.acm.org/10.1145/1490283.1490294" links: doi: "http://doi.acm.org/10.1145/1490283.1490294" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/hotswup/BurgDJ08" researchr: "https://researchr.org/publication/BurgDJ08" cites: 0 citedby: 0 booktitle: "HotSWUp" kind: "inproceedings" key: "BurgDJ08" - title: "Home Page" author: - name: "Eelco Dolstra" link: "https://researchr.org/profile/eelcodolstra/publications" researchr: "https://researchr.org/publication/homepages-82-1700" cites: 0 citedby: 0 kind: "misc" key: "homepages-82-1700"