HNHacker News
TopNewBestAskShowJobs

civodul

254 karma · joined February 24, 2013

submissionscomments
civodul··on GNU Guix 1.2.0
I think users may find it easier to create a Docker image with `guix pack -f docker app1 app2` than to write a Dockerfile.

As a bonus, the resulting Docker image is bit-reproducible and recipients of the image can "map it back" to the original Guix revision.

https://guix.gnu.org/manual/en/html_node/Invoking-guix-pack....

civodul··on Guix Further Reduces Bootstrap Seed to 25%
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... .
civodul··on Guix Further Reduces Bootstrap Seed to 25%
The latest release notes at https://guix.gnu.org/blog/2020/gnu-guix-1.1.0-released/ give some insights about the project's activity. Currently there's ~90 monthly contributors and ~1,700 commits per month. It's active. :-)
civodul··on GNU-FSF Cooperation Update
Yeah. Some of us GNU hackers submitted concrete proposals to the FSF back in December: https://lists.gnu.org/archive/html/gnu-misc-discuss/2019-12/... . Radio silence.
civodul··on The GitHub registry public beta is live
The `--with-commit` and related options of Guix is one step in that direction: https://guix.gnu.org/manual/en/html_node/Package-Transformat... .

What you suggest in the second paragraph sounds great and definitely doable!

civodul··on GNU Guix package definitions for Gov.uk software and systems
Guix is a tool for declarative and reproducible software deployment. You can view it as a package manager, but it's also an OS configuration management tool, a container image provisioning tool, and more.

Guix 1.0 was released just two months ago. The announcement summarizes what it can do for you in these areas: https://guix.gnu.org/blog/2019/gnu-guix-1.0.0-released/ .

civodul··on GNU Guix package definitions for Gov.uk software and systems
Nix & Guix both implement the functional deployment model pioneered by Nix, but I do not see Guix as a "fork" of Nix.

It's also much more than a matter of syntax: see the great explanation at https://news.ycombinator.com/item?id=18910683 .

civodul··on GNU Guix package definitions for Gov.uk software and systems
Guix provides interoperability with Docker: the 'guix pack' command builds Docker images of applications, and 'guix system docker-image' builds images containing a complete system with services, etc.

So Guix gives you reproducibility, provenance tracking, and hackability, but you can still "speak Docker".

civodul··on GNU Guix 1.0.1 Released
The "About GNU Guix" section at the bottom of the post should shed some light...
civodul··on GNU Guix 1.0
> [1] https://github.com/flyingcircusio/vulnix

Similarly, ‘guix lint’ has a CVE “checker” that reports CVEs that affect a given package [0]. Since the Guix package name might differ from the “CPE name” (the naming scheme devised by NIST), Guix package definitions can include the CPE name to make sure ‘guix lint’ will look for the right thing. ‘guix lint’ is also able to determine whether a vulnerability is already patched in the Guix package definition.

There’s also work on a ‘guix health’ program in the pipe [1], which is again complicated by this whole CPE story (which Vulnix seems to ignore.)

Last but not least, Guix has “grafts”, a mechanism that allows for fast security update deployment, meaning that rebuilding the world is unnecessary when applying a security update on a package deep down in the dependency graph [2, 3].

[0] https://gnu.org/s/guix/manual/en/html_node/Invoking-guix-lin...

[1] https://issues.guix.info/issue/31442

[2] https://www.gnu.org/software/guix/blog/2016/timely-delivery-...

[3] https://www.gnu.org/software/guix/manual/en/html_node/Securi...

civodul··on GNU Guix 1.0
> the package maintainer story is a bit off putting for me.

I actually added the per-package ‘maintainers’ field in Nixpkgs [0] and removed it in Guix [1]. :-)

[0] https://github.com/NixOS/nixpkgs/commit/7b7ed8f1af447f7d2ddb...

[1] https://git.savannah.gnu.org/cgit/guix.git/commit/?id=154f1f...

In Guix we came to the conclusion [2] that having shared package “ownership”—or, to put it differently, not having explicit ownership—is a solution that works best for us. In practice, most packages have a few associated experts who take care of most updates and fixes to them. However, as a group, the fact that there’s no name explicitly attached to the package means that every committer can feel empowered to modify it.

The pros and cons of per-package maintainers are often debated, notably in the context of Debian where strong ownership has shown its limits [3].

[2] https://lists.gnu.org/archive/html/guix-devel/2015-12/msg000...

