Subject: Re: [bug#39765] Add package JupyterLab

From: Ludovic Courtès <[email-masked]>
Date: Thu, 26 Mar 2020 23:55:26 +0100

Hi Lars,

Sorry for the late reply.

Lars-Dominik Braun <[email-masked]> skribis:

> this patch series adds Jupyter’s JupyterLab, which is the new frontend for
> Jupyter Notebooks. The software works fine, but there are a few caveats
>
> 1) it comes with bundled pre-compiled JavaScript, which cannot be removed until
>    we have proper support for importing from NPM
> 2) it contains an extension manager, that downloads arbitrary packages from NPM
>    (`jupyter lab build`). This works, but is less than optimal imo. We should
>    figure out how to package extensions in guix.
> 3) also it is required to install the package `jupyter`, otherwise installed
>    kernels cannot be found and the `jupyter` command does not work.

#2 should be quite easy to address: we could arrange to have that
feature disabled by default, so that users don’t find themselves
unknowingly downloading arbitrary code from npm.

#3 is OK.

#1 is a showstopper.  :-/  I suppose that’s a lot of code that would
need to be imported from npm, right?

It’s sad because all this is free software, but we practically can’t get
the corresponding source.

I’ve pushed the first two patches of the series (python-json5 and
python-pytest-check-links).

Comments on the other bits that are readily applicable:

>>>From a47fd94aa6f3e62b77f3b7208c4e6757e3a9ee08 Mon Sep 17 00:00:00 2001
> From: Lars-Dominik Braun <[email-masked]>
> Date: Thu, 12 Dec 2019 08:53:39 +0100
> Subject: [PATCH 5/5] gnu: python-notebook: Support UNIX domain sockets
>
> * gnu/packages/python-xyz.scm (python-notebook): Add patch from upstream
> https://github.com/jupyter/notebook/pull/4835
> (python-requests-unixsocket) New variable
> ---
>  ...pyter-unix-domain-sockets-4835-5.7.4.patch | 591 ++++++++++++++++++
>  gnu/packages/python-xyz.scm                   |  35 +-
>  2 files changed, 624 insertions(+), 2 deletions(-)
>  create mode 100644 gnu/packages/patches/jupyter-unix-domain-sockets-4835-5.7.4.patch
>
> diff --git a/gnu/packages/patches/jupyter-unix-domain-sockets-4835-5.7.4.patch b/gnu/packages/patches/jupyter-unix-domain-sockets-4835-5.7.4.patch
> new file mode 100644
> index 0000000000..134d3ad2b8
> --- /dev/null
> +++ b/gnu/packages/patches/jupyter-unix-domain-sockets-4835-5.7.4.patch
> @@ -0,0 +1,591 @@

Please add provenance info at the top of the patch (such as the URL of
the upstream commit), as well as a line or two explaining what it does.

You can omit “-4835-5.7.4” from the file name.

Make sure to add the file to ‘gnu/local.mk’.

That said, it’s a big patch, so it would be even better if we didn’t
have to carry it.  Will the next version of ‘notebook’ include it?

Last, ‘python-requests-unixsocket’ should be added in a separate patch.

[...]

> +    (arguments
> +     ;; tests depend on very specific package version, which are not available in guix
> +     '(#:tests? #f))

Perhaps add a “FIXME” and clarify which packages we’re talking about
(the “not available” bit is bound to become outdated :-)).

> +    (home-page
> +     "https://github.com/msabramo/requests-unixsocket")
> +    (synopsis
> +     "Use requests to talk HTTP via a UNIX domain socket")
> +    (description
> +     "Use requests to talk HTTP via a UNIX domain socket")

Please follow the synopsis/description guidelines (info "(guix) Synopses
and Descriptions").

Thank you for this endeavor!

Ludo’.