Computational notebooks such as Jupyter are now used by millions of data scientists, machine learning engineers, and computational researchers to do exploratory and end-user programming. In recent years, dozens of different notebook systems have been developed across academia and industry. However, we still lack an understanding of how their individual designs relate to one another and what their tradeoffs are. To provide a holistic view of this rapidly-emerging landscape, we performed, to our knowledge, the first comprehensive design analysis of dozens of notebook systems. We analyzed 59 notebooks (16 academic papers, 28 industry products, and 15 experimental/R&D projects) and formulated a design space that succinctly captures variations in system features. Our design space covers 10 dimensions that include diverse ways of importing data, editing code and prose, running code, and distributing notebook outputs. We conclude by suggesting ways for researchers to push future projects beyond the current bounds of this space.
Sam Lau University of California San Diego, Ian Drosos University of California San Diego, Julia Markel University of California San Diego, Philip Guo University of California San Diego