From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id BVj1Ol674WItQAEAbAwnHQ (envelope-from ) for ; Thu, 28 Jul 2022 00:25:35 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id oN3POV674WLqLAEA9RJhRA (envelope-from ) for ; Thu, 28 Jul 2022 00:25:34 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id C06A8548 for ; Thu, 28 Jul 2022 00:25:34 +0200 (CEST) Received: from localhost ([::1]:56670 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oGpTB-0008Hx-Qo for larch@yhetil.org; Wed, 27 Jul 2022 18:25:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59176) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oGpSu-0008Hl-Ee for guix-devel@gnu.org; Wed, 27 Jul 2022 18:25:17 -0400 Received: from mx1.dismail.de ([78.46.223.134]:26218) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oGpSs-0004Zk-01 for guix-devel@gnu.org; Wed, 27 Jul 2022 18:25:16 -0400 Received: from mx1.dismail.de (localhost [127.0.0.1]) by mx1.dismail.de (OpenSMTPD) with ESMTP id 4ed0d6db; Thu, 28 Jul 2022 00:25:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=dismail.de; h=date :message-id:from:to:cc:subject:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s= 20190914; bh=Dp/taieOsR7d16ltX9w/SF6CzwJkKOR+JeJjoJreb48=; b=n4/ aOS13TMsoeoNYGulRVXDrS9SUgRFsZ1SaAR/5aBEhYx/+e83Fmq8N8VcbXFKa7m6 gXqnrsXfmpjRyM9qylECqgWN9j0BwF/gm29fxtlkqQ0uFD62EFaa7PbBPU98elRV fdSo1Ot6kEDdrq+7V541WqLFRhqq1R9Ow0NoiXyPFna6zxa+j8D57LbA6T8v8n8G 0e+fgg2dL4y+rX8y8hXuB+qrD0DyTA8A/l6beQWFMZgqYexsHoyBgqDex1f3YokA C+JrKorAAAym9x7bCniksC7hmr4upjYWpTJKV9hSBkVIcNELT/NUxovE7qdUo8kz lnFFvQmaEaexDTZ2BAQ== Received: from smtp2.dismail.de ( [10.240.26.12]) by mx1.dismail.de (OpenSMTPD) with ESMTP id 1d431370; Thu, 28 Jul 2022 00:25:10 +0200 (CEST) Received: from smtp2.dismail.de (localhost [127.0.0.1]) by smtp2.dismail.de (OpenSMTPD) with ESMTP id 9b53302d; Thu, 28 Jul 2022 00:25:10 +0200 (CEST) Received: by dismail.de (OpenSMTPD) with ESMTPSA id 423cd937 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Thu, 28 Jul 2022 00:25:09 +0200 (CEST) Date: Wed, 27 Jul 2022 17:25:17 -0500 Message-ID: <20220727172517.GB4874@gac> From: jgart To: Maxime Devos Cc: Guix Devel Subject: Re: developing javascript with guix In-Reply-To: <8a535734-0a7d-9276-8091-4c4312abe8a3@telenet.be> References: <20220726192504.GB7293@gac> <8a535734-0a7d-9276-8091-4c4312abe8a3@telenet.be> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=78.46.223.134; envelope-from=jgart@dismail.de; helo=mx1.dismail.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1658960734; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=RwedXnN3unafwd18HcDrhpxMoHCz32VlMzKGKdMFIvU=; b=XqbibcoeOE+cNaMuMlYIxtHRek33kzzb2O4PqFMKnEdWfMxIx8q2NymyMTN53nAFbfds2x sdNhwKjMrhJqaIX3g4YCJWg2+uMPYt17qNJybeqaIN77Rmmx5Rgpz1+zYHxHGbUHXc5kgs eabPPSPZ0L+jARM28US5bAuJQ5tuyHfc+7pqAT71BjV7TZmOHffyFz9IS4oKdNUDEWoQfj 8VJcsRmMQ1HfYvFVypdZMfGjQByg2ZgxqPHEK/uVIGEhIN44K2lxWjbzXndQXOeeVC0o7/ y2dXzxW+4/jML675oTd4222FMsYIKWSK4gVV4rR2L1kkva/6R+zAORODdPG3dA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1658960734; a=rsa-sha256; cv=none; b=pIeSos1lCmou9j+oy02KIt9cPmXxr7G9WMEPlxlLIhAX/dxrr0wAV33m1C1bNVhklkL4UJ 2bVEPzGz80cF/ZAC+X7IznhX+u953ghdaKmdAxiqV+qUOmNIdwVED6s+X1wdJ84lrUhD4p 0qnVdP8BHOugoQupz+sYp0f614DJ+5PXDMA06+ycAZgBEk6zAuTc+e3Xj0mQQSSm8dJAfZ kG+6CJklH5/pcpTdEwTV/Kd1WwqVm9kfoskcJMyFFpkRsf+FDUm8haCRtXSJJ2J+8tHF/p DPf5hxrnSE1miVgAsRfIGiasMHhUdIX1zxYZvl2o/qn0vN/3f5rgKCaVJ6BhdA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b="n4/ aOS1"; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -6.73 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b="n4/ aOS1"; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: C06A8548 X-Spam-Score: -6.73 X-Migadu-Scanner: scn0.migadu.com X-TUID: E41o/WUWnc+D On Wed, 27 Jul 2022 11:33:43 +0200 Maxime Devos 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/