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 JupyterLab Extension for Cell Tags

Moderated by: Rose Chang

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. Inspired by the cell tag function in the Jupyter Notebook, our JupyterLab cell tags extension allows users to add descriptive tags to the cells in a notebook. Based on feedback from the Jupyter community, we wanted to improve upon this by adding the capability to perform operations on cells with a certain tag. This feature enables more detailed organization of notebooks, easing tasks such as creating presentations, testing code, and metaprogramming.

We started the project by reviewing existing GitHub issues regarding notebook tags and and identifying key user needs. The main issues we encountered with the existing Notebook tagging system are that it is obstructive and does not enable operations on tagged cells. Driven by these needs, we created functional prototypes of our interface, drawing inspiration from existing tag-based programs. We then performed a series of user tests with our prototype to evaluate user completion of basic tagging tasks with ease and minimal confusion. The feedback collected was used to iterate through our design process, ensuring the interface was simple and easy to use.

As for development, our extension employs the existing cell metadata dictionary as a container for tags, as prescribed by the Jupyter Notebook format. The user interface and front-end functionality was implemented using React. Specifically, the extension displays the tags associated with the current active cell and with the entire notebook. Users can also select a tag from either of these lists and rename or delete it across all associated cells. Notably, our extension allows users to select all cells with a given tag, supporting the performance of any operation on those cells. Our extension will benefit users by allowing them to organize their notebooks and streamline their workflow.

Our poster will feature an explanation of our design process and decisions as well as a description of the software architecture and a presentation of the final user interface. We will also describe the design and implementation of a new Table of Contents extension that integrates closely with the cell tags extension.