unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Towards reproducibly Jupyter notebooks with Guix-Jupyter
@ 2019-10-10  8:21 Ludovic Courtès
  2019-10-10  8:59 ` zimoun
  2019-10-10 10:19 ` Roel Janssen
  0 siblings, 2 replies; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-10  8:21 UTC (permalink / raw)
  To: Guix Devel; +Cc: Pierre-Antoine Rouby, guix-hpc

[-- Attachment #1: Type: text/plain, Size: 679 bytes --]

Hello Guix!

I’m happy to announce the first release of Guix-Jupyter!

  https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/

Guix-Jupyter is a Jupyter “kernel” that is able to interpret annotations
describing the environment in which notebook cells will be executed.
The end goal is to be able to regard notebooks as pure functions.

The code is here:

  https://gitlab.inria.fr/guix-hpc/guix-kernel

I presented it minutes ago at JCAD, a conference gathering French HPC
practitioners, and where many talks happen to talk about Jupyter.  :-)

  https://jcad2019.sciencesconf.org/resource/page/id/6

Feedback welcome!

Ludo’.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10  8:21 Towards reproducibly Jupyter notebooks with Guix-Jupyter Ludovic Courtès
@ 2019-10-10  8:59 ` zimoun
  2019-10-10 10:07   ` Ludovic Courtès
  2019-10-10 11:02   ` Konrad Hinsen
  2019-10-10 10:19 ` Roel Janssen
  1 sibling, 2 replies; 35+ messages in thread
From: zimoun @ 2019-10-10  8:59 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel, Pierre-Antoine Rouby, guix-hpc

Hi Ludo and Pierre-Antoine,

Congrats for these piece of work!
To me, it is very funny that all the folks find Jupyter amazing when
it is a worse version of Org-mode (troll troll) ;-)
One example of many others, the Notebook are not human readable (I
mean, I am not fluent in JSON reading.)
Well, the hype will always appear to me weird.
Whatever!

I will give a try.
Just two random thoughts.

Is the UI ;;guix aligned with the CLI UI ($ guix)?
For example ;;guix environment R <- r-foo
instead of guix environment --ad-hoc r r-foo --pure (or something like that)
Or ;;guix pin <commit>
instead of guix pull --commit=<commit> (or something like that)
It should be confusing.

Why not use the same syntax for ;;guix than for $ guix?


People enjoy Jupyter Notebook because they are "portable".
Some friends use them as Numercial Lab in class. And the students can
replay the lab at home, tweak some cells and see what happens. Or they
sometimes provide a Notebook backbone with some cells missing and the
students have to complete them as homework.
So the "pip install" and "conda" way is easy because it works (almost)
out-the-box in these cases. On Windows, Mac.
Yes, we are not talking about Reproducible Science in this case. But
one ring to rull them all. :-)

Why not add a kind of ;;guix pack at the end of the Notebook to
generate a container image, for example Docker.
Then the student can just run this Docker wherever they wants.


Thank you for all this work!

All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10  8:59 ` zimoun
@ 2019-10-10 10:07   ` Ludovic Courtès
  2019-10-10 11:02   ` Konrad Hinsen
  1 sibling, 0 replies; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-10 10:07 UTC (permalink / raw)
  To: zimoun; +Cc: Guix Devel, Pierre-Antoine Rouby, guix-hpc

Hello!

(And hi! Pierre-Antoine.  :-))

zimoun <zimon.toutoune@gmail.com> skribis:

> Congrats for these piece of work!
> To me, it is very funny that all the folks find Jupyter amazing when
> it is a worse version of Org-mode (troll troll) ;-)
> One example of many others, the Notebook are not human readable (I
> mean, I am not fluent in JSON reading.)
> Well, the hype will always appear to me weird.

I’m very much into hype so I won’t comment.  :-)

> Is the UI ;;guix aligned with the CLI UI ($ guix)?
> For example ;;guix environment R <- r-foo
> instead of guix environment --ad-hoc r r-foo --pure (or something like that)
> Or ;;guix pin <commit>
> instead of guix pull --commit=<commit> (or something like that)
> It should be confusing.

I think it’s fine to have a simplified interface.  After all, it’s not a
CLI, and it has a more focused goal.  Also, I was thinking that
eventually we might be able to use Jupyter widgets here and there
instead of text, though I’m not sure what that could look like.

> Why not add a kind of ;;guix pack at the end of the Notebook to
> generate a container image, for example Docker.
> Then the student can just run this Docker wherever they wants.

That’s a very good idea!  We’d need to think about what that entails,
but it sounds like a great feature for the 0.2.0.  :-)

Thanks for your feedback and ideas!

Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10  8:21 Towards reproducibly Jupyter notebooks with Guix-Jupyter Ludovic Courtès
  2019-10-10  8:59 ` zimoun
