From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <guix-devel-bounces+larch=yhetil.org@gnu.org>
Received: from mp10.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 YKrZKvgKA2WV3QAAG6o9tA:P1
	(envelope-from <guix-devel-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Thu, 14 Sep 2023 15:30:32 +0200
Received: from aspmx1.migadu.com ([2001:41d0:403:4789::])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	by mp10.migadu.com with LMTPS
	id YKrZKvgKA2WV3QAAG6o9tA
	(envelope-from <guix-devel-bounces+larch=yhetil.org@gnu.org>)
	for <larch@yhetil.org>; Thu, 14 Sep 2023 15:30:32 +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 2E99A4F80C
	for <larch@yhetil.org>; Thu, 14 Sep 2023 15:30:32 +0200 (CEST)
Authentication-Results: aspmx1.migadu.com;
	dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=jKvi2dmH;
	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=pass (policy=none) header.from=gnu.org
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org;
	s=key1; t=1694698232;
	h=from:from:sender:sender:reply-to:subject:subject:date:date:
	 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
	 content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:list-id:list-help:
	 list-unsubscribe:list-subscribe:list-post:dkim-signature;
	bh=JB8OyDir5NT/iPC4ZqoxQRkbTHEWm6MzHY4UgVB+ivQ=;
	b=bPpEwkr2eEfhIaWnKZQ55WJ0CDfKcbrPl3Pi02KnyZGDrJN/2+SHgSMqjRxmi+nmIBP4XX
	ktIs1dR2aBaNirrSpLf2J2uXQtGdQlRvQ03gf81kZWZFH3thrEpDMqMih1TBo8kXxvr216
	DRmAERpP8u1wjPI82Gcc3lRBKW02OzRrX+O18zmKsGuJvYu3SoeGyUk+zIwMe7JlsqHqAY
	CRZJTm+wnflPSJ5B8UXHeLQBOPyJpIiOCtSvlxuOslfOnAenzfu46zaFd+6zsAv8wwLoJd
	NItXVKvs+HNTAOrORXE8LRueP7uUE5PnyTNT3t9X35heIPG74iEjGRt73u/X+A==
ARC-Authentication-Results: i=1;
	aspmx1.migadu.com;
	dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b=jKvi2dmH;
	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=pass (policy=none) header.from=gnu.org
ARC-Seal: i=1; s=key1; d=yhetil.org; t=1694698232; a=rsa-sha256; cv=none;
	b=t/IqrYkZJNuGcB9jXzRjyP/nsksSo4osP4C5kYWYyqrj8oXgj2SRAxlq7kguKfzago4ARZ
	Vykkmfluoy9GKP8IMatFnbpGFOiMgQ/qHKuroMGOKtBHweX94Pyz/0y8DoJyw9NXbC2pvJ
	pCM+82H4NKxfR5aFv4UuanT9EQ3TJ6JGBa6Fcpa4eoP3vEpsuHBAs1gOEEmFym5mRHGZXj
	pYsDDeF5vdApXFv+cs4iH5x6bgeLsTySoLUn46VJXQxK9ESlP+3ttXi6U0ocF2vvIg8e/p
	sBZqkC6z2s1LHvoIA/OKseaTDchhcvCRqvBNvI8MJwBGgV08d4E3sK+cMm81TQ==
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 1qgmPr-0002Lk-M7; Thu, 14 Sep 2023 09:29:55 -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 <ludo@gnu.org>) id 1qgmPp-0002LA-Ns
 for guix-devel@gnu.org; Thu, 14 Sep 2023 09:29:53 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@gnu.org>)
 id 1qgmPp-0002zA-Cu; Thu, 14 Sep 2023 09:29:53 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To:
 From; bh=JB8OyDir5NT/iPC4ZqoxQRkbTHEWm6MzHY4UgVB+ivQ=; b=jKvi2dmHuOCRW4orSsf4
 +d+rCWd7Et03f8ReRez4h/Zu4nEeL0LUkcDgADmHtCxlW25asiORW4oDHXKHemNI20o+WzAUFVMWV
 3Z5ko9pL+UOE42vRlpcfZoAk1bGK2duPQY2l07+AGsWyou42cggAuNJBCFi+Q7RbFT8w4ALyICU+l
 ac0APJw1gh6IEv4xix+ml75UmL0qafYpkbDr/qmtLNo7x5qdOuA9S8CDq1kOqmb9mUweJTi71lRNp
 cLaqwAF5S4wj6P0Qpf4ehDU7uibrJgid3Pyeu7J8hG6N+lYq5elmUY9tIT8xVp2Gm0SsffyPa1c2A
 XB3jhbMVNhiHcg==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@gnu.org>
To: Christopher Baines <mail@cbaines.net>
Cc: guix-devel@gnu.org
Subject: Re: Implementing the guix-dameon in Guile
References: <875y4et4up.fsf@cbaines.net>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: Octidi 28 Fructidor an 231 de la =?utf-8?Q?R=C3=A9vo?=
 =?utf-8?Q?lution=2C?= jour du =?utf-8?Q?Ma=C3=AFs?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Thu, 14 Sep 2023 15:29:46 +0200
In-Reply-To: <875y4et4up.fsf@cbaines.net> (Christopher Baines's message of
 "Wed, 13 Sep 2023 16:36:54 +0100")
Message-ID: <87il8cc27p.fsf@gnu.org>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
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.81
X-Spam-Score: -3.81
X-Migadu-Queue-Id: 2E99A4F80C
X-TUID: +hVuG1ouFm40

Hi Christopher,

Christopher Baines <mail@cbaines.net> skribis:

> 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/

Yay, this is great news!! But also: thank you for your long-term
commitment, it=E2=80=99s an invaluable contribution to the project.

> 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.

In the past I wondered, as Maxim wrote, whether we could move
incrementally=E2=80=94after all, a fair bit of =E2=80=9Cthe daemon=E2=80=9D=
 is already in Scheme
(there=E2=80=99s substitute support and other helps, plus (guix store =E2=
=80=A6) etc.)
I=E2=80=99m not sure that=E2=80=99s feasible or desirable though.

My take today :-) is that =E2=80=98wip-guile-daemon=E2=80=99 is a great sta=
rting point.
We could aim towards having a minimal =E2=80=98guix daemon=E2=80=99 (space)=
 command that
would coexist with =E2=80=98guix-daemon=E2=80=99 and that people could try =
out soonish
(I think Caleb got it to build derivations back then).  Eventually less
adventurous people will use it, and at some point it=E2=80=99ll be sufficie=
ntly
mature that we can default to =E2=80=98guix daemon=E2=80=99 instead of =E2=
=80=98guix-daemon=E2=80=99.

Technically, I think it should be a single-threaded Fibers program,
building on the experience we got from the Coordinator, shepherd, etc.
That should allow us to do everything in one process (in contrast, the
C++ implementation forks for every incoming connection, which then
significantly complicates the implementation of locking, etc.)

I imagine the daemon could be structured as a set of actors (it=E2=80=99s r=
eally
my thing these days ;-)), with an eye on facilitating code sharing and
interaction with the Coordinator, Cuirass, and all that.

I hope this makes sense.  Time will tell!

Ludo=E2=80=99.