jupyterlab-contrib / jupyterlab-tour

A JupyterLab UI tour built on jupyterlab-tutorial and react-joyride.
BSD 3-Clause "New" or "Revised" License
62 stars 9 forks source link

Tour launching usability/discoverability #4

Open bollwyvl opened 4 years ago

bollwyvl commented 4 years ago

A lot of these are issues with broader Lab UI things, but tours deserve to be a bit "special", I think.

My experience has been that the Lab Help menu is, sadly, usually the very last place people look for help. One thing that could help discoverability point of view would be if tours could (optionally) be registered as launcher cards, not having to go through the dialog. While I'm not a huge fan of the current Launcher, mostly because of the giant swaths of whitespace, and n_kernels*2 before you get to anything else, it is the thing that shows up first, by default.

Being able to add a custom icon/title would really make them pop, as the current "Start a Tour" dialog (which just shows the ID) is not very enticing.

Also, a bit of a CSS issue on the dialog (extra scrollbar):

CSS aside, I personally dislike the trend of extensions making liberal use of "bumb" block-the-world modal dialogs for things that aren't deleting data/stopping processes, but again, you use what you got. I think some toasts are coming, but even those have some (significant) issues. Of course once the tour starts, it's the correct behavior, as with the tooltips and the spolight, it actually makes sense to have the user pause and read for a sec.

Finally, I don't know if i like the "Launch the tour immediately by default" behavior. If use of this extension was more widespread on, say, binder, I would grow tired of clicking Skip on that Hey, it looks like you've never JupyterLab-ed before! dialog every time, and it would be confusing to users if the focus is not on using JupyterLab, but rather on a particular notebook/extension.

Instead, if I might suggest, this extension could offer a URL router path such that a binder could be made to easily open a specific tour. I've found the router stuff doesn't compose very well, but URL params do, here's an example, so it might be something like lab/tree/My+Important+Notebook.ipynb?tour=my-important-thing:tour, etc. When/if the longer con of #2 worked, being able to ?tour-path=./tour.json would be wonderful, especially with things like nbgitpuller where the "expensive" npm/conda/pip/julia/r/whatever fixturing can be relegated to a repo/branch with a stately, well-tested change cadence, while the content (including the tour) could be in a fast-moving branch which isn't going to break stuff.

fcollonval commented 4 years ago

@bollwyvl thank you for the constructive feedback.

So I change a bit the logic of the tour launcher to prompt a toast that lives for 10s allowing the user to launch, skip or simply ignore the tour.

Regarding binder setup to hide default tour, you can have a look at jupyter_conda. In that example I set the state for jupyterlab-tour to:

"jupyterlab-tour:state":{"tutorialsDone":["jupyterlab-tour:welcome"],"version":"2.1.1"}

So that the toast for the default tour will not be shown.