That is great news Pierre :)
On Fri, Dec 13, 2019 at 03:48:37PM +0100, Pierre Neidhardt wrote:
> Dear Guix community!
>
> I'm happy to let your know that my application to the NLNet "Next
> Generation Internet -- Search & Discovery" grant for Guix has been
> accepted!
>
> See https://nlnet.nl/project/GUIX/ (the description is misleading, see below).
> See also the European Union initiative website: https://www.ngi.eu/.
>
> This will allow me to work on Guix for a flexible period, probably between 6
> months and 1 year.
>
> The bad news: Nope, IPFS is not part of the grant! :p So I won't be working
> on
> it myself in the context of NGI. But who knows, if I get extra time... (Or
> anyone else ;p).
>
> Here follows the current plan (subject to change). Ideas are welcome!
>
>
>
> /The main goal is to enhance search and discovery of Guix packages and
> services
> via a catalogue. The subgoal is to complete what “packages” and “services”
> are in
> Guix by completing them and broadening their domain./
>
> 1. Parameterized packages
> (Previous discussion:
> https://lists.gnu.org/archive/html/guix-devel/2019-05/msg00285.html)
>
> Gentoo’s 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.
>
> Milestone(s)
> * Implement parameterized package support (mostly Guile code).
> * Write tests.
> * Document.
> * Community review.
>
> 2. File search
> (Previous discussion:
> https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00236.html)
>
> 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.
>
> Milestone(s)
> * Implement file paths caching in the daemon (mostly C++).
> * Implement high-level command line interface for file search (mostly
> Guile).
> * Write tests.
> * Document.
> * Community review.
> * Deploy on the build farms.
>
> 3. User services
>
> Previous discussions:
> - Guix shepherd user services:
> https://lists.gnu.org/archive/html/guix-devel/2019-02/msg00128.html
> - Julien's home manager:
> https://lists.gnu.org/archive/html/guix-devel/2019-09/msg00185.html
> - Nix Home Manager: https://nixos.wiki/wiki/Home_Manager
> I believe there were many more discussion on user services on the
> mailing list, feel free to share them!
>
> 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.
>
> Milestone(s)
> * 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 don’t have to install GnuPG explicitly, Guix+Shepherd will take care
> of that.
> * Implement service search.
> * Write tests.
> * Document.
> * Community review.
>
> 4. Graphical user interface (GUI)
>
> *Question*: I recently read an email about someone (an intern?) working on
> a
> graphical installer. Can't find the email back though. Is someone still
> working on it? There could be a lot of work to factor here.
>
> 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.
>
> Milestone(s)
> * Discuss with the Accessibility Group for the requirements.
> * Implement the GUI using Gobject-Introspection (Guile).
> 1. Live fuzzy-search.
> 2. Search packages.
> 3. Search file paths.
> 4. Search system/user services.
> 5. Configuration editor (generates a Guile configuration).
> * Write tests.
> * Document.
> * Community review.
>
> 5. Social integration with the Guix catalogue
>
> Previous discussions:
> - Adding wikidata, wikipedia & screenshot-url fields to
> package-recipes:
> https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00007.html
> - Re-approaching package tagging:
> https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00385.html
> - New library: guile-wikidata:
> https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00107.html
> - Guix <-> Wikidata:
> https://lists.gnu.org/archive/html/guix-devel/2019-05/msg00017.html
> - Guix Wikidata module - next steps:
> https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00089.html
>
> There were also a few discussions regarding package search improvements, in
> which has Zimoun participated quite a bit if I recall correctly. Feel free
> to share all your precious links! :)
>
> Guix packages can be search 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 make it possible to a wide audience to
> contribute to
> such a catalogue.
>
> Milestone(s)
> * Discuss with Guix, Nix, Debian and other distributions about the
> possibility to centralize the catalogue. What about using Wikidata?
> * Implement the catalogue.
> 1. Add package recommendation suggestions.
> 2. Add (optionally anonymous) statistics (e.g. number of downloads).
> 3. Add (optionally anonymous) ratings.
> 4. Add tag lookup for packages/services.
> * Integrate the catalogue with Guix command line (mostly Guile).
> * Integrate the catalogue with the Guix GUI (mostly Guile).
> * Write tests.
> * Document.
> * Community review.
>
> --
> Pierre Neidhardt
> https://ambrevar.xyz/