@ 2019-10-10 10:19 ` Roel Janssen
  2019-10-10 11:59   ` Ludovic Courtès
  2019-10-10 14:57   ` Ludovic Courtès
  1 sibling, 2 replies; 35+ messages in thread
From: Roel Janssen @ 2019-10-10 10:19 UTC (permalink / raw)
  To: Ludovic Courtès, Guix Devel; +Cc: Pierre-Antoine Rouby, guix-hpc

On Thu, 2019-10-10 at 10:21 +0200, Ludovic Courtès wrote:
> Hello Guix!
> 
> I’m happy to announce the first release of Guix-Jupyter!
> 
>   
> https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/
> 
> Guix-Jupyter is a Jupyter “kernel” that is able to interpret
> annotations
> describing the environment in which notebook cells will be executed.
> The end goal is to be able to regard notebooks as pure functions.
> 
> The code is here:
> 
>   https://gitlab.inria.fr/guix-hpc/guix-kernel
> 
> I presented it minutes ago at JCAD, a conference gathering French HPC
> practitioners, and where many talks happen to talk about Jupyter.  :-
> )
> 
>   https://jcad2019.sciencesconf.org/resource/page/id/6
> 
> Feedback welcome!
> 
> Ludo’.

The animated GIFs are really useful!  If I understand this correctly,
the Guix Jupyter kernel allows one to use multiple (completely
distinct) environments in a single Notebook.  So, mix Python, R and
Scheme in a single notebook.  That's pretty neat!

Kind regards,
Roel Janssen

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10  8:59 ` zimoun
  2019-10-10 10:07   ` Ludovic Courtès
@ 2019-10-10 11:02   ` Konrad Hinsen
  2019-10-10 14:52     ` Ludovic Courtès
  1 sibling, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-10 11:02 UTC (permalink / raw)
  To: Guix Devel

Hi Ludo and Simon,

Ludovic Courtès <ludovic.courtes@inria.fr> writes:

> I’m happy to announce the first release of Guix-Jupyter!

This looks very good, even though I will probably have to rework my
reproducible-research-tutorial-with-guix tutorial now ;-)

I haven't looked at this yet in any detail, but I wonder how you deal
with Jupyter pluging (e.g. widgets). For reproducibility, they ought to
be taken from the notebook's specific environment, rather than from the
environment from which Jupyter and the Guix kernel are taken. But this
looks difficult to do, given Jupyter's messy architecture.


zimoun <zimon.toutoune@gmail.com> writes:

> To me, it is very funny that all the folks find Jupyter amazing when
> it is a worse version of Org-mode (troll troll) ;-)

Yes and no. Org-mode doesn't have anything close to Jupyter's widgets.
But otherwise, I agree.

It would be nice in fact to adapt the ideas behind Guix-Jupyter (and
perhaps parts of the code) to Org-mode. Some integration with Emacs will
be necessary to tell Org-mode to start Python etc. from the Guix
environment.

> Is the UI ;;guix aligned with the CLI UI ($ guix)?

I actually wonder which way the alignment should be done - the current
guix CLI is a bit of a mess already.

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10 10:19 ` Roel Janssen
@ 2019-10-10 11:59   ` Ludovic Courtès
  2019-10-10 14:57   ` Ludovic Courtès
  1 sibling, 0 replies; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-10 11:59 UTC (permalink / raw)
  To: Roel Janssen; +Cc: Guix Devel, Pierre-Antoine Rouby, guix-hpc

Howdy!

Roel Janssen <roel@gnu.org> skribis:

> The animated GIFs are really useful!  If I understand this correctly,
> the Guix Jupyter kernel allows one to use multiple (completely
> distinct) environments in a single Notebook.  So, mix Python, R and
> Scheme in a single notebook.  That's pretty neat!

Yes, I think it’s pretty fun.  :-)

In practice, I guess most users just need a single kernel, but there are
probably cases where mixing kernels can be useful.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10 11:02   ` Konrad Hinsen
@ 2019-10-10 14:52     ` Ludovic Courtès
  2019-10-14  6:35       ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-10 14:52 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Hi Konrad!

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

> This looks very good, even though I will probably have to rework my
> reproducible-research-tutorial-with-guix tutorial now ;-)

Heheh.  :-)

> I haven't looked at this yet in any detail, but I wonder how you deal
> with Jupyter pluging (e.g. widgets). For reproducibility, they ought to
> be taken from the notebook's specific environment, rather than from the
> environment from which Jupyter and the Guix kernel are taken. But this
> looks difficult to do, given Jupyter's messy architecture.

It’s an area that needs more testing, as they say.  ;-)

That reminds me of an interesting issue regarding
bitwise-reproducibility that was raised on the Reproducible Builds
mailing list:

  https://lists.reproducible-builds.org/pipermail/rb-general/2019-September/001657.html

> It would be nice in fact to adapt the ideas behind Guix-Jupyter (and
> perhaps parts of the code) to Org-mode. Some integration with Emacs will
> be necessary to tell Org-mode to start Python etc. from the Guix
> environment.

I’d love to see that happen!  I thought perhaps we could trick Alex Kost
or Pierre Neidhardt to hack on that, let’s see.  :-)

Thanks for your feedback,
Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10 10:19 ` Roel Janssen
  2019-10-10 11:59   ` Ludovic Courtès
@ 2019-10-10 14:57   ` Ludovic Courtès
  1 sibling, 0 replies; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-10 14:57 UTC (permalink / raw)
  To: Roel Janssen; +Cc: Guix Devel, Pierre-Antoine Rouby, guix-hpc

Roel Janssen <roel@gnu.org> skribis:

> The animated GIFs are really useful!  If I understand this correctly,
> the Guix Jupyter kernel allows one to use multiple (completely
> distinct) environments in a single Notebook.  So, mix Python, R and
> Scheme in a single notebook.  That's pretty neat!

I’ve just learned that <https://github.com/twosigma/beakerx> supports
“polyglot” notebooks as well, though I don’t know how it works.

Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-10 14:52     ` Ludovic Courtès
@ 2019-10-14  6:35       ` Konrad Hinsen
  2019-10-14  7:21         ` Ludovic Courtès
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-14  6:35 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

> That reminds me of an interesting issue regarding
> bitwise-reproducibility that was raised on the Reproducible Builds
> mailing list:
>
>   https://lists.reproducible-builds.org/pipermail/rb-general/2019-September/001657.html

We ran into this problem as well in the Reproducible Research MOOC. It's
hard to test equality for notebooks. But we went for solution a) because
our main goal is to teach good practices for writers of future
notebooks, rather than patch bad practices of the past with an
additional layer of build tools.

