figshare
Browse
Fernando-Perez-jupyter-arch-science-gateway1.pdf (9.53 MB)

Project Jupyter: interactive computing in the context of modern science gateways

Download (9.53 MB)
presentation
posted on 2016-12-23, 15:31 authored by Fernando PerezFernando Perez

Project Jupyter, evolved from the IPython environment, provides a platform for interactive computing that is widely used today in research, education, journalism and industry.  The core premise of the Jupyter architecture is to design tools around the experience of interactive computing, building an environment, protocol, file format and libraries optimized for the computational process when there is a human in the loop, in a live iteration with ideas and data assisted by the computer.

The architecture of Jupyter provides a clean separation between the execution context (known as a “kernel” and available for over 70 programming languages) and the user interface; the two communicate via a well-specified, open protocol.  Taking advantage of this design, we have built a web-based interface that exposes the computational capabilities of the kernels to users, requiring only a modern web browser.  The main component of this interface is the Jupyter Notebook, a system that allows users to compose rich documents that combine narrative text and mathematics together with live code and the output of computations in any format compatible with a web browser (plots, animations, audio, video, etc.).  In addition to illustrating the above foundations, in this talk I will discuss the next generation of the Jupyter web interface, JupyterLab.

JupyterLab combines in a single user interface not only the notebook, but multiple other tools to access Jupyter services and remote computational resources and data.  A flexible and responsive UI allows the user to mix Notebooks, terminals, text editors, graphical consoles and more, presenting in a single, unified environment the tools needed to work with a remote environment.  Furthermore, the entire design is extensible and based on plugins that interoperate via open APIs, making it possible to design new plugins tailored to specific types of data or user needs.  We believe this design is an ideal foundation on which to build modern scientific gateways that support a wide range of user scenarios, from interactive data exploration in high-level languages like Python, Julia or R, to the monitoring and control of traditional HPC resources.

History