Skip to article frontmatterSkip to article content

🔭 1 - Exploring extensions

The JupyterLab interface

The JupyterLab interface, including the "menu bar", "main area", "status bar", "left side panel", and "right side panel"

  1. Menu bar

  2. Main area

  3. Status bar

  4. Left side panel

  5. Right side panel

Extensions and plugins and widgets -- oh, my!

While they sound similar, extensions <extension> and plugins serve different purposes.

Plugins are JupyterLab’s fundamental building blocks which define functionality and business logic. Extensions are the delivery mechanism or “container” for plugins. Extensions are the thing that end-users pip install.

End-users care about extensions, and developers care about plugins.

A widget is a user interface component provided by a plugin, either for the end user to display (e.g. an interactive visualization of data) or for JupyterLab to display (e.g. a document viewer that opens when you double-click a particular file type).

Extension types

Server extension

Extensions that run on the JupyterLab server, which means it has access to the same hardware as JupyterLab and can, for example, load data from disk and perform computations.

Examples:

Frontend extension

Extensions that run in the JupyterLab frontend (i.e. the user’s browser), which means it can change anything about the appearance of JupyterLab and provide new {term}widgets <widget> for display and/or interactions.

Examples:

Frontend and server

A very common pattern is extensions which combine frontend and server extensions to provide new interface features which trigger behavior on the server.

Examples:

MIME renderer extension (a.k.a. “mimetype” extension)

Extensions that tell Jupyter how to view information in a specific file type (MIME type).

These are a subset of frontend extensions which map a Widget viewer with the supported file MIME type strings.

Examples:

More...

🏗️ TODO! What go here?