Composition & References

Similar documents
System Configuration. Paul Anderson. publications/oslo-2008a-talk.pdf I V E R S I U N T Y T H

Toward provenancebased. configuration languages

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

ESCAPE. A MINWOO PARK FILM Press Kit

Last time. User Authentication. Security Policies and Models. Beyond passwords Biometrics

SUMMARY: MODEL DRIVEN SECURITY

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013

CSE 12 Abstract Syntax Trees

CMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are "built" on top of that.

10972: ADMINISTERING THE WEB SERVER (IIS) ROLE OF WINDOWS SERVER

Endian Proxy / Firewall

WORKING IN TEAMS WITH CASECOMPLETE AND THE CASECOMPLETE PROJECT SHARING ADDIN. Contents

WORKING IN TEAMS WITH CASECOMPLETE AND SUBVERSION. Contents

Operating Systems Design Exam 3 Review: Spring 2011

How to get online with us (New Instructions dated February 2015) We had to change providers for the Ventrilo program. What this means for those who

XML Web Services Basics

CS 415 Midterm Exam Spring SOLUTION

Course 10972B: Administering the Web Server (IIS) Role of Windows Server

Data Management CS 4720 Mobile Application Development

Software Development I

use attributes (); # optional, to get subroutine declarations = attributes::get(\&foo);

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach.

Internet Networking recitation #

CSCI 204 Introduction to Computer Science II. Lab 6: Stack ADT

CIS 771: Software Specifications. Lecture 4: More Alloy Basics

The easiest way to get these data into STATA is for you to fire up the STATA Data Editor and just type the data into the spreadsheet-like interface.

Module 1: Understanding and Installing Internet Information Services

SIP and VoIP What is SIP? What s a Control Channel? History of Signaling Channels

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM

History...: Displays a window of Gitk, a standard commit viewer for Git.

Computer Security module

Type Checking in COOL (II) Lecture 10

Usability and Confusion in Configuration Languages

MPEG Frame Types intrapicture predicted picture bidirectional predicted picture. I frames reference frames

Better Extensibility through Modular Syntax. Robert Grimm New York University

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

CS3205 HCI IN SOFTWARE DEVELOPMENT INTRODUCTION TO PROTOTYPING. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford)

MS-10972: Administering the Web Server (IIS) Role of Windows Server

Web Development IB PRECISION EXAMS

1: Introduction to Object (1)

Access Control Models

CS 215 Software Design Homework 3 Due: February 28, 11:30 PM

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships

Welcome! Virtual tutorial will start at 15:00 GMT. Please leave feedback afterwards at:

Austin Community College Google Apps Calendars Step-by-Step Guide

Documentation Nick Parlante, 1996.Free for non-commerical use.

Design Pattern: Composite

Writing LCFG components

Buddhist Symbols Style Guide

DKIM Base Issue Review IETF 66 Montréal. Eric Allman

System Administration

EASYLAMP REDHAT V1.0 DOCUMENT OWNER: OUDHUIS, JONATHAN INGRAM MICRO CLOUD EUROPE

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

b. Developing multiple versions of a software project in parallel

