guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: website: Add draft post about the Guile guix-daem


From: Christopher Baines
Subject: branch master updated: website: Add draft post about the Guile guix-daemon.
Date: Fri, 13 Oct 2023 15:13:35 -0400

This is an automated email from the git hooks/post-receive script.

cbaines pushed a commit to branch master
in repository guix-artwork.

The following commit(s) were added to refs/heads/master by this push:
     new 16b3181  website: Add draft post about the Guile guix-daemon.
16b3181 is described below

commit 16b31811091618e1c13147946005bccf9df2d7e2
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Fri Oct 13 19:50:50 2023 +0100

    website: Add draft post about the Guile guix-daemon.
    
    * website/drafts/guile-guix-daemon-introduction.md: New file.
---
 website/drafts/guile-guix-daemon-introduction.md | 94 ++++++++++++++++++++++++
 1 file changed, 94 insertions(+)

diff --git a/website/drafts/guile-guix-daemon-introduction.md 
b/website/drafts/guile-guix-daemon-introduction.md
new file mode 100644
index 0000000..170ff55
--- /dev/null
+++ b/website/drafts/guile-guix-daemon-introduction.md
@@ -0,0 +1,94 @@
+title: Building a Guile guix-daemon
+author: Christopher Baines
+tags:
+date: 2023-10-13 14:30:00
+---
+
+When using Guix, you might be aware of the
+[daemon](https://guix.gnu.org/en/manual/en/html_node/Setting-Up-the-Daemon.html).
+It runs in the background but it's a key component in Guix.  Whenever
+you've been using Guix to operate on the store, whether that's
+building something or downloading some substitutes, it's the daemon
+managing that operation.
+
+The daemon also is a key part of the history of Guix.  The Guix
+project started mixing Guile with ideas from the Nix project, and the
+guix-daemon is a fork of the nix-dameon with some tweaks made over the
+years.  Rather than being implemented in Guile though, the daemon is
+implemented in C++.  Given the focus on Guile in Guix, this is
+unusual, and I believe it's made working on the daemon less desirable,
+especially since rewriting it in Guile has been discussed for many
+years now.
+
+# What would a Guile guix-dameon mean?
+
+Guix already has code written in Guile for doing some of what the
+daemon does internally, so being able to use this Guile code inside
+and outside the daemon would simplify Guix and allow removing the C++
+code.
+
+There isn't Guile code yet for everything the daemon does though, so
+getting to this point will make new exciting features easier to
+implement.  That could be things like making it easier to use Guix in
+environments where running the dameon in the usual way is inconvinient
+or infeasible.  It may also help with portability, so help with
+running Guix on the Hurd and new architectures.
+
+As someone who's more experienced writing Guile than C++, I'm also
+hoping it'll generally make hacking on the dameon more accessible.
+This in turn might lead to new features.  For example, I think having
+a Guile guix-daemon will simplify implementing a way to jump in to a
+build and inspect the environment.
+
+With some [monetary support from 
NLNet](https://nlnet.nl/project/GuixDaemon-Guile/),
+I'm planning to focus for the next year on getting a Guile
+implementation of the guix-daemon written and adopted.
+
+# A technical plan
+
+Building on the [recent 
discussion](https://lists.gnu.org/archive/html/guix-devel/2023-09/msg00328.html)
+of this topic on the guix-devel mailing list, here's some technical
+thoughts on how I'm approaching this.
+
+While I think there's a substantial amount of work to do, progress
+towards a Guile guix-daemon has already been made.  Given that things
+in Guix have probably changed since this work has happened, I plan to
+carefully review that existing work (most of which can be found on the
+`guile-daemon` branch) so that I can build upon it.
+
+The priority for the Guile daemon is backwards compatability, so the
+plan is to allow switching between the C++ implementation and Guile
+implementation which any issues.  This'll require not making changes
+to the database schema, and generally doing things in a way which the
+current C++ daemon will understand.
+
+Like the build coordinator, I'm planning to make the daemon a single
+process using Guile Fibers for parallelism.  This is in contrast to
+the forking model using by the C++ daemon.  Even though it's not a
+priority to address feature issues with the current dameon, this
+approach might help to reduce database contention issues experienced
+with the current daemon, and allow for less locking, like not having
+the big GC lock for example.
+
+# Progress reports
+
+I'm planning on publishing more blog posts as the project progress, so
+keep an eye on the Guix blog for future updates.
+
+#### About GNU Guix
+
+[GNU Guix](https://guix.gnu.org) is a transactional package manager
+and an advanced distribution of the GNU system that [respects user
+freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.html).
+Guix can be used on top of any system running the Hurd or the Linux
+kernel, or it can be used as a standalone operating system
+distribution for i686, x86_64, ARMv7, AArch64 and POWER9 machines.
+
+In addition to standard package management features, Guix supports
+transactional upgrades and roll-backs, unprivileged package
+management, per-user profiles, and garbage collection.  When used as a
+standalone GNU/Linux distribution, Guix offers a declarative,
+stateless approach to operating system configuration management.  Guix
+is highly customizable and hackable through
+[Guile](https://www.gnu.org/software/guile) programming interfaces and
+extensions to the [Scheme](http://schemers.org) language.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]