>> It would be nice in fact to adapt the ideas behind Guix-Jupyter (and
>> perhaps parts of the code) to Org-mode. Some integration with Emacs will
>> be necessary to tell Org-mode to start Python etc. from the Guix
>> environment.
>
> I’d love to see that happen!  I thought perhaps we could trick Alex Kost
> or Pierre Neidhardt to hack on that, let’s see.  :-)

I might also do it myself because I suspect it would be less work to
write the required Emacs package than to explain how to live without it.
Tutorial-driven development :-)

What would be the best way to run code in a specific environment created
for recorded channels? The obvious approach would be

   guix pull -C channels.scm -p /tmp/temp-profile
   /tmp/temp-profile/bin/guix environment –-pure -m manifest.scm –-
   python script.py
   rm -rf /tmp/temp-profile

but doing that properly involves the usual messy precautions for dealing
with temporary directories, and it's probably expensive to do the "guix
pull" repeatedly for the same channel file just because the temporary
profile gets deleted immediately.

This looks like a use case for "guix inferior", but is that already
stable enough to be talked about in public?

Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-14  6:35       ` Konrad Hinsen
@ 2019-10-14  7:21         ` Ludovic Courtès
  2019-10-14 11:45           ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-14  7:21 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Hi Konrad,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>> That reminds me of an interesting issue regarding
>> bitwise-reproducibility that was raised on the Reproducible Builds
>> mailing list:
>>
>>   https://lists.reproducible-builds.org/pipermail/rb-general/2019-September/001657.html
>
> We ran into this problem as well in the Reproducible Research MOOC. It's
> hard to test equality for notebooks. But we went for solution a) because
> our main goal is to teach good practices for writers of future
> notebooks, rather than patch bad practices of the past with an
> additional layer of build tools.

Yeah.

(Though printing addresses in a REPL isn’t “bad practice” IMO, it’s just
that it doesn’t mesh well with the intended use of notebooks.)

>>> It would be nice in fact to adapt the ideas behind Guix-Jupyter (and
>>> perhaps parts of the code) to Org-mode. Some integration with Emacs will
>>> be necessary to tell Org-mode to start Python etc. from the Guix
>>> environment.
>>
>> I’d love to see that happen!  I thought perhaps we could trick Alex Kost
>> or Pierre Neidhardt to hack on that, let’s see.  :-)
>
> I might also do it myself because I suspect it would be less work to
> write the required Emacs package than to explain how to live without it.
> Tutorial-driven development :-)

Would be sweet!  :-)

> What would be the best way to run code in a specific environment created
> for recorded channels? The obvious approach would be
>
>    guix pull -C channels.scm -p /tmp/temp-profile
>    /tmp/temp-profile/bin/guix environment –-pure -m manifest.scm –-
>    python script.py
>    rm -rf /tmp/temp-profile
>
> but doing that properly involves the usual messy precautions for dealing
> with temporary directories, and it's probably expensive to do the "guix
> pull" repeatedly for the same channel file just because the temporary
> profile gets deleted immediately.

At the API level, there’s ‘inferior-for-channels’ which does that +
registers a GC root + maintains a cache so that the second time you use
a given instance of Guix it’s immediately available.

> This looks like a use case for "guix inferior", but is that already
> stable enough to be talked about in public?

It’s still documented as “subject to change”.  :-)

  https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html

Now, I think you can safely use it in your code, I don’t foresee any
significant change at this point.

As to whether you’d want to talk about it in the MOOC for instance, you
could, but maybe with a word of warning because the MOOC may be around
for a long time.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-14  7:21         ` Ludovic Courtès
@ 2019-10-14 11:45           ` Konrad Hinsen
  2019-10-14 13:25             ` Ludovic Courtès
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-14 11:45 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

> (Though printing addresses in a REPL isn’t “bad practice” IMO, it’s just
> that it doesn’t mesh well with the intended use of notebooks.)

And that's exactly the difference between a REPL and a reproducible
document. Unfortunately, Jupyter tries to be both and thus never
explains the differences clearly.

> At the API level, there’s ‘inferior-for-channels’ which does that +
> registers a GC root + maintains a cache so that the second time you use
> a given instance of Guix it’s immediately available.

Just what I need...

> Now, I think you can safely use it in your code, I don’t foresee any
> significant change at this point.
>
> As to whether you’d want to talk about it in the MOOC for instance, you

Certainly not. I just want to be sure that the functionality won't go
away. If the API changes a bit, that can be fixed.

I'll start playing with this...

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-14 11:45           ` Konrad Hinsen
@ 2019-10-14 13:25             ` Ludovic Courtès
  2019-10-21 12:50               ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-14 13:25 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Howdy,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>> (Though printing addresses in a REPL isn’t “bad practice” IMO, it’s just
>> that it doesn’t mesh well with the intended use of notebooks.)
>
> And that's exactly the difference between a REPL and a reproducible
> document. Unfortunately, Jupyter tries to be both and thus never
> explains the differences clearly.

Yeah.

>> At the API level, there’s ‘inferior-for-channels’ which does that +
>> registers a GC root + maintains a cache so that the second time you use
>> a given instance of Guix it’s immediately available.
>
> Just what I need...

Awesome, let us know how it goes!

Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-14 13:25             ` Ludovic Courtès
@ 2019-10-21 12:50               ` Konrad Hinsen
  2019-10-22 10:16                 ` Ludovic Courtès
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-21 12:50 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

>>> At the API level, there’s ‘inferior-for-channels’ which does that +
>>> registers a GC root + maintains a cache so that the second time you use
>>> a given instance of Guix it’s immediately available.
>>
>> Just what I need...
>
> Awesome, let us know how it goes!

Not so well...

If I run "guix environment" in the inferior, it's the inferior that
forks and runs the specified command in the newly created environment.
But the inferior doesn't have access to the tty, so this is bound to
fail for running interactive commands.

