Brought to you by NumFOCUS Foundation and O’Reilly Media
The official Jupyter Conference
Aug 21-22, 2018: Training
Aug 22-24, 2018: Tutorials & Conference
New York, NY

A Status Bar Extension for JupyterLab

Moderated by: Richa Gadgil

We are one of three teams of Software Engineering and UI/UX Design Interns at Project Jupyter and currently undergraduates at California Polytechnic State University, San Luis Obispo. We created a status bar extension for Jupyterlab. Under the hood of Jupyterlab, there are many different states and conditions that are constantly changing. Examples include the states of the kernel (idle, busy, etc.), different modes (command, edit, presentation), and the state of files when they are being uploaded or modified. These different states were not always obvious to the users. Our status bar enables users to have a streamlined workflow by making information about states and state changes more visible at all times.

Status bars pose a constrained design challenge because it is difficult to balance usefulness with visual and cognitive overload. Because JupyterLab consists of multiple states, we needed a way to establish the precedence of information to be displayed. Through research, we created a list of possible states that could be displayed in the status bar as default components and ranked them to determine overall importance. They were ranked based on different design heuristics. We created a working design, conducted a variety of user tests, then optimized the design without sacrificing functionality. We designed an interface that displays information that increases the efficiency of working in JupyterLab.

From an engineering standpoint, there was no existing support for a status bar. This led us to create a new API in JupyterLab to add status bar content. We modeled the status bar as a JupyterLab extension, and developed default components within the status bar that had a global or notebook-related use. For example, some defaults include number of kernels running, file upload progress, and line and column number. We decided on defaults based on the design conclusions we reached. These defaults can be added and removed based on user’s preferences. However, customizable widgets created by other developers can also be inserted into the status bar. This allows Jupyterlab users to customize the status bar to best suit their workflow, making the experience of using JupyterLab more efficient and enjoyable.