A pre-alpha version of JupyterLab has officially been released: you can see the details of the reasons and advantages on the Jupyter Blog and on the Bloomberg Blog. You will find there the slides and video of the Scipy2016 talk.
I wanted to give a first review of this new version of Jupyter. I have indeed installed it for our Gilgamesh Data Processing System and tested a little bit.
There are two parts: the user view and the developer view.
JupyterLab for the user
The first feeling at the start is that you get a clean desktop application in your browser: you have several movable panes, you have icons to start the application you need: notebook, console or the about panel. And you have the file manager which is FAR better than the Jupyter dashboard: you can move the files between the folders, you can drag and drop. It is very practical. You have easily accessible help pages and you can move your notebooks or consoles in panes side-by-side.
Graphically, it is not yet finished: I find the color scheme a bit dull. But following the activity on GitHub, the designer are working hard on improving that.
There is one usability issue in my opinion: the menu with the commands. Why is it on the side of the file manager outside the notebook? It is not intuitive at all.
As for the notebook itself, I am not quite sure but I have the feeling that the display is a bit slower than the classical notebook. But this is to confirm on a daily use. And in any case, it does not disturb the manipulation of the cells.
Thus, we have there a useful product with clear improvements other Jupyter. There are glitches but we have to keep in mind that this is only a pre-alpha release. It is already a high level of quality for such an early release. In addition, we have to understand the philosophy of JupyterLab: it is not and end product, it is an infrastructure to connect your plugin and develop your own product tailored to your needs. This is why it is important to see what is under the hood.
JupyterLab for the developer
First a note of caution: I am not a high level front-end developer; so this review is based mainly on my comparison with the front-end of the standard version of Jupyter.
The main idea to note: JupyterLab is a front-end: there is not a single part of the code that changes the python server side (based on Tornado). So basically you can run Jupyter and JupyterLab on the same instance of the server (you just redirect to the right webpage to get interface you want).
It is based on TypeScript and on the PhosphorJS which provides widgets (menus, frames,…), messaging between objects and self-aware objects a la traitlets (when their properties change, they fire signals). The result is a very clean structure, modular and logical. You build your application by assembling plugins and widgets. The communication between them is almost automatic (almost!). The communication with the Jupyter server is realized through the jupyter-js-services API (which still is a bit confuse in my opinion, but this is more related to my limited abilities in JS programming).
What I have no tested yet is the use and development of ipywidgets and how the backbone architecture is integrated in the JupyterLab architecture. But I think it can go only in a better direction.
To conclude JupyterLab offers a set of front-end tools to easily modify or extend the Jupyter notebooks: if you don’t want a console, you can remove it, or you can add your own one, you can add notebooks with special layouts (for presentation or dashboards) or you can imagine more exotic plugins. For instance, for Gilgamesh, I am developing a plugin for a kind of “JupyterTalk”: the notebook is not saved anymore as a file but in a database. Several users can connect to it, each having his own kernels and type their own cells (each cell is identified by the username). But the display is common to all users: you see your cells and the cells from other users. So you get a chat with a succession of messages, which are more than text but real Jupyter cells (in markdown or code) with their output. So you can have a discussion like in a chat but with the power of a kernel behind to display data, run algorithms. This is something made possible by the flexibility of Jupyter. You can have Augmented Discussions.
JupyterLab is the next step on the way to develop an ecosystem instead of a simple application. This looks like a bright strategic development and I am eager to see what will come out the imagination of the community. I think there are many possibilities open far beyond the notebook. JupyterLab is a new layer above the Operating System: it is the Computing System in charge of connecting the user with his kernels to support and enhance his work. Kernels can be languages but also interfaces with hardware (a python kernel on a Raspberry Pi can give access to the GPIO ports and the associated peripherals). Therefore it will offer to your narrative computing access to data,algorithms and hardware. Very promising. Good Job Jupyter developers!