When using a computational notebook, programmers tend to run, overwrite, and delete cells many times. These actions, which are core to exploratory programming, tend to create a long history of outputs that become fragmented and difficult to track. These outputs are critical to returning to past states when programmers make mistakes in implementation. They are also critical to understanding the evolution of a notebook which can help programmers improve how they code in different situations. To resolve this, this paper introduces the Output Archive, a thumbnail-based output history built into Jupyter Lab that automatically records all outputs produced over the lifetime of a notebook and makes the code that produced them available. This paper also introduces a new class of grouping filters which allows users to navigate large output histories by clustering outputs based on similarities in their underlying code (similar function name, object names, parameters). To test the tool, a usability study was run on 12 computational notebook users who found the Output Archive useful and were able to use its accompanying grouping filters to quickly find important outputs.




Download Full History