[3] https://lwn.net/Articles/708163/

civodul··on Guix: An advanced operating system
Compared to Nix 1.x (not sure about 2.x), I think it's simpler to use (Guix co-maintainer here and before that a Nix contributor). This is the reference of 'guix package' (analogous to 'nix-env'):

https://gnu.org/s/guix/manual/en/html_node/Invoking-guix-pac...

Because it's all Scheme, Guix has well defined APIs for all sorts of things. For instance, there's an API for search paths (environment variables you need to define when you install packages), one to create application bundles, one to create VMs containing GuixSD, etc.

That, in turn, leads to clean CLIs in my opinion: 'guix package --search-paths', 'guix pack', 'guix system vm', etc.

civodul··on Guix: An advanced operating system
Wisp provides a Python-like syntax for Scheme that gives you something very close to the above: http://draketo.de/english/wisp . (Though me and my editor don't view parentheses as an obstacle, quite the opposite...)
civodul··on Announcing the GNU Kind Communication Guidelines
Good to hear; I know of other GNU maintainers who feel the same, I don't think we're isolated. FWIW, Guix adopted the Contributor Covenant and it's worked great for us—our reaction to incidents is firm but it has never been "punitive" contrary to what RMS suggests.
civodul··on Announcing the GNU Kind Communication Guidelines
As co-maintainer of GNU Guix, I want to point out that the views expressed in Richard Stallman's message are his and not those of the Guix maintainers.

In particular, by writing that codes of conduct are "punitive spirit", RMS shows a misunderstanding of how these texts came into existence.

More importantly, by writing that he disagrees with "making diversity a goal", RMS seems to deny the role we free software people play in the demographics of our communities.

Many of us in Guix (and I think I can speak for my fellow Guix co-maintainer here) believe that free software should empower everyone. As such, correcting the biases, conscious or not, that have led to the poor diversity of our communities, must be part of our mission.

civodul··on GNU Shepherd 0.5.0 released
Guile 3 is truly exciting indeed. See the latest news at https://lists.gnu.org/archive/html/guile-devel/2018-09/msg00... .
civodul··on GNU Shepherd 0.5.0 released
> You'd lose a lot of software choices. Actually, the restriction to "GNU-friendly software" was what made me skip GuixSD so far.

Guix includes free software packages of all sorts (more than 8k today), be it "GNU-friendly" (whatever that means) or not; you can browse them at https://guix-hpc.bordeaux.inria.fr/browse .

> I guess that my WiFi wouldn't work.

Maybe, maybe not; see https://gnu.org/s/guix/manual/en/html_node/Hardware-Consider... (the same issue applies to other distros that value user freedom.) Note that you're talking about GuixSD here, not Guix, which can be installed on top of other distros.

In the end the choice is up to each one of us. It's also up to us to determine what to do with hardware companies that deny us, collectively and individually, the right to control the devices they sell us.

civodul··on Tarballs, the ultimate container image format
Interesting! The trick that Exodus uses (invoking ld-linux.so directly) is very smart. Perhaps an option to add to 'guix pack' in the future. :-)
civodul··on Linux sandboxing improvements in Firefox 60
Nice to see this happen! In a similar vein, in Guix we've been discussing ways to run any installed program in its own namespaces, with only the appropriate resources mapped into them: https://lists.gnu.org/archive/html/help-guix/2018-01/msg0005... .

User namespaces slowly but surely help retrofit the "principle of least privilege" to GNU/Linux, and that is good.

civodul··on Futures of distributions
The QA part has to do with processes, not technique (Scheme vs. Nix, etc.) I think we (Guix) are doing pretty good with our review process for packages and general attention to packaging issues—bundling, security issues, package size, integration, etc. These are practices similar to those of Debian, though I must say Debian remains the gold standard to me. :-)

As for GuixSD, you are right that the Shepherd, for instance, is not as mature as systemd (it’s also much simpler though). My comment was referring to packaging QA.

I do think that the ability to statically check a number of properties on a GuixSD config before it’s even instantiated (something that using a general purpose language buys us) helps a lot, though.

civodul··on Futures of distributions
As a Guix person, I pretty much disagree with Joey's conclusion that some things—essentially QA and license checks—may “need to be jettisoned”. Those things, to me as a user, are one of the big pluses of Debian (and hopefully Guix).

