From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:403:478a::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id 6EzpJ9FwxWRCeQAASxT56A (envelope-from ) for ; Sat, 29 Jul 2023 22:04:33 +0200 Received: from aspmx1.migadu.com ([2001:41d0:403:478a::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id +FzYJ9FwxWQo/QAA9RJhRA (envelope-from ) for ; Sat, 29 Jul 2023 22:04:33 +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 109C55CFA3 for ; Sat, 29 Jul 2023 22:04:32 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=PKTeDYbu; 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"; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1690661073; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=4mrBl8dE2ZsQCFnQKu7MRH28QQ1lFGbDcfEryieYL9I=; b=UFyxaGLPCRayyfS+UbELwlVQmbSm9gFusCRM+Em9EJEIEpKpHoNH45zIlQ4u3+xnZmDzi7 E3plSuY497QAAFN/lxtjKFV86WOoUZrXY8x/ChO6B3QfrAavIzD4bevAtsVNRx6RnW0V3H U9XrVrT8k1YEQTAmGoWfL/EzTvUw+oPFiA2D7efIAMb6EB5uz3ZP132j53yhqzJiYcyLTO a4TbFL2pnwZoiQTifpLT0kjSKH/Py/G4haim4EPyIgagpKkh7x1aHaIvsgftJBSvv+sIiX rxW6me7zk/NnH1ht9VgzylxjULCBhtRyC82eaf+hAUkCySp1rJYG/dBvGKjRZQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=PKTeDYbu; 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"; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1690661073; a=rsa-sha256; cv=none; b=L37P3faYUV9CzzPz8mhK4A4IRxj1WysFY94XICrla28cka0mUN4ajzJJ1KlpbM3Jq69FfT MXvslJ54V0LnhzyBUmMLMI3iTR31/AnXY09Ct4D5pmmnNZMyZ4sN2UskLWnu/Fm7JnwAwk xVc/Ni+53N+BvLAmlQMkpGexcdwyVAfIPLEMTEhsKuH94rYuk1M4q4FFf/E/zaN0Epa4Ri 0fMunr5GSOP2EAgyfuf/V0/sFN/vmbNhT8U8fAoTXQG4+f8oAIbjSY2+tsCAupYBSvSdrC lzQICNIZ0VerT5NazsDwhTrNI6IDXp51RBrMjvAnnpfl8wElQVOCl28Dde3K8Q== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qPpvq-0005QN-Rs; Sat, 29 Jul 2023 15:48:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qPpvp-0005QE-3C for guix-devel@gnu.org; Sat, 29 Jul 2023 15:48:53 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qPpvn-0003iC-3U for guix-devel@gnu.org; Sat, 29 Jul 2023 15:48:52 -0400 Received: by mail-wr1-x443.google.com with SMTP id ffacd0b85a97d-3172144c084so3401058f8f.1 for ; Sat, 29 Jul 2023 12:48:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690660128; x=1691264928; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=4mrBl8dE2ZsQCFnQKu7MRH28QQ1lFGbDcfEryieYL9I=; b=PKTeDYbu00t/0UNebyt3szRvDTLHRwbVcLWLf6Vx6Mjuq24UWIqnOnHkFA+gRSdZ2c VR2mcOSys8PL+ml79y2xXHRiUT+c0iGTZHFF7covsLbU1e8h9c2xGXjjsYjZURxyexWp OBz2lkA8975KHhV2eR2gQ6KmaSBWndTBQwomtDVA/Lpnw1YphXgIaPg7f7+RJTdcwWYe 9MQUVj+uqJE/1Z7XARCHB7wXv4a9icJlMqMCJKRZYaxAOl1k/kn4pIiwcFFYKXPXRPfj KwP4UEaVHHzYUdPCJOw7Wgfa70w+8IZ9+40t3+TIooN054XIrHl1W9jJU1sIBCAGRVMo +MIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690660128; x=1691264928; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4mrBl8dE2ZsQCFnQKu7MRH28QQ1lFGbDcfEryieYL9I=; b=IOs9nzYgot52r0gvSLhluQvKKw7bvcJ79MP/5dzJjPpJX6IR5MHFoQZdmdRI/XsCCz iuKc0U0ZYjl0PPFLyWwiUw3rsWq+qMttOtL7foneWmNGmbfqsyfpLBlvAdxNdxXcuTki lhRz6v+Tg1OV9rJejCkeWXaJNanRHrrUIWlpZNANRdq5e8h0nyaJ6cvS1spt/jSZwCQ0 E/k1V5e0i/szNFPbG04/bn6VQmCqSHkVaSCQnLk8ghoGOtWLGMghJRaJnpCU9fw+joOj Gp6daTxhO00mWLMgVv4gsQlCCFPCjgUovOGS32GMA6XaRPA7hHtuQcnbZiS8n5eJQzxH xejA== X-Gm-Message-State: ABy/qLaH7lgcjLhAfTCMpwIS+LJ0uNb7kqdhnv3IgfAKAfnKr4hjWXJH muqIoJYnhdAMQtEFe3bQTTk= X-Google-Smtp-Source: APBJJlFvudNKjlCuJuNR9zwizauB2lQpVt2XsaqqIgz0p9Dpd1VMmxBR6MG9fups/9IjlcsyLhFUrg== X-Received: by 2002:adf:f710:0:b0:316:efb9:101d with SMTP id r16-20020adff710000000b00316efb9101dmr5042768wrp.25.1690660128370; Sat, 29 Jul 2023 12:48:48 -0700 (PDT) Received: from lumine.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id i14-20020a056402054e00b005219de74217sm3324342edx.43.2023.07.29.12.48.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Jul 2023 12:48:47 -0700 (PDT) Message-ID: Subject: Re: Guix and the developer ecosystem From: Liliana Marie Prikler To: Distopico , guix-devel@gnu.org Date: Sat, 29 Jul 2023 21:48:46 +0200 In-Reply-To: <875y662lmg.fsf@riseup.net> References: <875y662lmg.fsf@riseup.net> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.46.4 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::443; envelope-from=liliana.prikler@gmail.com; helo=mail-wr1-x443.google.com 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, RCVD_IN_DNSWL_NONE=-0.0001, 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-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Spam-Score: -5.02 X-Migadu-Queue-Id: 109C55CFA3 X-Migadu-Spam-Score: -5.02 X-Migadu-Scanner: mx0.migadu.com X-TUID: QRvs4OrB7yhR Hi Distopico Am Mittwoch, dem 26.07.2023 um 19:29 -0500 schrieb Distopico: >=20 > Hi, I'm quite new in Guix, I have been using it for 6 months now and > I love it, but for development I have not been able to use it as much > as I would like. "Development" is a loaded term that is understood differently by different groups of people. I personally write software in dialects of C and Lisp (yes, even Java if I must), sometimes Python, and most of the time Guix at the very least suffices for doing so, if it doesn't excel. Obviously, the holy grail here is a reasonable build system based on GNU tools, CMake or Meson, that "modern programming languages" often don't want to employ. > The current programming languages are made up of three [or four] > parts: >=20 > 1. The languages itself > 2. Language-server > 3. The language packages > 4. Language tools (formatter, linter) >=20 > It is possible to development without a language server, but many > projects now require special formatting or running linter tools, > etc. These are things that are somewhat basic in a certain way. But as with all necessities, just because they're "basic" doesn't mean that they're also available to the masses. There are several programming languages, where even getting to a compiler is impossible, let alone the other three items on your list. See [1] on why that's a bad idea. > In terms of programming languages, I have found almost all the ones I > needed, with the exception of Kotlin. [2] > Regarding language servers, most of the ones I needed either haven't > worked for me or don't exist. For example, Rust, Haskell, and Elm > have few tools available I wonder what all of those have in common. =F0=9F=A4=94=EF=B8=8F > [E]ven though I mainly program in Rust and Haskell, and lately, I've > been getting into Guile, I also have old projects in Kotlin, for > instance, or sometimes I like try other languages when `guix shell` > is awesome. >=20 > So, sometimes I wish to do... >=20 > ``` > guix shell ghc haskell-language-server hlint > ``` >=20 > In that case, the language server isn't available. Another example: I mean, you could try packaging it, assuming it has a reasonable dependency graph. Okay, you can stop laughing now. > ``` > guix shell rust@1.67.1=C2=A0rust-analizer rust-clippy > ``` >=20 > In that case, rust-analyzer won't be compatible with that version of > Rust, and the version of rust-analyzer is broken (I sent a patch > fixing it). --with-input to the rescue. > In some languages like Haskell and GoLang, the language server > depends a lot on the version it was compiled with. For example, I > tried gopls, which is available in Guix, but it was built with Go 17 > and is not compatible it. --with-input? > So, in many cases, I haven't been able to fully integrate Guix into > my development workflow. I had to look for alternative ways outside > Guix, like Nix. I mean, with ecosystems that insist on using their tools for packaging and nothing else, even just having it in Nix is already a step up. But at the same time Nix cuts corners that Guix cutsn't, and I'm pretty sure that these tools fall right into that category. > I appreciate the simplicity of Guix, but let's say that Nix has a > developer-oriented approach and has become very popular among > programmers. Many projects now include default configurations for Nix > in their repositories. Certainly, Nix enjoys clout, but there's nothing to stop you from committing a guix.scm to your favourite project. Case in point, I recently contributed to one such project on Github (via mail to the devs, of course). > Another issue is that if I wanted to bring Guix into the development > workflow in a team, there would be the limitation of the OS. While I > promote free software in working groups, not everyone uses the same > OS - some use GNU/Linux, some use Mac, etc. I think this is also part > of the reason why Nix has succeeded in development environments. If you have the metal to spare, why not help us ingest some Asahi Linux patches? > All this text is provided some context for two simple questions: >=20 > 1. Are there plans in the future to improve integration between > development tools? For example, having haskell-language-server for > ghc@9.x=C2=A0and another one for ghc@8.x, or something similar to the > overwrite feature in Nix flake? You mean other than --with-input? Well, you can pray for the upcoming USE flag light parameterized packages to become just that, though I personally hope they don't, as there are more interesting applications. > 2. Do you see developers as a potential target audience for Guix, or > is it mainly focused on HPC (High-Performance Computing)? Well, the "developers" Guix sees as target audience typically refer to themselves as hackers and don't think of themselves as an elite that ought to be given exclusive access to their tools, but rather as a vanguard party that wishes to make them available to all. High performance computing is one application in which Guix makes a lot of sense, but there are others ranging from academic over less academic to everyday computing, games, and even running stress on your CPU, GPU, and what other PUs you can nowadays put into hardware to make number go up while the world is literally on fire. > I have started contributing to packages that I believe could be > useful, and I like to contributing to teams such as Haskell or Rust. > However, there are other topics, such as compiler and tools > compatibility, where I'm not entirely clear about the direction that > has been planned. There is only one direction, and that is forward. Cheers [1] https://bootstrappable.org/ [2] https://bootstrappable.org/projects/java-tools.html