Unless there is some Linux magic that I am not aware of for transferring
the tty temporarily to another process, the fork would thus have to
happen in the main Guix process rather than in the inferior. But any
scheme I can come up with for creating a profile in the inferior and
using it in the main process ends up generating the same problem that I
am trying to solve: the need for a temporary reference (profile or GC
root) that must later be removed.

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-21 12:50               ` Konrad Hinsen
@ 2019-10-22 10:16                 ` Ludovic Courtès
  2019-10-22 11:12                   ` Konrad Hinsen
  2019-10-23  9:53                   ` Konrad Hinsen
  0 siblings, 2 replies; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-22 10:16 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Hi,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>>>> At the API level, there’s ‘inferior-for-channels’ which does that +
>>>> registers a GC root + maintains a cache so that the second time you use
>>>> a given instance of Guix it’s immediately available.
>>>
>>> Just what I need...
>>
>> Awesome, let us know how it goes!
>
> Not so well...

Did you define an environment along the lines of the example at
<https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html>?

If so, this should behave in exactly the same way as a “regular” ‘guix
environment’, so I’m not sure where the issues regarding access to the
tty come from?

Depending on the use case, another option is to not use inferiors at all
and simply do:

  guix pull --commit=XYZ -p ./my-old-guix
  ./my-old-guix/bin/guix environment --ad-hoc whatevern

But maybe I’m missing something, let me know.  :-)

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-22 10:16                 ` Ludovic Courtès
@ 2019-10-22 11:12                   ` Konrad Hinsen
  2019-10-24 10:26                     ` Ludovic Courtès
  2019-10-23  9:53                   ` Konrad Hinsen
  1 sibling, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-22 11:12 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

> Did you define an environment along the lines of the example at
> <https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html>?

No. I did look at this approach briefly, but it looks difficult at
least, if not impossible.

The situation I need to address is re-creating an environment from
- a channel file (from "guix describe")
- a manifest file (typically hand written)

This should not require editing the manifest file, and it should work
for any manifest file, even if it included package transformations or
literal package definitions (yes, I do that, shame on me, I ought to set
up my own channel instead).

A manifest definition using only lookups by package name and version
would be easy to translate into a manifest containing instances of
inferior-package, but I don't see how to deal with the more exotic
cases. I'd have to construct corresponding instances of inferior-package
myself, which is perhaps possible, but not obvious.

> Depending on the use case, another option is to not use inferiors at all
> and simply do:
>
>   guix pull --commit=XYZ -p ./my-old-guix
>   ./my-old-guix/bin/guix environment --ad-hoc whatevern
>
> But maybe I’m missing something, let me know.  :-)

That was my starting point. It's OK for manual execution, but if I want
an Org-Mode file to this automatically, I need to generate a temporary
file in place of ./my-old-guix with all the associated hassles: check
that it doesn't exist before, and clean up in the end even in the case
of errors. Maybe I'd even have to worry about two processes accessing
the same temporary file and do some locking.

Moreover, I may end up having a performance problem with "guix pull"
being run again for every little script in my Org-Mode file. The big
difference between Jupyter and Org-Mode is that Jupyter has only one
kernel process per notebook, whereas Org-Mode by default has one process
per code block.

My dream would be to have something like

  guix environment -C channels.scm -m manifest.scm

with reasonable caching of the pulled channels. That's in fact what I
was trying to implement.

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-22 10:16                 ` Ludovic Courtès
  2019-10-22 11:12                   ` Konrad Hinsen
@ 2019-10-23  9:53                   ` Konrad Hinsen
  2019-10-23 10:32                     ` zimoun
  1 sibling, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-23  9:53 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

> Did you define an environment along the lines of the example at
> <https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html>?
>
> If so, this should behave in exactly the same way as a “regular” ‘guix
> environment’, so I’m not sure where the issues regarding access to the
> tty come from?

