From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <guix-devel-bounces+larch=yhetil.org@gnu.org>
Received: from mp12.migadu.com ([2001:41d0:403:4789::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by ms9.migadu.com with LMTPS
	id iADUNFzjAWVv9AAAauVa8A:P1
	(envelope-from <guix-devel-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Wed, 13 Sep 2023 18:29:17 +0200
Received: from aspmx1.migadu.com ([2001:41d0:403:4789::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by mp12.migadu.com with LMTPS
	id iADUNFzjAWVv9AAAauVa8A
	(envelope-from <guix-devel-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Wed, 13 Sep 2023 18:29:16 +0200
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by aspmx1.migadu.com (Postfix) with ESMTPS id 99C324ACE6
	for <larch@yhetil.org>; Wed, 13 Sep 2023 18:29:16 +0200 (CEST)
Authentication-Results: aspmx1.migadu.com;
	dkim=none;
	spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org";
	dmarc=none
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org;
	s=key1; t=1694622556;
	h=from:from:sender:sender:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:mime-version:mime-version:
	 content-type:content-type:list-id:list-help:list-unsubscribe:
	 list-subscribe:list-post; bh=qZ6c95UNf1yEj3CFhL38+8Env6/G/I96n2ubdH22ZT0=;
	b=MDK1WNmGzD3ZRRxn1NUpI/QDvQOyzznRDQVEI64r4f/zHMuBfyWNtCVZ0VtLNTNPxcxWpr
	2mNvAoWEfGi6ZEWa5NA3kEhZR1bQyEhZ3PXQNi9SKc2LZvXWtzIfq21YXa5gx+dfXMprQI
	rBZJLoXV6O0rKBG5Kde2kaAwD8tnSA/YU16t8Fya1baEE3kQnc0RLXwrcQOhDcuFnqV23x
	OeDBZa1JbGIFk3pSFyACRY8tZLtQv0xTrnHY5stOyZ8GL1W6o6edM/akvvdYNjGgdB8Cb1
	jLf/Vqdr7ItMBYXtSYG+lATfWWxWLNqVFqS6GzF+W/vfTfXjvObQcJgohAWq5w==
ARC-Authentication-Results: i=1;
	aspmx1.migadu.com;
	dkim=none;
	spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org";
	dmarc=none
ARC-Seal: i=1; s=key1; d=yhetil.org; t=1694622556; a=rsa-sha256; cv=none;
	b=ExVxtKQbA9FN2CZKvfSQsXk2vbxQWOt1eJ3u4H6rXvyoYf8AA3lA5NkAgoitaTWcC5twMv
	MesfPMVuNGdPsqGp3+Bl/4txbWyoKuV+Kug2x9tG39PXzCRGZE4qPv9duB5lVCYjUTaqIZ
	pRXE+VpHXLMtPRr+PU5ixP2Ut6Ury+pF1fnXBxX6Sq+Jizj75SD5thTn5aMEp1Ez3NbVd4
	hX/jNEmLnxZMGMBstwltTxZj+KD5f45pw/07w7RU5NZuOmhHBvGf78hsM+HBksqZLIl+Nd
	WSbTMsmK0p17jo1ClPeteoWxC1RjSk2ftQ19tPnm7m9KqhO+S8Io5M2emoH8ng==
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <guix-devel-bounces@gnu.org>)
	id 1qgSjM-0007hJ-Pz; Wed, 13 Sep 2023 12:28:44 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <mail@cbaines.net>) id 1qgSjL-0007h8-RU
 for guix-devel@gnu.org; Wed, 13 Sep 2023 12:28:43 -0400
Received: from mira.cbaines.net ([2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27])
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <mail@cbaines.net>) id 1qgSjE-0004KD-51
 for guix-devel@gnu.org; Wed, 13 Sep 2023 12:28:43 -0400
Received: from localhost (unknown [217.155.61.229])
 by mira.cbaines.net (Postfix) with ESMTPSA id 91F0027BBE2
 for <guix-devel@gnu.org>; Wed, 13 Sep 2023 17:28:32 +0100 (BST)
Received: from felis (localhost [127.0.0.1])
 by localhost (OpenSMTPD) with ESMTP id 6a7e38f2
 for <guix-devel@gnu.org>; Wed, 13 Sep 2023 16:28:32 +0000 (UTC)
User-agent: mu4e 1.10.5; emacs 28.2
From: Christopher Baines <mail@cbaines.net>
To: guix-devel@gnu.org
Subject: Implementing the guix-dameon in Guile
Date: Wed, 13 Sep 2023 16:36:54 +0100
Message-ID: <875y4et4up.fsf@cbaines.net>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
Received-SPF: pass client-ip=2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27;
 envelope-from=mail@cbaines.net; helo=mira.cbaines.net
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: guix-devel@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Development of GNU Guix and the GNU System distribution."
 <guix-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/guix-devel>,
 <mailto:guix-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/guix-devel>
List-Post: <mailto:guix-devel@gnu.org>
List-Help: <mailto:guix-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/guix-devel>,
 <mailto:guix-devel-request@gnu.org?subject=subscribe>
Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org
Sender: guix-devel-bounces+larch=yhetil.org@gnu.org
X-Migadu-Flow: FLOW_IN
X-Migadu-Country: US
X-Migadu-Scanner: mx1.migadu.com
X-Migadu-Spam-Score: -3.51
X-Spam-Score: -3.51
X-Migadu-Queue-Id: 99C324ACE6
X-TUID: VrCHnqBC0rGC

--=-=-=
Content-Type: text/plain

Hey!

I think this has been talked about for a while [1], but I want to make it
happen. Currently the guix-daemon is still similar to the nix-daemon
that it was forked from, and is implemented in C++. I think that a Guile
implementation of the guix-daemon will simplify Guix and better support
hacking on and around the daemon to add new features and move Guix
forward.

1: https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/ROADMAP.org#n71

My plan is to focus on this over the next year. I left my previous day
job quite a few months ago now to take a bit of a break, that's the main
reason I've been able to spend more time trying to push forward some of
the QA stuff. With some monetary support from NLNet [2], I'm planning to
continue this break and focus for the next year on getting a Guile
implementation of the guix-daemon written and adopted.

2: https://nlnet.nl/project/GuixDaemon-Guile/

Rewrites are risky because you only get the value right at the end,
therefore the priority is to get a minimal but viable implementation in
Guile that can be switched to, and not to get distracted on adding or
improving functionality unnecessarily. That is better done once the new
implementation has been adopted.

While I think there's a substantial amount of work to do, progress
towards a Guile guix-daemon has already been made. There was a least one
GSoC project which did make progress, and there's Guile implementations
of some of the functionality in Guix already.

Still though, I'd like to hear what people think about which direction
the implementation should go, and what features they'd like to see. Even
if those are not essential to make the Guile implementation viable, it
still might inform the direction to take.

The Guile rewrite of the guix-dameon was on my mind over 3 years ago
when I was thinking about the build coordinator [3]. As part of writing
the build coordinator, I got experienced using SQLite and the Guile
bindings and that'll come in very useful. The build coordinator also
uses fibers, and I'll probably look to use fibers as well in the
guix-daemon. I think the work Ludo has done on the shepherd has made
this possible.

3: https://lists.gnu.org/archive/html/guix-devel/2020-04/msg00323.html

Let me know if you've got any comments or questions!

Thanks,

Chris

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmUB4y5fFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xdl6A/9FQx/0ZtEd5onVmLBnG/TrOH8gLkG6j6u
HdSxhLcMm7XcFW94Y9GLtNAORrvbYSoKD4ElMF6sEGFXecMG5XZUtte2K7AtmbWL
WpEJ/C3L7DAQsLq4JGgHCS1J/5wZ4+FbHO4i7fV2cieb/yX18SgMXWDQAJkeI+9U
0JMgSzDMjHY5s7pUR7DghtXh8Kakdd3Q8jyJ+1tUgUnGu7GEVjGuzt52HQrgeus/
OY92t8+gZ9QW8SHCG627/5K39gc5tHCA619oy4DTDqeAUqj4koygYhwfTkZpfJce
8zFo1dFMutno97zil66sziQZFhShPQXQpkAOmGWE8gkNNwZwnfo1PamqiBkIdeuu
Nhhj/5US4ER/Xc9P6BFxCaXi2B0D4/gbxF2Fi/6Hpss15UbUo8yYGfPoVAmzuwq8
KgPkIGAaxt5ATA7dDleCS1NVR9LFw7eF8r8dROo0WD++1omKx7u0lQF+9IHpAlVI
omDehyVhkUE+hSA/EfnuWNeaQNlhwm5sZa1xMqPdkCEePw3zReJYYmbLdJVili+5
KH84EQg03USTi0MKwCeo3NVEqsASLjBDE/rWb0zoYg3wL1n38z4yTNNTFcrjlGw5
o0fjFPNDSPHTyeAT3Wu+9ZoTp3ItzbrbwNSlW3dvJjqfgVvpQ7JdXYlRoDjhza8+
gJBOQF4Yr1I=
=eVEr
-----END PGP SIGNATURE-----
--=-=-=--