The Jupyter/IPython architecture: a unified view of computational research, from interactive exploration to communication and publication.

Thursday, 18 December 2014: 5:30 PM
Min Ragan-Kelley1, Fernando Perez1, Brian Granger2, Thomas Kluyver1, Paul Ivanov1, Jonathan Frederic3 and Matthias Bussonier4, (1)University of California Berkeley, Berkeley, CA, United States, (2)California Polytechnic State University San Luis Obispo, Physics, San Luis Obispo, CA, United States, (3)IPython, San Luis Obispo, CA, United States, (4)University Pierre and Marie Curie Paris VI, Paris, France
IPython has provided terminal-based tools for interactive computing in Python since 2001. The notebook document format and multi-process architecture introduced in 2011 have expanded the applicable scope of IPython into teaching, presenting, and sharing computational work, in addition to interactive exploration. The new architecture also allows users to work in any language, with implementations in Python, R, Julia, Haskell, and several other languages.

The language agnostic parts of IPython have been renamed to Jupyter, to better capture the notion that a cross-language design can encapsulate commonalities present in computational research regardless of the programming language being used. This architecture offers components like the web-based Notebook interface, that supports rich documents that combine code and computational results with text narratives, mathematics, images, video and any media that a modern browser can display. This interface can be used not only in research, but also for publication and education, as notebooks can be converted to a variety of output formats, including HTML and PDF.

Recent developments in the Jupyter project include a multi-user environment for hosting notebooks for a class or research group, a live collaboration notebook via Google Docs, and better support for languages other than Python.