I ended up finding an approach that does work, though it relies on
undocumented properties:

   (use-modules (guix channels)
                (guix inferior))

   (define channels
     (list (channel
            (name 'guix)
            (url "https://git.savannah.gnu.org/git/guix.git")
            (commit
             "44881cad93801de9462d469500d582af79b99959"))))

   (define inferior
     (inferior-for-channels channels))

   (define inferior-executable
     (inferior-eval
      '(car (program-arguments))
      inferior))

   (define inferior-command-line
     (cons inferior-executable (cdr (program-arguments))))

   (apply system* inferior-command-line)

This script uses the inferior mechanism for creating and caching an
older guix, but then calls its executable directly.

Of course this idea could be implemented in a better way, by factoring
out the caching mechanism from inferior-for-channels and providing a
command-line interface. Something like

   guix time-machine channels.scm command args ...

Does this sound reasonable? I volunteer for implementing this, but I'd
like to have an expert opinion first.

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-23  9:53                   ` Konrad Hinsen
@ 2019-10-23 10:32                     ` zimoun
  2019-10-23 12:15                       ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: zimoun @ 2019-10-23 10:32 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel, Ludovic Courtès

Hi Konrad,

I am not sure to understand everything, so my questions are:

 - Do you consider binaries coming from multiple commits and/or
multiple channels?
 - Why splits the channel file and the manifest file? I am thinking to
improve the DSL of the manifest file.


All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-23 10:32                     ` zimoun
@ 2019-10-23 12:15                       ` Konrad Hinsen
  2019-10-23 16:49                         ` zimoun
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-23 12:15 UTC (permalink / raw)
  To: zimoun; +Cc: Guix Devel, Ludovic Courtès

Hi Simon,

> I am not sure to understand everything, so my questions are:
>
>  - Do you consider binaries coming from multiple commits and/or
> multiple channels?

No, at least not explicitly. My goal is reproducing computations from
the past, so I need to re-animate old manifest files. These could of
course contain references to inferior-packages, so they could be
multi-commit, but this is not my focus.

>  - Why splits the channel file and the manifest file? I am thinking to
> improve the DSL of the manifest file.

I have thought about this as well, but I am not convinced this is a good
idea, for two reasons.

First, the manifest file is hand-written, the channel file is produced
by "guix describe". How would a combined file be created? And how would
it be updated? The two main kinds of update are 1) updating the software
and 2) changing the components of the environment. Today each part is
covered by one file, so there is no conflict. With a single file, would
"guix pull" have an option to patch in a new commit number?

Second, combining both informations would likely require a restriction
of what is allowed in a manifest file. For example, only allow package
specifications by name and version, without transformations. Otherwise
the implementation would be quite complicated. Imagine someone applying
a transformation using today's guix to a package from last year's guix
that didn't have a feature used in the transformation.

What a combined file would make sense for is saving a profile to a
manifest file. As far as I know there is no support for that at the
moment, but it could be useful.

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-23 12:15                       ` Konrad Hinsen
@ 2019-10-23 16:49                         ` zimoun
  2019-10-24  6:20                           ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: zimoun @ 2019-10-23 16:49 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel, Ludovic Courtès

On Wed, 23 Oct 2019 at 14:15, Konrad Hinsen <konrad.hinsen@fastmail.net> wrote:
>
> Hi Simon,
>
> > I am not sure to understand everything, so my questions are:
> >
> >  - Do you consider binaries coming from multiple commits and/or
> > multiple channels?
>
> No, at least not explicitly. My goal is reproducing computations from
> the past, so I need to re-animate old manifest files. These could of
> course contain references to inferior-packages, so they could be
> multi-commit, but this is not my focus.

But does it fit with the current practice?
I mean, from my experience, I work by steps. Say I use package foo
coming from the commit C1 and I complete the first step. Then, weeks
later, I need the package bar and it is not provided by the commit C1,
so I "guix pull" and the second step is completed with the commit C2.
However, the package foo has been grafted (or update) between C1 and
C2. Therefore, it is becoming hard to run the 2 steps in one-go.

I do not know if it is a way to go: allow profile/environment
populated with binaries from different commits (without speaking about
possible clash.)

Back to my example, all the computations done with the commit C1 have
to be re-done with all the binaries coming from the commit C2---in
order to have only one commit. Or the redo implies the 2 steps---when
it is 2, it seems doable however if it is more it won't.

What do you think?


> >  - Why splits the channel file and the manifest file? I am thinking to
> > improve the DSL of the manifest file.
>
> I have thought about this as well, but I am not convinced this is a good
> idea, for two reasons.
>
> First, the manifest file is hand-written, the channel file is produced
> by "guix describe". How would a combined file be created? And how would
> it be updated? The two main kinds of update are 1) updating the software
> and 2) changing the components of the environment. Today each part is
> covered by one file, so there is no conflict. With a single file, would
> "guix pull" have an option to patch in a new commit number?

This information is already available in one location:
<profile>/manifest, I guess.


> What a combined file would make sense for is saving a profile to a
> manifest file. As far as I know there is no support for that at the
> moment, but it could be useful.

I agree. :-)

Pierre wrote an example to bridge the profile to the manifest.
See https://ambrevar.xyz/guix-advance/index.html
section Generate a manifest  (bottom)

All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-23 16:49                         ` zimoun
@ 2019-10-24  6:20                           ` Konrad Hinsen
  2019-10-24 13:23                             ` Pierre Neidhardt
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-24  6:20 UTC (permalink / raw)
  To: zimoun; +Cc: Guix Devel, Ludovic Courtès

zimoun <zimon.toutoune@gmail.com> writes:

>> No, at least not explicitly. My goal is reproducing computations from
>> the past, so I need to re-animate old manifest files. These could of
>> course contain references to inferior-packages, so they could be
>> multi-commit, but this is not my focus.
>
> But does it fit with the current practice?

With mine, yes :-)

Installing packages one by one into my profile is something I only do
for quick tests. All my profiles are defined by manifest files under
version control, and occasionally updated as a whole.

If there were a straightforward way to save profiles to a manifest
file, I might be less strict about this procedure, though I don't find
it constraining in practice. It fits well with my older habit of having
all configuration files under version control.

> I do not know if it is a way to go: allow profile/environment
> populated with binaries from different commits (without speaking about
> possible clash.)

I'd say it's doable, but so far not implemented. Restoring such an
environment is likely to be expensive, as you have to download multiple
Guix commits and then maybe compile dozens of versions of old compilers
etc.

Assuming that one day in the near future, all scientists use Guix and
routinely publish their manifest files, I'd expect reviewers to ask
authors to clean up their manifest files for the benefit of everyone
else. So I adopt this habit now before I am forced to ;-)

> This information is already available in one location:
> <profile>/manifest, I guess.

Indeed, but it's an undocumented feature for now. The format is
undocumented and not accepted by "guix package" or "guix environment".

> Pierre wrote an example to bridge the profile to the manifest.
> See https://ambrevar.xyz/guix-advance/index.html
> section Generate a manifest  (bottom)

Interesting, but it records only one commit, for the current Guix.
If you have older non-updated packages, this will go unnoticed.
I see this mainly as a tool for migrating from historical-accident
profiles to managed profiles, but that's perhaps just my own bias.

Cheers,
  Konrad

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-22 11:12                   ` Konrad Hinsen
@ 2019-10-24 10:26                     ` Ludovic Courtès
  2019-10-25  9:21                       ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Ludovic Courtès @ 2019-10-24 10:26 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Hi Konrad,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>> Depending on the use case, another option is to not use inferiors at all
