This page refers to a tool for multiparty session types. It is not to be confused with the Racket-based document preparation system Scribble.
Scribble is a specification language for communicating protocols.
The Scribble project was started by Kohei Honda in 2006. It was based on his experience as an invited expert for the W3C Web Services Choreography Description (WS-CDL) Working Group.
The design of Scribble predated and influenced the formulation of multiparty session types as a core language.
A Scribble protocol begins with global (multiparty session) type, which describes the interactions among all communicating participants.
The tool is then able to validate this protocol, and project it to each participant.
Projection returns a local session type, which describes communication actions from the viewpoint of that particular participant.
For example, the following code describes the two-buyer protocol:
global protocol Bookstore
(role Sell, role Buy1, role Buy2) {
book(string) from Buy1 to Sell;
book(int) from Sell to Buy1;
quote(int) from Buy1 to Buy2;
choice at Buy2 {
agree(string) from Buy2 to Buy1, Sell;
transfer(int) from Buy1 to Sell;
transfer(int) from Buy2 to Sell;
} or {
quit(string) from Buy2 to Buy1, Sell;
}
}
After projection, the Seller
type is described as follows:
local protocol Bookstore_Sell
(self Sell,role Buy1,role Buy2) {
book(string) from Buy1;
book(int) to Buy1;
choice at Buy2{
agree(string) from Buy2;
transfer(int) from Buy1;
transfer(int) from Buy2;
} or {
quit(string) from Buy2;
}
}
There is an official Scribble website.
There is a project website hosted at Imperial College.
There is also a GitHub org. Most repos look somewhat stale as of 2020.
The history and status of Scribble is described in a TGC 2013 invited paper:
Yoshida, N., Hu, R., Neykova, R., Ng, N. (2014). The Scribble Protocol Language. In: Abadi, M., Lluch Lafuente, A. (eds) Trustworthy Global Computing. TGC 2013. Lecture Notes in Computer Science(), vol 8358. Springer, Cham. https://doi.org/10.1007/978-3-319-05119-2_3 [pdf]
@inproceedings{YHNN2013,
author = {Nobuko Yoshida and Raymond Hu and Rumyana Neykova and Nicholas Ng},
title = {{The Scribble Protocol Language}},
booktitle = {8th International Symposium on Trustworthy Global Computing},
series = {LNCS},
volume = {8358},
pages = {22--41},
publisher = {Springer},
doi = "10.1007/978-3-319-05119-2_3",
year = 2013
}