Jupyter

Project Jupyter is a  created to "develop, open-standards, and services for  across dozens of programming languages". Spun-off from in 2014 by, Project Jupyter supports execution environments in several dozen languages. Project Jupyter's name is a reference to the three core programming languages supported by Jupyter, which are, and , and also an homage to 's notebooks recording the discovery of the. Project Jupyter has developed and supported the interactive computing products Jupyter Notebook, JupyterHub, and JupyterLab, the next-generation version of Jupyter Notebook.

History
In 2014, announced a spin-off project from  called Project Jupyter. IPython continued to exist as a Python shell and a kernel for Jupyter, while the and other  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, , , , and of course (via the IPython kernel).

In 2015, and the Jupyter Project announced native rendering of Jupyter notebooks file format (.ipynb files) on the GitHub platform.

Philosophy
Project Jupyter's operating philosophy is to support interactive data science and scientific computing across all programming languages via the development of. 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."

Jupyter Notebook
Jupyter (formerly IPython Notebooks) is a  computational environment for creating Jupyter notebook documents. The "notebook" term can colloquially make reference to many different entities, mainly the Jupyter web application, Jupyter Python web server, or Jupyter document format depending on context. A Jupyter Notebook document is a document, following a versioned schema, and containing an ordered list of input/output cells which can contain code, text (using ), mathematics, plots and rich media, usually ending with the ".ipynb" extension.

A Jupyter Notebook can be converted to a number of output formats (, s,, , , , ) 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.

Jupyter Notebook provides a browser-based built upon a number of popular  libraries:

Jupyter Notebook can connect to many kernels to allow programming in many languages. By default Jupyter Notebook ships with the IPython kernel. As of the 2.3 release (October 2014), there are currently 49 Jupyter-compatible kernels for as many programming languages, including, , and.

The Notebook interface was added to IPython in the 0.12 release (December 2011), renamed to Jupyter notebook in 2015 (IPython 4.0 – Jupyter 1.0). Jupyter Notebook is similar to the notebook interface of other programs such as, , and , a computational interface style that originated with Mathematica in the 1980s. According to, Jupyter interest overtook the popularity of the Mathematica notebook interface in early 2018.

Jupyter kernels
A Jupyter kernel is a program responsible for handling various types of request (code execution, code completions, inspection), and providing a reply. Kernels talk to the other components of Jupyter using over the network, 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 ships with IPython as a default kernel and a reference implementation via the ipykernel wrapper. Kernels for many languages having varying quality and features are available.

JupyterHub
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.

JupyterLab
JupyterLab is the next-generation user interface for Project Jupyter. It offers all the familiar building blocks of the classic Jupyter Notebook (notebook, terminal, text editor, file browser, rich outputs, etc.) in a flexible and powerful user interface. The first stable release was announced on February 20, 2018.

Industry adoption
The Jupyter Notebook has become a popular user interface for, and major cloud providers have adopted the Jupyter Notebook or derivative tools as a frontend interface for cloud users. Examples include  Notebooks,  Colaboratory,  Azure Notebook, and Jupyo.

Colaboratory
Colaboratory (also known as Colab) is a free notebook environment that runs in the cloud and stores its notebooks on. Colaboratory started as a part of Project Jupyter, but the development was eventually taken over by. Colaboratory only supports the Python 2 and Python 3 kernels and does not support the other Jupyter kernels and.