>> and simply do:
>>
>>   guix pull --commit=XYZ -p ./my-old-guix
>>   ./my-old-guix/bin/guix environment --ad-hoc whatevern
>>
>> But maybe I’m missing something, let me know.  :-)
>
> That was my starting point. It's OK for manual execution, but if I want
> an Org-Mode file to this automatically, I need to generate a temporary
> file in place of ./my-old-guix with all the associated hassles: check
> that it doesn't exist before, and clean up in the end even in the case
> of errors. Maybe I'd even have to worry about two processes accessing
> the same temporary file and do some locking.

I see.  In a way one could argue that it’s not Guix’ problem, but OTOH
it’s clearly a problem that Guix doesn’t make it more convenient.

> I ended up finding an approach that does work, though it relies on
> undocumented properties:
>
>    (use-modules (guix channels)
>                 (guix inferior))
>
>    (define channels
>      (list (channel
>             (name 'guix)
>             (url "https://git.savannah.gnu.org/git/guix.git")
>             (commit
>              "44881cad93801de9462d469500d582af79b99959"))))
>
>    (define inferior
>      (inferior-for-channels channels))
>
>    (define inferior-executable
>      (inferior-eval
>       '(car (program-arguments))
>       inferior))
>
>    (define inferior-command-line
>      (cons inferior-executable (cdr (program-arguments))))
>
>    (apply system* inferior-command-line)
>
> This script uses the inferior mechanism for creating and caching an
> older guix, but then calls its executable directly.
>
> Of course this idea could be implemented in a better way, by factoring
> out the caching mechanism from inferior-for-channels and providing a
> command-line interface. Something like
>
>    guix time-machine channels.scm command args ...
>
> Does this sound reasonable? I volunteer for implementing this, but I'd
> like to have an expert opinion first.

That sounds reasonable to me: it’s a simple and easily-understood UI
(easier than the ‘guix pull -p’ dance!), and the implementation should
be easy (thus the maintenance cost is very low).

Looking forward to a patch!  :-)

Thank you,
Ludo’.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-24  6:20                           ` Konrad Hinsen
@ 2019-10-24 13:23                             ` Pierre Neidhardt
  2019-10-25 14:29                               ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Pierre Neidhardt @ 2019-10-24 13:23 UTC (permalink / raw)
  To: Konrad Hinsen, zimoun; +Cc: Guix Devel, Ludovic Courtès

[-- Attachment #1: Type: text/plain, Size: 447 bytes --]

Indeed.

Konrad's patch / idea is brilliant in my opinion.  Looking forward to
seeing it merged!

In the meantime I've played with Guix + Emacs and wrapped Guix CLI in
hopefully a more convenient way that makes it easy to track the channel
specifications for various manifests, to reproduce them, etc.

See https://gitlab.com/emacs-guix/emacs-guix/issues/13, maybe that'll
inspire you :)

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-24 10:26                     ` Ludovic Courtès
@ 2019-10-25  9:21                       ` Konrad Hinsen
  2019-10-29 14:16                         ` Konrad Hinsen
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-25  9:21 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Hi Ludo,

> I see.  In a way one could argue that it’s not Guix’ problem, but OTOH
> it’s clearly a problem that Guix doesn’t make it more convenient.

I don't know much about Guix' problem, not being a software
psychologist, but in the meantime I am trying to solve a
problem that some Guix users have :-)

> That sounds reasonable to me: it’s a simple and easily-understood UI
> (easier than the ‘guix pull -p’ dance!), and the implementation should
> be easy (thus the maintenance cost is very low).

Indeed.

> Looking forward to a patch!  :-)

If all goes well, next week !

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-24 13:23                             ` Pierre Neidhardt
@ 2019-10-25 14:29                               ` Konrad Hinsen
  2019-10-25 14:40                                 ` Pierre Neidhardt
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-25 14:29 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: Guix Devel

Hi Pierre,

> In the meantime I've played with Guix + Emacs and wrapped Guix CLI in
> hopefully a more convenient way that makes it easy to track the channel
> specifications for various manifests, to reproduce them, etc.
>
> See https://gitlab.com/emacs-guix/emacs-guix/issues/13, maybe that'll
> inspire you :)

That looks like a layer on top of the Guix commands which does
profile/manifes management based on a few conventions. Nice!

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-25 14:29                               ` Konrad Hinsen
@ 2019-10-25 14:40                                 ` Pierre Neidhardt
  0 siblings, 0 replies; 35+ messages in thread
From: Pierre Neidhardt @ 2019-10-25 14:40 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 445 bytes --]

Hi Konrad,

Konrad Hinsen <konrad.hinsen@fastmail.net> writes:

> That looks like a layer on top of the Guix commands which does
> profile/manifes management based on a few conventions. Nice!

Exactly.  It's very usable, but of course having it embedded in the CLI
would be much better, since it would be even more usable (e.g. caching
of the Guix checkout) + it would benefit everyone.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-25  9:21                       ` Konrad Hinsen
@ 2019-10-29 14:16                         ` Konrad Hinsen
  2019-10-29 15:00                           ` Pierre Neidhardt
  0 siblings, 1 reply; 35+ messages in thread
From: Konrad Hinsen @ 2019-10-29 14:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Guix Devel

Konrad Hinsen <konrad.hinsen@fastmail.net> writes:

>> Looking forward to a patch!  :-)
>
> If all goes well, next week !

Done:

   https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37978

Cheers,
  Konrad.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-29 14:16                         ` Konrad Hinsen
@ 2019-10-29 15:00                           ` Pierre Neidhardt
  2020-02-27 14:25                             ` Pjotr Prins
  0 siblings, 1 reply; 35+ messages in thread
From: Pierre Neidhardt @ 2019-10-29 15:00 UTC (permalink / raw)
  To: Konrad Hinsen, Ludovic Courtès; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 121 bytes --]

