News for hackers. Stuff that matters.
Re:Guix Further Reduces Bootstrap Seed to 25% by rudolph9 on Monday June 15, 2020 @11:30AM (#23528380)
Does anyone know of a recent comparison of NixOS vs Guix? Both these projects are awesome and I’m a NixOS user but I want to learn more about Guix. I’ve found older ones but nothing in the past year and with all the recent developments in both communities I’d love to see a side by side comparison.
Re:Guix Further Reduces Bootstrap Seed to 25% by rekado on Monday June 15, 2020 @01:15PM (#23529932)
I generally don't like to talk about other projects negatively, because I don't think that Nix and Guix should compete. They are different takes on the same concept. But as I'm very familiar with Guix and have occasionally looked at how they deal with some of the packaging problems I worked on in Guix I can say that the Nix colleagues are often punting on problems instead of solving them. Let me give you a few examples.

In Nixpkgs there are quite a few generated packages, some of which cannot be built. I'm maintaining R packages (from CRAN and Bioconductor) in Guix and I see that the equivalent packages in Nixpkgs do not accommodate some of their quirks, so they cannot actually be built.

Another example where Nixpkgs does not build packages from source is TeX Live. The SVN repository of TeX Live contains countless generated files, and all of the TeX Live packages in Nixpkgs merely copy the generated files from SVN instead of building them from source.

Java packages in Nixpkgs often seem to include pre-built jars whereas in Guix we're going to great lengths to build everything from source. This comes at a cost, of course: Guix has fever Java packages because of that, but those that it has are actually built from source.

Of course, I'm biased towards Guix, but I must say that I'm very fond of the level of integration that Guix achieves. When I look at Nix I see a bunch of seemingly separately developed tools that are written in a mix of languages (with Shell code being rather common). In Guix all tools are written in Scheme, use the same API, behave similarly, etc. It just feels much more polished to me.

That said, there is no animosity between these communities, and I think we would all be better off avoiding the mental pitfall of competition; we work on the same problems with different values and thus our approach differs. This leads to diversity rather than duplication of work.

Here are some more things I wrote comparing Nix and Guix in the past: https://news.ycombinator.com/item?id=19807042

Re:Guix Further Reduces Bootstrap Seed to 25% by AnIdiotOnTheNet on Monday June 15, 2020 @01:41PM (#23530376)
> This comes at a cost, of course: Guix has fever Java packages because of that, but those that it has are actually built from source.

Truly this is much more valuable than actually being able to use the software.

Re:Guix Further Reduces Bootstrap Seed to 25% by uncletaco on Monday June 15, 2020 @02:20PM (#23530983)
Note that just because you cannot manage a lot of jars through guix you can still maintain a java project that includes steps to build its source outside of guix.

Also for clojure heads the Nonguix[1] repository includes a leiningen package.

I think as time goes on and guix matures we will start to see more third party repositories that provide convenient builds of things. For instance I run guix system on a 2015 Chromebook Pixel and to do that I used the installation image provided at Nonguix to make sure I had all of the nonfree drivers I needed.

[1] https://gitlab.com/nonguix/nonguix

Re:Guix Further Reduces Bootstrap Seed to 25% by jnxx on Wednesday June 17, 2020 @04:48AM (#23549264)
> Guix has fever Java packages because of that

That's right, but 13,800 packages is not exactly bad. I believe that is more packages than Ubuntu had a few years ago.

Re:Guix Further Reduces Bootstrap Seed to 25% by e12e on Monday June 15, 2020 @01:57PM (#23530614)
If you just wanted to download and run a binary (or jar) - you can still do that?

While freedom zero (the most important!) is the ability "to use the software" - being able to improve, patch and adapt the software is also very important!

Re:Guix Further Reduces Bootstrap Seed to 25% by AnIdiotOnTheNet on Monday June 15, 2020 @02:12PM (#23530875)
> If you just wanted to download and run a binary (or jar) - you can still do that?

If it were that simple, why would we need package managers at all? Sadly, the Linux community as a whole have dedicated themselves to a structure that makes this seemingly simple task remarkably difficult.

Re:Guix Further Reduces Bootstrap Seed to 25% by craftyguy on Monday June 15, 2020 @05:31PM (#23533212)
> If it were that simple,

It is that simple.

> why would we need package managers at all? Sadly, the Linux community as a whole have dedicated themselves to a structure that makes this seemingly simple task remarkably difficult.

Because there's a huge difference between a user downloading/running a binary, and software package management in an OS. The former is not maintainable, your binaries will be out of date soon, etc. But, if you insist on wanting to do this, there's absolutely nothing preventing you from doing it. Have fun.

Re:Guix Further Reduces Bootstrap Seed to 25% by AnIdiotOnTheNet on Tuesday June 16, 2020 @10:15AM (#23539370)
> if you insist on wanting to do this, there's absolutely nothing preventing you from doing it. Have fun.

I really do want to do this, precisely because the software in the repo is often out of date, if it is even there at all! I really don't like the idea of a mandatory middleman between the developer and the user.

And since I really do want to do this, and do it often, I can say with quite a bit of certainty that

> It is that simple.

Is complete and utter bullshit! Sometimes you get lucky and the developer produces AppImages or a static binary, sometimes you're less lucky and have to grab the binary and its dependencies and write a startup script that sets LD_LIBRARY_PATH, sometimes you're even less lucky than that and get to use patchelf to force it to use a compatible ld.so, but most of the time you end up having to compile the damn thing from source like it is 1975.

Re:Guix Further Reduces Bootstrap Seed to 25% by jnxx on Wednesday June 17, 2020 @04:39AM (#23549211)
> I really do want to do this, precisely because the software in the repo is often out of date,

That depends much on the distribution you use (if recentness is most important, why do you don't use Arch), and being out of date is definitely not the case for Guix System:

http://distrowatch.org/dwres.php?firstlist=guixsd&firstversi...

Sp, why are you bringing an argument that does not apply to Guix?

Re:Guix Further Reduces Bootstrap Seed to 25% by Quiark on Tuesday June 16, 2020 @10:37AM (#23539606)
Oh wow that sounds exactly like the kind of problems package mamagers solve. Your complaint basically boils down to - nobody prepared a one click package of latest version for free for me.
Re:Guix Further Reduces Bootstrap Seed to 25% by AnIdiotOnTheNet on Tuesday June 16, 2020 @02:55PM (#23542731)
My complaint comes down to the following: why must there be a middle man between the developer and user, why must there be a separate middleman for every repo, why must said repo prevent me from installing older versions, why must the package manager prevent me from installing to alternative paths... basically, why does the community insist that this simple task that was the de-facto way to install software for DOS, MacOS (classic), NeXT, RiscOS, and MacOS (recent) insist on being complicated and restrictive in Linux?

And if package managers really solved the problem, why do so many projects deploy with Docker? Why do FlatPak and Snap exist, let alone my preferred AppImage?

Re:Guix Further Reduces Bootstrap Seed to 25% by jnxx on Wednesday June 17, 2020 @04:43AM (#23549240)
> why must there be a middle man between the developer and user, why must there be a separate middleman for every repo,

Guix allows you to easily write own package definitions which are treated as part of the whole system. If you submit them and they are accepted, they simply become part of Guix.

> why must said repo prevent me from installing older versions,

Precisely this is a case that Guix solves extremely well: One can start environments with specific versions of packages, like in Pyhon's virtualenv.

And by the way, the complexity is caused by the issue that many many components need to fit together. That does not happen by chance, it is a massive amount of work to make it fit in a manageable way, and check that it works. That's what distributions do.

Re:Guix Further Reduces Bootstrap Seed to 25% by AnIdiotOnTheNet on Thursday June 18, 2020 @07:10AM (#23561939)
And yet many operating systems throughout history have not needed to do that. The complexity is not inherent to the problem space, it is a creation of the community.
Re:Guix Further Reduces Bootstrap Seed to 25% by cbaines on Monday June 15, 2020 @12:55PM (#23529614)
Maybe it would be nice to have a wiki style page for this... anyway, I can only offer a perspective from the Guix side of things, but these are the reasons I'd personally be cautious about using Nix/Nixpkgs.

I believe a higher proportion of Nixpkgs don't build all or some of the software/artifacts from source. I picked a random example, JOSM. The nixpkgs package definition is quite short [1], but I don't think it's actually building the software? The Guix package definition is much longer [2] but I think that's because it's actually building the software from source.

1: https://github.com/NixOS/nixpkgs/blob/master/pkgs/applicatio... 2: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages...

Personally, I like binary packages, which is why I use Guix, but I also value the security and flexibility of having these packages actually build the software from source.

Nixpkgs also contains non-free software. This is sort of related to the previous point, as it's much harder to tell if software is free or not if you're not building it from source, but Guix everything should be free software which takes away a worry when using it. With nixpkgs, I believe there are some bits of non-free software that are marked as such, but not taking a strong stance on attempting to build everything from source makes me generally unsure about the quality assurance in this area.

Re:Guix Further Reduces Bootstrap Seed to 25% by rudolph9 on Monday June 15, 2020 @03:24PM (#23531834)
All good points but it’s worth noting that in order to install any non-free NixOS packages there is an explicit flag you need to set which affect their entire OS or set of packages on your machine.

That said, downloading a jar instead of compiling the jar from source is definitely a notable difference and potentially is unfree software despite the license stating otherwise and the flag previously mentioned set.

While there is nothing inherent about NixOS To prevent non-free software from entering the ecosystem, there is also nothing inherent to Guix either that would prevent any non-free software. Ultimately it comes down to community curation of the packages and while Guix almost definitely is more vigilant about free software both have focus on free-software

NixOS has the option to install non-free (which you need to explicitly enable to install non-software) and Guix is more strict where their official packages don’t intentionally support any non-free software and they employ practices that are more likely to catch oversights.

Re:Guix Further Reduces Bootstrap Seed to 25% by jnxx on Wednesday June 17, 2020 @04:35AM (#23549187)
I think what will make the most difference in the long term is using GNU Guile Scheme as language for package definitions. I think it is a brilliant choice to use a mature and popular language which supports functional programming very well. The fact that Scheme is minimalist and easy to learn will without doubt help attracting contributors in the future, and this in turn will be decisive for driving adoption in the long term.

Another feature that is very nice is that there is no difference between a package definition in a local development environment, and a definition in the official channel. What you put together as a build recipe of a tool that is useful for your quirky local project will also work as part of the distribution.

Re:Guix Further Reduces Bootstrap Seed to 25% by jhoechtl on Monday June 15, 2020 @05:00PM (#23532920)
Guile seems to have made some substantial improvements too. Has there been made any performance comparisons between the Racket VM and Guile?
Re:Guix Further Reduces Bootstrap Seed to 25% by civodul on Tuesday June 16, 2020 @03:00AM (#23536611)
There are benchmarks at https://ecraven.github.io/r7rs-benchmarks/ but unfortunately they lack data for Guile 3.0. There's a Guile 2.2/3.0 comparison at https://www.gnu.org/software/guile/news/gnu-guile-300-releas... .