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:
Voila for Jupyter notebooks is a very exciting development. Jupyter is a great interactive environment for exploring and manipulating data, and it will be great to "simply" share the output of these and retain the interactivity. https://t.co/MTJYEdjspA
— Phil Sheard (@philsheard) June 12, 2019
From Jupyter notebooks to standalone applications and dashboards. And there's a Vue.js template ! Hope I can use it for quick ML prototypes to show to customers 😃
— Fanilo Andrianasolo (@andfanilo) June 12, 2019
Project Jupyter released voilà, a library to turn Jupyter Notebooks to web applications. If you're a Data Scientist working with Jupyter Notebooks & want to expose your visualizations to the world without much effort, this could be usefulhttps://t.co/1ykQnQnFK6@risin_developer
— Toluwani Dare J. (@ToluwaniJohnson) June 12, 2019
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