I had a quick glance at the patch: It's awesome!
Thanks a lot, Konrad!

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2019-10-29 15:00                           ` Pierre Neidhardt
@ 2020-02-27 14:25                             ` Pjotr Prins
  2020-02-27 14:36                               ` zimoun
  0 siblings, 1 reply; 35+ messages in thread
From: Pjotr Prins @ 2020-02-27 14:25 UTC (permalink / raw)
  To: Konrad Hinsen; +Cc: Guix Devel

Dear Konrad,

I don't thing we have an R kernel yet for Jupyter. How hard would it
be to add that? I have been using the Python version in class. It is
great :). And you don't really need Jupyterhub for a class.

Pj.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 14:25                             ` Pjotr Prins
@ 2020-02-27 14:36                               ` zimoun
  2020-02-27 18:11                                 ` Pjotr Prins
  0 siblings, 1 reply; 35+ messages in thread
From: zimoun @ 2020-02-27 14:36 UTC (permalink / raw)
  To: Pjotr Prins; +Cc: Guix Devel

Hi Pjotr,

On Thu, 27 Feb 2020 at 15:33, Pjotr Prins <pjotr.public12@thebird.nl> wrote:

> I don't thing we have an R kernel yet for Jupyter. How hard would it
> be to add that? I have been using the Python version in class. It is
> great :). And you don't really need Jupyterhub for a class.

Is ' r-irkernel' not what you want?

All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 14:36                               ` zimoun
@ 2020-02-27 18:11                                 ` Pjotr Prins
  2020-02-27 18:20                                   ` zimoun
  0 siblings, 1 reply; 35+ messages in thread
From: Pjotr Prins @ 2020-02-27 18:11 UTC (permalink / raw)
  To: zimoun; +Cc: Guix Devel

On Thu, Feb 27, 2020 at 03:36:37PM +0100, zimoun wrote:
> Hi Pjotr,
> 
> On Thu, 27 Feb 2020 at 15:33, Pjotr Prins <pjotr.public12@thebird.nl> wrote:
> 
> > I don't thing we have an R kernel yet for Jupyter. How hard would it
> > be to add that? I have been using the Python version in class. It is
> > great :). And you don't really need Jupyterhub for a class.
> 
> Is ' r-irkernel' not what you want?

Indeed. Thank you :). Why not call it something with jupyter in the name?

Pj.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 18:11                                 ` Pjotr Prins
@ 2020-02-27 18:20                                   ` zimoun
  2020-02-27 18:43                                     ` Vincent Legoll
  0 siblings, 1 reply; 35+ messages in thread
From: zimoun @ 2020-02-27 18:20 UTC (permalink / raw)
  To: Pjotr Prins; +Cc: Guix Devel

On Thu, 27 Feb 2020 at 19:11, Pjotr Prins <pjotr.public12@thebird.nl> wrote:
>
> On Thu, Feb 27, 2020 at 03:36:37PM +0100, zimoun wrote:
> > Hi Pjotr,
> >
> > On Thu, 27 Feb 2020 at 15:33, Pjotr Prins <pjotr.public12@thebird.nl> wrote:
> >
> > > I don't thing we have an R kernel yet for Jupyter. How hard would it
> > > be to add that? I have been using the Python version in class. It is
> > > great :). And you don't really need Jupyterhub for a class.
> >
> > Is ' r-irkernel' not what you want?
>
> Indeed. Thank you :). Why not call it something with jupyter in the name?

Because other kernels are named: python-ipykernel or ruby-iruby.
Another: python-pari-jupyter.
And another other: jupyter-guile-kernel.
Well, there is no real convention yet, if I understand correctly.

A good move should to start a gnu/packages/jupyter.scm to put all the
Jupyter related machinery inside... I do not know.


All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 18:20                                   ` zimoun
@ 2020-02-27 18:43                                     ` Vincent Legoll
  2020-02-27 18:49                                       ` zimoun
  0 siblings, 1 reply; 35+ messages in thread
From: Vincent Legoll @ 2020-02-27 18:43 UTC (permalink / raw)
  To: zimoun; +Cc: Guix Devel

hello

On Thu, Feb 27, 2020 at 7:20 PM zimoun <zimon.toutoune@gmail.com> wrote:
> Because other kernels are named: python-ipykernel or ruby-iruby.
> Another: python-pari-jupyter.
> And another other: jupyter-guile-kernel.
> Well, there is no real convention yet, if I understand correctly.
>
> A good move should to start a gnu/packages/jupyter.scm to put all the
> Jupyter related machinery inside... I do not know.

Maybe we can help them show up properly in guix search results, like
adding what could be missing in description.

-- 
Vincent Legoll

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 18:43                                     ` Vincent Legoll
@ 2020-02-27 18:49                                       ` zimoun
  2020-02-27 19:38                                         ` Ricardo Wurmus
  0 siblings, 1 reply; 35+ messages in thread
From: zimoun @ 2020-02-27 18:49 UTC (permalink / raw)
  To: Vincent Legoll; +Cc: Guix Devel

On Thu, 27 Feb 2020 at 19:43, Vincent Legoll <vincent.legoll@gmail.com> wrote:
>
> hello
>
> On Thu, Feb 27, 2020 at 7:20 PM zimoun <zimon.toutoune@gmail.com> wrote:
> > Because other kernels are named: python-ipykernel or ruby-iruby.
> > Another: python-pari-jupyter.
> > And another other: jupyter-guile-kernel.
> > Well, there is no real convention yet, if I understand correctly.
> >
> > A good move should to start a gnu/packages/jupyter.scm to put all the
> > Jupyter related machinery inside... I do not know.
>
> Maybe we can help them show up properly in guix search results, like
> adding what could be missing in description.

