From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:5f26::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id uKN5NEuui2UmcwAAkFu2QA (envelope-from ) for ; Wed, 27 Dec 2023 05:55:39 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id MJWxLkuui2VSAAEAqHPOHw (envelope-from ) for ; Wed, 27 Dec 2023 05:55:39 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=encomnet.onmicrosoft.com header.s=selector2-encomnet-onmicrosoft-com header.b=PJUcfSRG; 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=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1703652939; 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:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=DjBHd6PUdejOrauQ+DmDl1Ce8PmZofPtslWFHP17M4I=; b=cM55obW+kFiRdqARdtYIXI2ezJgg+3rH259VdFuL1rDpiDTgPTCGvJYQOPFXZ1kC/fuTdO 32QiLU8LEBVHC71A+hds/Dy+aSgtDbSf4LNUVa61QDSu1Psc8om+J2SxTUyAUy0/7qmLGe mnpng2NvLxIiQpQr6OZIf0/ii/Qfzb/gOYivxn4bHzvmlLWItjEjT3r0/RffXdCm7mx8iz ModqHP1HA66Q2xl09CvMpSwyLLkMssv1U8qUbOUJEQRiB7K+f3uzwPaKxWxEwjhvxf4KWC 7n2mqYRJfGnzxyLE8pGPUh8Mef3hLryj3yXz7PlXt6iF3Ow4NiP9jq6nAG1U9Q== ARC-Authentication-Results: i=2; aspmx1.migadu.com; dkim=pass header.d=encomnet.onmicrosoft.com header.s=selector2-encomnet-onmicrosoft-com header.b=PJUcfSRG; 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=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=key1; d=yhetil.org; t=1703652939; a=rsa-sha256; cv=pass; b=V9WmiPdf3ZmGz6b8y3RgoQyXSXIo2kUPotJNjD+k34SpqQO02Sv+V5iUmqVN96LPPGEmdd TT46HOX9GlgWXlXde5k2AlFMPKwiJJTYKNBA4QwtWk8t+V4sb0Wc1+7DKR0yBhJjnkXBG0 Buap3RJse+BqlLbZTHyitiRumEDoDfjpKIQHV7vlti7AE9TJ6rm+Ym+Zv6FF4ZGiIxN5JF 73CMyKtNBXbskFzH3jo/+glO2PdNhq9nWocYaHAoqffAqMcEQWkCf1GhgmXzHEUHI6KKOe SFjXQfM0nmQKC97GBKWa9ImjWA8ZTAarsG6hu83GvOeBBmCvv0rQPSS8nigMUQ== 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 BD02763481 for ; Wed, 27 Dec 2023 05:55:37 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rILwd-0007S7-Fr; Tue, 26 Dec 2023 23:55:03 -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 1rILwb-0007Qp-Ci for guix-devel@gnu.org; Tue, 26 Dec 2023 23:55:01 -0500 Received: from mail-db3eur04on0624.outbound.protection.outlook.com ([2a01:111:f400:fe0c::624] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rILwY-0004Ck-ID for guix-devel@gnu.org; Tue, 26 Dec 2023 23:55:01 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WPJQ0PyC49Eb9vfNhtGvim1cArBtdciQvFLzb2k/hEdiZvhk+Sas5plWZmMkV5czPoRvX2SIWGliO/SAMe143pzmiGFwFK//1aiqIENYl0DipCW1vn/FJPO/h0Y2fQQQSVQcoC5IgFVUpB9KRqTkU9b6ZWvgEslVRBmwAigTc6wvF0LWfLYc0WGpsbM/dAyac1paN3kj6flcQKdIIBbWyGKf0kidbakoJOcG1f/D/Q7c/IJRywRffvU0XVVOgvwQy9aSJLQKyRGY6dq3xW6inXfY+fwLC0egN74Jvf61TB4tLOe7NGyyi9n8OVVDcKJKv5qu8z13pWrQxBu0lx0WEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DjBHd6PUdejOrauQ+DmDl1Ce8PmZofPtslWFHP17M4I=; b=RF8g5CmZ4WC0K6aYXCsLOBtRPn3GbfBLMrkGcYWeDeNmUFaUT/zATKlCcrgPltAOa5pT1vxoHCUQw6PZaOmCRhrmGzSAVCkr4jfrlp0qcvBj4NpZYxokRGt1UwxUPqjWs5LnmiIL/qLutScxH+5EP76rEpLQeAlt1DzRqQ4OF1fcqmWCAXMf64xn5amTel/2t44cnPlMnPWrciIoPJmdO40iW1NVfDyOyZUGsmvl2blIqDL3bjoJRI33XKeg7W7uFoaw+etlkihgvkP3p701bM46+HYr5m0uso6nCQVO4/tMTcExNv1slbfFB2JVOcjv0Efkn0vxNe3wCeiJvEDL9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=encom.net; dmarc=pass action=none header.from=encom.net; dkim=pass header.d=encom.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=encomnet.onmicrosoft.com; s=selector2-encomnet-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DjBHd6PUdejOrauQ+DmDl1Ce8PmZofPtslWFHP17M4I=; b=PJUcfSRGkQgrKpgjKMtxFbFP5vq9lOAAZpIqAVJ85KJLseibyV+fkvlZzUebxIlVAk6x0wulpLv7S0juks2UfjwVSHgdhK4PNqxRZjduV8wo9sPxygs8ECioAwzDfSCJ2arGdW4QH64PaOA29Smo5785o2tvuwUd+p72uIKzn24= Received: from AM0PR02MB5747.eurprd02.prod.outlook.com (2603:10a6:208:18d::12) by AM7PR02MB6113.eurprd02.prod.outlook.com (2603:10a6:20b:1af::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.19; Wed, 27 Dec 2023 04:49:53 +0000 Received: from AM0PR02MB5747.eurprd02.prod.outlook.com ([fe80::a814:45ca:dd18:bff4]) by AM0PR02MB5747.eurprd02.prod.outlook.com ([fe80::a814:45ca:dd18:bff4%7]) with mapi id 15.20.7113.027; Wed, 27 Dec 2023 04:49:53 +0000 References: <874jg5hvz7.fsf@sarg.org.ru> User-agent: mu4e 1.10.8; emacs 30.0.50 From: Murad Mamedov To: Sergey Trofimov Cc: guix-devel@gnu.org Subject: Re: Are declarative app configs worth it? Date: Wed, 27 Dec 2023 07:15:48 +0300 In-reply-to: <874jg5hvz7.fsf@sarg.org.ru> Message-ID: <878r5g6yhe.fsf@encom.net> Content-Type: text/plain; format=flowed X-ClientProxiedBy: VI1PR07CA0300.eurprd07.prod.outlook.com (2603:10a6:800:130::28) To AM0PR02MB5747.eurprd02.prod.outlook.com (2603:10a6:208:18d::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM0PR02MB5747:EE_|AM7PR02MB6113:EE_ X-MS-Office365-Filtering-Correlation-Id: b02ac87f-f3ad-4269-657e-08dc069743d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kNBYekpQHqQsK7rGd1UG5dduAD8w7T/Jpddp+sBXY4d7NQd6clQr8KgJLUnGZppFRLUg4x4pF+QNT7crCfzKewFxKABMBAkSzV1XRv8SGjFSRikQ3Q1I2cSgNHYppQQNNJnq9ouMWLUI49KdUQG8lhbUwUIQuts4tNSgxiERbFVMLvb8aK/iUITjBzqi7RQP5dXNGEHNOVPaIV1Z3Rgpn00vm8Ey1gTxJx0YdhoXrsCk2AzMn0MbDgXSqd+ngDx9hyW0AwT9muDWGlhtJ4F1R6MJNJ5dLK04hnsM2Qj9to/FrjI4HxJ2iz9AY7A6OZDH7nKbPDq21cybcBkYRsba/72kJMIeWBuk/g5TYaXfeLjkheISaMDZmUJS+YKzSTLlii5EKu0F/Mc1wvS7MrV4W+g7exb9jZrssyiJCBvWqYYf/7fsS9q5yxBG+ljteVpjRPqQeR4DOKWmnM+mhNCCqWHWpOv7XBtPc4yVrhf3MZQofivZdfjPGUWoEMX7RCe7MdC6u23Kd3Y1S9z9ZaJzlVb1SRqn2NdGtj5z//ko4J+iU0smjHBJv+aDs4vkBeYwhuvK9C3SSZ5AtjUiNuDW9r/NZVoDrxcz/LZd3ANxEOY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR02MB5747.eurprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(396003)(346002)(39830400003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(66899024)(83380400001)(41300700001)(2616005)(38100700002)(26005)(316002)(4326008)(8936002)(8676002)(2906002)(5660300002)(478600001)(966005)(6512007)(6666004)(6506007)(6916009)(66476007)(66556008)(66946007)(6486002)(86362001)(36756003)(266224005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PYz1MVsexAaw0oEGH8o1K3FyvXs09CSzPpXJ0X3hnlMaGRBivTqu9Gs5DHy/?= =?us-ascii?Q?bjd3Tg9TcuCXIAosyZEkIUu92VUOKe+HYRgvZYFA4bBbovYynuHxYNh+ME7F?= =?us-ascii?Q?zJf8/YeLzFFYUddwCfDSnm1f/mnHuVXLFofws9eBMQvuybqOBZVicLJBQFYj?= =?us-ascii?Q?Gq/69X9Q48d2hwvkLC0iBpdr4QRQRNWmcYIq2ABiPZQhC1NOVOXRiVUwApJh?= =?us-ascii?Q?NV1tgDz5T0pNBdbPx0qebqEHNNI+CRiCTsxUm6VArJXpY1A2F3i1P/9HzSYs?= =?us-ascii?Q?bOXiQwHepXwsNXTyoc+rWjMi+PIOkJ0FwVh6ZPiPwIq0IM9PkJs9LdgfrY/v?= =?us-ascii?Q?veFyxXN4q5L6WRpVbYUtLB3IXi8SqIOnTlBqPUlhTz3bumRhBswqFv3A1mlv?= =?us-ascii?Q?3YJlzgOpxNYe3aYT6rFfqyPK0o7x2LyhMbtDJwBfYQQYrDRVS16FFVwD/t+h?= =?us-ascii?Q?Hj79kFxwnT39WhSwoc9p4lHYyZ3VFLIVUoUK13zNsx7B3JsBJGDajr6WpOPV?= =?us-ascii?Q?nhCYKTQ2mrn3M10ya1fpBKUVs3uzMYrZE6B/JHz7ZRhoAW8aVbap9fjgj07a?= =?us-ascii?Q?rOiNXwh3EpVPv7zVEpAGToXODfX6LITiobTd97IpYdUws2djxPX0n9VW/OzE?= =?us-ascii?Q?6RYbVpf+GCmfy2N3WHREkum5nULrR9I/nKBhlaA8KhW0vlbGv08cY0bvQevD?= =?us-ascii?Q?5cyudf8Ge/DY9TU9Z0VnXKYJ5XrIGMgZLwdgjY/K5p/YAtAQODI2EsQFpfrQ?= =?us-ascii?Q?bpeGFp97AfI2m2IfDtnCWKtXBJ6c/+24YvxiAskqXcuxTWaLa8y7waPp5GzT?= =?us-ascii?Q?WykAzA9OmHwz+yQVzyYXqfsDLxNCYlE/PXRq7xXxYrWEywp1ta2kpxN3wzpz?= =?us-ascii?Q?ylTUAnVFs7k5QyMYaC83YwmkSgMVY6F6miHEOgWEnkr0+xuzsMYNBD4MPcoJ?= =?us-ascii?Q?bzJvgXUHisX5ke9vtnDFVKD/lfhoXeu3AI+Oi7WFmrz1mDogoDtI3fkqxfAV?= =?us-ascii?Q?VBkEjmT3JhwQ9lQ7Z4kK8qqFuVg5Zq3lsGieN0Kuse8QyeEd8cH5tIkuTvNE?= =?us-ascii?Q?5Do9PKFgfVWz8u47OQ2tfGPF5qRxlvJOPfqAf1i0oTU39/WDlRxkXcRPGGHC?= =?us-ascii?Q?3cjkZCuYfJ2PEfWjRA+sOHCTNzFzaLmxwkD+jyEND3UrQlx5mEFXnA/SLcou?= =?us-ascii?Q?crbtzj4m8rwTFlX/e+rEB1grbDWflGrx0KwTy6UQOj6PwruFZ/QjrS1ObaX0?= =?us-ascii?Q?1ZM1W0fR0ociS38pSO05RnJ95cqkBKi6iy8FPRFAIkATV1n0VUA5e3vqkDSS?= =?us-ascii?Q?VfYMgU+2/iuqalLw+zLZL7xkqpbNZFUo6pJUMiNimaK932uYrTOYGuCmMW34?= =?us-ascii?Q?gjajzQEX3aYGzTCDBfNduEP76pujI0iZfooIMOa8td1GssJczb6E1kI+9OOJ?= =?us-ascii?Q?aTJ+GTXPkPEGwPnGxnGGHeX/afxoDY+vMdxwTYCeLRUHsVgn1YHUpkpPtEdm?= =?us-ascii?Q?aj0IfpTEduBI/UeTRcebLWY9f7DmjjHU/wg3/WMWagVrmUjBQCZb6ZuzvcE5?= =?us-ascii?Q?+6S4i1aTJ64podpY62YpHKb+6ymd7mwUDrTe2EeC?= X-OriginatorOrg: encom.net X-MS-Exchange-CrossTenant-Network-Message-Id: b02ac87f-f3ad-4269-657e-08dc069743d1 X-MS-Exchange-CrossTenant-AuthSource: AM0PR02MB5747.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2023 04:49:52.9663 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b21dea5a-2d19-4db2-a1a6-845182667e66 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Lj8+MsklTjduNdoJ6aIuHl0TbZcb4qK1XTAfllwaF0zQmyqqwGtaS5j0TUavemQmnyBQRe9cTKDHRpWmkuzo2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR02MB6113 Received-SPF: pass client-ip=2a01:111:f400:fe0c::624; envelope-from=muradm@encom.net; helo=EUR04-DB3-obe.outbound.protection.outlook.com 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, 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-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -9.06 X-Spam-Score: -9.06 X-Migadu-Queue-Id: BD02763481 X-Migadu-Scanner: mx10.migadu.com X-TUID: b0zQk0OuOa1A Hi, I was adding to guix fail2ban, greetd services with their configurations and pending configuration for connman. Basically the overall idea behind guix (i.e. having declarative configuration) is really nice. Having such mechanism powered by general purpose language like scheme is another very nice. In the ideal world, where all configurations are provided and ported to guix with included documentation whould be beautiful from user perspective. However, we are not in an ideal world. From what I see, these problems araise from three main sources: - Programs they selves. For instance if every program would follow let's say something like 12-factor app, then such programs would have very clear purpose, and thus clear configuration. One of such good examples in my practice would be greetd. Worst example would be fail2ban, where half of program logic is expressed in the configuration, very ugly very bad. Users have hard time to understand how it is configured in plain, porting such mechanism to another dsl, whole another level of pain. Rarely programs demand complex configuration, as some one noted, there is already a conventional mechanism to add `extra-config` field or having `plain-config-file-like` option saves the day. - Porters of programs and services to guix. Such person should not blindly port the configuration to the guix, but clearly understand how close or far away program from let's say 12-factor app (if we take it as reference). If very close, providing detailed strict configuration records is a bliss. If very far, porter have to think and add `extra-config` and `plain-config-file-like` options. - Users of guix have to understand, that what they write in scheme for guix is not a configuration but a program. Once you trully understand that, as a user you may change your behavior to have configurations stored in the variables instead of inlining them within service configuration. Then they can be used in service, or manualy serialized to a file. Or even, one might write a program to traverse services and/or operating-system and to serialize configuration on disk for LFS-like or systemd-like compatibility. IMHO, separating configuration (applications) from configuration (guix applications?) is not very wise way and will defeat very idea of having single, programming language based declarative configuration. What we need is more tooling around configuration and documentation, for instance: - tool to extract documentation from man pages - tool to "copy-paste" configuration documentation into guix.texi - tool to cross link packages, configuration documentations - code completion with documentation hinting in writing guix scheme - etc. Thanks in advance, muradm Sergey Trofimov writes: > Hi guix, > > I want to start a discussion around how to manage user app > config > files. > Copying my message from https://issues.guix.gnu.org/68010, where > home-zathura-configuration with 76 fields is proposed. > > I have mixed feelings about pulling 3rd-party software > configurations > in guix: > - adding it to guix increases maintenance burden: new versions > could > add or remove config options > - it requires documentation/translation, another hidden cost > - it bloats guix: imagine if we add configs for every > user-configurable app > - such configs are not easily transferrable: if I were to use > the > same app in non-guix env, I'd have to maintain 2 configs > > Another recent example is `oci-container-configuration` which > defines > a subset of docker-cli startup arguments. The problem is that > `docker > run` command has 96 options and the configuration only uses a > handful, > lacking a way to provide the remaining ones. > > I think guix should not embed config generators for user > software. The > only need I see for such generators is when there are options > which > should be the same among multiple applications (e.g. color > schemes or > shared directories). For such usecase guix should provide better > text > manipulation tools which home owners could use to parameterise > configs. > > Best regards, > Sergey Trofimov