Introduction to Choreographies

Table of Contents (click to show)

Introduction to Choreographies (Cambridge University Press) is a pedagogical introduction to the principles of choreographic languages, choreographic programming, and their relation to distributed implementations.

This page collects general information, additional resources, and errata.

Discuss it on Discord or Zulip.

Where to get it

You can get the book from various libraries and websites, including:

If you are a student or work in academia, you can probably ask your local library to get a copy for you.

Reviews

Distributed Systems have a large number and variety of Computing infrastructure parts. One of the main challenges lies in the solid definition of concurrency and protocols. This excellent and timely book addresses these issues in a convincing way by taking the reader on a journey of dealing with and reasoning on choreographies by providing many examples.

Schahram Dustdar, TU Wien, Austria

A mass of dancers dance individually and concurrently following a choreography, creating a masterpiece collaboratively. Choreographies are a framework to promote a protocol-guided programming for no single point of failure. Montesi's book starts from a friendly introduction to formal methods for beginners and covers comprehensive choreography theories—from the simple choreographies to the advanced extensions. Highly recommended for the undergraduate and graduate computer science students as well as developers of web services.

Nobuko Yoshida, Christopher Strachey Chair of Computing, University of Oxford

Distributed systems are the norm today. Choreographies govern how autonomous parts of distributed systems that operate concurrently may communicate with each other. However, it is not always clear whether all communication participants comply with a given choreography design. This book comes to the remedy. Fabrizio Montesi, pioneer of choreographic programming with the Jolie language and microservices community leader, establishes a uniform theory and a notation for choreographies – not only to specify their protocols, but also to check participant conformance and prove desired properties including communication safety and freedom from starvation. Read this book if you want to learn or teach these concepts en route to more robust and more understandable Distributed Systems, and apply its concepts in practice if you want to prove that your language, middleware, and tool creations work as designed.

Olaf Zimmermann, Eastern Switzerland University of Applied Sciences, School of Computer Science, Author of Patterns for API Design - Simplifying Integration with Loosely Coupled Message Exchanges

Book description

In concurrent and distributed systems, processes can complete tasks together by playing their parts in a joint plan. The plan, or protocol, can be written as a choreography: a formal description of overall behaviour that processes should collaborate to implement, like authenticating a user or purchasing an item online. Formality brings clarity, but not only that. Choreographies can contribute to important safety and liveness properties. This book is an ideal introduction to theory of choreographies for students, researchers, and professionals in computer science and applied mathematics. It covers languages for writing choreographies and their semantics, and principles for implementing choreographies correctly. The text treats the study of choreographies as a discipline in its own right, following a systematic approach that starts from simple foundations and proceeds to more advanced features in incremental steps. Each chapter includes examples and exercises aimed at helping with understanding the theory and its relation to practice.

Additional Resources

Errata

Preface
Chapter 1
Chapter 2
Chapter 6
Chapter 7
Chapter 10
Chapter 11