I was pretty excited about Guix because I find Guile more fun and less academic than Haskell (which Nix uses). Then I stumbled upon some of the extremist propaganda by one of the main Guile developers and promptly decided that it isn't for me.
I have nothing against the hardline stance the FSF holds, but I cannot support someone who joins an organization and then starts a crusade against its founder over his personal political views. I don't think politics belongs in open source software.
honestly, thank you for the links. I believe that evidence-based discussion on social topics is useful, and you have contributed to that.
regarding "bloody marxist" or whatever.. I like the a-political, personal emphasis of GNU .. that means, I can sit next to a Real Bloody Marxist, and drink coffee and debug $lspci output.. seriously, I am OK with that, it supports a worldview of 'tolerance'.. similarly for people with serious depression, people who have had trouble with food addictions, people who SMOKE TOBACCO ! all of that.. its part of a "plural society" which I personally support everyday.
Even as a moderate-libertarian myself, it is not really surprising that a lot of free-software users and contributors are communists. RMS himself seems to be pretty left-leaning.
It is encouraging that most free-software users/contributors can see past political squabbles and work on tech that improves society more objectively.
> most free-software users/contributors can see past political squabbles and work on tech that improves society more objectively.
The problem is apolitical can easily be or become amoral, so I can't agree this is a virtue without further clarification. Some differents can and should be tolerated, but in the spirit of the paradox of tolerance others should not.
How would you feel if you released software under an MIT license that helped a neo-Nazi resurgence for instance?
I don't think free software is apolitical, but it is often non-partisan. It is not about inter-institutional power struggles. It is about giving individuals the technology to defeat and replace tyrannical institutions in the first place.
>How would you feel if you released software under an MIT license that helped a neo-Nazi resurgence for instance?
Firstly, I disapprove of permissively-licensed software.
Secondly, if you're making technology whose goal is to empower individuals, and the majority of individuals want to overthrow their free government and replace it with some fascist dictatorship, then there will be some edge cases like that in which that technology has a net-negative effect on global freedom. I have no problem with that, that's the price of individual freedom and the right to self-determination.
I think what you're trying to say here is some variation of popper's paradox, wherein freedom-enabling technology gives people the freedom to take away their own freedom. While it's true to some extent, trying to make direct use of that principle like you're doing here can lead to some pretty disastrous results, because you can basically use it to justify any authoritarian action in the name of freedom. For example, what would you do in this instance? put backdoors in the software that these neo-nazis are using? Any attempt at limiting the anti-institutional power of the technology will certainly have a net-negative impact on global freedom, because the same modes of technology will used be used more crucially against tyrannical institutions than non-tyrannical ones.
Let me say this: I don't fear any of these fascist or communist dictatorships taking over the world. I think those are merely meta-stable ideologies that are eventually toppled if you put power and knowledge in the hands of individuals. What I am worried about is when the western world develops and exports surveillance technology which enables these dictatorships to continue their miserable existence in the first place.
Communism, Fascism, Corporatism, Cronyism: these systems will always come about in one form or another because they are the emergence of mankind's worst characteristics. The only way to eliminate them completely is to remove from man that which makes him human. That is why the tree of liberty must be refreshed from time to time.
I am all for discussion. The crusade and their bad faith interpretation of his opinions are piggybacking on the sometimes overly eager cancel culture of today.
Fun fact: devil is English for Diabolos which is "the slanderer", literally.
Misreprentation, FUD, discrimination, they all are literally faces of slandering, doing them is "doing the deeds of the devil" in a very literal sense.
Wingo's politics are mainstream for an open source developer in the 2020s. He's right about Stallman, he's right that GNU needs new, collective leadership, and he does a damn fine job maintaining Guile.
If you think it's alright to join an organization and then go out of your way to backstab its founder because his social skills are lacking, then you're free to do that.
How is calling out someone’s truly toxic behavior actively harming the foundation back-stabbing? If I were to found anything and later on I become a hindrance to it, I very much want to be called out for that.
It currently uses systemd quite heavily. There at least was some conversation about making it more service manager agnostic so that others could be used, but I'm not aware of that having gotten anywhere. I haven't checked in a while though.
I'm interested in an academic sense, what's the accusation here?
Regardless of the person's views though I think if their code is clean and they're not actively applying said views to harm other contributors, live and let live...
I don't have a clear overview of the exact timeline, but at some point he created the FSF, the original GCC, Emacs, GDB, GNU Make, parts of the GNU userspace tools, the predecessor to Wikipedia, the copyleft concept and the GPL license among other things. How does it compare to your contributions?
I am somewhat hopeful for what Guix might mean for their "Shepard" init system and (specifically GPL) microkernels like HURD. The guile package management system isn't to interesting in my opinion: we already have distros like Gentoo, Nix, Arch, Alpine, etc. that support both build scripts (usually as some specialized shell script) and binary packages. If anything, I think as programmers we tend to lean towards application-specific languages where we ought to favor generic languages for the sake of simplicity.
Because it's under the GNU name and seems somewhat kernel-agnostic, I think this might lead to the case where we can finally point towards a operating system and say "that's GNU".
"The guile package management system isn't to interesting in my opinion: we already have distros like Gentoo, Nix, Arch, Alpine, etc. that support both build scripts (usually as some specialized shell script) and binary packages."
The big win you get with Guix over the package managers in the other systems you reference (except for Nix) is deterministic, bit-identical, reproducible builds.[1]
"as programmers we tend to lean towards application-specific languages where we ought to favor generic languages for the sake of simplicity"
Guix does use a general purpose programming language: Guile Scheme.
If I have to learn a programming language just so I can use a single thing, then it might as well be an application-specific language.
That being said, I will look into guile anyways. I have a little project I'm working on that could benefit from a lisp-like configuration file, and I've currently implemented a crappy s-expression interpreter already.
Guile scheme is made to be easily embeddable. You should definitely try it. If you want to go the minimalist way, there is also S7, which is very good.
Spent a year with Guix and writing my own configuration. Definitely much easier to reason about using Lisp syntax over Googling what random function of the DSL you need in Nix, but I ultimately switched to Nix because of it's community and Darwin support. Nix has a large group of folks who just want a sane, declarative way to manage their environments, and to get back to what they were doing. I want to spend the least amount of time managing my tools and when running into problems with Guix, digging for answers or jumping into the REPL just took too long. Lots of devs in the Guix community seem motivated to build and contribute back, which is great if you're looking to spend your time doing that.
I now use Nix to share configuration between my Macbook Pro, NixOS Desktop, VMs in my home lab, etc. Both Guix and Nix are amazing once you've developed your configuration, I'll never go back. I do a simple "./bin/nixos-update" and "./bin/macos-update" and Nix takes care of the rest.
Occasionally I'll pull something upstream that borks my machine; rolling back is so trivial, I'll just check nixpkgs for Issues to see what's going on, where usually I'll find a 1-liner to fix it or I'll wait for the next release.
So I had to write a few functions in both. With Guile, very straight forward using Lisp's powerful "data-as-code, code-as-data" paradigms (the ` operator). A joy really, and writing code just felt like writing Lisp, where one gets to reason about small scope within simple functions.
With Nix, I had to learn how the whole thing works before I could even get started. Nix is not a "normal" language, you're essentially just writing chunks of configuration, organized across different files, building up to one big derivation (as Nix calls it) that gets interpreted.
Nix has syntax on how it expects the configuration to look and what configuration it expects to be defined. You can learn the syntax but it's still confusing (to me) as to what configuration is always expected. And errors can still be cryptic.
FWIW debugging nix expressions is about to get much easier. Master branch of the nix compiler now has a debugger. Hopefully this will be stabilized in the next release cycle.
As a former professional Lisp programmer, I think the Nix language was pretty good. Not the easiest to pick up but I like writing it very much once getting used to it.
The Nix language is basically JSON with functions, similar to Jsonnet. Despite the language being small, it makes it surprisingly easy to deal with large scale configuration. The Nixpkgs repository [1], which contains "over 80,000 software packages," consists of a single large Nix expression spanning thousands of files and somehow manages to be comprehensible.
What is the process if you would want to attempt to patch something in nixpkgs? Does that happen? Is there a way with your config to do that in an easy way? I think overlays is an attempt to patch it for yourself, but if you would want to prepare a "proper patch"?
nixpkgs has many owners that span across the 80,000+ software packages. When you open a PR against a specific package, the owner is notified via CI that Nix Foundation runs.
To test with your own config, it's easy to instead of importing nixpkgs, to import nixpkgs.applyPatches { patch } with a path to your fix.
And yes, overlays are a great way to quickly override attributes from a package definition, maybe while waiting on others to fix upstream ;)
I've primarily used Guix System on my main PC for a few years now. It's a lot of fun.
The biggest negatives are packages being out of date or missing, updates failing due to a broken package, updates taking over 24 hours because you had bad timing and the build server hasn't built all the web browsers yet, and the configuration and packaging can seem complicated to a non-programmer. Oh, and qutebrowser is very broken and no one talks about it for some reason. I suspect at times that I'm its only user on Guix System...
I love having a list of packages easily edited with a text editor and then applied. Rollbacks are easy and useful. Partial upgrades help work around a few misbehaving packages stopping updates (whether broken or just long builds, you can skip them in the moment and then try updating them again later).
Most issues would be solved by having more contributors, which will probably come with time. Although you still need people who care about the same packages as you, or else your Guix Wishlist entries may sit around unpackaged for years, or your packaged things may stay on old versions.
I know several NixOS users, but I have struggled to get new people to stick with Guix System for more than a few weeks.
Things would also improve if I were to learn/contribute more myself, but I don't know that I have the spoons or the time. For now I'll just keep getting by with the little bit I know. Guix feels like the future, so I can't help but want to use it and support it, even when it's rough in some spots.
I loved the idea of Guix and considered experimenting with it on my laptop, but unfortunately their insistence on free software purity makes it tough to adopt. The Linux Libre kernel is totally unsuitable for use on any modern equipment due to the unavoidable need for proprietary firmware, and in general any use of non-free software isn't just avoided in the community/ecosystem, it's something no one is even allowed to talk about.
I can certainly admire and appreciate that level of idealism and adherence to principles, but unfortunately, at least IME, it limits where Guix could be adopted.
I've hit this before on official channels, too (namely #guix). I did discover the forbidden knowledge of non-guix repo at one point, but I agree that it's silly to not even acknowledge its existence. just turns people off honestly. we're not all rms.
There is a #nonguix IRC channel on the same network (as well as a Guix Channel containing packages), and you have the option to install regular Linux instead of Linux-libre. I am lucky to not need to do any of this, but the option is there, and several people take advantage of it.
They simply do not wish to discuss non-free software in the main official channel. If this is your only holdup, I hope you'll give it another try.
The total lack of any reasonable support anywhere online outside of an IRC channel makes this a tough thing to justify. Guix is already a niche solution in a niche area of distributions and package management, and finding solutions to problems is hard enough. The fact that there's an actual social stigma to even mentioning the non-free repo dramatically reduces the chances you'll find any meaningful help online.
Heck, I recall hitting Google and trying to search for "Guix stock kernel" and finding zero meaningful results beyond some hints of a non-free repo that no one could point to or talk about in any of the "official" project venues.
IRC channels are what I consider the main support for the vast majority of free software projects. What else would there be? A forum or something? There's the manual and the mailing lists. If you meet users of Guix out in the wild you can talk to them wherever you are also. This doesn't seem particularly unique to me.
56 comments
[ 2.2 ms ] story [ 103 ms ] threadPolitics will always be there, even if they aren't talked about.
https://wingolog.org/archives/2021/03/25/here-we-go-again
http://wingolog.org/archives/2019/10/08/thoughts-on-rms-and-...
https://twitter.com/andywingo/status/1215946242225790983
regarding "bloody marxist" or whatever.. I like the a-political, personal emphasis of GNU .. that means, I can sit next to a Real Bloody Marxist, and drink coffee and debug $lspci output.. seriously, I am OK with that, it supports a worldview of 'tolerance'.. similarly for people with serious depression, people who have had trouble with food addictions, people who SMOKE TOBACCO ! all of that.. its part of a "plural society" which I personally support everyday.
back to lspci output here
It is encouraging that most free-software users/contributors can see past political squabbles and work on tech that improves society more objectively.
The problem is apolitical can easily be or become amoral, so I can't agree this is a virtue without further clarification. Some differents can and should be tolerated, but in the spirit of the paradox of tolerance others should not.
How would you feel if you released software under an MIT license that helped a neo-Nazi resurgence for instance?
>How would you feel if you released software under an MIT license that helped a neo-Nazi resurgence for instance?
Firstly, I disapprove of permissively-licensed software.
Secondly, if you're making technology whose goal is to empower individuals, and the majority of individuals want to overthrow their free government and replace it with some fascist dictatorship, then there will be some edge cases like that in which that technology has a net-negative effect on global freedom. I have no problem with that, that's the price of individual freedom and the right to self-determination.
I think what you're trying to say here is some variation of popper's paradox, wherein freedom-enabling technology gives people the freedom to take away their own freedom. While it's true to some extent, trying to make direct use of that principle like you're doing here can lead to some pretty disastrous results, because you can basically use it to justify any authoritarian action in the name of freedom. For example, what would you do in this instance? put backdoors in the software that these neo-nazis are using? Any attempt at limiting the anti-institutional power of the technology will certainly have a net-negative impact on global freedom, because the same modes of technology will used be used more crucially against tyrannical institutions than non-tyrannical ones.
Let me say this: I don't fear any of these fascist or communist dictatorships taking over the world. I think those are merely meta-stable ideologies that are eventually toppled if you put power and knowledge in the hands of individuals. What I am worried about is when the western world develops and exports surveillance technology which enables these dictatorships to continue their miserable existence in the first place.
Communism, Fascism, Corporatism, Cronyism: these systems will always come about in one form or another because they are the emergence of mankind's worst characteristics. The only way to eliminate them completely is to remove from man that which makes him human. That is why the tree of liberty must be refreshed from time to time.
https://rms-support-letter.github.io/
Misreprentation, FUD, discrimination, they all are literally faces of slandering, doing them is "doing the deeds of the devil" in a very literal sense.
https://rms-support-letter.github.io/
If you think it's alright to join an organization and then go out of your way to backstab its founder because his social skills are lacking, then you're free to do that.
https://github.com/NixOS/nixpkgs/blob/24903b5de2e07cc7b65eae...
Regardless of the person's views though I think if their code is clean and they're not actively applying said views to harm other contributors, live and let live...
Because it's under the GNU name and seems somewhat kernel-agnostic, I think this might lead to the case where we can finally point towards a operating system and say "that's GNU".
The big win you get with Guix over the package managers in the other systems you reference (except for Nix) is deterministic, bit-identical, reproducible builds.[1]
"as programmers we tend to lean towards application-specific languages where we ought to favor generic languages for the sake of simplicity"
Guix does use a general purpose programming language: Guile Scheme.
[1] - https://en.wikipedia.org/wiki/Reproducible_builds
That being said, I will look into guile anyways. I have a little project I'm working on that could benefit from a lisp-like configuration file, and I've currently implemented a crappy s-expression interpreter already.
I now use Nix to share configuration between my Macbook Pro, NixOS Desktop, VMs in my home lab, etc. Both Guix and Nix are amazing once you've developed your configuration, I'll never go back. I do a simple "./bin/nixos-update" and "./bin/macos-update" and Nix takes care of the rest.
Occasionally I'll pull something upstream that borks my machine; rolling back is so trivial, I'll just check nixpkgs for Issues to see what's going on, where usually I'll find a 1-liner to fix it or I'll wait for the next release.
Links to my configs https://github.com/dustinlyons/guix-config https://github.com/dustinlyons/nixos-config
With Nix, I had to learn how the whole thing works before I could even get started. Nix is not a "normal" language, you're essentially just writing chunks of configuration, organized across different files, building up to one big derivation (as Nix calls it) that gets interpreted.
Nix has syntax on how it expects the configuration to look and what configuration it expects to be defined. You can learn the syntax but it's still confusing (to me) as to what configuration is always expected. And errors can still be cryptic.
[1]: https://github.com/NixOS/nixpkgs
To test with your own config, it's easy to instead of importing nixpkgs, to import nixpkgs.applyPatches { patch } with a path to your fix.
And yes, overlays are a great way to quickly override attributes from a package definition, maybe while waiting on others to fix upstream ;)
The biggest negatives are packages being out of date or missing, updates failing due to a broken package, updates taking over 24 hours because you had bad timing and the build server hasn't built all the web browsers yet, and the configuration and packaging can seem complicated to a non-programmer. Oh, and qutebrowser is very broken and no one talks about it for some reason. I suspect at times that I'm its only user on Guix System...
I love having a list of packages easily edited with a text editor and then applied. Rollbacks are easy and useful. Partial upgrades help work around a few misbehaving packages stopping updates (whether broken or just long builds, you can skip them in the moment and then try updating them again later).
Most issues would be solved by having more contributors, which will probably come with time. Although you still need people who care about the same packages as you, or else your Guix Wishlist entries may sit around unpackaged for years, or your packaged things may stay on old versions.
I know several NixOS users, but I have struggled to get new people to stick with Guix System for more than a few weeks.
Things would also improve if I were to learn/contribute more myself, but I don't know that I have the spoons or the time. For now I'll just keep getting by with the little bit I know. Guix feels like the future, so I can't help but want to use it and support it, even when it's rough in some spots.
I can certainly admire and appreciate that level of idealism and adherence to principles, but unfortunately, at least IME, it limits where Guix could be adopted.
They simply do not wish to discuss non-free software in the main official channel. If this is your only holdup, I hope you'll give it another try.
Heck, I recall hitting Google and trying to search for "Guix stock kernel" and finding zero meaningful results beyond some hints of a non-free repo that no one could point to or talk about in any of the "official" project venues.
https://gitlab.com/nonguix/nonguix