From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id IJLKFCA15WJ3IAAAbAwnHQ (envelope-from ) for ; Sat, 30 Jul 2022 15:41:52 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id kC27EyA15WKA0AAAG6o9tA (envelope-from ) for ; Sat, 30 Jul 2022 15:41:52 +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 F17932F1D0 for ; Sat, 30 Jul 2022 15:41:51 +0200 (CEST) Received: from localhost ([::1]:56364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oHmj0-00070l-Sl for larch@yhetil.org; Sat, 30 Jul 2022 09:41:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40246) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oHmiG-00070D-42 for guix-devel@gnu.org; Sat, 30 Jul 2022 09:41:04 -0400 Received: from mail-40137.protonmail.ch ([185.70.40.137]:37112) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oHmiC-00068K-Cb for guix-devel@gnu.org; Sat, 30 Jul 2022 09:41:03 -0400 Date: Sat, 30 Jul 2022 13:40:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1659188456; x=1659447656; bh=8PcBPz/tO8q+mpZO46c0LF5EZM6NNryORRUlBC37opY=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To: References:Feedback-ID:From:To:Cc:Date:Subject:Reply-To: Feedback-ID:Message-ID; b=LLalHOGEPoPF+CZJ3X0Jx+VypTGlnbFIa4wymTy2q9kWiOYYFcCrmSa+A1hBgM2Rh lT7xSMKVzTd/q2AFseDQoZ8WyjqP367a2I8/AU6b4icR7DEBcDss89QU+128FSf5zz nAPyyXlrTaM4Ihw0QWB/7aSuN+kXXnm1PZ/ktzZ9whTshhM673cE21W/ikiXoTlqs5 CSXuZXbaL08EK90Sem/za2XLtsP8Lqfa/KDmownGyBexqydnFUCtxLS/aR24uMKKAd uS6p3Xx5Q/1fd3dPf+MWp2sD1/FsnfO4juLU+TyRc7hcId5fkz0vvN09fib2belfEu bhI+x/12BT1bw== To: Ryan Prior From: Luis Felipe Cc: jgart , Maxime Devos , Guix Devel Subject: Re: developing javascript with guix Message-ID: In-Reply-To: <7K0vjV4NvEKb0D-wEmmFrZrnJIJRCzAAPhxOe0b4qRqr10cYam8bO2M2mgiQcBD5tO08B7NqFBo_xn-LCDzg-sS_VKdzVhm4_cwpceZyi60=@protonmail.com> References: <20220726192504.GB7293@gac> <8a535734-0a7d-9276-8091-4c4312abe8a3@telenet.be> <20220727172517.GB4874@gac> <7K0vjV4NvEKb0D-wEmmFrZrnJIJRCzAAPhxOe0b4qRqr10cYam8bO2M2mgiQcBD5tO08B7NqFBo_xn-LCDzg-sS_VKdzVhm4_cwpceZyi60=@protonmail.com> Feedback-ID: 24022468:user:proton MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="------61588c1147e88bf687c9c62e45fd37ddc67ca58642e9900031d19fbdb071c46a"; charset=utf-8 Received-SPF: pass client-ip=185.70.40.137; envelope-from=luis.felipe.la@protonmail.com; helo=mail-40137.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-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: , Reply-To: Luis Felipe 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=1659188512; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=8PcBPz/tO8q+mpZO46c0LF5EZM6NNryORRUlBC37opY=; b=L9T+nO9GDB7wKMhHk4dnogBwnt5QlfIGsTYs76qJDU0Wcs6skWQRgiU0v8GH9c4uhDUq9i IPSyns09kZI3duSNIQWBKVjVUOGBu23MMfYZ6Ng7v/q2myPNRzDDQzbTfI7reFqMGY4vWT 1CvI5yZkWCo++hBLLFZgw8eVsZS5XZDiDjnPD2JHDEgPBAauOaWdm4s+TAhskpXAQhVHTj hqENWbUdhJ60OdCwMOAq6lun+tIuLnOqvcIPSSYNE/rrVN/+jV+CGnLP2lMyhKXBnVO4bw BalB0our2x/NFyOetPQglZ3M2CsI69cEr2qYAXBnNODzdnQtJbKXHH8Id1MlZA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1659188512; a=rsa-sha256; cv=none; b=FFubtacUsrJs6Ut+OwIaCAFqXLDEj30F11Bg4Ypy7G0J2zb7LEtwF0Q6fAt25Byj9t154J +eV1rRCOmKRWg7FBiN9tRo6oAnp6VTZBfuvJO2sis9mI2XABoOYzcTXB/leXyrGWw8aQVO e1R4CjUS9Em5M/W+BId8HQ6QExoiZ6CghjCz5M8sOgnQHqWSGg8FwqVs90giVBX9uubrqb TtMWVzNQukAnvBHpYivyV74vZK/2LZQN6iyhGiwMVdbTNqK/eBgq8kPnC7luTUxu/MeOZQ VsrGQCdb24e21NzagY51aOvFW1/UNIF/N5qWPnp0qDyNqs7p/BVjUCoLpZ5XAg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=protonmail.com header.s=protonmail3 header.b=LLalHOGE; dmarc=pass (policy=quarantine) header.from=protonmail.com; 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: -7.23 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=protonmail.com header.s=protonmail3 header.b=LLalHOGE; dmarc=pass (policy=quarantine) header.from=protonmail.com; 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: F17932F1D0 X-Spam-Score: -7.23 X-Migadu-Scanner: scn0.migadu.com X-TUID: pF7AO4TDj+36 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------61588c1147e88bf687c9c62e45fd37ddc67ca58642e9900031d19fbdb071c46a Content-Type: multipart/mixed;boundary=---------------------0adc2fa7a4a9a46824a126986c2bfa9c -----------------------0adc2fa7a4a9a46824a126986c2bfa9c Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 Hello, On Wednesday, July 27th, 2022 at 23:15, Ryan Prior = wrote: > On Wednesday, July 27th, 2022 at 10:25 PM, jgart jgart@dismail.de wrote: > = > > 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. > = > = > Hey Guix! Since I'm mentioned here, I'll throw in a couple ideas. > = > First, an issue about unexpected behavior. I tried running this: > = > guix shell node-sqlite3 -- node <<<"console.log(require('sqlite3'))" > = > It gave me an error saying it couldn't find the module sqlite3. Turns ou= t it's because I was using node from my base profile and not from the shel= l. Running the shell with `--pure` makes it give a more helpful error, "no= de: command not found." > = > Why isn't node a dependency for node-mersenne though? Is there really a = use case for shipping the source code of a JavaScript library without the = interpreter? At a minimum, can we make `guix shell` warn on stderr if you = create a shell with one or more libraries but no interpreter? > = > Second, a point about documentation. It's pretty obvious to most of us h= ow to use JavaScript libraries (or Python, etc) with Guix, modulo small is= sues like the above. But Guix has two weaknesses here in comparison to oth= er language-specific package managers: > = > ## Explanation in context > = > The language-specific package managers generally don't take for granted = that people know anything about the language, because they're designed to = be accessible to learners of the language. For example, PyPI's explanation= for pip starts with the basic "can you even run Python?" and goes through= a bunch of Python-specific package workflows: https://packaging.python.or= g/en/latest/tutorials/installing-packages/ > = > We could write a guide like that with information and example commands s= pecific to Python packaging, and another for JavaScript, etc. These provid= e explanation in context so beginners and people who are confused for what= ever reason can see concrete examples of what you're supposed to do. > = > ## Specificity implies belonging > = > A Python-specific package manager is full of references to Python, libra= ries for Python, tools for Python programmers. If you're doing Python, the= PyPI shouts loud and clear: "you are in the right place!" > = > Likewise for JavaScript and npm, Ruby and gems, etc. Landing on the page= s for any of those package managers confirms that you are in a place where= you will find information and tools that will help you with your language= and package commons of choice. When you do a search for "MySQL" on PyPI, = you only see Python MySQL packages, not random other stuff. The interface = and search quickly confirm that you have found the right place with the ri= ght stuff for you. > = > Meanwhile, in the Guix docs, everything is abstract. We don't name any s= pecific library commons or restrict package search to any specific namespa= ce, we don't even have tags or categories for them. There is no link to Gu= ix documentation I can give to a Python hacker that assures them, in the w= ay PyPI's website does, that Guix has the stuff they need and they can fin= d it and make it work. So Guix requires more faith and experimentation fro= m users, which means a lot of people will just bounce off it. > = > I talk to somebody about once a week who says "oh I've heard of Guix and= keep meaning to try it." The project has built up a lot of indistinct goo= d faith that it has yet to make good on, so to speak. I think we can make = a much better experience for users from the various language library commo= ns if we build language-specific landing pages with instructions, document= ation, and package search that affirm they are in the right place and will= find the right stuff, and don't make much assumption that the person know= s what they are doing. I agree. = Using the original design of Guix website, this information could be acces= sible from "Home page =E2=86=92 Guix in Your Field =E2=86=92 Software deve= lopement". Clicking on that button would take the user to a Software Devel= opment page, which would link to language specific information to integrat= e Guix in one's workflow. So there would be URLs like these: https://guix.gnu.org/en/software-development/ https://guix.gnu.org/en/software-development/javascript/ https://guix.gnu.org/en/software-development/python/ https://guix.gnu.org/en/software-development/ruby/ The "Guix in Your Field" idea seems kind of forsaken, but I think it is qu= ite important. > I'll pitch in on this effort! I have experience with Ruby, JavaScript an= d Python packaging and tooling and am to help build out all those areas. O= ur emerging teams can help lend some structure to this effort too, I imagi= ne. I'd say, pick one language and start :) -----------------------0adc2fa7a4a9a46824a126986c2bfa9c Content-Type: application/pgp-keys; filename="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc"; name="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc"; name="publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBPcGVuUEdQLmpz IHY0LjEwLjEwDQpDb21tZW50OiBodHRwczovL29wZW5wZ3Bqcy5vcmcNCg0KeHNCTkJGOFpwVWdC Q0FETGpoMnVtMkpkbDlCUUtrZ01TZ25ISitzSGg3S3ovdlA5c3dxN0hZTEVuRmc2DQpIQjRLa3Vv V0lxTXlFSnJOYzRrNVJQSGJ4azlxQTB6a0Exd0E4eHYzakErMlVsaVFra1pSMCs0cjlLK3gNCmZZ RGx4ZHd2Sk1VRVJaUk5kb3QvZnFCaGtTYmhpVElTU3pvRUs2ZjNreHdiN3NyME9jSkx2aU5wQ0tv aw0KWVo1Rnc0UXp3Q0Y5V1hja0VmOXNFeGNGYzZDTkdLL0pCVlZaZlZocVZNa3hqUU42YnF1WW56 a3E4WVNoDQo5Z1lTOVgxdmxiZFJBeWVLUmFxNHVqSXV0aVM2djAybDRSRTZ1RjVqaXI4eC9UeDc3 NEZualBCNmdDdWwNCk5TeDZCZmhVTndZeWJ5UFB4SVhYOUpPNHZrT3ZXNE9NZVdjcW1BK1VnQ3c5 Vmk5dnJDN3lISlRGQUJFQg0KQUFITlBXeDFhWE11Wm1Wc2FYQmxMbXhoUUhCeWIzUnZibTFoYVd3 dVkyOXRJRHhzZFdsekxtWmxiR2x3DQpaUzVzWVVCd2NtOTBiMjV0WVdsc0xtTnZiVDdDd0hZRUVB RUlBQ0FGQWw4WnBVZ0dDd2tIQ0FNQ0JCVUkNCkNnSUVGZ0lCQUFJWkFRSWJBd0llQVFBS0NSQTU0 TWRqZWpuR3FWVWFCLzk3UC9WSEtwK0FiRWJMemVkNg0KUEloSHI2NGQ4ek5PN21ibG5Gd056NDlo azdKbVJZTDV2UDJWL21DMDNXSUpmU2ppdllHU2lIbkxSZURFDQpubG1VQ01mM20rMU45OGVBaXFI TkVnNmVpaTMyYXFWUWJheHYveis1OVJHZUtIMkFsdGFkcHNUQWdLVXMNCjFrL2Z0ZEJXVlplYitC QXJHYWlsREU3OHVlYiszWE15Z3ZDV2oyMWZleS81VXZiakhxUjlMNEpZVGlTbQ0Kd1l6N0hmWm8r REU3WUlzY3ptVmVoOE0xVnpDbC8xaWFoazlVRUxqQVAvalArcnVNVDlxRVd1ajJRbGxBDQpNZVBH UnpRYnFpRGhWUzhMRmRqQkhOb0tMeHlobmJERUZqSEYvNHhOcThqbFFMZkdKWjVoS2V0dForYlUN ClNXYUVYRjNoano5V1dVOGE1Sy8yTS9Ib3pzQk5CRjhacFVnQkNBREtVblJJOXl6NFJ2TnV2U09J RmxKdg0Ka2ZvSGVaci9CTGNTR1ZjU0JreDVsc0tkVnpNeDkrVWFhZUtqV3BJTyt4ZkVOc3o3YitC Vm9CTDBXcnY5DQo0aGx3V21HNXEwQWRFeVUxL2ZRc1JSN201TzFlYTZVVDNmdVVnMVZzakZaK1Iz alN5bEF0eXpJWk0wTFUNCmJXNUY2NzNLNEF1U2NGcE44TkxHVGdScjBXUWwvQm5Id2gyWFExeHFo YzZHQk92d2l3VkJqYWY1MFNIRQ0KVGlVUHBlM0pqUXl5QlpwKzhGS20rc25ScUNHWG4wSkc4bzBG WHk5V2N4dHZmUUZNTUpwOUJPMnl0Z3hIDQp6UUlwWWNKcEpadWNjbkZvcXFIOWorMXFYWE5TYTMv cU8zenU5bFN2WFR4eDZrZGgwRldUbllDeDhNZjgNCkJZL1BXL2JCT095aExDb1RrSHFsQUJFQkFB SEN3RjhFR0FFSUFBa0ZBbDhacFVnQ0d3d0FDZ2tRT2VESA0KWTNvNXhxa2VLUWYrSk1sY2JSbHdl aC9GQTFudzh6RkN4YUY1OFBOREVPOGxIOTIveHR6bndHZEF1bHpUDQpoWjQwakdURWlweWdzbnFI VjdXSFVmNDRuZVhuMkExY3ZDWis3M0tjcGFRTmg5TXA4eVduR0taWVVHa0cNCjZPZjFoRVU3OTJY WkV4a3lBODJQZ0xCTlkrVnpOWFhLQ0g3Tlh4WlFRV1Y1blhjYlVGQ1p5Slp1ZFNnUQ0KeGsxOXNR ZjRzOXZKWDZQQzY4cXdpN2FKMTduVmZyYmNNYXlScG0yT0dKWGQrdDkxVi9Mbk5wQ1JndGwzDQpq TllzQ0JGS0RDMFl4ZEEvTkNkRWsxZ2Z1akZ6bDBiQnM3KzVKYmQzelJhRTVBZmRWUXRJbG1FWERr VzYNCjB1eUVpM050Y3E1b2RYQTFubFIrZTA0NEtGdmVaekZ1Tk5lVGdzekFCcjVIaVU3MC9FbHlz dz09DQo9ejZlNw0KLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ0K -----------------------0adc2fa7a4a9a46824a126986c2bfa9c-- --------61588c1147e88bf687c9c62e45fd37ddc67ca58642e9900031d19fbdb071c46a Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wsBzBAEBCAAGBQJi5TTOACEJEDngx2N6OcapFiEEEt4VmH0cRaQ093DvOeDH Y3o5xqmOLQf+Nd3gRXXcvpt2oy5tqgcTkhrRex21tE4iGBrX6EHYDw69AerJ 3nPISXVE80M2S/N6NgJkBUgLQcoGg+2f3A/xPLIgM/8g2cjhCyrzv5gRTXVO b2Ihz02eYotevf/s/Wf06NJDUpFceVs7lwnOprUFp0lSkfHuG6lKG2U7PAxF KHCUKD1e8rtJAH6MIYTKzyi2cCh8WCDJ1u5Xg8k/D2T9seX9qavcNfaBcFkA XPUsh7trqJtdZOXWis2fe4fJzdOD2hH90x7qTCc994mDlApRBwp5RbLlkrq6 z+W+3lXokfPTkHAl63690pkFDJ1w2tapwbw1/6QwpLkZtpcknuP+LA== =D9yf -----END PGP SIGNATURE----- --------61588c1147e88bf687c9c62e45fd37ddc67ca58642e9900031d19fbdb071c46a--