('cre Learning that works for Utah STRANDS AND STANDARDS WEB DEVELOPMENT 1

The Stack, Free Store, and Global Namespace

INSE 6160 Database Security and Privacy

Functional Programming. Pure Functional Languages

OCSP Stapling. Let the web server protect the users! SWITCHpki Team Bern, SWITCH 1

CMSC202 Computer Science II for Majors

Introduction to Security in Laserfiche 8.3 and later. White Paper

#Uncomment the second line to enable any form of FTP write command. #write_enable=yes

Lecture 4 CSE July 1992

Table of Contents 1.1. Introduction Installation Quick Start Documentation Asynchronous Configuration 1.4.

6.858 Quiz 2 Review. Android Security. Haogang Chen Nov 24, 2014

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

COP 3330 Final Exam Review

Bouml Tutorial. The tutorial must be read in order because I will not repeat each time the general commands to call a menu etc...

Usability and Evaluation of BCKOnline PORTAL Prototype Early breast cancer Recurrent Advanced

Website/Blog Admin Using WordPress

Azon Master Class. By Ryan Stevenson Guidebook #4 WordPress Installation & Setup

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Lecture Notes 14 : Public-Key Infrastructure

Trust is the Foundations for Computer Security

Pointers. A pointer is simply a reference to a variable/object. Compilers automatically generate code to store/retrieve variables from memory

RESOURCES GUIDE, VOLUME ONE Copyright, Disclaimer, and Legal Notices

CISC 1400 Discrete Structures

Chapter 4 Requirements Elicitation

CSc 520 Principles of Programming Languages

Oracle Advanced Security: Enterprise User Management. An Oracle Technical White Paper November 1999

Escher s Tessellations: The Symmetry of Wallpaper Patterns II. Symmetry II

ADDING CSS TO YOUR HTML DOCUMENT. A FEW CSS VALUES (colour, size and the box model)

Functional Programming. Big Picture. Design of Programming Languages

Mysql Tutorial Create Database Username Password Through Phpmyadmin

Tim moves to accept, Chris Z seconds. No objections or comments.

HTTP. Clarifying the Fundamentals of. January 21, Jeffrey Mogul. HP Labs Large Scale Systems group

Operating Systems Design Exam 3 Review: Spring Paul Krzyzanowski

RAQUEL s Relational Operators

Lab 08. Command Line and Git

Using Dreamweaver CC. 6 Styles in Websites. Exercise 1 Linked Styles vs Embedded Styles

Object Model Comparisons

CSC207 Week 4. Larry Zhang

Lecturer: William W.Y. Hsu. Programming Languages

Prolog. Logic Programming vs Prolog

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

TDDC88 Lab 4 Software Configuration Management

AADL Graphical Editor Design

Lecture 2: SML Basics

Cryptography Worksheet

Transcription:

Some thoughts on Composition & References in declarative configurations Paul Anderson dcspaul@ed.ac.uk http://homepages.inf.ed.ac.uk/dcspaul

ssh client browser dns service ssh certificates ssl certificates directories permissions etc accounts tables etc web server (apache) application (owncloud) database (mariadb) ssh package manager logrotate logfiles ports firewall (ufw) packages backups files

https://www.flickr.com/photos/foilman/15844421582

Declarative configuration figure: { head: { face: "male" hair: { style: "short" colour: brown" hat: none clothing: {...

Composition Z X X is a workman like Y but he works for the same company as Z Y

Specialisation (instance inheritance) This is a typical operation +> +> = Or I want a Redhat Linux machine running Apache and Wordpress This works fine if the aspects are disjoint

Conflicts Hair will not extend beyond the bottom of the earlobe International Association of Women in Fire and Emergency Services http://bit.ly/1jt0mz5 +> +> = A female firefighter? +> +> = Or a firefighting female?

Commutative composition The user is forced to make this decision But they don t usually have the information to do this And neither order may be correct if there are multiple conflicts! <+> = <+> =?? The user needs a commutative composition operation And the authors of the components need to specify how they should be composed

Resolving conflicts What do we mean when we specify a value for a resource? The value really must be 42. I don't really care what the value is, but I can't leave it empty, so I'll give it the value 0. 36 would be a good value, but I don't care if someone else would rather have something different. I think it should be 46, but if Jane thinks it should be different, then believe her. The value must be between 100-200, but I can't specify a range, so I'll say 150.

Tags & constraints In L3, we can tag resource values a: { colour: "red" #alicesays b: { colour: "blue" #bobsays And we can specify precedence between the tags c: ( $a <+> $b ) #alicesays >> #bobsays d: ( $a <+> $b ) #alicesays << #bobsays This supports requirements such as I think it should be 46, but if Jane thinks it should be different, then believe her. Parameters specified at a departmental level should override those set at a corporate level.

Composition example figure: { head: { face: "male" hair: { style: "short" colour: "brown" clothing: { top: "bluetop" bottom: "bluebottom" #default female: $figure <+> { head: { face: "female" #final hair: { style: "long" Alice Bob Carol Eve fireperson: $figure <+> { head: { hair: { style: "short" hat: { style: "firehat" colour: "red" clothing: { top: "firetop" bottom: "redbottom" #final alice: $female bob: $fireperson carol: $female <+> ^fireperson eve: $fireperson <+> ^female

Specialisation fireperson: $figure +> { head: { hat: "firehat" clothing: { top: "firetop" bottom: "redbottom" = +> This can now be defined in terms of composition (X +> Y) (X #tag1 <+> Y #tag2) #tag1 << #tag2

References A A must have the same colour helmet as B B

References Some motivations for references Cloning prototypes (usually to be specialised) Ensuring consistency between related resources bob: $fireperson carol: $female <+> $fireperson eve: $fireperson <+> $female service: { port: 45; server: { port: $service.port; client: { port: $service.port; Absolute references are unambiguous But there are different possible semantics for relative references The interaction with composition is interesting

Relative references In this example, neither a purely late binding of the references, nor a purely early binding yields the obviously expected result: service: { port: 25 #default client: { port: ^^port,... server: { port: ^^port,... myservice: ^service +> { port: 26 machinea: ^myservice.client +> {... machineb: ^myservice.server +> {...

Disambiguating references We could provide multiple types of reference LCFG has early and late references with different notations This is error-prone and very difficult for the user to get right Humans are used to disambiguating references "Divorcee and former air hostess Zsuzsi Starkloff talks on camera for the first time about her relationship with Prince William of Gloucester, the Queen's cousin and pageboy at her wedding (The Independent newspaper, Thursday 27th August 2015) L3 currently has an experimental semantics Using composition to disambiguate multiple possible reference interpretations

References in L3 service: { port: 25 #default client: { port: ^^port,... server: { port: ^^port,... myservice: ^service +> { port: 26 machinea: ^myservice.client +> {... machineb: ^myservice.server +> {... We compose all of the possible interpretations machinea.port = (25 #default) <+> 26 <+> null

That s it No coherent language proposal (yet) Just thinking about these kind of features, and Issues Basic semantics - e.g. tag & constraint inheritance Usability - do we get unexpected results? - how easy is it to express existing configurations? - simplicity vs expressiveness Additional features - block parameters - lists, composition, ordering, map, filter, etc.. Implementation - Evaluation & efficiency