header.png

Author: Jens Henrik Göbbert

Index

JupyterLab 3.2 on Jupyter-JSC

JupyterLab is continuously evolving and the current version 3.2 brings a lot of new fantastic functionalities and possibilities.
All the more we are happy to announce that we can now provide you with JupyterLab 3 as an access point to our systems via Jupyter-JSC on https://jupyter-jsc.fz-juelich.de.

Jupyter-JSC saw the light of day four years ago and continues to grow at JSC with new functions and tasks. Its main purpose is to enable interactive supercomputing via JupyterLab at Jülich Supercomputing Centre. It is part of the Helmholtz Cloud (https://cloud.helmholtz.de) and makes it possible to use the HPC systems of the JSC and also the HDF Cloud in everyday work completely from within the web browser. Today, about 500 JupyterLab sessions are started by about 100 different users via Jupyter-JSC per week.

To help you get the most out of the JupyterLab 3 setup, here are the Highlights, Interface Changes and Extensions:


Highlights

Debugger

JupyterLab 3 comes with a front-end debugger by default. This means that notebooks, code consoles, and files can now be debugged from JupyterLab directly.
This is possible, if the kernel supports the Jupyter Debugger Protocol which is for the start true for the default Python kernel driven by IPython in the included version 6+.
grafik.png

(more details HERE and HERE )

Prebuild Extensions

The software architecture of JupyterLab has always allowed extensions to customize/improve any part of JupyterLab. However, installing an extension required rebuilding the whole JupyterLab. Thus, due to the system-wide installation, the choice of extensions under Jupyter-JSC was hard-wired to the JupyterLab installation in the past.

JupyterLab 3 now supports so-called prebuild extensions in addition to the classical source extensions.
They are installed independently from the JupyterLab installation like any other Python package and do not require a rebuild of the underlying JupyterLab.

Prebuild extensions thus bring great advantages as ...

  • ... there is no need to rebuild JupyterLab to install new prebuild extensions.
  • ... the choice of activated prebuild extensions is made at startup of JupyterLab, not at build time.
  • ... a system-wide JupyterLab installation can be technically extended users/projects with additional prebuild extensions.
  • ... updates of prebuild extensions can be done separately from the JupyterLab installation with much smaller risk to break the JupyterLab installation.
  • ... competing dependencies of different extensions are better shielded from each other.

(more details HERE and HERE)

Example:
Currently we use the new possibility of prebuild extensions to load the extension NVDashboard when JupyterLab starts on a system with GPUs.
grafik.png

(more details HERE )

Collaborative editing — à la Google Docs

NOTE: At the moment this feature is NOT supported within Jupyter-JSC as it is forbidden to share user accounts.

Multiple attempts have been made to introduce collaborative editing in JupyterLabs - finally it came in JupyterLab 3.1 to stay!
Now, file documents and notebooks have the possibility for collaborative editing using the Yjs shared editing framework.
Yjs is network agnostic (p2p!) and there has no need for a central management server and still allows features like offline editing and undo/redo for a shared document.
grafik.png

(more details HERE and HERE )

Changes in the Interface

  • A new visual indicator was introduced to highlight cells in which the code changed in the editor since last execution
    grafik.png grafik.png
  • Add a menu entry to show/hide hidden files in the file browser
    grafik.png
  • The file browser now has a filter input which filters the list of files using the same fuzzy matching as the command palette.
    grafik.png
  • The Table of Content extension got integrated into JupyterLab 3. Now you can easily see and navigate through the structure of your document.
    grafik.png
  • The property inspector moved to the right sidebar.
    grafik.png
  • The command palette now comes floating on the center of the top of the window. This enables users to quickly invoke a command while keeping the sidebar closed or switching sidebar panels.
    You can access the command palette using the View menu or directly using the shortcut Ctrl+Shift+C.
    grafik.png
  • And if we talk about Simple Interface mode then it has been extensively updated for a more targeted, documented-oriented feel.
    There is a toggle on the command prompt to switch to the Simple Interface mode,
    grafik.png
  • Side-by-side rendering was added in JupyterLab 3
    grafik.png
  • Show trailing white spaces
    grafik.png
  • The undo/redo history in the notebook is now document-wide (tracking changes across all cells)
Complete Changelog: Of course there are far more changes. Just have a look at the complete changelog [HERE]

Extensions

Highlights

  • @jupyterlab/server-proxy
    Jupyter Server Proxy lets you run arbitrary external processes (such as our remote desktop over Xpra, etc) alongside your notebook server and provide authenticated web access to them.
    grafik.png
  • jupyterlab-nvdashboard
    NVDashboard is an open-source package for the real-time visualization of NVIDIA GPU metrics in interactive Jupyter Lab environments.
    grafik.png

(more details HERE )

Detailed List

Extensions known from our JupyterLab 2 installation on Jupyter-JSC
and updated or new:

Extensions old version new version type
Core
@jupyterlab/server-proxy v2.1.0 v3.1.0 prebuild
@jupyter-widgets/jupyterlab-manager v2.0.0 v3.0.1 prebuild
jupyterlab-datawidgets v6.3.0 v7.0.0 source
UI Enhancements
@jlab-enhanced/recents v3.0.1 prebuild
@jlab-enhanced/favorites v2.0.0 v3.0.0 prebuild
jupyterlab-topbar-extension v0.5.0 v0.6.1
jupyterlab-system-monitor v0.6.0 v0.8.0 prebuild
@jupyter-server/resource-usage v0.6.0 n/a
jupyterlab-theme-toggle v0.5.0 v0.6.1 source
jupyterlab-controlbtn jupyterlab-control v0.5.0 n/a
@jupyterlab/toc v4.0.0 integrated into JupyterLab 3
Developer Tools
@jupyterlab/git v0.23.3 v0.32.4 prebuild
jupyterlab-gitlab v2.0.0 v3.0.0 prebuild
@krassowski/jupyterlab-lsp v2.1.3 v3.9.0 prebuild
nbdime-jupyterlab v2.1.0 v3.1.0 prebuild
@ryantam626/jupyterlab_code_formatter v1.3.8 v1.4.10 prebuild
@ijmbarr/jupyterlab_spellchecker v0.2.0 v0.7.2 prebuild
jupyterlab-nvdashboard v0.6.0 prebuild
Data Visualization
jupyter-matplotlib v0.7.4 v0.9.0 prebuild
@bokeh/jupyter_bokeh v2.0.4 v3.0.4 prebuild
jupyterlab-plotly v4.14.3 v5.3.1
bqplot v0.5.22 v0.5.32 prebuild
@pyviz/jupyterlab_pyviz v1.0.4 v2.1.0 prebuild
jupyter-leaflet v0.13.3 v0.14.0 prebuild
ipyvolume v0.6.0-alpha.5 v0.6.0-alpha.8 prebuild
jupyter-threejs v2.2.0 v2.3.0 prebuild
@jupyter-widgets/jupyterlab-sidecar v0.5.0 v0.6.1 prebuild
Framework Integrations
dask-labextension v3.0.0 v5.1.0 prebuild
@jupyterlab/latex v2.0.1 v3.1.0 prebuild
jupyter-webrtc v0.5.0 v0.6.0 prebuild
Dashboard Developement
jupyter-vue v1.5.0 v1.6.1
jupyter-vuetify v1.6.1 v1.8.1
@voila-dashboards/jupyterlab-preview v1.1.0 v2.1.0-alpha.2 prebuild
jupyterlab-dash v0.4.0 v0.4.0 prebuild
Welcome
jupyterlab_iframe v0.3.0 v0.4.0 source
jupyterlab-tour v3.1.3 prebuild

Extensions known from our JupyterLab 2 installation on Jupyter-JSC,
but in the current version not compatible with our new JupyterLab 3 installation:

Extensions old version new version
itkwidgets v0.32.0 upcoming
jsfileupload v0.2.0
dicom-upload v0.2.0
pvlink v0.3.1

Extensions known from our JupyterLab 2 installation on Jupyter-JSC,
but decided to remove in our new JupyterLab 3 installation:

Extensions old version new version
jupyter-lmod v2.0.2
@parente/jupyterlab-quickopen v0.5.0
@krassowski/jupyterlab_go_to_definition v1.0.0 now in @krassowski/jupyterlab-lsp
plotlywidget v4.14.3 now jupyterlab-plotly

FAQs:

  • JupyterLab 3.0 got released as Christmas present last year. Why did you update to JupyterLab 3 this late?
    • Many third-party extensions were still in the process of updating to be compatible with JupyterLab 3 over the last year.
    • Until summer the JupyterLab debugging feature required the special XPython kernel and was not supported by the standard IPython kernel, yet.
    • Minor additions like the feature for showing hidden files in the file-browser was worth waiting for.
    • And of course: JupyterLab 3 has gained a lot of functionality and stability this year.