Repo2docker: JupyterLab 1.0 strategy (now 2.0 strategy)

Created on 30 Jun 2019  路  17Comments  路  Source: jupyterhub/repo2docker

JupyterLab 1.0 is on PyPI: https://pypi.org/project/jupyterlab/

I think this release breaks a lot of "old" extensions, which means extension authors are going to need a moment to update.

When should we update the default jupyter lab version we ship?

Repo owners can already opt-in to the new release. So maybe we can be conservative about this.

I tried to refreeze our base environments but this fails with a "can't resolve package" error. Not quite sure why as the packages are on conda-forge already :-/

Most helpful comment

For my education: is there something I can read that explains why with each major release most(?) JupyterLab extensions "stop working" or need some kind of manual intervention? Seems like the highway to wearing out extension authors :-/

In addition to @consideRatio's comments, I'll just add that 2.0 includes a change to a critical core dependency of JupyterLab that forced all js packages to have a major update. The updates for 2.0 are generally straightforward, we think, and we hope that JupyterLab 3.0 will be much less disruptive for many extension authors.

All 17 comments

cc @yuvipanda @choldgraf

IMO we shoudl:

  1. Add documentation somewhere like "how can I use JupyterLab 1.0" that just tells people to add it to their config files somewhere
  2. Wait at least a month or two before we're confident that most repositories won't totally break
  3. Put a banner on mybinder.org that says "hey we're switching to jupyterlab 1.0 on XXX date"
  4. Make the switch on that date.

What do you think?

(there's also a longer-term question of when to default to JupyterLab instead of the classic notebook interface...that's probably for another issue though)

Hey all - it's been a few months of 1.0 being out. I believe the JLab team is also working on a 2.0 RC as well. How does that factor in to our decisions here? I don't think it's great to be 2 major versions behind the latest release - however, a recent 1.X bump caused a bunch of extensions to break in annoying ways.

Perhaps @jasongrout or @ian-r-rose could advise on the relative dangers of switching everybody's Binder JupyterLab versions to >=1.0

2.0 is out now. Maybe we should just bite the bullet?

Bite the bullet with 1.0 or 2.0? I think it's a good question to bring up again!

https://github.com/jupyter/repo2docker/blob/26542dfc85c0a9567d2f266d51810c3a85244880/repo2docker/buildpacks/conda/environment.yml#L4 makes me think we should have closed this issue a while back (or maybe now rename it).

When did 2.0 come out? It seems like there are a whole bunch of PRs/issues popping up around GitHub with "please make this extension compatible with jupyterlab 2.0" at the moment. Maybe we give extension authors time to update their packages?

We need to wait until at least server-proxy and offlinenotebook work with lab 2.0 as we ship them with repo2docker.


For my education: is there something I can read that explains why with each major release most(?) JupyterLab extensions "stop working" or need some kind of manual intervention? Seems like the highway to wearing out extension authors :-/

Aaaaaah, didn't realize we were already on 1.x! <3

If we change, we should go all the way to JupyterLab 2 i think. JupyterLab 2 was released 5 days ago, so it is a bit fresh at the moment to go to. I've made 6 PRs today to fix compatibility matters in extensions and found my way to three other already open PRs to fix others.

@betatim, most npm packages that are used have dependency requirements, and jupyterlab comes with some as well. Typically, all extensions need to bump their dependencies to match whatever JupyterLab has bumped to. When JupyterLab bumps their many sub-packages a major version, the extensions cannot be installed typically, until those many PRs are made for each extension.

I'm amazed how many packages are cooperating without more breakage as it is. I'm very impressed about the core JupyterLab system to deploy new packages etc! I also think they have done a really excellent job to not make breaking changes unless they bump the major version so far since 1.0.0!

For my education: is there something I can read that explains why with each major release most(?) JupyterLab extensions "stop working" or need some kind of manual intervention? Seems like the highway to wearing out extension authors :-/

In addition to @consideRatio's comments, I'll just add that 2.0 includes a change to a critical core dependency of JupyterLab that forced all js packages to have a major update. The updates for 2.0 are generally straightforward, we think, and we hope that JupyterLab 3.0 will be much less disruptive for many extension authors.

Thanks for the explanations! In the cases I've seen the "fix" to make things work with 2.0 did seem to be to update some version numbers in a package.json and nothing more. Which is what made me think "why is this something a human has to do??". So spawned by the success of your efforts to make it easy :)

I've opened a JupyterLab 2 PR for offlinenotebook: https://github.com/manics/jupyter-offlinenotebook/pull/30

Functionally it seems to be working, but the button Font-Awesome icons are missing. I've renamed iconClassName to iconClass following the example from the JupyterLab docs: https://github.com/jupyterlab/jupyterlab/commit/04da52b32a03035d2070eaf7ca2fb921edf747d6

Does anyone have a suggestion on what to try next?

It's working!. I've tested in Firefox and Chome on Linux.

I made the icons visible by overriding the JupyterLab CSS: https://github.com/manics/jupyter-offlinenotebook/pull/30/commits/03776730fb477905b26ceaf9f73694f9d096fb8a
@jasongrout I didn't expect this to be necessary based on the JupyterLab example. I'm aware JupyterLab has switched to SVG icons but it seems FontAwesome icons should still work. Is this expected?

jupyter-offlinenotebook 0.1.0 is released. I've verified that the correct version is installed with JupyterLab 1 and 2:

$ conda create -n jl-test -c conda-forge jupyterlab=1
$ conda activate jl-test
$ pip install jupyter-offlinenotebook
$ jupyter-labextension install jupyter-offlinenotebook
$ jupyter-lab
...

$ conda install -c conda-forge jupyterlab=2
$ jupyter-labextension list
JupyterLab v2.0.1
Known labextensions:
   app dir: /anaconda3/envs/jl-test/share/jupyter/lab
        jupyter-offlinenotebook v0.0.11  enabled   X

   The following extension are outdated:
        jupyter-offlinenotebook

   Consider running "jupyter labextension update --all" to check for updates.

$ jupyter labextension update --all
Updating jupyter-offlinenotebook to version 0.1.0
Building jupyterlab assets (build:prod:minimize)
$ jupyter-lab
...

Should we update the version of offlinenotebook that is used by repo2docker then?

We should probably open up another issue about JupyterLab 3.0?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jburos picture jburos  路  5Comments

betatim picture betatim  路  6Comments

betatim picture betatim  路  6Comments

choldgraf picture choldgraf  路  4Comments

NHDaly picture NHDaly  路  6Comments