Open Systems Laboratory at Illinois

Why do scala developers mix the actor model with other concurrency models?

By Samira Tasharofi, Peter Dinges, and Ralph E. Johnson. In ECOOP, volume 7920 of Lecture Notes in Computer Science, 302–326. Springer, 2013.

Full Text:
Download PDF
Publisher Link:
http://dx.doi.org/10.1007/978-3-642-39038-8_13

Abstract

Mixing the actor model with other concurrency models in a single program can break the actor abstraction. This increases the chance of creating deadlocks and data races---two mistakes that are hard to make with actors. Furthermore, it prevents the use of many advanced testing, modeling, and verification tools for actors, as these require pure actor programs. This study is the first to point out the phenomenon of mixing concurrency models by Scala developers and to systematically identify the factors leading to it. We studied 15 large, mature, and actively maintained actor programs written in Scala and found that 80% of them mix the actor model with another concurrency model. Consequently, a large part of real-world actor programs does not use actors to their fullest advantage. Inspection of the programs and discussion with the developers reveal two reasons for mixing that can be influenced by researchers and library-builders: weaknesses in the actor library implementations, and shortcomings of the actor model itself.

BibTeX

@inproceedings{conf/ecoop/TasharofiDJ13,
    author = "Tasharofi, Samira and Dinges, Peter and Johnson, Ralph
              E.",
    editor = "Castagna, Giuseppe",
    title = "Why Do Scala Developers Mix the Actor Model with other
             Concurrency Models?",
    booktitle = "ECOOP",
    crossref = "conf/ecoop/2013",
    ee = "http://dx.doi.org/10.1007/978-3-642-39038-8_13",
    pages = "302-326",
    year = "2013",
}

@proceedings{conf/ecoop/2013,
    editor = "Castagna, Giuseppe",
    title = "ECOOP 2013 - Object-Oriented Programming - 27th European
             Conference, Montpellier, France, July 1-5, 2013. Proceedings",
    ee = "http://dx.doi.org/10.1007/978-3-642-39038-8",
    isbn = "978-3-642-39037-1",
    publisher = "Springer",
    series = "Lecture Notes in Computer Science",
    volume = "7920",
    year = "2013",
}