JupyterCon 2023

Forrest Bao


Sessions

05-10
15:00
30min
CodePod: Scalable Computational Notebook on a Hierarchical Whiteboard with Scoped Runtime
Forrest Bao

Jupyter is great. But as a project gets larger, it becomes messier and harder to manage, due to the only one global namespace and the 1D vertical organization of code cells. CodePod expands notebook-based interactive programming for large, complex projects by allowing code cells to be placed anywhere on a 2D whiteboard and to be clustered into nested scopes where code cells under the same scope share the namespace. A scope can be simply defined by drawing a bounding box, while associating or dessociating a member into or from a scope is as easy as a drag-and-drop. In this way, code hierarchies are visualized and maintained in computational notebooks without using traditional file-based module systems. CodePod provides the same cell-based computational notebook experience but with scopes, modularization, and 2D, nested layout of cells. Now projects can be much larger because the users spend less effort on keeping code organized.

CodePod is an open source project (available at https://codepod.io) under the MIT license. Standing on the shoulders of Jupyter kernels, CodePod's scoped runtime and nested 2D whiteboard are completely built from scratch. The scoped runtime is language-agnostic and supports functions, classes, and variables.

By enabling code modularization and hierarchy without files, CodePod will revolutionize software engineering. In one interface, a programmer can navigate through the complex hierarchies or dependencies of code by zooming in and out swiftly at any time. Between the big picture and one particular function is just a mouse scroll. CodePod brings the beloved REPL experience to the entire hierarchy of code by making code evaluation aware of modules. Developers can interact with any part of the entire software in one single runtime. Via scoped code cell management, collaborative development can be bumped to the next level: developers in a team can collaborate on different modules without interfering with each other. No more repo-based branching but scoped branching for simpler and more fine-grained synchronization and merging between branches.

In our talk, we will discuss the technical architecture of CodePod and provide a quick demo of CodePod. We hope to use this opportunity to introduce this Jupyter-related open source project to the community and learn from the community at JupyterCon.

Community: Tools and Practices
Louis Armand 2