Not logged in
Log in now
Create an account
Subscribe to LWN
LWN.net Weekly Edition for May 16, 2013
A look at the PyPy 2.0 release
PostgreSQL 9.3 beta: Federated databases and more
LWN.net Weekly Edition for May 9, 2013
(Nearly) full tickless operation in 3.10
But it still isn't clear: What are the differences between Guix and NixOS?
And why is-it a different distribution instead of adding features to NixOS?
GNU Guix launches
Posted Nov 26, 2012 11:25 UTC (Mon) by cmm (guest, #81305)
My understanding is that they forked Nix to replace its configuration language with Guile. Which is, at least in theory, pretty neat, and is probably very much interesting to Ludovic Courtès personally (he is the Guile maintainer, or was last I checked anyway).
The practical benefits of Guix over NixOS are less clear to me, but what do I know.
Posted Nov 26, 2012 13:11 UTC (Mon) by renox (subscriber, #23785)
Thanks for the clarification.
About Guile, I was thinking: it has been the default extension language recommended for GNU for a long time, yet it is very rarely used..
So I think that they should really define criteria to either really push Guile or to stop pushing it and looking for a different extension language: Python or Lua or OCaml would probably be much more successful..
Posted Nov 26, 2012 13:51 UTC (Mon) by cmm (guest, #81305)
The whole "standardized extension language" thing brings two benefits:
Which is all cool if you need to add an extension language to your program and haven't done so yet. If you already have one and it's not brain-dead — I don't really see much point in replacing it. Nix's configuration language does not seem brain-dead.
As for the alternatives: Lua is younger than Guile, I think, and anyway it's basically a Scheme with syntax (and some questionable design choices mixed in, like not requiring you to declare variables. It's amazing how much typo-related pain that is customarily ascribed to the dynamically-typed nature of "scripting" languages is actually the result of this particular brain damage which most of them share...). I don't know how nice Python is as an extension language — but it is not backward-compatible with itself, which in my eyes makes it a joke (yes, I know the whole world is in love with it anyway). This is not GNU advocacy, I'm just trying to illustrate the fact that their extension language policy (as I understand it) is not arbitrary.
Posted Nov 26, 2012 14:10 UTC (Mon) by renox (subscriber, #23785)
Yet Lua is much more used than Guile..
The number of users is not all that matters (otherwise this would be 'Windows Weekly News' not 'Linux Weekly News') but it still something to keep in mind to see if something is a success or a failure..
Posted Nov 26, 2012 14:16 UTC (Mon) by cortana (subscriber, #24596)
Posted Nov 26, 2012 14:20 UTC (Mon) by cmm (guest, #81305)
Yes, Lua is currently more used than Guile. You may want to consider that when Guile just started, everybody wondered "why not TCL?" or "why not Perl?". Later it got more like "why not Python?", and now it's "why not Lua?".
The X in "why not X?" keeps changing, and Guile is still there. :)
Also, as I said, surface syntax is really the least important thing in an extension/configuration language.
Posted Nov 26, 2012 14:33 UTC (Mon) by renox (subscriber, #23785)
So? Perl or Python are still much, much more used than Guile..
> Also, as I said, surface syntax is really the least important thing in an extension/configuration language.
You said it but it's not necessarily true: it's very likely that the syntax is a big part of the reasons why the Lisp family has so few users..
Posted Nov 26, 2012 14:37 UTC (Mon) by cmm (guest, #81305)
Posted Nov 26, 2012 16:34 UTC (Mon) by khim (subscriber, #9252)
Because it's quite relevant. When guile was starting it promised choice of languages to use in extending their program. Translators were supposed to make it possible to write in any language of your choice. Kind of like CLR but on top of scheme.
This was ambitious goal and it's implementation could have made guile much better then yet-another-language-run-of-the-mill-extension-language.
Yet last time I've checked guile was yet-another-version-of-scheme (as obscure and unknown by general public as any other scheme dialect) which made it kind of useless as an extension language.
Posted Nov 26, 2012 16:42 UTC (Mon) by cmm (guest, #81305)
Oh, I realize that.
Thing is, the GNU folks realize that quite well too. And since they haven't changed their policy yet, what makes anyone think that rehashing the same tedious arguments yet again will have any effect?
BTW, I believe Guile comes with a reasonably functional implementation of ECMAScript these days. I don't think anyone is using that, though. Perhaps that's selection bias at work (if you've already chosen Guile over, say, Lua, then it's a safe bet you like Scheme), and/or perhaps syntax is just Not Interesting enough anyway.
Posted Nov 26, 2012 17:30 UTC (Mon) by tzafrir (subscriber, #11501)
Posted Nov 27, 2012 0:09 UTC (Tue) by nix (subscriber, #2304)
Posted Nov 26, 2012 21:30 UTC (Mon) by khim (subscriber, #9252)
BTW, I believe Guile comes with a reasonably functional implementation of ECMAScript these days.
Really? Since when? Manual says ECMAScript was not the first non-Schemey language implemented by Guile, but it was the first implemented for Guile's bytecode compiler. The goal was to support ECMAScript version 3.1, a relatively small language, but the implementor was completely irresponsible and got distracted by other things before finishing the standard library, and even some bits of the syntax. So, ECMAScript does deserve a mention in the manual, but it doesn't deserve an endorsement until its implementation is completed, perhaps by some more responsible hacker.
Not a ringing endorsement to say the least. The only language which is kinda-sorta-maybe-supported is Emacs Lisp and it's not clear why anyone will want that if they don't like Scheme.
P.S. It's funny, really. Guile is still pushed really hard by FSF backers and it's used in some fringe projects (like Lilypond, or Gnucash, or, I don't know, Guix) but when serious people need real scripting for their real needs they choose... something else. In fact you can easily see when project built around guile tries to finally reach normal people: it's when guile is finally get a sane alternative.
Posted Nov 26, 2012 23:09 UTC (Mon) by elanthis (guest, #6227)
Posted Nov 27, 2012 0:10 UTC (Tue) by nix (subscriber, #2304)
Posted Nov 27, 2012 1:27 UTC (Tue) by elanthis (guest, #6227)
Posted Nov 26, 2012 17:57 UTC (Mon) by vonbrand (subscriber, #4458)
"Uniform surface syntax" among extension languages doesn't matter that much, what matters much more is uniform(ish) syntax/programming model with whatever the user does all day long. Scheme might be the nicest extension language around, but if you program C all day it will be all Greek to you. Plus what "power users" really do is to tweak the configuration a bit, or add some piece of code found on the Internet. They do not waste a significant slice of their time futzing around with configurations/extensions of the tools.
Posted Nov 26, 2012 15:18 UTC (Mon) by SEJeff (subscriber, #51588)
Guix & Nix
Nix is really two things: a package build tool, implemented by a library
and daemon, and a special-purpose programming language. Guix relies on
the former, but uses Scheme as a replacement for the latter.
Technically, Guix makes remote procedure calls to the ‘nix-worker’
daemon to perform operations on the store. At the lowest level, Nix
“derivations” represent promises of a build, stored in ‘.drv’ files in
the store. Guix produces such derivations, which are then interpreted
by the daemon to perform the build. Thus, Guix derivations can use
derivations produced by Nix (and vice versa); in Guix, the cheat code is
the ‘nixpkgs-derivation’ procedure. :-)
With Nix and the Nixpkgs distribution, package composition happens at
the Nix language level, but builders are usually written in Bash.
Conversely, Guix encourages the use of Scheme for both package
composition and builders.
Posted Nov 26, 2012 12:37 UTC (Mon) by Cyberax (✭ supporter ✭, #52523)
Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds