Select Page

PL Perspectives

Perspectives on computing and technology from and for those with an interest in programming languages.

Two textbooks defined a generation of PL instruction: Types and Programming Languages and Advanced Topics in Types and Programming Languages. Since then, we’ve seen a new generation of resources that set new standards for presentation—Programming Languages: Application and Interpretation, the Homotopy Type Theory book, Software Foundations, Certified Programming with Dependent Types—but these “books” also have another interesting characteristic: they’re freely available, or even open source. Some of them don’t even have physical versions!

These books are a tremendous resource. I believe we can do more. The PL community can develop an open-source, open-access, and interactive journal for excellent explanations of important ideas. There’s precedent in the ML community: Distill. Distill offers beautiful and well explained examples of machine learning research, with more than a million unique readers in its first year! Many Distill articles link to computational notebooks, which allows readers to quickly work with state-of-the-art implementations and demonstrations. What’s more, managing accessibility to, e.g., screen readers, is much more tractable in HTML than in LaTeX-generated PDF.

Such a journal—let’s call it exPLain just to give it a name—would increase the reach and impact of PL research, help train new students, and foster a culture of reproducible public artifacts. Clear explanations of new or big ideas will help develop the field by expanding the use and understanding of those ideas, just as TAPL and ATTAPL did for the use of syntactic methods in type systems and semantics.

Changes in publishing are afoot in SIGPLAN and beyond. Some of these changes are happening whether we want them or not! Moshe Vardi seems optimistic about how “ACM is launching a Presidential Task force on Future Formats for ACM Conferences”. I’m not so optimistic. If we don’t have our own approaches to future formats, we’ll end up with something like TAPS, with its approved list of packages and restrictions on custom macros


What would we want out of a exPLain journal? It should be: open access (i.e., free to read), stable (i.e., can be archived and cited), accessible (both in the sense of easy to access but also in the sense of universal design), interactive, and open source. A website with a static server and client-side interactivity is a natural fit.

Articles should be targeted at a deeper level than existing textbook and course materials. They should be high-quality, clear, up-to-date explanations of contemporary concepts in PL. Ideally, articles should be understandable to anyone with an undergraduate education in computer science, i.e., starting PhDs, while also containing material useful for PL experts who are new to the article’s area. Articles could reference appropriate chapters in TAPL (or whatever other textbook), but eventually exPLain could have its own background material, in the same consistent, interactive style. Articles should cover both theoretical and practical aspects. Articles should be peer reviewed both for accuracy and for quality.

Lastly, the journal will be a stronger resource if it is coherent. That is, articles should share notational and editorial conventions. PL notation is a barrier to entry, and we should include a broad audience.


There is no good, single toolchain for web publishing. The Distill template is a wonderful start, but LaTeX practices in PL mean we probably need something better than just Mathjax. Visualization and interactivity are key components: they bring the reader along and invite exploration. PDF papers often have “stop-motion animation” figures… how much better to have real animation! An article on Distill makes the argument well. Backing up theory with running code to demonstrate the idea and explaining complex code with elegant theory gives people more ways to get at the material. Many Distill articles come with computational notebooks, which can be easily remixed and experimented with.

Interactivity is generally a challenge: web programming is hard! While we’re experts in our research areas, we’re not all experts at interactive web programming or visualization. Keeping server-side demands low is critical, and many PL tools demand heavyweight support. But, say, Z3 runs in WASM pretty well.

Archiving of papers is already hard, and we’ll have to think carefully about what and how we archive (and how an archived paper is cited). Zenodo and Software Heritage can help.

Coming up with and enforcing notational standards is hard… the PL community has some very strong feelings about notation! We would need an editorial board to come up with and enforce these standards, knowing that there’s no way to satisfy everyone. Meeting these standards will be a challenge, too! Distill uses a Slack to “mentor” would-be article writers. How should we foster the exPLain community?

Editorial curation is also important, especially at the outset, to ensure that the chosen articles are meeting a need, and can build momentum. There is a wide variety of possible topics, e.g, an omnibus on program synthesis (perhaps expanding James Bornholt’s overview), an omnibus on refinement types (perhaps a derivation of Jhala and Vazou’s tutorial), an overview of the theory and practice of random testing (e.g., Quickcheck-style, or fuzzing-style), an explainer on architectural memory models, … and many more!

Reviewing and revising will be a lot of work. Distill has three staff members. In all likelihood, exPLain would start with zero staff members. How can we make the work sustainable?

A domain name and hosting cost money. Distill also offers a prize (though it’s not clear if it’s ever actually been awarded). How should the journal be funded?

Finally, the hardest part of any software project is coming up with a name; exPLain is just one thing that came to mind (which blog editor Mike Hicks particularly liked!), so here are a few more: Re:PL, PLaybook, simPLify.

What’s next?

To make this happen, we need a group of people to help drive it: a group with diverse viewpoints; a group whose work covers a broad swath of PL research. That small group can hash out the initial details. Then we need… some articles!

If you’re excited about this idea and willing to dedicate your time to making it happen, please be in touch. A journal like this would do good things for the PL community—let’s make it happen.

Acknowledgments: As usual, Mike Hicks provided valuable editing advice and thoughts on the proposal.

Bio: Michael Greenberg is an assistant professor at Pomona College. He received BAs in Computer Science and Egyptology from Brown University (2007) and his PhD in Computer Science from the University of Pennsylvania (2013). His work has ranged from functional-reactive JavaScript to runtime verification of higher-order programs to software-defined networking to present activities focused on Kleene algebra with tests, Datalog, and the POSIX shell.

Photo credit: Wikipedia.

Disclaimer: These posts are written by individual contributors to share their thoughts on the SIGPLAN blog for the benefit of the community. Any views or opinions represented in this blog are personal, belong solely to the blog author and do not represent those of ACM SIGPLAN or its parent organization, ACM.