Good evening! Below is a list of GSoC ideas for GNU Guix. Guix people: you’re welcome to put your name as the mentor of one of the projects below, and to propose other ideas. Thanks! Ludo’.

Supporting binary package distribution through GNUnet

GNU Guix provides a transparent binary/source deployment model. A server can claim: “hey, I have the binary for /nix/store/v9zic07iar8w90zcy398r745w78a7lqs-emacs-24.3!”, where the base32 string uniquely identifies a build process. If you trust that server to provide genuine binaries, then you can grab them instead of building Emacs locally.

The “traditional model” has been to have a build farm build and serve binary packages. In that model, users trust the build farm to provide authentic binaries.

The project aims to provide a practical decentralization distribution mechanism for binary packages, using GNUnet’s file sharing service. In that model, users would be able to automatically share binaries they have built locally, and to install binaries built by other users. This is part of a broader goal of disintermediation among users, and between users and upstream software developers.

Problems to be solved include the authentication of binary packages, user privacy, and the development of a user interface that makes it trivial to contribute package build results.

Mentor: Ludovic Courtès

Package management from Emacs

The goal of this project is to write a complete package management user interface for use in GNU Emacs. The UI would provide the same functionality as the guix package command, but using an interface similar to that of package.el.

Mentor: Ludovic Courtès

Porting Guix to GNU/Hurd

GNU Guix currently supports building packages for GNU/Linux only. The goal of this project would be to allow it to cross-build and build packages for GNU/Hurd, and to provide a virtual machine image that boots into such a system.

This would involve packaging Mach/Hurd/MiG/libc, adjusting allowing cross-compilation to GNU/Hurd, cross-compiling the “bootstrap binaries” for GNU/Hurd, and then working towards support for GNU/Hurd in the (gnu system) Guix modules. This last point would allow a VM image of the complete system to be built.

Mentor: Ludovic Courtès