From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:700:3204::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id 6Mx7Ggj0imX8MwEAkFu2QA (envelope-from ) for ; Tue, 26 Dec 2023 16:40:56 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id QDQ6FQj0imUVrgAAe85BDQ (envelope-from ) for ; Tue, 26 Dec 2023 16:40:56 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=lendvai.name header.s=protonmail header.b=ONHi+0s6; 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=lendvai.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1703605256; 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=YzAYT5eHmJAh9n5KBlJ2Dgced1M6fzMvwKL8j5fiz8c=; b=ZHOc1mfO2FUIuF85MisHv2BRVAwUlT/DMq59Em2dAs3CBLqPK4L+GIngvHlfFolgO6n4Qb 3+mBICiDrACzirsAJDmqUgNV64atrCACHcF8MHWY+JhxZws52qAy2DmAKKOhvMQzEMcqET NfIfcd5X/rUz4bd5OF347zGHSjqQDsyBbixYOoaax80xTSAP6iL36f01Zj9twc86n4Q/GP 7NJnBiUs8k+NqrnM+0sXvI01Gi5LUpYpQcnPIN345Azg6Q+1PBuKqBQSPDRnzhsAqBKx7M YNTti15ZvEPZ0cG2+nDSz2piX4mJTfZEhQ5LSLzmWWsxHB/CMCpw5TopAd2oFg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1703605256; a=rsa-sha256; cv=none; b=lHOygYqtA8uRAzDy7AJ1bOC/rbht5mB+uhBAeRtxGKsJymshU0eFGvnOm0DFvCJSQobTJm OjDkOoVjqP86ar2Gb0uBDBmACBDBI77xATXM06gz2zvW0eEDRd3it0eBLFrupLnJN1eIE8 PR216VWNVwmjPyehKV2UBp8lj9eWbfsNyBn/LvyZFK1zD5fITACtzO3aHOQ81Fy/V4ffnH o88VOc1NJxAQfHS9VLdUOxveHhfia3QIFs6LkHHtTQPoyohiOi48ozgPcj60fPuI7UwQF6 nYbUBtqu+Aqi2cIY79JfSAw+jGitloqjOE/3KshNqs01W4QicGZuJBcDYpO5lQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=lendvai.name header.s=protonmail header.b=ONHi+0s6; 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=lendvai.name 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 3506560A78 for ; Tue, 26 Dec 2023 16:40:56 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rI9XR-0002X9-LB; Tue, 26 Dec 2023 10:40:13 -0500 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 ) id 1rI9XL-0002UO-UV for guix-devel@gnu.org; Tue, 26 Dec 2023 10:40:08 -0500 Received: from mail-40136.proton.ch ([185.70.40.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rI9XH-0001G7-4S for guix-devel@gnu.org; Tue, 26 Dec 2023 10:40:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lendvai.name; s=protonmail; t=1703605197; x=1703864397; bh=YzAYT5eHmJAh9n5KBlJ2Dgced1M6fzMvwKL8j5fiz8c=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=ONHi+0s6wX0mV03keeu7vPW3mXepWEPEeEeaVx4Innj56K4JNGooCf+/KvYnXpG1X EUkb+Ss4fQDZApnoN/7HO/yTcNpfb8Nk05Lx1nXZ+5cd3qphnEE137tBteoh7iGbGx jE2o7mYdByMBDRFV9LeHdE7heTVRQxe41wTC8eNW90cP642H6pDXYFDb227QFbsuk3 gOZCOwf1n5gnrmsuTIxsCGgBpl1V3P62mW6YD273RuoPUkIeNBP9Bl6nejDF+roiMC ei5nAWfiQqDXKwCuetUxLvyTQgscgfWrJpSHVBjvojPnw8Gr34e8XGs+lEN0B4eIzo R1IbPEtYJ/DFg== Date: Tue, 26 Dec 2023 15:39:40 +0000 To: Ricardo Wurmus From: Attila Lendvai Cc: Sergey Trofimov , guix-devel@gnu.org Subject: Re: Are declarative app configs worth it? Message-ID: In-Reply-To: <87h6k5ko0g.fsf@elephly.net> References: <874jg5hvz7.fsf@sarg.org.ru> <87h6k5ko0g.fsf@elephly.net> Feedback-ID: 28384833:user:proton MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.70.40.136; envelope-from=attila@lendvai.name; helo=mail-40136.proton.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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-Spam-Score: -5.63 X-Spam-Score: -5.63 X-Migadu-Queue-Id: 3506560A78 X-Migadu-Scanner: mx12.migadu.com X-TUID: Az04PqBeHcPp > > - adding it to guix increases maintenance burden: new versions could > > add or remove config options >=20 >=20 > This is why there should be automated tests. There are too few of them. early detection of the breakage is just one part of the story. then it also= needs to be fixed -- before dropping the hammer and abandoing the worksite= . writing and maintaining the tests have a cost, too. > > - it requires documentation/translation, another hidden cost >=20 >=20 > We should only accept configuration procedures that have proper > documentation, yes. in this context i recommed: What is Seen and What is Not Seen by Bastiat https://oll.libertyfund.org/page/wswns or specifically: "In the sphere of economics an action, a habit, an institution or a law eng= enders not just one effect but a series of effects. Of these effects only t= he first is immediate; it is revealed simultaneously with its cause, it is = seen. The others merely occur successively, they are not seen;3 we are luck= y if we foresee them." if you demand that e.g. all services accepted into guix have a configuratio= n entry for every possible config field, and that the documentation of thes= e fields are duplicated into the guix codebase... then whatever is included= into guix will have a 100% coverage. this is what is seen. but what about the lost potential? because i can guarantee you that while y= ou'll get 100% coverage, you'll also only get a fraction of the total numbe= r services and fields. which one will yield a better guix experience? what i'm doing with my own services, and what i also recommend, is to alway= s have an 'extra-arguments or 'extra-fields that allows defining any config= value, and serializes it as-is. that way the user can rely on the document= ation of the daemon, and blindly apply it while writing the guix config. and only reify those couple of config fields into scheme code that can prov= ide something useful beyond merely serializing the value as-is. this way: - the guix codebase remains smaller (OAOO principle) - updating the app's package in guix is simpler - guaranteed not to get out of sync with the app - smaller threshold for new contributions - which translates to more supported services i find the free-form module type, as suggested by John Soo above, to be a g= ood idea. so much so that i may even look into writing a prototype and try = to use it to replace my two inline shepherd-service instances. --=20 =E2=80=A2 attila lendvai =E2=80=A2 PGP: 963F 5D5F 45C7 DFCD 0A39 -- =E2=80=9CWar is a ritual, a deadly ritual, not the result of aggressive sel= f-assertion, but of self-transcending identification. Without loyalty to tr= ibe, church, flag or ideal, there would be no wars.=E2=80=9D =09=E2=80=94 Arthur Koestler (1905=E2=80=931983)