damianavila / RISE

RISE: "Live" Reveal.js Jupyter/IPython Slideshow Extension
Other
3.67k stars 414 forks source link

New approach for JupyterLab 3 #605

Closed fcollonval closed 1 year ago

fcollonval commented 2 years ago

This is a reboot of #381 - in order to move forward on https://github.com/jupyter/notebook/issues/6220

The approach taken differs from #381 as it creates a stand-alone app (similarly to retrolab - JLab remix) in order to:

What it does:

What it partly do:

What needs to be done:

Help will be really appreciate to cover the above points - don't hesitate to open PRs against this PR branch.

rise_demo_20211120

psychemedia commented 2 years ago

@firasm Re: JupyterLite, there is also RetroLite. So I could easily imagine (though I donlt know how achievable it is), a user experience of:

fcollonval commented 2 years ago

@damianavila I discuss with @parmentelat about creating a dedicated Python package for the JupyterLab version (keep everything in this repo but with two python packages). The idea is to publish and iterate on the jupyterlab version in a simple way for users not comfortable with JavaScript tooling. Are you ok with that idea? If so, should we merge the iteration on the master branch of this repo or iterate on a separate branch (I would prefer using master to reduce complexity for contributors)? Would you be willing to extend my rights on this repo to help with the maintenance?

damianavila commented 2 years ago

@damianavila I discuss with @parmentelat about creating a dedicated Python package for the JupyterLab version (keep everything in this repo but with two python packages).

I think that is a good idea.

The idea is to publish and iterate on the jupyterlab version in a simple way for users not comfortable with JavaScript tooling. Are you ok with that idea?

Can you please expand on that idea? See my comment here about how I envision the next steps for RISE: https://github.com/damianavila/RISE/issues/614#issuecomment-1073346503 and https://github.com/damianavila/RISE/issues/614#issuecomment-1073347973.

Do you agree/disagree? Thoughts?

If so, should we merge the iteration on the master branch of this repo or iterate on a separate branch (I would prefer using master to reduce complexity for contributors)?

Which iteration are you referring to? The one creating the 2 packages?

Would you be willing to extend my rights on this repo to help with the maintenance?

OBVIOUSLY, already done!!

damianavila commented 2 years ago

Maybe we should continue the above conversation in #614, so we keep this one specifically for the content of this PR...

datakurre commented 2 years ago

@fcollonval Should it be already possible to run this with JupyterLite with some configuration? (With defaults I do get the button, but it eventually fails due to backend server route not being there with lite.)

bollwyvl commented 2 years ago

run this with JupyterLite

I'd wager this wouldn't work in Lite yet.

