Merge RetroLab with the JupyterLab Simple Interface? #257
Description
Problem
The Simple Interface in JupyterLab has been around for a while, and was improved for the 3.0 release:
RetroLab was developed a couple of weeks before the 3.0 release, back in December 2020. The goal was to develop a notebook UI that looks like the classic notebook, but made with JupyterLab components. The main motivation was this issue: jupyterlab/jupyterlab#8450
However as RetroLab matures and starts looking more and more like the classic notebook, we should consider merging the two efforts to offer a consistent frontend to the users.
Here is a screenshot comparing RetroLab to the Classic Notebook:
Proposed Solution
If we want to unify the Simple Interface and RetroLab, and eventually offer RetroLab as part of the JupyterLab main package, we should consider a few UI, UX and technical details.
Left, right and botton areas
For now RetroLab does not expose any left
, right
, or bottom
area. This is on purpose, to keep the interface as simple as possible.
However the Simple Interface still gives access to these areas. Which can be convenient for example for the Table of Contents or the Debugger.
Ideally RetroLab should keep good defaults: as simple as possible by default. These areas can exist, but should be hidden by default. More advanced users can toggle them on if they want to.
RetroShell
vs LabShell
This is slightly similar to the previous point. For now RetroLab uses a custom shell:
retrolab/packages/application/src/shell.ts
Lines 35 to 191 in 1f86be0
And a custom app:
retrolab/packages/application/src/app.ts
Lines 21 to 145 in 1f86be0
RetroLab already supports the prebuilt JupyterLab extensions: https://github.com/jupyterlab/retrolab#support-for-prebuilt-extensions-. Most of them work just fine. However if for example a third-party extension adds a widget to the left area, nothing happens in RetroLab.
Maybe we should look into using the same shell and app for both lab and retro? This would have the advantage of better compatibility with third-party extensions that expect some areas or component to be available.
Open in a new browser tab
It should be possible to open the notebooks, terminals and the file browser in different browser tabs.
Also this sounds like a minor detail, but there should still not be any splash screen in Retro / Simple Interface. A splash screen indicates this is a heavier app while in RetroLab we only expect to be browsing a "normal" web page.
Seamless switch between JupyterLab and RetroLab / Simple Interface
RetroLab ships with a prebuilt lab extension by default, which adds buttons to the notebook to easily switch between JupyterLab, RetroLab and the Classic Notebook.
In RetroLab:
In JupyterLab:
These are simple buttons, but they already let users easily switch between interfaces with a single click. We should iterate on that idea: #256
More generic way of opening JupyterLab widgets in new browser tabs?
This might be more of a long term experiment. It would be interesting to be able to open arbitrary widgets in new browser tabs. Taking the inspiration from the current RetroLab, but with more widgets than just the notebook, console, terminal and file editor.
Writing this here as something to keep in mind while we iterate on the other items.
Additional context
There have been a lot of discussions in jupyterlab/jupyterlab#9869
Although RetroLab already looks and feels a lot like the classic notebook, a few concerns have also been expressed in jupyter/notebook#6210.