Project Jupyter (// (listen)) is a project and community whose goal is to "develop open-source software, open-standards, and services for interactive computing across dozens of programming languages". It was spun off from IPython in 2014 by Fernando Pérez and Brian Granger. Project Jupyter's name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R, and also a homage to Galileo's notebooks recording the discovery of the moons of Jupiter. Project Jupyter has developed and supported the interactive computing products Jupyter Notebook, JupyterHub, and JupyterLab. Jupyter is a fiscally sponsored project.
In 2014, Fernando Pérez announced a spin-off project from IPython called Project Jupyter. IPython continues to exist as a Python shell and a kernel for Jupyter, while the notebook and other language-agnostic parts of IPython moved under the Jupyter name. Jupyter is language agnostic and it supports execution environments (aka kernels) in several dozen languages among which are Julia, R, Haskell, Ruby, and of course Python (via the IPython kernel).
Project Jupyter's operating philosophy is to support interactive data science and scientific computing across all programming languages via the development of open-source software. According to the Project Jupyter website, "Jupyter will always be 100% open-source software, free for all to use and released under the liberal terms of the modified BSD license".
A Jupyter Notebook document is a browser-based REPL containing an ordered list of input/output cells which can contain code, text (using Markdown), mathematics, plots and rich media. Underneath the interface, a notebook is a JSON document, following a versioned schema, usually ending with the ".ipynb" extension.
Jupyter notebooks are built upon a number of popular open-source libraries:
Jupyter Notebook can connect to many kernels to allow programming in different languages. A Jupyter kernel is a program responsible for handling various types of requests (code execution, code completions, inspection), and providing a reply. Kernels talk to the other components of Jupyter using ZeroMQ, and thus can be on the same or remote machines. Unlike many other Notebook-like interfaces, in Jupyter, kernels are not aware that they are attached to a specific document, and can be connected to many clients at once. Usually kernels allow execution of only a single language, but there are a couple of exceptions. By default Jupyter Notebook ships with the IPython kernel. As of the 2.3 release (October 2014), there are 49 Jupyter-compatible kernels for many programming languages, including Python, R, Julia and Haskell.
A Jupyter Notebook can be converted to a number of open standard output formats (HTML, presentation slides, LaTeX, PDF, ReStructuredText, Markdown, Python) through "Download As" in the web interface, via the nbconvert library or "jupyter nbconvert" command line interface in a shell. To simplify visualisation of Jupyter notebook documents on the web, the nbconvert library is provided as a service through NbViewer which can take a URL to any publicly available notebook document, convert it to HTML on the fly and display it to the user.
The notebook interface was added to IPython in the 0.12 release (December 2011), renamed to Jupyter notebook in 2015 (IPython 4.0 is Jupyter 1.0). Jupyter Notebook is similar to the notebook interface of other programs such as Maple, Mathematica, and SageMath, a computational interface style that originated with Mathematica in the 1980s. Jupyter interest overtook the popularity of the Mathematica notebook interface in early 2018.
JupyterLab is a newer user interface for Project Jupyter. It offers the building blocks of the classic Jupyter Notebook (notebook, terminal, text editor, file browser, rich outputs, etc.) in a flexible user interface. The first stable release was announced on February 20, 2018.
- JupyterHub is a multi-user server for Jupyter Notebooks. It is designed to support many users by spawning, managing, and proxying many singular Jupyter Notebook servers. While JupyterHub requires managing servers, third-party services like Jupyo provide an alternative to JupyterHub by hosting and managing multi-user Jupyter notebooks in the cloud.
- Jupyter Book is an open source project for building books and documents from computational material. It allows the user to construct the content in a mixture of Markdown, an extended version of Markdown called MyST, Maths & Equations using MathJax, Jupyter Notebooks, reStructuredText, the output of running Jupyter Notebooks at build time. Multiple output formats can be produced (currently single files, multipage HTML web pages and PDF files).
- nbgrader is a tool for creating and grading (marking) assignments in Jupyter notebooks. It allows the instructor to create assignments that include coding exercises in Python or any other supported kernel, and text responses. The submitted assignments can be automatically marked, manually scored or a mixture of both.
The Jupyter Notebook has become a popular user interface for cloud computing, and major cloud providers have adopted the Jupyter Notebook or derivative tools as a frontend interface for cloud users. Examples include Amazon's SageMaker Notebooks, Google's Colaboratory and Microsoft's Azure Notebook.
Google Colaboratory (also known as Colab) is a free Jupyter notebook environment that runs in the cloud and stores its notebooks on Google Drive. Colab was originally an internal Google project; an attempt was made to open source all the code and work more directly upstream, leading to the development of the "Open in Colab" Google Chrome extension, but this eventually ended, and Colab development continued internally. As of October 2019, the Colaboratory UI only allows for the creation of notebooks with Python 2 and Python 3 kernels; however, an existing notebook whose kernelspec is IR or Swift will also work, since both R and Swift are installed in the container. Julia language can also work on Colab (with e.g. Python and GPUs; Google's tensor processing units also work with Julia on Colab).
- On February 11, 2016, the LIGO collaboration announced the first observation of gravitational waves. The collaboration released the raw scientific data along with Jupyter Notebooks containing Python code to process the data and reproduce the figures from the discovery paper.
- On April 5, 2018, The Atlantic published an article entitled The Scientific Paper Is Obsolete, which discussed the role of the Jupyter Notebook and the Mathematica notebook in the future of scientific publishing. This article led to responses from prominent scientists and academics, including economist Paul Romer.
Grants and awards
- In 2012, Fernando Pérez received the Free Software Foundation Award for the Advancement of Free Software for his work on IPython, the precursor to Project Jupyter.
- In 2013, the IPython team received a $1.15 million grant from the Alfred P. Sloan Foundation which funded early work that led to the creation of Project Jupyter.
- In 2015, Project Jupyter was awarded a joint $6 million grant from The Leona M. and Harry B. Helmsley Charitable Trust, The Gordon and Betty Moore Foundation, and The Alfred P. Sloan Foundation, which funded work that led to expanded capabilities of the core Jupyter tools, as well as the creation of JupyterLab.
- On May 2nd, 2018, the steering committee of Project Jupyter was awarded the 2017 ACM Software System Award, an annual award that honors people or an organization "for developing a software system that has had a lasting influence, reflected in contributions to concepts, in commercial acceptance, or both".
- "About Us". Project Jupyter. 2018-04-20. Retrieved 2018-05-03.
- "Project Jupyter". www.jupyter.org. Retrieved 2020-11-13.
- "Berkeley Institute for Data Science".
- "Speaker: Brian Granger: Jupyter Notebook conference & training: JupyterCon".
- "NumFOCUS Sponsored Projects". NumFOCUS. Retrieved 2021-10-25.
- "Project Jupyter // Speaker Deck".
- "The Notebook, Qt console and a number of other pieces are now parts of Jupyter". GitHub. 29 May 2021.
- "The Big Split™". 28 August 2017.
- "Project Jupyter | Home".
- sshirokov (2015-05-07). "GitHub + Jupyter Notebooks = <3". The GitHub Blog (in American English). Retrieved 2018-04-10.
- "Rendering Notebooks on GitHub". Jupyter Blog. 2015-05-07. Retrieved 2018-04-10.
- "What's new in IPython > Issues closed in the 2.x development cycle".
- "What's new in IPython > 2.0 Series".
- "Jupyter kernels > List of (some) IPython compatible kernels". GitHub.
- "nbconvert: Convert Notebooks to other formats". nbconvert 6.0.8.dev0 documentation. Retrieved 2020-11-13.
- jupyter/nbconvert, Project Jupyter, 2021-04-12, retrieved 2021-04-13
- "nbviewer". nbviewer.jupyter.org. Retrieved 2020-11-13.
- "Notebook's announcement- 0.12 release note".
- Somers, James. "The Scientific Paper Is Obsolete". The Atlantic (in American English). Retrieved 2018-04-10.
- "JupyterLab is Ready for Users". Jupyter Blog. 2018-02-20. Retrieved 2018-05-04.
- "Project Jupyter".
- "Jupyo | Jupyter notebooks for Python, R, Julia in the cloud". jupyo.com. Archived from the original on 2019-01-03. Retrieved 2019-01-02.
- "Books with Jupyter". jupyterbook.org. Retrieved 2020-11-13.
- "The MyST Syntax Guide". myst-parser.readthedocs.io. Retrieved 2020-11-13.
- "nbgrader 0.6.1 documentation". nbgrader.readthedocs.io. Retrieved 2020-11-13.
- "Amazon SageMaker on AWS". Amazon Web Services, Inc. (in American English). Retrieved 2018-05-09.
- "Welcome to Colaboratory". research.google.com. Retrieved 2018-05-09.
- "Online Jupyter Notebooks". notebooks.azure.com. Retrieved 2018-05-09.
- "Nerds rejoice: Google just released its internal tool to collaborate on AI". Quartz (in American English). Retrieved 2018-09-06.
- "Open in Colab GitHub repository". GitHub. Retrieved 2018-09-06.
- Julia on TPUs, JuliaTPU, 2019-12-03, retrieved 2019-12-03
- "Google Colaboratory". colab.research.google.com. Retrieved 2019-12-06.
- "gpu — Julia in Google Colab". Stack Overflow. Retrieved 2019-12-06.
- "LIGO Open Science Center". losc.ligo.org. Retrieved 2018-05-04.
- Romer, Paul. "Jupyter, Mathematica, and the Future of the Research Paper". paulromer.net (in American English). Retrieved 2018-04-15.
- "Sloan Foundation Grant". ipython.org. Retrieved 2018-05-03.
- "An Open Source Framework for Interactive, Collaborative and Reproducible Scientific Computing and EducationOpen Source Tools for Interactive, Collaborative and Reproducible Computing". ipython.org. Retrieved 2018-05-03.
- Perez, Fernando (December 28, 2015). "IPython 2015 Final Report — Sloan Foundation" (PDF). ipython.org. Retrieved May 3, 2018.
- "UC Berkeley and Cal Poly to Expand and Enhance Open-Source Software for Scientific Computing and Data Science | Helmsley Charitable Trust". helmsleytrust.org. Archived from the original on 2020-01-03. Retrieved 2018-05-03.
- "Software System Award". ACM Awards. Association for Computing Machinery. Retrieved April 28, 2016.