As the actual renderer is a whole separate lumino app/shell (akin to retro or lab) it would need a separate app/slides/index.ts which was aware of the shortcomings of the browser (e.g. can't list files in a directory) and worked around them (replacing the fetch implementation), but still able to load federated extensions like widgets.

The iframe preview capability from within lab might work, but many HTTP hosts have issues with same-origin iframes, no matter what we set on the sandbox... while the notebook contents might update if changed, the kernel state would not be shared until we figure out a way to launch them inside serviceworkers, or somehow coordinated iframes.

That being said, having a /slides/?path=Notebook.ipynb would be something that we should strongly consider enabling in the core lite repo: the nominal cost for the baseline app would be very low likely (~100kb), as all the apps (lab, retro and repl) are all part of a single shared webpack build, and the actual rendering parts would work as "just" a federated extension.

YiqinZhang commented 2 years ago

I had a problem with the chalkboard. The two buttons only work as jumping to the first slide, and the pen did not show up. I use Chrom(103.0.5060.53) and Firefox(102.0 (64-bit)) on Fedora36, and installed packages are listed below:

IPython          : 8.4.0
ipykernel        : 6.15.0
ipywidgets       : 7.7.1
jupyter_client   : 7.3.4
jupyter_core     : 4.10.0
jupyter_server   : 1.18.0
jupyterlab       : 3.1.18
nbclient         : 0.6.4
nbconvert        : 6.5.0
nbformat         : 5.4.0
notebook         : 6.4.12
qtconsole        : not installed
traitlets        : 5.3.0

Also, I found that the 'Notes only mode' does not work in the speaker's view. The Notes cells didn't show in the speaker notes but appeared on the slideshow. The same situation happens in the Binder as well.

And out of curiosity, are there any updates on the black theme?

Many thanks!

connorferster commented 2 years ago

Nothing productive to add. I just want to say I am very excited for this! Thank you @fcollonval @damianavila @parmentelat @krassowski for all of your work on this.

YiqinZhang commented 2 years ago

I found that the 'Notes only mode' does not work in the speaker's view. The Notes cells didn't show in the speaker notes but appeared on the slideshow. The same situation happens in the Binder as well.

I've tried to fix showing notes in Speak notes Speaker notes here. https://github.com/fcollonval/RISE/pull/5 @fcollonval

PS: After reinstalling the chalkboard patch, the chalkboard and draw functions perform properly.

fcollonval commented 1 year ago

Thanks a lot @YiqinZhang I merged your PR

jim-smith commented 1 year ago

Problem opening second notebook as RISE presentation

hi all, really excited about this as the loveliness of RISE for my teaching is stopping me fully making the transition to jupyterlab (Which I use for research and day-to-day stuff).

After following the right instructions (readme in the branch) I got this up and running nicely ... but it only works for the first notebook I open .

After that, when I try to open a second, then select the rise button I see this message in the terminal from which I started Jupiter lab

  • [IPKernelApp] ERROR | No such comm target registered: jupyter.widget.control

Closing Jupyter and restarting lets me open the second notebook quite happily, - it doesn't seem to be anything to do with specific notebooks, just that closing one and starting another somehow loses track of the widgets ...

Also it doesn't work if I leave the first notebook running in rise mode then open another notebook and try to switch to rise in that.

Any help gratefully accepted as my weekly lecture tend to be split into three notebooks to match the short video chunks I make from them. (obviously I can shutdown and restart the Jupiter server as a workaround but this is not ideal)

YiqinZhang commented 1 year ago

I tried the keyboard shortcut and found both the keyboards "," for Hide/show RISE buttons and "?" for Help did not work as expected. In the notebook version, we can use "," to toggle all RISE buttons, but the hard-wired keyboard binding did not work in Jlab. Any thoughts about that?

YiqinZhang commented 1 year ago

I tried to fix toggling all RISE buttons so that the RISE controls won't cover the slide contents. And then bind keyboard "m" to hide/show buttons on the slideshow. https://github.com/fcollonval/RISE/pull/6

nthiery commented 1 year ago

Hi!

Thanks so much for your work on rise on jupyterlab; we transitioned our large classes here in Orsay to JupyterLab this semester, but we still need to get back to Jupyter for our lectures. Not super convenient, but it's ok.

Where it gets a bit more complicated is that, in the spring semester, it's not just the lecturers that use Jupyter slides, but also students for their project presentations.

Do you have an idea at this stage whether there is a chance for rise to be functional in JupyterLab by then, even with some rough corners? No pressure intended; it's just to know and start planning a plan B if needed.

Thanks in advance! Nicolas

echarles commented 1 year ago

Hi there, is anyone actively working on this? If not, any continue the work with more forces?

damianavila commented 1 year ago

Sorry for the long silence folks, I did not have time to push forward on this one, regrettably. I do not want to make any promises but I plan to spend a few cycles working on this one in the coming weeks.

@fcollonval, do you think you will have some cycles to review my changes in the coming weeks? Just trying to understand if I will have feedback from you or if I would need to figure out things for myself 😉.

Btw, I would also like to discuss with you how the story would look like for the new notebook... Since the approach here is based on a stand-alone app, it should be relatively straightforward to "migrate" it to the new notebook, right?

fcollonval commented 1 year ago

@fcollonval, do you think you will have some cycles to review my changes in the coming weeks? Just trying to understand if I will have feedback from you or if I would need to figure out things for myself wink.

I'll find time for that.

Btw, I would also like to discuss with you how the story would look like for the new notebook... Since the approach here is based on a stand-alone app, it should be relatively straightforward to "migrate" it to the new notebook, right?

Yes it should work (hopefully out of the box) in notebook v7.

fcollonval commented 1 year ago

Closing this as I extracted the plugin to its own repository (as the path forward was suggesting building a separate python package).

The Python package has been publish on PyPI.org: https://pypi.org/project/jupyterlab-rise The repository is: https://github.com/jupyterlab-contrib/rise

LucaSoato commented 1 year ago

Hi everyone, do you think it's compatible with JupyterLab 4? Thanks for the great contribution there, guys ❤️