Hum? I am not convinced that something is missing in the
description... I mean "guix search jupyter kernel | less" does already
the job, IMHO.
What should be missing is some convention in the naming scheme; and it
seems easier to force a convention when all the same related packages
live in the same file.


All the best,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 18:49                                       ` zimoun
@ 2020-02-27 19:38                                         ` Ricardo Wurmus
  2020-02-27 19:48                                           ` zimoun
  0 siblings, 1 reply; 35+ messages in thread
From: Ricardo Wurmus @ 2020-02-27 19:38 UTC (permalink / raw)
  To: guix-devel


zimoun <zimon.toutoune@gmail.com> writes:

> On Thu, 27 Feb 2020 at 19:43, Vincent Legoll <vincent.legoll@gmail.com> wrote:
>>
>> hello
>>
>> On Thu, Feb 27, 2020 at 7:20 PM zimoun <zimon.toutoune@gmail.com> wrote:
>> > Because other kernels are named: python-ipykernel or ruby-iruby.
>> > Another: python-pari-jupyter.
>> > And another other: jupyter-guile-kernel.
>> > Well, there is no real convention yet, if I understand correctly.
>> >
>> > A good move should to start a gnu/packages/jupyter.scm to put all the
>> > Jupyter related machinery inside... I do not know.
>>
>> Maybe we can help them show up properly in guix search results, like
>> adding what could be missing in description.
>
> Hum? I am not convinced that something is missing in the
> description... I mean "guix search jupyter kernel | less" does already
> the job, IMHO.
> What should be missing is some convention in the naming scheme; and it
> seems easier to force a convention when all the same related packages
> live in the same file.

The name r-irkernel follows the R package convention; a similar reason
applies to python-ipykernel and ruby-iruby.

-- 
Ricardo

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
  2020-02-27 19:38                                         ` Ricardo Wurmus
@ 2020-02-27 19:48                                           ` zimoun
  0 siblings, 0 replies; 35+ messages in thread
From: zimoun @ 2020-02-27 19:48 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: Guix Devel

On Thu, 27 Feb 2020 at 20:39, Ricardo Wurmus <rekado@elephly.net> wrote:
> zimoun <zimon.toutoune@gmail.com> writes:
> > On Thu, 27 Feb 2020 at 19:43, Vincent Legoll <vincent.legoll@gmail.com> wrote:
> >> On Thu, Feb 27, 2020 at 7:20 PM zimoun <zimon.toutoune@gmail.com> wrote:

> >> > Because other kernels are named: python-ipykernel or ruby-iruby.
> >> > Another: python-pari-jupyter.
> >> > And another other: jupyter-guile-kernel.
> >> > Well, there is no real convention yet, if I understand correctly.
> >> >
> >> > A good move should to start a gnu/packages/jupyter.scm to put all the
> >> > Jupyter related machinery inside... I do not know.
> >>
> >> Maybe we can help them show up properly in guix search results, like
> >> adding what could be missing in description.
> >
> > Hum? I am not convinced that something is missing in the
> > description... I mean "guix search jupyter kernel | less" does already
> > the job, IMHO.
> > What should be missing is some convention in the naming scheme; and it
> > seems easier to force a convention when all the same related packages
> > live in the same file.
>
> The name r-irkernel follows the R package convention; a similar reason
> applies to python-ipykernel and ruby-iruby.

Yes, I know. :-)
Well, "it seems easier to force a convention when all the same related
packages live in the same file" so the current convention is the
cran.scm, ruby.scm or python.scm one. And I was suggesting to move the
packages related to Jupyter to its own module using the convention
'jupyter-' convention, e.g., 'jupyter-irkernel'. And even a more
uniformized naming scheme between all the kernels. As I said, I do not
know if it is a good idea or not. :-)


Cheers,
simon

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2020-02-27 19:48 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-10  8:21 Towards reproducibly Jupyter notebooks with Guix-Jupyter Ludovic Courtès
2019-10-10  8:59 ` zimoun
2019-10-10 10:07   ` Ludovic Courtès
2019-10-10 11:02   ` Konrad Hinsen
2019-10-10 14:52     ` Ludovic Courtès
2019-10-14  6:35       ` Konrad Hinsen
2019-10-14  7:21         ` Ludovic Courtès
2019-10-14 11:45           ` Konrad Hinsen
2019-10-14 13:25             ` Ludovic Courtès
2019-10-21 12:50               ` Konrad Hinsen
2019-10-22 10:16                 ` Ludovic Courtès
2019-10-22 11:12                   ` Konrad Hinsen
2019-10-24 10:26                     ` Ludovic Courtès
2019-10-25  9:21                       ` Konrad Hinsen
2019-10-29 14:16                         ` Konrad Hinsen
2019-10-29 15:00                           ` Pierre Neidhardt
2020-02-27 14:25                             ` Pjotr Prins
2020-02-27 14:36                               ` zimoun
2020-02-27 18:11                                 ` Pjotr Prins
2020-02-27 18:20                                   ` zimoun
2020-02-27 18:43                                     ` Vincent Legoll
2020-02-27 18:49                                       ` zimoun
2020-02-27 19:38                                         ` Ricardo Wurmus
2020-02-27 19:48                                           ` zimoun
2019-10-23  9:53                   ` Konrad Hinsen
2019-10-23 10:32                     ` zimoun
2019-10-23 12:15                       ` Konrad Hinsen
2019-10-23 16:49                         ` zimoun
2019-10-24  6:20                           ` Konrad Hinsen
2019-10-24 13:23                             ` Pierre Neidhardt
2019-10-25 14:29                               ` Konrad Hinsen
2019-10-25 14:40                                 ` Pierre Neidhardt
2019-10-10 10:19 ` Roel Janssen
2019-10-10 11:59   ` Ludovic Courtès
2019-10-10 14:57   ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).