Skip to content

Commit f65d19e

Browse files
committed
bibliography tweaks
1 parent e80c7c4 commit f65d19e

File tree

1 file changed

+35
-34
lines changed

1 file changed

+35
-34
lines changed

_bibliography/papers.bib

+35-34
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
44
@thesis{Sokolowski:2024:Reliable,
55
type = {phdthesis},
6-
file = {papers/2024_Reliable-Infrastructure-as-Code-for-Decentralized-Organizations.pdf},
76
projects = {ProTI,µs},
7+
file = {papers/2024_Reliable-Infrastructure-as-Code-for-Decentralized-Organizations.pdf},
88
author = {Sokolowski, Daniel},
99
title = {Reliable infrastructure as Code for Decentralized Organizations},
1010
year = {2024},
@@ -13,21 +13,20 @@ @thesis{Sokolowski:2024:Reliable
1313
address = {St. Gallen, Switzerland},
1414
urn = {urn:nbn:ch-bel-hsg-10608},
1515
keywords = {Infrastructure as Code, Cloud, Cloud Provisioning, Configuration Management, Deployment Coordination, Testing},
16-
abstract = {IT must be reliable for organizations to thrive and quickly adaptable for their swift reaction to their environment. Agility is vital, and DevOps achieves these goals by empowering independent cross-functional teams in decentralized organizations and automating the entire software pipeline. Infrastructure as Code (IaC) is the critical tool to automate software operations, including infrastructure provisioning, application deployment, and configuration. Beyond simple IaC scripts, developers implement IaC programs in programming languages like TypeScript and Python. Such IaC programs are software, and their reliability is crucial to the functionality and security of the deployed systems. Still, techniques for the rapid development of reliable IaC programs are missing, limiting organizations’ agility. Specifically, developers lack automation for deployment coordination and updating and quality assurance tools for, e.g., testing and verification.\par We surveyed 134 IT professionals, finding that coordination across deployments is commonly needed and often requires manual coordination, even though IT professionals believe automated coordination yields better agility. However, automated approaches are centralized, limiting team independence and agility in decentralized organizations. To solve this issue, we propose automating coordination across deployments in a decentralized fashion through μs ([mju:z] “muse”), a novel IaC solution. With μs, teams have separate IaC programs, which express and jointly automate the correct order of operations across deployments. We further show how μs enables safe updating through IaC programs, preventing updates from breaking distributed transactions or workflows.\par Beyond automating the coordination of IaC programs, we address the reliability of IaC program code. To unblock studies, we built a dataset of 37 712 public IaC programs. In initial analyses, only a vanishing fraction implements tests. We identified that available testing techniques are either slow and resource-intensive or require excessive development effort. To solve this dilemma, we propose ACT, an extensible automated unit testing approach that enables testing IaC programs quickly in hundreds of configurations, often without writing additional testing code.\par This dissertation studies the coordination and testing of IaC programs. Empirically motivated, we present μs for safe deployment coordination and updating in decentralized setups and ACT for efficient testing of IaC programs. Our contributions nurture future research and reliable deployments in decentralized organizations, ensuring agility.}
16+
abstract = {IT must be reliable for organizations to thrive and quickly adaptable for their swift reaction to their environment. Agility is vital, and DevOps achieves these goals by empowering independent cross-functional teams in decentralized organizations and automating the entire software pipeline. Infrastructure as Code (IaC) is the critical tool to automate software operations, including infrastructure provisioning, application deployment, and configuration. Beyond simple IaC scripts, developers implement IaC programs in programming languages like TypeScript and Python. Such IaC programs are software, and their reliability is crucial to the functionality and security of the deployed systems. Still, techniques for the rapid development of reliable IaC programs are missing, limiting organizations’ agility. Specifically, developers lack automation for deployment coordination and updating and quality assurance tools for, e.g., testing and verification.\par We surveyed 134 IT professionals, finding that coordination across deployments is commonly needed and often requires manual coordination, even though IT professionals believe automated coordination yields better agility. However, automated approaches are centralized, limiting team independence and agility in decentralized organizations. To solve this issue, we propose automating coordination across deployments in a decentralized fashion through μs ([mju:z] “muse”), a novel IaC solution. With μs, teams have separate IaC programs, which express and jointly automate the correct order of operations across deployments. We further show how μs enables safe updating through IaC programs, preventing updates from breaking distributed transactions or workflows.\par Beyond automating the coordination of IaC programs, we address the reliability of IaC program code. To unblock studies, we built a dataset of 37 712 public IaC programs. In initial analyses, only a vanishing fraction implements tests. We identified that available testing techniques are either slow and resource-intensive or require excessive development effort. To solve this dilemma, we propose ACT, an extensible automated unit testing approach that enables testing IaC programs quickly in hundreds of configurations, often without writing additional testing code.\par This dissertation studies the coordination and testing of IaC programs. Empirically motivated, we present μs for safe deployment coordination and updating in decentralized setups and ACT for efficient testing of IaC programs. Our contributions nurture future research and reliable deployments in decentralized organizations, ensuring agility.},
1717
}
1818

19-
@article{Koehler:2024:Consistent,
19+
@article{Köhler:2024:Consistent,
2020
acronym = {TSE},
2121
file = {papers/2024_Consistent-Local-First-Software-Enforcing-Safety-and-Invariants-for-Local-First-Applications.pdf},
2222
author = {Köhler, Mirko and Zakhour, George and Weisenburger, Pascal and Salvaneschi, Guido},
2323
title = {Consistent Local-First Software: Enforcing Safety and Invariants for Local-First Applications},
24-
journal={IEEE Transactions on Software Engineering},
2524
year = {2024},
26-
month = sept,
27-
volume = {},
28-
articleno = {},
25+
month = sep,
26+
journal = {IEEE Transactions on Software Engineering},
2927
numpages = {12},
30-
abstract = {Local-first software embraces data replication as a means to achieve scalability and offline availability. A crucial ingredient of local-first software are mergeable data types, like conflict-free replicated data types (CRDTs), which feature eventual consistency by enabling processes to access data locally and later merge it with other replicas in an asynchronous manner. Notably, the merging process needs to adhere to application constraints for correctness. Ensuring such application-level invariants poses a challenge, as developers must reason about the replicated program state and resort to manual synchronization of specific application components to enforce the invariant. \par This paper introduces ConLoc (Consistent Local-First Software), a novel system designed to automatically enforce safety and maintain invariants in local-first applications. ConLoc effectively addresses the issue of preserving invariants in the execution of programs with replicated data types, including CRDTs. Our approach is able to verify the correctness of many CRDTs examined in the literature and in implementations, such the ones used in the Riak database. ConLoc ensures that applications are automatically synchronized correctly, resulting in substantial latency and throughput improvements when compared to sequential execution, while upholding the same set of invariants.}
28+
issn = {0098-5589},
29+
abstract = {Local-first software embraces data replication as a means to achieve scalability and offline availability. A crucial ingredient of local-first software are mergeable data types, like conflict-free replicated data types (CRDTs), which feature eventual consistency by enabling processes to access data locally and later merge it with other replicas in an asynchronous manner. Notably, the merging process needs to adhere to application constraints for correctness. Ensuring such application-level invariants poses a challenge, as developers must reason about the replicated program state and resort to manual synchronization of specific application components to enforce the invariant.\par This paper introduces ConLoc (Consistent Local-First Software), a novel system designed to automatically enforce safety and maintain invariants in local-first applications. ConLoc effectively addresses the issue of preserving invariants in the execution of programs with replicated data types, including CRDTs. Our approach is able to verify the correctness of many CRDTs examined in the literature and in implementations, such the ones used in the Riak database. ConLoc ensures that applications are automatically synchronized correctly, resulting in substantial latency and throughput improvements when compared to sequential execution, while upholding the same set of invariants.},
3130
}
3231

3332
@inproceedings{Richter:2024:Compiling,
@@ -272,7 +271,7 @@ @inproceedings{Spielmann:2023:Extensible
272271
abstract = {Developers automate deployments with Programming Languages Infrastructure as Code (PL-IaC) by implementing IaC programs in popular languages like TypeScript and Python. Yet, systematic testing---well established for high-velocity software development---is rarely applied to IaC programs because IaC testing techniques are either slow or require extensive development effort. To solve this dilemma, we develop ProTI, a novel IaC unit testing approach, and implement it for Pulumi TypeScript. Our preliminary experiments with simple type-based test case generators and oracles show that ProTI can find bugs reliably in a short time, often without writing any additional testing code. ProTI's extensible plugin architecture allows combining, adopting, and experimenting with new approaches, opening the discussion about novel generators and oracles for efficient IaC testing.},
273272
}
274273

275-
@inproceedings{Koehler:2023:SafeCombination,
274+
@inproceedings{Köhler:2023:SafeCombination,
276275
acronym = {SPLASH Companion},
277276
projects = {ConSysT},
278277
file = {papers/2023_Safe-Combination-of-Data-Centric-and-Operation-Centric-Consistency.pdf},
@@ -293,12 +292,12 @@ @inproceedings{Koehler:2023:SafeCombination
293292
abstract = {Programming distributed systems requires maintaining consistency among data replicas. In recent years, various frameworks have proposed language-level abstractions for this, falling into two fundamental approaches: data-centric and operation-centric solutions. The former allow developers to explicitly assign consistency levels \emph{to data}, the latter enable attaching consistency constraints \emph{to operations}. In practice, developers may benefit from both in the same application: data-centric consistency harmonizes well with object-oriented programming, yet one may need the flexibility to access the same data with a different consistency level depending on the operation. Currently, there is no solution that integrates both: it is a conceptual challenge to unify these two models and design a type system capable of ensuring their correct interaction.\par We present ConOpY, a programming language that integrates both data-centric and operation-centric consistency into the same design. The ConOpY type system guarantees the proper usage of consistency levels, preventing consistency violations resulting from an improper mix of consistency models. ConOpY is implemented as a Java extension based on annotations.},
294293
}
295294

296-
@misc{Zakhour:2023:TypeChecking,
295+
@misc{Zakhour:2023:TypeCheckingCRDTs,
297296
acronym = {PLF},
298297
projects = {Propel},
299298
file = {papers/2023_Type-Checking-CRDTs-with-Propel.pdf},
300299
author = {Zakhour, George and Weisenburger, Pascal and Salvaneschi, Guido},
301-
title = {Type-Checking CRDTs with Propel},
300+
title = {Type-Checking {CRDTs} with Propel},
302301
year = {2023},
303302
month = oct,
304303
howpublished = {Presentation at the 2nd Workshop on Programming Local-First Software (PLF '23)},
@@ -383,31 +382,33 @@ @inproceedings{Richter:2023:DirectStyle
383382
prggrp = {noGroupPublication},
384383
}
385384

386-
@article{10.1145/3591276,
387-
author = {Zakhour, George and Weisenburger, Pascal and Salvaneschi, Guido},
388-
title = {Type-Checking CRDT Convergence},
389-
year = {2023},
390-
issue_date = {June 2023},
391-
publisher = {Association for Computing Machinery},
392-
address = {New York, NY, USA},
393-
volume = {7},
394-
number = {PLDI},
395-
url = {https://doi.org/10.1145/3591276},
396-
doi = {10.1145/3591276},
397-
abstract = {Conflict-Free Replicated Data Types (CRDTs) are a recent approach for keeping replicated data consistent while guaranteeing the absence of conflicts among replicas. For correct operation, CRDTs rely on a merge function that is commutative, associative and idempotent. Ensuring that such algebraic properties are satisfied by implementations, however, is left to the programmer, resulting in a process that is complex and error-prone. While techniques based on testing, automatic verification of a model, and mechanized or handwritten proofs are available, we lack an approach that is able to verify such properties on concrete CRDT implementations. \par In this paper, we present Propel, a programming language with a type system that captures the algebraic properties required by a correct CRDT implementation. The Propel type system deduces such properties by case analysis and induction: sum types guide the case analysis and algebraic properties in function types enable induction for free. Propel’s key feature is its capacity to reason about algebraic properties (a) in terms of rewrite rules and (b) to derive the equality or inequality of expressions from the properties. We provide an implementation of Propel as a Scala embedding, we implement several CRDTs, verify them with Propel and compare the verification process with four state-of-the-art verification tools. Our evaluation shows that Propel is able to automatically deduce the properties that are relevant for common CRDT implementations found in open-source libraries even in cases in which competitors timeout.},
398-
journal = {Proc. ACM Program. Lang.},
399-
month = jun,
400-
articleno = {162},
401-
numpages = {24},
402-
keywords = {Conflict-Free Replicated Data Types, Type Systems, Verification},
403-
website = {https://propel-prover.github.io/},
404-
file = {papers/2023_Type-Checking-CRDT-Convergence.pdf},
405-
projects = {Propel},
406-
acronym = {PLDI},
407-
supp = {https://doi.org/10.5281/zenodo.7817421},
385+
@article{Zakhour:2023:TypeChecking,
386+
acronym = {PLDI},
387+
projects = {Propel},
388+
file = {papers/2023_Type-Checking-CRDT-Convergence.pdf},
389+
author = {Zakhour, George and Weisenburger, Pascal and Salvaneschi, Guido},
390+
title = {Type-Checking {CRDT} Convergence},
391+
year = {2023},
392+
month = jun,
393+
issue_date = {June 2023},
394+
journal = {Proceedings of the ACM on Programming Languages},
395+
volume = {7},
396+
number = {PLDI},
397+
articleno = {162},
398+
numpages = {24},
399+
pages = {162:1--162:24},
400+
location = {Orlando, FL, USA},
401+
publisher = {ACM},
402+
address = {New York, NY, USA},
403+
issn = {2475-1421},
404+
doi = {10.1145/3591276},
405+
keywords = {Conflict-Free Replicated Data Types, Type Systems, Verifications},
406+
supp = {https://doi.org/10.5281/zenodo.8010989},
407+
code = {https://github.com/propel-prover},
408+
website = {https://propel-prover.github.io/},
409+
abstract = {Conflict-free Replicated Data Types (CRDTs) are a recent approach for keeping replicated data consistent while guaranteeing the absence of conflicts among replicas. For correct operation, CRDTs rely on a merge function that is commutative, associative and idempotent. Ensuring that such algebraic properties are satisfied by implementations, however, is left to the programmer, resulting in a process that is complex and error-prone. While techniques based on testing, automatic verification of a model, and mechanized or handwritten proofs are available, we lack an approach that is able to verify such properties on concrete CRDT implementations.\par In this paper, we present Propel, a programming language with a type system that captures the algebraic properties required by a correct CRDT implementation. The Propel type system deduces such properties by case analysis and induction: sum types guide the case analysis and algebraic properties in function types enable induction for free. Propel's key feature is its capacity to reason about algebraic properties (a) in terms of rewrite rules and (b) to derive the equality or inequality of expressions from the properties. We provide an implementation of Propel as a Scala embedding, we implement several CRDTs, verify them with Propel and compare the verification process with four state-of-the-art verification tools. Our evaluation shows that Propel is able to automatically deduce the properties that are relevant for common CRDT implementations found in open-source libraries even in cases in which competitors timeout.},
408410
}
409411

410-
411412
@inproceedings{Eskandani:2023:Lightweight,
412413
acronym = {ICPE},
413414
file = {papers/2023_Lightweight-Kubernetes-Distributions.pdf},

0 commit comments

Comments
 (0)