3 min read

Last week, a Jupyter Community Workshop on dashboarding was held in Paris. At the workshop, several contributors came together to build the Voila package, the details of which QuantStack shared yesterday. Voila serves live Jupyter notebooks as standalone web applications providing a neat way to share your work results with colleagues.

Why do we need Voila?

Jupyter notebooks allow you to do something called “literature programming” in which human-friendly explanations are accompanied with code blocks. It allows scientists, researchers, and other practitioners of scientific computing to add theory behind their code including mathematical equations.

However, Jupyter notebooks may prove to be a little bit problematic when you plan to communicate your results with other non-technical stakeholders. They might get put-off by the code blocks and also the need for running the notebook to see the results. It also does not have any mechanism to prevent arbitrary code execution by the end user.

How Voila works?

Voila addresses all the aforementioned queries by converting your Jupyter notebook to a standalone web application. After connecting to a notebook URL, Voila launches the kernel for that notebook and runs all the cells. Once the execution is complete, it does not shut down the kernel. The notebook gets converted to HTML and is served to the user. This rendered HTML includes JavaScript that is responsible for initiating a websocket connection with the Jupyter kernel.


Here’s a diagram depicting how it works:

Source: Jupyter Blog

Following are the features Voila provides:

  • Renders Jupyter interactive widgets: It supports Jupyter widget libraries including bqplot, ipyleafet, ipyvolume, ipympl, ipysheet, plotly, and ipywebrtc.
  • Prevents arbitrary code execution: It does not allow arbitrary code execution by consumers of dashboards.
  • A language-agnostic dashboarding system: Voila is built upon Jupyter standard protocols and file formats enabling it to work with any Jupyter kernel ( C++, Python, Julia).
  • Includes custom template system for better extensibility: It provides a flexible template system to produce rich application layouts.

Many Twitter users applauded this new way of creating live and interactive dashboards from Jupyter notebooks:

Some users also compared it with another dashboarding solution called Panel. The main difference between Panel and Voila is that Panel supports Bokeh widgets whereas Voila is framework and language agnostic.

Panel can use a Bokeh server but does not require it; it is equally happy communicating over Bokeh Server’s or Jupyter’s communication channels. Panel doesn’t currently support using ipywidgets, nor does Voila currently support Bokeh plots or widgets, but the maintainers of both Panel and Voila have recently worked out mechanisms for using Panel or Bokeh objects in ipywidgets or using ipywidgets in Panels, which should be ready soon,” a Hacker News user commented.

To read more in detail about Voila, check out the official announcement on the Jupyter Blog.

Read Next

JupyterHub 1.0 releases with named servers, support for TLS encryption and more

Introducing Jupytext: Jupyter notebooks as Markdown documents, Julia, Python or R scripts

JupyterLab v0.32.0 releases