unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Guix and the developer ecosystem
@ 2023-07-27  0:29 Distopico
  2023-07-29 19:48 ` Liliana Marie Prikler
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Distopico @ 2023-07-27  0:29 UTC (permalink / raw)
  To: guix-devel


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.

The current programming languages are made up of three 4 parts:

1. The languages itself
2. Language-server
3. The language packages
4. Language tools (formatter, linter)

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.

In terms of programming languages, I have found almost all the ones I
needed, with the exception of Kotlin.

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, and even 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.

So, sometimes I wish to do...

```
guix shell ghc haskell-language-server hlint
```

In that case, the language server isn't available. Another example:

```
guix shell rust@1.67.1 rust-analizer rust-clippy
```

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).

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.

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 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.

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.

All this text is provided some context for two simple questions:

1. Are there plans in the future to improve integration between
development tools? For example, having haskell-language-server for
ghc@9.x and another one for ghc@8.x, or something similar to the
overwrite feature in Nix flake?

2. Do you see developers as a potential target audience for Guix, or is
it mainly focused on HPC (High-Performance Computing)?

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.

And apologies for the lengthy text.


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

* Re: Guix and the developer ecosystem
  2023-07-27  0:29 Guix and the developer ecosystem Distopico
@ 2023-07-29 19:48 ` Liliana Marie Prikler
  2023-08-05  1:11   ` Distopico
  2023-07-31  9:42 ` (
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 17+ messages in thread
From: Liliana Marie Prikler @ 2023-07-29 19:48 UTC (permalink / raw)
  To: Distopico, guix-devel

Hi Distopico

Am Mittwoch, dem 26.07.2023 um 19:29 -0500 schrieb Distopico:
> 
> 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:
> 
> 1. The languages itself
> 2. Language-server
> 3. The language packages
> 4. Language tools (formatter, linter)
> 
> 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.  🤔️

> [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.
> 
> So, sometimes I wish to do...
> 
> ```
> guix shell ghc haskell-language-server hlint
> ```
> 
> 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 rust-analizer rust-clippy
> ```
> 
> 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:
> 
> 1. Are there plans in the future to improve integration between
> development tools? For example, having haskell-language-server for
> ghc@9.x and 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


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

* Re: Guix and the developer ecosystem
  2023-07-27  0:29 Guix and the developer ecosystem Distopico
  2023-07-29 19:48 ` Liliana Marie Prikler
@ 2023-07-31  9:42 ` (
  2023-08-05  1:49   ` Distopico
  2023-07-31 18:55 ` Wilko Meyer
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 17+ messages in thread
From: ( @ 2023-07-31  9:42 UTC (permalink / raw)
  To: Distopico; +Cc: guix-devel

Hi,

Distopico <distopico@riseup.net> writes:
> In terms of programming languages, I have found almost all the ones I
> needed, with the exception of Kotlin.

The build sequence for Kotlin is some sort of hellish double
nightmare-loop of doooooooooooooom.  As far as I'm aware, this is how
the main dependencies of Kotlin relate to each other:

                     .---------------------.
                     |                     |
   .-------------> gradle ------.          V
   |                 ^          |        kotlin ------.
openjdk              '----------'        ^    ^       |
   |                                     |    '-------'
   '-------------------------------------'

Fun!

> 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.

Ah, that'll be because Guix uses Go 17 for building Go programs, unless
you override the ``#:go'' keyword, but the latest version of Go it
provides is Go 20.  I suppose it couldn't hurt to change it to be built
with the latest version.  (We can't just make the default build Go be
20, as that would require the CI to rebuild all Go packages.)

> All this text is provided some context for two simple questions:
>
> 1. Are there plans in the future to improve integration between
> development tools? For example, having haskell-language-server for
> ghc@9.x and another one for ghc@8.x, or something similar to the
> overwrite feature in Nix flake?
>
> is it mainly focused on HPC (High-Performance Computing)?

Definitely not :)

> 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.

The problem with Haskell, Rust, and Elm is mainly, as lilyp has
said/implied, that while the dependency trees of C applications and such
typically resemble the following:

        O <-- O
  O <-- O <-- O
        O <-- O

dependency trees for Rust, Haskell, and Elm look like this:

                        / O
                  / O <-- O
                  |     \ O
                  |
                  |     / O
            / O <-- O <-- O
            |     |     \ O
            |     |
            |     |     / O
            |     \ O <-- O
            |           \ O
            |
            |           / O
            |     / O <-- O
            |     |     \ O
            |     |
            |     |     / O
  O <-- O <-- O <-- O <-- O
            |     |     \ O
            |     |
            |     |     / O
            |     \ O <-- O
            |           \ O
            |
            |           / O
            |     / O <-- O
            |     |     \ O
            |     |
            |     |     / O
            \ O <-- O <-- O
                  |     \ O
                  |
                  |     / O
                  \ O <-- O
                        \ O

Except in reality it's much much much much much worse.

So it's not because that's not something we'd like to have, it's largely
because packaging such things is a royal pain and there aren't all that
many people with the motivation to do that.

> And apologies for the lengthy text.

It's okay, questions are good :)

  -- (


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

* Re: Guix and the developer ecosystem
  2023-07-27  0:29 Guix and the developer ecosystem Distopico
  2023-07-29 19:48 ` Liliana Marie Prikler
  2023-07-31  9:42 ` (
@ 2023-07-31 18:55 ` Wilko Meyer
  2023-08-05  1:40   ` Distopico
  2023-08-16 14:22 ` Ludovic Courtès
  2023-08-19  8:29 ` Simon Tournier
  4 siblings, 1 reply; 17+ messages in thread
From: Wilko Meyer @ 2023-07-31 18:55 UTC (permalink / raw)
  To: Distopico; +Cc: guix-devel


Hi,

Distopico <distopico@riseup.net> writes:

> 2. Do you see developers as a potential target audience for Guix, or is
> it mainly focused on HPC (High-Performance Computing)?

Developers is a pretty broad and generic term to start with. Considering
Guix is somewhat of a general purpose package manager/Guix System a
general purpose distribution, I think the better question to ask,
instead of asking for target audiences, is, how and in what way Guix
features and concepts can aid and help with hacking on software. HPC is
an area where Guix can be put to good use, but it's also a reasoanble
choice for other areas as well I'd argue.

IMHO Guix has plenty of useful features that, in my opinion, can be put
to good use in the process of developing software. I *mostly* work with
C and Rust, as well as Perl, and less frequently, Python and CommonLisp;
so my experience with Guix is mostly limited to these languages.

Using a guix.scm file for projects to provide a good way to spin up a
development environment fast/to onboard new people, and make use of guix
shell (mostly with --container) while working on software; are probably
my most used features in that regards.

Best Regards,

Wilko Meyer


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

* Re: Guix and the developer ecosystem
  2023-07-29 19:48 ` Liliana Marie Prikler
@ 2023-08-05  1:11   ` Distopico
  2023-08-05 17:29     ` Liliana Marie Prikler
  2023-08-08 16:59     ` Saku Laesvuori
  0 siblings, 2 replies; 17+ messages in thread
From: Distopico @ 2023-08-05  1:11 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: guix-devel

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


On 2023-07-29, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote:

> Hi Distopico
>
> Am Mittwoch, dem 26.07.2023 um 19:29 -0500 schrieb Distopico:
>> 
>> 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.
>

Hi, thank you for your response, well When I say "developer ecosystem,"
I'm referring to a significant variety of languages, whether new or not,
to meet the development needs in different languages compatible with
free-software software. Otherwise, it would be a development environment
limited to C, Python, and a few others, which should be clarified to
users to avoid creating false expectations. By "horizon" or the future
vision of the project, I mean the overall outlook concerning this aspect.

I can't say that Haskell falls under the category of "modern," but it
has been progressively "modernizing," adapting to the implications,
whether good or bad. Javascript is definitely not new, and TypeScript is
another example that is not new either.

>> The current programming languages are made up of three [or four]
>> parts:
>> 
>> 1. The languages itself
>> 2. Language-server
>> 3. The language packages
>> 4. Language tools (formatter, linter)
>> 
>> 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.
>

Does Guix have a plan to address this in the future or a workaround? I
believe that in the future, this issue will become even more common,
just as more languages have their own package managers, which are partly
responsible for this huge dependency tree.

>> In terms of programming languages, I have found almost all the ones I
>> needed, with the exception of Kotlin.
> [2]
>
Thank, good to known that, just curious why/how nix have it.

>> 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.  🤔️
>
>> [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.
>> 
>> So, sometimes I wish to do...
>> 
>> ```
>> guix shell ghc haskell-language-server hlint
>> ```
>> 
>> 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.
>

You are absolutely right. As I mentioned before, the ever-increasing
huge dependency tree is becoming more common in various programming
languages due to the convenience of package managers. It is essential to
have a plan on how to address these situations to ensure the long-term
sustainability and maintainability of projects. Without a plan, it might
be better not to embark on such a journey, as managing complex
dependency chains can lead to numerous challenges and issues in the
future. Projects like Guix need to actively consider strategies to
handle and mitigate these complexities effectively to ensure a smooth
and sustainable development process.

>> ```
>> guix shell rust@1.67.1 rust-analizer rust-clippy
>> ```
>> 
>> 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.
>

Nice, I'll try it, thank you

>> 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).
>

Well, what holds me back is that many dependencies are missing, such as
the basic ones I mentioned, making it impossible to use Guix in many
cases. Others have non-ideal solutions, like one suggested in Matrix:
`guix shell --container --emulate-fhs' + downloading the rustup script
and installing it just to use clippy (the Rust linter). So, it's not
feasible to include that in the project due to current limitations.

>> 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?
>

Well, I think is not a real solution, a lot of time the people with
those mac are from the companies and you are not able to change the OS,
or sometimes you work as a freelancer in a company and other people use
Mac and they don't wan to change just becase an contractor have the idea
of use Guix.

>> All this text is provided some context for two simple questions:
>> 
>> 1. Are there plans in the future to improve integration between
>> development tools? For example, having haskell-language-server for
>> ghc@9.x and 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.
>

Maybe this will be the solution:
https://blog.lispy.tech/parameterized-packages-the-second-update.html

>> 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.
>

Well, is someone want to hack with Rust/Haskell using Guix is not
possible, They may end up taking alternative paths like in my case, or a
mix of using Guix in some areas and not in others.

>> 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.
>

For sure, thank you.

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

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

* Re: Guix and the developer ecosystem
  2023-07-31 18:55 ` Wilko Meyer
@ 2023-08-05  1:40   ` Distopico
  0 siblings, 0 replies; 17+ messages in thread
From: Distopico @ 2023-08-05  1:40 UTC (permalink / raw)
  To: Wilko Meyer; +Cc: guix-devel

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


On 2023-07-31, Wilko Meyer <w@wmeyer.eu> wrote:

> Hi,
>
> Distopico <distopico@riseup.net> writes:
>
>> 2. Do you see developers as a potential target audience for Guix, or is
>> it mainly focused on HPC (High-Performance Computing)?
>
> Developers is a pretty broad and generic term to start with. Considering
> Guix is somewhat of a general purpose package manager/Guix System a
> general purpose distribution, I think the better question to ask,
> instead of asking for target audiences, is, how and in what way Guix
> features and concepts can aid and help with hacking on software. HPC is
> an area where Guix can be put to good use, but it's also a reasoanble
> choice for other areas as well I'd argue.
>
I believe one area for improvement is the possibility of having tools
and the compiler sharing common ground. For example, rust-1.6 with
rust-analyzer-1.6 with version 20220809 and rust-1.7 with
rust-analyzer-1.7 with version 20230911. In that case, similar to
rustup, we could do guix shell rust@1.6.8 rust-analyzer@20230911. In
Haskell, a similar issue occurs, where haskell-language-server, e.g.,
version 1.3, only works with specific GHC versions.

> IMHO Guix has plenty of useful features that, in my opinion, can be put
> to good use in the process of developing software. I *mostly* work with
> C and Rust, as well as Perl, and less frequently, Python and CommonLisp;
> so my experience with Guix is mostly limited to these languages.
>
How is your workflow with rust? I mean you use --container to just
download `rustup` and install it in the container?

> Using a guix.scm file for projects to provide a good way to spin up a
> development environment fast/to onboard new people, and make use of guix
> shell (mostly with --container) while working on software; are probably
> my most used features in that regards.
>

I do that as well, but in mostly of the cases just for me because other
team member can use it due is Gnu/Linux only, could be good have
something like emacs cross-platform.

> Best Regards,
>

Thank you for the reponse.

> Wilko Meyer


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

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

* Re: Guix and the developer ecosystem
  2023-07-31  9:42 ` (
@ 2023-08-05  1:49   ` Distopico
  2023-08-05  6:10     ` Julien Lepiller
  0 siblings, 1 reply; 17+ messages in thread
From: Distopico @ 2023-08-05  1:49 UTC (permalink / raw)
  To: (; +Cc: guix-devel

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


On 2023-07-31, "(" <paren@disroot.org> wrote:

> Hi,
>
> Distopico <distopico@riseup.net> writes:
>> In terms of programming languages, I have found almost all the ones I
>> needed, with the exception of Kotlin.
>
> The build sequence for Kotlin is some sort of hellish double
> nightmare-loop of doooooooooooooom.  As far as I'm aware, this is how
> the main dependencies of Kotlin relate to each other:
>
>                      .---------------------.
>                      |                     |
>    .-------------> gradle ------.          V
>    |                 ^          |        kotlin ------.
> openjdk              '----------'        ^    ^       |
>    |                                     |    '-------'
>    '-------------------------------------'
>
> Fun!
>

Nice graphs, sound pretty complicate to solve that  :/

>> 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.
>
> Ah, that'll be because Guix uses Go 17 for building Go programs, unless
> you override the ``#:go'' keyword, but the latest version of Go it
> provides is Go 20.  I suppose it couldn't hurt to change it to be built
> with the latest version.  (We can't just make the default build Go be
> 20, as that would require the CI to rebuild all Go packages.)
>

And that can be another problem, or it is indeed a real problem, going
to a project that uses Go 1.7, but all the tools are built around Go
1.20. That's why I imagine something like having tools relative to their
versions, so we can install gopls@0.11 and go@1.17 together because they
are compatible. And if I switch to another project, I could install
Go@1.15 and gopls@0.9.5. Currently, that is not possible, at least I
haven't seen it in Go/Rust/Haskell in Guix.

>> 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.
>
> The problem with Haskell, Rust, and Elm is mainly, as lilyp has
> said/implied, that while the dependency trees of C applications and such
> typically resemble the following:
>
>         O <-- O
>   O <-- O <-- O
>         O <-- O
>
> dependency trees for Rust, Haskell, and Elm look like this:
>
>                         / O
>                   / O <-- O
>                   |     \ O
>                   |
>                   |     / O
>             / O <-- O <-- O
>             |     |     \ O
>             |     |
>             |     |     / O
>             |     \ O <-- O
>             |           \ O
>             |
>             |           / O
>             |     / O <-- O
>             |     |     \ O
>             |     |
>             |     |     / O
>   O <-- O <-- O <-- O <-- O
>             |     |     \ O
>             |     |
>             |     |     / O
>             |     \ O <-- O
>             |           \ O
>             |
>             |           / O
>             |     / O <-- O
>             |     |     \ O
>             |     |
>             |     |     / O
>             \ O <-- O <-- O
>                   |     \ O
>                   |
>                   |     / O
>                   \ O <-- O
>                         \ O
>
> Except in reality it's much much much much much worse.
>
> So it's not because that's not something we'd like to have, it's largely
> because packaging such things is a royal pain and there aren't all that
> many people with the motivation to do that.
>


And this is the current reality, and it will become more and more
common, whether for better or for worse. Package managers make it so
convenient to install dependencies, but it leads to an abuse in that
regard. I could name many of the most widely used programming languages
today that have the same problem: JavaScript, Python, Haskell, Rust,
just to name a few. So, here is my question: Is there a future vision
for this situation? Because it will become more and more common over
time.

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

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

* Re: Guix and the developer ecosystem
  2023-08-05  1:49   ` Distopico
@ 2023-08-05  6:10     ` Julien Lepiller
  0 siblings, 0 replies; 17+ messages in thread
From: Julien Lepiller @ 2023-08-05  6:10 UTC (permalink / raw)
  To: guix-devel, Distopico, (



Le 5 août 2023 03:49:30 GMT+02:00, Distopico <distopico@riseup.net> a écrit :
>
>On 2023-07-31, "(" <paren@disroot.org> wrote:
>
>> Hi,
>>
>> Distopico <distopico@riseup.net> writes:
>>> In terms of programming languages, I have found almost all the ones I
>>> needed, with the exception of Kotlin.
>>
>> The build sequence for Kotlin is some sort of hellish double
>> nightmare-loop of doooooooooooooom.  As far as I'm aware, this is how
>> the main dependencies of Kotlin relate to each other:
>>
>>                      .---------------------.
>>                      |                     |
>>    .-------------> gradle ------.          V
>>    |                 ^          |        kotlin ------.
>> openjdk              '----------'        ^    ^       |
>>    |                                     |    '-------'
>>    '-------------------------------------'
>>
>> Fun!
>>
>
>Nice graphs, sound pretty complicate to solve that  :/

There's hope, because you can skip building gradle, and manually build kotlin. So you end up with a chain of kotlin versions. I actually managed to build some, but I'm stuck after 1.0.0:

https://framagit.org/tyreunom/guix-android/-/blob/master/android/packages/kotlin.scm

That's already a huge chain, and it's probably missing ten times more…

>
>>> 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.
>>
>> Ah, that'll be because Guix uses Go 17 for building Go programs, unless
>> you override the ``#:go'' keyword, but the latest version of Go it
>> provides is Go 20.  I suppose it couldn't hurt to change it to be built
>> with the latest version.  (We can't just make the default build Go be
>> 20, as that would require the CI to rebuild all Go packages.)
>>
>
>And that can be another problem, or it is indeed a real problem, going
>to a project that uses Go 1.7, but all the tools are built around Go
>1.20. That's why I imagine something like having tools relative to their
>versions, so we can install gopls@0.11 and go@1.17 together because they
>are compatible. And if I switch to another project, I could install
>Go@1.15 and gopls@0.9.5. Currently, that is not possible, at least I
>haven't seen it in Go/Rust/Haskell in Guix.

There's always the time-machine or inferiors. If it worked at some point in Guix, you can go back in time and get those packages. Not ideal since they'll depend on older software, but at least, if it worked in the past, it's guaranteed to continue to work today.

>
>>> 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.
>>
>> The problem with Haskell, Rust, and Elm is mainly, as lilyp has
>> said/implied, that while the dependency trees of C applications and such
>> typically resemble the following:
>>
>>         O <-- O
>>   O <-- O <-- O
>>         O <-- O
>>
>> dependency trees for Rust, Haskell, and Elm look like this:
>>
>>                         / O
>>                   / O <-- O
>>                   |     \ O
>>                   |
>>                   |     / O
>>             / O <-- O <-- O
>>             |     |     \ O
>>             |     |
>>             |     |     / O
>>             |     \ O <-- O
>>             |           \ O
>>             |
>>             |           / O
>>             |     / O <-- O
>>             |     |     \ O
>>             |     |
>>             |     |     / O
>>   O <-- O <-- O <-- O <-- O
>>             |     |     \ O
>>             |     |
>>             |     |     / O
>>             |     \ O <-- O
>>             |           \ O
>>             |
>>             |           / O
>>             |     / O <-- O
>>             |     |     \ O
>>             |     |
>>             |     |     / O
>>             \ O <-- O <-- O
>>                   |     \ O
>>                   |
>>                   |     / O
>>                   \ O <-- O
>>                         \ O
>>
>> Except in reality it's much much much much much worse.
>>
>> So it's not because that's not something we'd like to have, it's largely
>> because packaging such things is a royal pain and there aren't all that
>> many people with the motivation to do that.
>>
>
>
>And this is the current reality, and it will become more and more
>common, whether for better or for worse. Package managers make it so
>convenient to install dependencies, but it leads to an abuse in that
>regard. I could name many of the most widely used programming languages
>today that have the same problem: JavaScript, Python, Haskell, Rust,
>just to name a few. So, here is my question: Is there a future vision
>for this situation? Because it will become more and more common over
>time.

The solution to this issue could be better importers. The package managers of these languages manage to build the packages, so there's no reason we shouldn't be able to do so too. There are a few good importers, but others need to be written or polished to make them more reliable and useful.

Another approach could be to integrate guix in these tools. Maybe it would be good advertisement and incentivize developpers to make their package work well in guix. Imagine "pip export --guix some packages > guix.scm" or similar :)

On a more sociological point of view, we should raise these concerns to package managers and developpers to try and find a more satisfying solution.


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

* Re: Guix and the developer ecosystem
  2023-08-05  1:11   ` Distopico
@ 2023-08-05 17:29     ` Liliana Marie Prikler
  2023-08-05 19:48       ` (
  2023-08-08 16:59     ` Saku Laesvuori
  1 sibling, 1 reply; 17+ messages in thread
From: Liliana Marie Prikler @ 2023-08-05 17:29 UTC (permalink / raw)
  To: Distopico; +Cc: guix-devel

Hi Distopico,

Am Freitag, dem 04.08.2023 um 20:11 -0500 schrieb Distopico:
> 
> On 2023-07-29, Liliana Marie Prikler <liliana.prikler@gmail.com>
> wrote:
> 
> > Hi Distopico
> > 
> > Am Mittwoch, dem 26.07.2023 um 19:29 -0500 schrieb Distopico:
> > > 
> > > 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.
> > 
> 
> Hi, thank you for your response, well When I say "developer
> ecosystem," I'm referring to a significant variety of languages,
> whether new or not, to meet the development needs in different
> languages compatible with free-software software. 
I mean, even if you object in the paragraphs below, Guix already covers
a significant variety of languages, probably more so than other system
package managers and in any case more so than language-specific ones.  

> Otherwise, it would be a development environment limited to C,
> Python, and a few others, which should be clarified to users to avoid
> creating false expectations. By "horizon" or the future vision of the
> project, I mean the overall outlook concerning this aspect.
Well, as it turns out with generic solutions to problems, they only
apply as long as you've modeled your problem accurately enough.  And in
practice, people also settle for worse.  For instance, there's one
particular IDE that takes up twice as much disk space if you want to
use it for two programming languages.  By valuing freedom over anything
else, we already have to deal with false expectations when it comes to
hardware choices.  This is by far not the first time that we're hurt by
the consequences of short-sighted to harmful design decisions taking by
companies that only care about large numbers.

> I can't say that Haskell falls under the category of "modern," but it
> has been progressively "modernizing," adapting to the implications,
> whether good or bad. Javascript is definitely not new, and TypeScript
> is another example that is not new either.
Modernity itself is somewhat antiquated, and you can see the same issue
with programming languages.  We had a talk on postmodern C++ in 2017,
so languages that date back to the early 2010s qualify as "modern" in
my eye.  This also includes Javascript, which although a little older
than the rest, through npm pioneered the idea of horking up Python's
packaging model even harder.

> > > The current programming languages are made up of three [or four]
> > > parts:
> > > 
> > > 1. The languages itself
> > > 2. Language-server
> > > 3. The language packages
> > > 4. Language tools (formatter, linter)
> > > 
> > > 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.
> > 
> 
> Does Guix have a plan to address this in the future or a workaround?
> I believe that in the future, this issue will become even more
> common, just as more languages have their own package managers, which
> are partly responsible for this huge dependency tree.
Let's stash away the thoughts about potential workarounds for now and
come back to them later.  The plan to address this in the future *is*
[1], that is bootstrapping all the tools we don't have (to the best of
our ability).

> > > In terms of programming languages, I have found almost all the
> > > ones I needed, with the exception of Kotlin.
> > [2]
> > 
> Thank, good to known that, just curious why/how nix have it.
My guess would be that they don't even bother building packages from
source in some cases.

> > > 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.  🤔️
> > 
> > > [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.
> > > 
> > > So, sometimes I wish to do...
> > > 
> > > ```
> > > guix shell ghc haskell-language-server hlint
> > > ```
> > > 
> > > 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.
> > 
> 
> You are absolutely right. As I mentioned before, the ever-increasing
> huge dependency tree is becoming more common in various programming
> languages due to the convenience of package managers. It is essential
> to have a plan on how to address these situations to ensure the
> long-term sustainability and maintainability of projects. Without a
> plan, it might be better not to embark on such a journey, as managing
> complex dependency chains can lead to numerous challenges and issues
> in the future. Projects like Guix need to actively consider
> strategies to handle and mitigate these complexities effectively to
> ensure a smooth and sustainable development process.
In order to effectively create a sustainable development process, we
need to break up with the current tradition of cramming the entire
internet into a binary and linking that statically, so everyone
afterwards has to do the same.

Of course, this is a hard solution to roll out, because it is a social
one rather than a technical one.  Sure, language package managers right
now enable you to put almost everything into your code and "have it
work".  That doesn't mean it's a good idea.  In fact, it's a pretty bad
one, and one that's at heart of all our software supply chain issues. 

> > 
> > > 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).
> > 
> 
> Well, what holds me back is that many dependencies are missing, such
> as the basic ones I mentioned, making it impossible to use Guix in
> many cases. Others have non-ideal solutions, like one suggested in
> Matrix: `guix shell --container --emulate-fhs' + downloading the
> rustup script and installing it just to use clippy (the Rust linter).
> So, it's not feasible to include that in the project due to current
> limitations.
Why the hell is a linter included in your build process in the first
place?  I can understand that you might want to invoke one before
dropping the package maintainers a mail, I mean creating a pull
request, but it shouldn't matter otherwise.

By the way, remember when I earlier told you we'd come back to
workarounds later?  Now is later.  See, emulating the FHS means that
you fake being a regular old Linux distribution whose layout is as Rust
would expect without giving it write access to special folders of your
actual machine.  This is quite powerful indeed.

As for packaging clippy, you could try the crate importer, but there's
a chance that it does something useless, because Rust decided that
their own packaging strategy didn't work for it.  The same disclaimer
also holds for some GNOME projects that decided to use Rust because
it's the new hot stuff and decided not to follow its distribution
model.  This causes their packages to be form chimaeras of cargo and
meson and I don't know why they are actually content with that solution
beyond the observation that "it works".  

> > > 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?
> > 
> 
> Well, I think is not a real solution, a lot of time the people with
> those mac are from the companies and you are not able to change the
> OS, or sometimes you work as a freelancer in a company and other
> people use Mac and they don't want to change just becase an
> contractor have the idea of use Guix.
And that is fine.  Recall earlier when I mentioned "reasonable build
system based on GNU tools, CMake or Meson"?  Those tools work all the
same under other operating systems as well.  It's not like you have to
reinvent them for another programming language.  You can still use Guix
to improve your flow without forcing everyone to use it.  And there's
still a chance that at least part of the team will think that it's a
great idea, unless they have all sold Steve Jobs their souls.

> > > All this text is provided some context for two simple questions:
> > > 
> > > 1. Are there plans in the future to improve integration between
> > > development tools? For example, having haskell-language-server
> > > for ghc@9.x and 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.
> > 
> 
> Maybe this will be the solution:
> https://blog.lispy.tech/parameterized-packages-the-second-update.html
The examples provided in that blog are already more interesting than
whatever you're trying to solve.

> > > 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.
> > 
> 
> Well, is someone want to hack with Rust/Haskell using Guix is not
> possible, They may end up taking alternative paths like in my case,
> or a mix of using Guix in some areas and not in others.
I don't think the reality is as bleak as you make it out to be.  Sure,
we probably don't carry cutting-edge versions of most Rust/Haskell
stuff out there, but depending on where you sit in the dependency tree,
you'll have an easier or harder time.  It's quite comfortably around
the trunk and rather shaky in the leaves, but it should at least be
manageable as long as it's a tree.  You'd just have to start actually
managing it.

Cheers
> > 


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

* Re: Guix and the developer ecosystem
  2023-08-05 17:29     ` Liliana Marie Prikler
@ 2023-08-05 19:48       ` (
  2023-08-05 20:12         ` Liliana Marie Prikler
  0 siblings, 1 reply; 17+ messages in thread
From: ( @ 2023-08-05 19:48 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: Distopico, guix-devel

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> As for packaging clippy, you could try the crate importer, but there's
> a chance that it does something useless, because Rust decided that
> their own packaging strategy didn't work for it.  The same disclaimer
> also holds for some GNOME projects that decided to use Rust because
> it's the new hot stuff and decided not to follow its distribution
> model.  This causes their packages to be form chimaeras of cargo and
> meson and I don't know why they are actually content with that solution
> beyond the observation that "it works".  

Fairly sure clippy is included as part of cargo.

  -- (


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

* Re: Guix and the developer ecosystem
  2023-08-05 19:48       ` (
@ 2023-08-05 20:12         ` Liliana Marie Prikler
  0 siblings, 0 replies; 17+ messages in thread
From: Liliana Marie Prikler @ 2023-08-05 20:12 UTC (permalink / raw)
  To: (; +Cc: Distopico, guix-devel

Am Samstag, dem 05.08.2023 um 20:48 +0100 schrieb (:
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> > As for packaging clippy, you could try the crate importer, but
> > there's a chance that it does something useless, because Rust
> > decided that their own packaging strategy didn't work for it.  The
> > same disclaimer also holds for some GNOME projects that decided to
> > use Rust because it's the new hot stuff and decided not to follow
> > its distribution model.  This causes their packages to be form
> > chimaeras of cargo and meson and I don't know why they are actually
> > content with that solution beyond the observation that "it works". 
> 
> Fairly sure clippy is included as part of cargo.
Not sure whether it's a part of cargo, but at the very least it belongs
to the rust core.  Which again means nothing, because we have a rustfmt
output and a cargo output, but no clippy output.

Cheers


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

* Re: Guix and the developer ecosystem
  2023-08-05  1:11   ` Distopico
  2023-08-05 17:29     ` Liliana Marie Prikler
@ 2023-08-08 16:59     ` Saku Laesvuori
  1 sibling, 0 replies; 17+ messages in thread
From: Saku Laesvuori @ 2023-08-08 16:59 UTC (permalink / raw)
  To: Distopico; +Cc: Liliana Marie Prikler, guix-devel

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

>> 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).
>
>Well, what holds me back is that many dependencies are missing, such as
>the basic ones I mentioned, making it impossible to use Guix in many
>cases. [...] So, it's not
>feasible to include that in the project due to current limitations.

You could add the missing dependencies to the guix.scm. I often have ten
or so dependencies in my haskell projects' guix.scm files. It takes a
bit of time because the recursive hackage importer is currently broken
(https://issues.guix.gnu.org/64734), but it's not too bad because guix
already has most of the common packages.

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

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

* Re: Guix and the developer ecosystem
  2023-07-27  0:29 Guix and the developer ecosystem Distopico
                   ` (2 preceding siblings ...)
  2023-07-31 18:55 ` Wilko Meyer
@ 2023-08-16 14:22 ` Ludovic Courtès
  2023-08-18 17:16   ` Distopico
  2023-08-19  8:29 ` Simon Tournier
  4 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2023-08-16 14:22 UTC (permalink / raw)
  To: Distopico; +Cc: guix-devel

Hi,

A late reply…

Distopico <distopico@riseup.net> skribis:

> 1. Are there plans in the future to improve integration between
> development tools? For example, having haskell-language-server for
> ghc@9.x and another one for ghc@8.x, or something similar to the
> overwrite feature in Nix flake?

I don’t think the project makes “plans” for such things.  To me, it
looks like mostly a matter of packaging; if ‘haskell-language-server’ is
missing, then some Haskeller may eventually feel the need to package it.
You can hope it’ll be someone else, but perhaps you’ll find that doing
it yourself is worth trying.  :-)

Regarding customization, ‘--with-input’ and perhaps other transformation
options may correspond to your needs:

  https://guix.gnu.org/manual/devel/en/html_node/Package-Transformation-Options.html

> 2. Do you see developers as a potential target audience for Guix, or is
> it mainly focused on HPC (High-Performance Computing)?

My dayjob has to do with HPC and I think Guix is a good fit for them.

But developers, whether in HPC or not, are definitely a target audience
IMO.  I believe Guix has great tools for development; that’s the spirit
of this blog post:

  https://guix.gnu.org/en/blog/2023/from-development-environments-to-continuous-integrationthe-ultimate-guide-to-software-development-with-guix/

Thanks for your feedback!

Ludo’.


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

* Re: Guix and the developer ecosystem
  2023-08-16 14:22 ` Ludovic Courtès
@ 2023-08-18 17:16   ` Distopico
  2023-08-24 15:01     ` Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Distopico @ 2023-08-18 17:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


On 2023-08-16, Ludovic Courtès <ludo@gnu.org> wrote:

> Hi,
>
> A late reply…
>
> Distopico <distopico@riseup.net> skribis:
>
>> 1. Are there plans in the future to improve integration between
>> development tools? For example, having haskell-language-server for
>> ghc@9.x and another one for ghc@8.x, or something similar to the
>> overwrite feature in Nix flake?
>
> I don’t think the project makes “plans” for such things.  To me, it
> looks like mostly a matter of packaging; if ‘haskell-language-server’ is
> missing, then some Haskeller may eventually feel the need to package it.
> You can hope it’ll be someone else, but perhaps you’ll find that doing
> it yourself is worth trying.  :-)
>
> Regarding customization, ‘--with-input’ and perhaps other transformation
> options may correspond to your needs:
>
>   https://guix.gnu.org/manual/devel/en/html_node/Package-Transformation-Options.html
>

According with the docs, it will make rebuilt the packages so with
Rust/haskell that could take time and cpu, and for sure is a good option
in many cases, and maybe with Parameterized Packages[1] would be another
option, but what about have let said two packages like
`haskell-language-server-8.x` and `haskell-language-server-9.x` wherein
each one utilizes a predefined GHC version and prebuilt derivations? Is
this approach valid?


>> 2. Do you see developers as a potential target audience for Guix, or is
>> it mainly focused on HPC (High-Performance Computing)?
>
> My dayjob has to do with HPC and I think Guix is a good fit for them.
>
> But developers, whether in HPC or not, are definitely a target audience
> IMO.  I believe Guix has great tools for development; that’s the spirit
> of this blog post:
>
>   https://guix.gnu.org/en/blog/2023/from-development-environments-to-continuous-integrationthe-ultimate-guide-to-software-development-with-guix/
>
> Thanks for your feedback!
>
> Ludo’.

thank you for your response.

[1]: https://blog.lispy.tech/parameterized-packages-the-second-update.html


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

* Re: Guix and the developer ecosystem
  2023-07-27  0:29 Guix and the developer ecosystem Distopico
                   ` (3 preceding siblings ...)
  2023-08-16 14:22 ` Ludovic Courtès
@ 2023-08-19  8:29 ` Simon Tournier
  4 siblings, 0 replies; 17+ messages in thread
From: Simon Tournier @ 2023-08-19  8:29 UTC (permalink / raw)
  To: Distopico, guix-devel

Hi,

Thanks for your feedback.

On Wed, 26 Jul 2023 at 19:29, Distopico <distopico@riseup.net> wrote:

> 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 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.

Hum, it seems an another issue about bootstrapping. ;-)

Well, on one hand, Guix is missing some person-power.  And on the other
hand, this allows to easily contribute, somehow.

Considering Haskell, the upstream community is putting their hands on
Nix.  For instance, people involved in GHC release management provide
some Nix stuff [1].  Well, if you follow the Haskell community, maybe
you know that some companies [2,3] are providing resources for making a
smooth and friendly Haskell development experience relying on Nix.

Similarly, if you are in academia, the experience using Guix for your
computations should be friendlier.  For example, working with R using
Guix is just smooth.  Or how easy is to apply package transformations in
order to benchmark some HPC stuff.  That’s because some research
institutes [4] are providing resources for making a smooth and friendly
experience.

Do not take me wrong, Guix is not focused on academia issues and Nix on
development ones.  Both are free software and the limitation is people
motivation, somehow.  Personally, I mainly use Guix for doing
computations in scientific context so most of my motivation is to
improve this area.  Improvements and the way to cover your needs is by
discussing your troubles and then by trying to fix them, i.e., by
sharing your hacks – even tiny ones.  Maybe another fellow hacker will
find that cool and they will be motivated for collaborating.  Thanks to
this collective sharing, we end up with tools that cover our needs, more
or less. :-)


1: https://gitlab.haskell.org/bgamari/ghcs-nix
2: https://well-typed.com/
3: https://www.tweag.io/
4: https://hpc.guix.info/


> 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.

Somehow, I agree that having Guix running on other OSes than GNU/Linux
will be helpful in attracting users.  The archive provides such
attempts, for instance:

        Guix on macOS
        from Chris Marusich <cmmarusich@gmail.com>
        Wed, 11 Oct 2017 20:29:57 -0700
        https://yhetil.org/guix/87bmldavre.fsf@gmail.com

First, please note that it’s far to be trivial to port Guix on any other
OSes than GNU/Linux.  Then, from my understanding, the blocking point
is: you need to cheat using a very large binary seed or workarounds are
somehow required and need to be applied against the core C library.
Therefore, the intersection between all these deep technical
difficulties and skilled people able to deal with them is currently
empty.  Mainly because Guix is rooted with GNU principles and motivation
is not fungible.

That’s said, I know people that are running Guix on MacOS using Rosetta
and friends.  Well, that’s not the right place to discuss that because
we have to stay focus on free software. :-)


> 1. 
>                                      or something similar to the
> overwrite feature in Nix flake?

Could you explain what Nix flake is using Guix terms?


Cheers,
simon


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

* Re: Guix and the developer ecosystem
  2023-08-18 17:16   ` Distopico
@ 2023-08-24 15:01     ` Ludovic Courtès
  2023-08-29 18:42       ` Distopico
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2023-08-24 15:01 UTC (permalink / raw)
  To: Distopico; +Cc: guix-devel

Hi,

Distopico <distopico@riseup.net> skribis:

>> Regarding customization, ‘--with-input’ and perhaps other transformation
>> options may correspond to your needs:
>>
>>   https://guix.gnu.org/manual/devel/en/html_node/Package-Transformation-Options.html
>>
>
> According with the docs, it will make rebuilt the packages so with
> Rust/haskell that could take time and cpu, and for sure is a good option
> in many cases, and maybe with Parameterized Packages[1] would be another
> option, but what about have let said two packages like
> `haskell-language-server-8.x` and `haskell-language-server-9.x` wherein
> each one utilizes a predefined GHC version and prebuilt derivations? Is
> this approach valid?

Yes, having one language server package for GHC 8 and another one for
GHC 9 sounds like the way to go: it gives flexibility for Haskell
developers and comes almost for free on the Guix side.

Thanks,
Ludo’.


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

* Re: Guix and the developer ecosystem
  2023-08-24 15:01     ` Ludovic Courtès
@ 2023-08-29 18:42       ` Distopico
  0 siblings, 0 replies; 17+ messages in thread
From: Distopico @ 2023-08-29 18:42 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

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


Nice, thanks for your response.

On 2023-08-24, Ludovic Courtès <ludo@gnu.org> wrote:

> Hi,
>
> Distopico <distopico@riseup.net> skribis:
>
>>> Regarding customization, ‘--with-input’ and perhaps other transformation
>>> options may correspond to your needs:
>>>
>>>   https://guix.gnu.org/manual/devel/en/html_node/Package-Transformation-Options.html
>>>
>>
>> According with the docs, it will make rebuilt the packages so with
>> Rust/haskell that could take time and cpu, and for sure is a good option
>> in many cases, and maybe with Parameterized Packages[1] would be another
>> option, but what about have let said two packages like
>> `haskell-language-server-8.x` and `haskell-language-server-9.x` wherein
>> each one utilizes a predefined GHC version and prebuilt derivations? Is
>> this approach valid?
>
> Yes, having one language server package for GHC 8 and another one for
> GHC 9 sounds like the way to go: it gives flexibility for Haskell
> developers and comes almost for free on the Guix side.
>
> Thanks,
> Ludo’.


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

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

end of thread, other threads:[~2023-08-29 18:46 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-27  0:29 Guix and the developer ecosystem Distopico
2023-07-29 19:48 ` Liliana Marie Prikler
2023-08-05  1:11   ` Distopico
2023-08-05 17:29     ` Liliana Marie Prikler
2023-08-05 19:48       ` (
2023-08-05 20:12         ` Liliana Marie Prikler
2023-08-08 16:59     ` Saku Laesvuori
2023-07-31  9:42 ` (
2023-08-05  1:49   ` Distopico
2023-08-05  6:10     ` Julien Lepiller
2023-07-31 18:55 ` Wilko Meyer
2023-08-05  1:40   ` Distopico
2023-08-16 14:22 ` Ludovic Courtès
2023-08-18 17:16   ` Distopico
2023-08-24 15:01     ` Ludovic Courtès
2023-08-29 18:42       ` Distopico
2023-08-19  8:29 ` Simon Tournier

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).