The Evolution of the Jupyter Notebook

Project Jupyter exists to develop open-source software, open standards, and services for interactive and reproducible computing.

Since 2011, the Jupyter Notebook has been our flagship project for creating reproducible computational narratives. The Jupyter Notebook enables users to make and share documents that combine live code with narrative text, mathematical equations, visualizations, interactive controls, and other rich output. It also provides building blocks for interactive computing with data: a file browser, terminals, and a text editor.

The Jupyter Notebook has become ubiquitous with the rapid climb of knowledge science and machine learning and therefore the rising popularity of open-source software in industry and academia:

Today there are many users of the Jupyter Notebook in many domains, from data science and machine learning to music and education. Our international community comes from almost every country on earth.¹

The Jupyter Notebook now supports over 100 programming languages, most of which are developed by the community.

There are over 1.7 million public Jupyter notebooks hosted on GitHub. Authors are publishing Jupyter notebooks in conjunction with research project , academic journals, data journalism, educational courses, and books.

At an equivalent time, the community has faced challenges in using various software workflows with the notebook alone, like running code from text files interactively. The classic Jupyter Notebook, built on web technologies from 2011, is additionally difficult to customize and extend.

JupyterLab: Ready for Users

JupyterLab is an interactive development environment for working with notebooks, code and data. most significantly , JupyterLab has full support for Jupyter notebooks. Additionally, JupyterLab enables you to use text editors, terminals, file viewers, and other custom components side by side with notebooks during a tabbed work area.

https://miro.medium.com/max/1320/1*O20XGvUOTLoFKQ9o20usIA.png

JupyterLab provides a high level of integration between notebooks, documents, and activities:

Drag-and-drop to reorder notebook cells and replica them between notebooks.

Run code blocks interactively from text files (.py, .R, .md, .tex, etc.).

Link a code console to a notebook kernel to explore code interactively without cluttering up the notebook with temporary scratch work.

Edit popular file formats with live preview, like Markdown, JSON, CSV, Vega, VegaLite, and more.

JupyterLab has been over three years within the making, with over 11,000 commits and a couple of ,000 releases of npm and Python packages. Over 100 contributors from the broader community have helped build JupyterLab additionally to our core JupyterLab developers.

To get started, see the JupyterLab documentation for installation instructions and a walk-through, or try JupyterLab with Binder. you’ll also found out JupyterHub to use JupyterLab.

Customize Your JupyterLab Experience

JupyterLab is made on top of an extension system that permits you to customize and enhance JupyterLab by installing additional extensions. In fact, the builtin functionality of JupyterLab itself (notebooks, terminals, file browser, menu system, etc.) is provided by a group of core extensions.

https://miro.medium.com/max/1320/1*OneJZOqKqBZ9oN80kRX7kQ.png

Among other things, extensions can:

Provide new themes, file editors and viewers, or renderers for rich outputs in notebooks;

Add menu items, keyboard shortcuts, or advanced settings options;

Provide an API for other extensions to use.

Community-developed extensions on GitHub are tagged with the jupyterlab-extension topic, and currently include file viewers (GeoJSON, FASTA, etc.), Google Drive integration, GitHub browsing, and ipywidgets support.

Develop JupyterLab Extensions

While many JupyterLab users will install additional JupyterLab extensions, a number of you’ll want to develop your own. The extension development API is evolving during the beta release series and can stabilize in JupyterLab 1.0. to start out developing a JupyterLab extension, see the JupyterLab Extension Developer Guide and therefore the TypeScript or JavaScript extension templates.

JupyterLab itself is co-developed on top of PhosphorJS, a replacement Javascript library for building extensible, high-performance, desktop-style web applications. We use modern JavaScript technologies like TypeScript, React, Lerna, Yarn, and webpack. Unit tests, documentation, consistent coding standards, and user experience research help us maintain a high-quality application.

JupyterLab 1.0 and Beyond

We decide to release JupyterLab 1.0 later in 2018. The beta releases leading up to 1.0 will specialise in stabilizing the extension development API, interface improvements, and extra core features. All releases within the beta series are going to be stable enough for daily usage.

JupyterLab 1.0 will eventually replace the classic Jupyter Notebook. Throughout this transition, an equivalent notebook document format is going to be supported by both the classic Notebook and JupyterLab.