From IPython to Project Jupyter
Project Jupyter was born in 2014 as a spin-off from IPython, the interactive Python terminal created by Fernando Pérez in 2001. IPython’s original insight — an environment where a researcher can write code, execute it and immediately see the result — evolved over time to include a web interface with code cells, output and formatted text. With the separation from IPython, the project took the name Jupyter, an acronym referencing its three foundational languages: Julia, Python and R.
The separation is more than a name change. Jupyter extracts the notebook architecture from the specific language, transforming it into a language-agnostic platform.
Anatomy of a notebook
A Jupyter notebook is a document in JSON format with the .ipynb extension. Its content is organised in cells of three types:
- Code cells: contain executable code. The output — text, tables, charts, images — is captured and stored directly beneath the cell
- Markdown cells: formatted text using Markdown syntax, equations in LaTeX, links and images
- Raw cells: unprocessed content passed directly to conversion systems
Execution is handled by a kernel, a separate process that receives code from the cell, executes it and returns the result to the browser. Each kernel implements a language: the IPython kernel for Python, IRkernel for R, IJulia for Julia, and dozens of others maintained by the community. The communication protocol between notebook and kernel is documented and open, allowing anyone to develop kernels for additional languages.
Reproducibility and sharing
The .ipynb format captures code, output and documentation in a single file. This means a notebook can be re-executed to verify results, shared with colleagues who will see exactly the same charts and tables, and published as a readable document. The nbviewer service allows notebooks hosted on public repositories to be viewed directly in the browser without installing anything.
For data science, this characteristic is transformative. Exploratory analysis — data loading, cleaning, transformation, visualisation, modelling — becomes a narrative document where every step is visible, verifiable and editable. For scientific research, the notebook brings practice closer to the principle of reproducibility: the code that generates the results is included in the document that presents them.
Link: jupyter.org
