Commit 8ae1e6f2 authored by Ambrevar's avatar Ambrevar

guix-nlnet2020: Init.

parent 6c4e6576
Pipeline #110798435 passed with stages
in 1 minute and 15 seconds
#+TITLE: Guix: "Search & Discovery" NLNet grant 2020
I'm happy to let your know that my application to the NLNet /Next
Generation Internet -- Search & Discovery/ grant for Guix has been
You'll find official grant entry here: (the
description is misleading, read on for the actual plan).
See also the [[][European Union NGI website]] behind this initiative.
This grant will allow me to work on Guix for a flexible period of time, probably
between 6 months and 1 year.
Here follows the current plan which is still subject to change. Ideas,
suggestions and criticism are welcome!
: The main goal is to enhance search and discovery of Guix packages and services
: via a catalogue. The subgoal is to refine the meaning of packages and
: services within the context of Guix by completing them and broadening their
: domain.
While I'll be financially supported by the grant for these specific tasks, I
also commit significant work into the development and promotion of Guix and
related projects on my limited free time. (See my [[../projects/][other projects]]). If you like
what I do and would like help me spend more time on Guix and make free software
greater every day, consider supporting me financially, I'd be tremendously
grateful for every little bit of help :)
#+HTML: <center><script src=""></script></center>
#+HTML: <center><noscript><a href=""><img alt="Donate using Liberapay" src=""></a></noscript></center>
Thank you!
Next follows the list of tasks I aim to tackle.
* Parameterized packages
Gentoos package manager, Portage, exposes a USE flags feature which allows
users to customize packages in a way that composes (e.g. disable the GUI
elements of all packages for a headless server). This essentially subdivides
packages into smaller components. Since those components form the smallest
atoms a user could search for, this is a prerequisite for the rest of the
searchability improvements.
The goal of this task is to implement some form of easy-to-use, composable
package parameterization.
* File search
Many package managers support looking up packages by the file paths they
include. This feature is missing in Guix while being crucial for search,
e.g. when the user knows the executable name which happens to be different from
the package name.
The goal of this task is to allow the user to search for any packaged file,
installed or not.
* User services
Guix provides excellent integration with GNU Shepherd for system services (all
configurations are programmable and composable using Guile). But it lacks
integration for user services. User services can be used to replace much of the
traditional dotfiles which are often ad-hoc hacks (e.g. environment variables,
scripts, various program configurations such as GnuPG). The benefit is as for
packages: the work of one can be redistributed to many. Finally, services are
not searchable with Guix. We could fix this issue.
The goal of this task is to integrate Guix with GNU Shepherd to support user
services. A user service should then automatically require the necessary
packages, just like a system service does. For instance if the user sets up a
GnuPG service, they dont have to install GnuPG explicitly, Guix+Shepherd will
take care of that.
- Guix shepherd user services:
- Julien's home manager:
- Nix Home Manager:
- ...? I believe there were many more discussion on user services on the
mailing list, feel free to share them!
* Graphical user interface (GUI)
Guix comes with a command line interface and some Emacs interfaces. None of
them are particularly newcomer-friendly. Besides, much of the configuration is
done by editing Guile files.
The goal of this task is to make Guix more accessible to non-tech users by
providing an intuitive user interface to most of Guix actions, in particular:
- manage channels,
- manage profiles,
- live fuzzy-search everything (packages, files, services),
- edit the (system) configuration.
* Social integration with the Guix catalogue
Guix packages can be searched from the package name, the synopsis (a one-liner)
and the description (a paragraph). The goal here is to extend the
discoverability of both packages and services thanks to a /catalogue/. If
possible, we would like to enable a wide audience to contribute to such a
- Discuss with Guix, Nix, Debian and other distributions about the
possibility to centralize the catalogue. What about using [[][Wikidata]]?
- List of possible social traits for a package:
- Recommendation suggestions.
- (Optionally anonymous) statistics (e.g. number of downloads).
- (Optionally anonymous) ratings.
- Tags. Tags are not objective but are fashionable (some tag meaningful one
day may not ring a bell in 2 years). Thus they should not be part of the
package definition; they really belong to the (external) social traits of
the package.
- Adding wikidata, wikipedia & screenshot-url fields to package-recipes:
- Re-approaching package tagging:
- New library: guile-wikidata:
- Guix <-> Wikidata:
- Guix Wikidata module - next steps:
- ...? I recall there were more discussions, feel free to share them if you can
find them!
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment