unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: jgart <jgart@dismail.de>
To: Maxime Devos <maximedevos@telenet.be>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: developing javascript with guix
Date: Wed, 27 Jul 2022 17:25:17 -0500	[thread overview]
Message-ID: <20220727172517.GB4874@gac> (raw)
In-Reply-To: <8a535734-0a7d-9276-8091-4c4312abe8a3@telenet.be>

On Wed, 27 Jul 2022 11:33:43 +0200 Maxime Devos <maximedevos@telenet.be> wrote:

Hi Maxime,

Hope all is well.

> Let's try not doing anything special:

Thanks for the repl example and for trying out a Guix developer js
workflow for me. Do you happen to know if the same approach works
for erlang?

I think we should have language developer documentation for
general orientation of new Guix users. Ryan Prior, another Guix
contributor/developer has mentioned this idea to me before.

How are users supposed to know to run node and node-mersenne?:

> $ guix shell node-mersenne node
> $ node
>  > mersenne = require('mersenne')

A new js developer Guixer will be frustrated if they have to learn this
through trial and error or by hanging out in the irc channel long enough
to find out that insight on how to do this.

Also, not every js developer will run code from a repl in their usual
workflow. So, I think we should see what the js community does as common
practices for loading js libraries and see if Guix could support that
since this will be too disruptive for a js developer to adopt Guix if
the workflow is radically different or completely undocumented. We should
document and show them what to expect when using Guix with js libraries.

> doing that is considered a good thing, it seems to me that it should 
> then also be done for Guile, Python, C/C++/etc, Minetest, Vim, ...

I completely agree that it should be done for all of our supported
language ecosystems.

To give an example from Common Lisp,

The common lisp community mostly uses quicklisp if they are not using
roswell.

Since Guix is a replacement for quicklisp, it asks users to understand
how to load libraries via asdf which is a low level detail for most common
lispers using quicklisp. I know this from my personal experiences. Phoe,
a prominent lisper in the community, for example, uses quicklisp mostly,
and does not usally load libraries from the asdf API in his workflow. The
same can be said for other prominent lispers I've conversed with.

If we are asking CL users to use asdf, which is not the most common way to
load libraries in the CL community then we should document in the CL Guix
documentation section how lispers should load CL code when using Guix.

I realize that we may not know the right approach yet because very few
common lispers use Guix.

The other thing regarding CL that should be mentioned is the fact that
you can not load lisp libraries dynamically in the repl or editor buffer
without restarting the shell environment. This is a common expectation
in the CL community and we should atleast make a note that they will
not be able to do that dynamicaly in a repl when using Guix currently.
If we do not want to support that because of our thesis or commitments
or some other reason then we should document it for CL users.

I think there are some efforts by charje to implement this but I'd have
to dig it up from the mailing list archives. I can link that if anyone
is interested.

> (*) E.g., when looking for the 'require' function, there was initially 
> some slight confusion with 'require' accepting relative and absolute 
> file names so I was fearing it might need to be passed 
> $GUIX_ENVIRONMENT/lib/node_modules, but this turned out to be unfounded.

Does this happen consistently/successfully across all languages supported by Guix?

Sorry for my long rant above. I just want to make sure I document my
experiences with these language ecoystems and their interaction with Guix
tooling so that we can see where we can improve regarding documentation,
user interface, as well as improving the Guixer's developer experience.

all best,

jgart

https://whereis.みんな/

https://phoe.github.io/
https://github.com/charje/


  reply	other threads:[~2022-07-27 22:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27  0:25 developing javascript with guix jgart
2022-07-27  9:33 ` Maxime Devos
2022-07-27 22:25   ` jgart [this message]
2022-07-27 23:15     ` Ryan Prior
2022-07-30 13:40       ` Luis Felipe
2022-07-30 16:04         ` bokr
2022-08-03 14:26         ` david larsson
2022-07-30 19:36       ` Maxime Devos
2022-07-30 19:44       ` Maxime Devos
2022-07-30 19:50       ` Maxime Devos
2022-07-30 20:22       ` Maxime Devos
2022-08-03 13:18       ` Giovanni Biscuolo
2022-07-30 19:35     ` Maxime Devos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220727172517.GB4874@gac \
    --to=jgart@dismail.de \
    --cc=guix-devel@gnu.org \
    --cc=maximedevos@telenet.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).