Yet, it’s pretty obvious that today, traditional distros can no longer pretend to provide every single free software package that’s out there—let alone providing them with the level of QA and polishing that Debian, Fedora, Guix, and others provide.

In Guix we currently semi-automatically import package definitions from third-party repos like Hackage, PyPI, and the likes, for which we do some additional QA: https://gnu.org/s/guix/manual/html_node/Invoking-guix-import... .

One idea we discussed would be to offer as an option the ability to to “live imports”: users could install packages imported on the fly from these repos, while still taking advantage of the Guix user interface, transactional upgrades and rollback, and other goodies.

That could be a way to address user needs without throwing the baby with the water. There are technical challenges before we can get there, though…

civodul··on Reproducible Arch Linux
The main difference between the Arch/Debian approach and that of Nix and Guix is that Nix and Guix "normalize" the build environment using containers, whereas Arch, Debian, and others aim to achieve bit-reproducibility in spite of differences in the build environment.

Thus some of the issues that apply to Arch or Debian do not apply to Guix and Nix, but many apply to both (timestamps are an obvious example.)

For Guix we are currently at ~80% reproducible packages: https://gnu.org/software/guix/news/reproducible-builds-a-sta... . That's not an entirely fair comparison because, for example, Python packages in Guix include .pyc files whereas on Debian they don't (not sure about Arch).

civodul··on Typing Nix
As I explained in another comment, Scheme is indeed dynamically-typed (like Nix), but it's also strongly typed: one can define new data types, they are disjoint, and there can be no casts and the like. In Guix "packages" and "operating systems" are different types, you get a type error if you use one instead of the other; in Nix both are "attribute sets" (key/value dictionaries.)

I think the one-type-fits-all ("attribute sets") vs. strong typing (disjoing record types) axis matters more than the static vs. dynamic axis here because most of the code (OS config files, package definitions, etc.) is loaded dynamically.

civodul··on Typing Nix
The problem with Nix in terms of typing is that it relies a lot on key/value dictionaries ("attribute sets" in Nix parlance). These data structures are dynamic in nature. All a static type checker can say is "yeah this is an attribute set". In addition, Nix does not offer a way to define new disjoint data types.

Conversely in Guix most of the data structures are disjoint record types. Scheme (the implementation language of Guix) is dynamically-typed, but there are sanity checks we can do on records both at macro-expansion time and at run time, such as checking whether all the required fields are defined and no extra field is passed. Concretely, this means that users get clear syntax errors or run-time type errors.

Nix and Scheme are both dynamically typed, but they have a different typing story.

Disclaimer: Guix hacker here.

civodul··on Creating bundles with guix pack
Thanks to user namespaces, it's easy to map, say, /home/myself/gnu to /gnu, as shown in the article (with "unshare").

For cases where user namespaces are unavailable, Pjotr Prins wrote a neat hack that allows users to "relocate" binaries to a different file system location by rewriting file names in the binaries: https://github.com/pjotrp/gnu-install-bin . Scary to some, but definitely does the job. :-)

civodul··on Show HN: Develop your Python applications easily in clean Docker environments
Docker sounds heavyweight for this purpose, given that it essentially spawns a complete userland separate from the host.

I work on Guix; it provides a 'guix environment' command, which is sort of a generic 'virtualenv', and IMO is a simple lightweight alternative: https://gnu.org/s/guix/manual/html_node/Invoking-guix-enviro... .

civodul··on Distributing NixOS with IPFS
Nice project! Guix had a GSoC student working on binary distribution using GNUnet's file sharing component a while back: https://gnu.org/s/guix/news/gsoc-update.html . That has not led (yet?) to production code, but there might be ideas worth sharing.
civodul··on A tool to make Windows builds reproducible
It may be a helpful tool from an engineering viewpoint, but I think it misses the big picture of _why_ reproducible builds matter:

https://gnu.org/software/guix/news/reproducible-builds-a-mea...

civodul··on The Deletion of gcj
Seconded. With GCJ, Java had a bootstrapping path from C/C++, unlike all the current single-implementation languages: Rust, GHC, etc.

Having this path is important from a security and user freedom viewpoint: we could build OpenJDK from source.

Not having such a bootstrap path means relying on huge opaque binary blobs, which is a net loss.

civodul··on Cygwin library now available under GNU LGPL
Is Red Hat suggesting there are no "commercial opportunities" with Linux, Wordpress, GCC, FFmpeg, etc., which are under the GPL?
← PreviousPage 2 of 3Next →