From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id uF59FoKJ8GXY9wAA62LTzQ:P1 (envelope-from ) for ; Tue, 12 Mar 2024 17:57:38 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1.migadu.com with LMTPS id uF59FoKJ8GXY9wAA62LTzQ (envelope-from ) for ; Tue, 12 Mar 2024 17:57:38 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=troyfigiel.com header.s=MBO0001 header.b=mo5XPhzF; 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=troyfigiel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1710262658; 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:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature:autocrypt:autocrypt; bh=VTWE8e5w4nrFNchuSxJt7xu7xi+qtQp5Qd/ilaIGglo=; b=nbSc2M25neZcxvJB1nQqxg3Myr2zW+0P8OsqpmA1cXELjLCh0pvzGRbbPbM3S3JoEYIrmX LZXM6KedftiMZJi0HCqcBT9oJ0YJFFyjgHVKfTZuFV2W1lIrhfTYPqo6C0wE2vw/7HzPyZ yZohdIYoMHvostMu+BFMGGtiQZt9s0om/m1Y2vK+1cxQKryUXwuVitfEzHinvYYYjO41+t 6aUBcQmjP1w9CyyA1hkVaUv67l/rj/RiFc3iL3gDuX3HVLueROVYTvjR/0D4CbgQzmfqiP grBS5jsCNFcgk729l6zNg7oGQo1aPsqb2dW1vga8m5Dd0KSjomz9u5kQHjUoBw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=troyfigiel.com header.s=MBO0001 header.b=mo5XPhzF; 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=troyfigiel.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1710262658; a=rsa-sha256; cv=none; b=aa4IjsQEKoJllhUf3ce1GOX4gKlszgjMlV3Qk/OiazlAN80k8/xT0SpZmll3BAfnXfuUOp nOksnvVY5J/GvIciP1RMzJx4TcgLjI5OTn2ZG+ihAEK4VFX+10nhXYpoOwk6i+BCR3qAK8 dySZgbjvB/phLw8+fXSTGriIAOYBEWUkhvBOa3LAV/+9MJ2n0sIm36CYjMutIFzBDJoe1w s27GlxFELVWwvVhCgN9OpXTeD2mIng13aOq7so1JeOo0uALf0KAiRqAjJiqrH5I6ZJ5dJF zUNHwVJBIaCDW5KGmrYtBkEx/HkwA7PIkbKu8x42Kvb9WhT+8kyg7C4PtNZVig== 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 D783F1F686 for ; Tue, 12 Mar 2024 17:57:37 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rk5RB-0002vN-UY; Tue, 12 Mar 2024 12:57:13 -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 ) id 1rk5R6-0002rV-2j for guix-devel@gnu.org; Tue, 12 Mar 2024 12:57:09 -0400 Received: from mout-p-101.mailbox.org ([80.241.56.151]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1rk5R0-0007c7-0W for guix-devel@gnu.org; Tue, 12 Mar 2024 12:57:07 -0400 Received: from smtp2.mailbox.org (smtp2.mailbox.org [10.196.197.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4TvKYf4lzbz9smZ for ; Tue, 12 Mar 2024 17:56:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=troyfigiel.com; s=MBO0001; t=1710262614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=VTWE8e5w4nrFNchuSxJt7xu7xi+qtQp5Qd/ilaIGglo=; b=mo5XPhzFkN4X9d7+rdV1OAuESXXspF2awe/1UGrS/Pt6U7/zCSiTqD5pA0x4qHdnhXjM/+ HDZFi4IznwUXOvu+haqebb7oJ3huyjH2lOgDxQTMLRytiflvUCmGc1yoCM79KLP8XJjyQN wlJ0HM8Uf3iLzjpo7K9uZ12oT5xI3oDiQVE1DeNa1YLrCd7fusQEvxnI38RBmddy8mfgrh 1GLMrB4agzuQodaph46dmFwtd+05wfmEH8LQKox1hyyJ3y0Akh0Q+swF0dDcgHwZIhkE/U Qf67ZpYevhe6ym/Oio0c/aHXvbmfje75+GdeTKZhp1NP3/Ot+VgVR744hxw+oA== Message-ID: Date: Tue, 12 Mar 2024 17:56:42 +0100 MIME-Version: 1.0 Subject: Re: Contribute or create a channel? Content-Language: en-US, de-DE, nl To: guix-devel@gnu.org References: <8734t9tw5d.fsf@elephly.net> From: Troy Figiel Autocrypt: addr=troy@troyfigiel.com; keydata= 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 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------CkCJ0WH3n3B92JdXgvVxalMJ" Received-SPF: pass client-ip=80.241.56.151; envelope-from=troy@troyfigiel.com; helo=mout-p-101.mailbox.org X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_TEMPERROR=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-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -8.59 X-Spam-Score: -8.59 X-Migadu-Queue-Id: D783F1F686 X-TUID: 0XyF4fqo9iw3 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------CkCJ0WH3n3B92JdXgvVxalMJ Content-Type: multipart/mixed; boundary="------------0EwkaZLwQKe2k2bytGbIgAMJ"; protected-headers="v1" From: Troy Figiel To: guix-devel@gnu.org Message-ID: Subject: Re: Contribute or create a channel? References: <8734t9tw5d.fsf@elephly.net> In-Reply-To: --------------0EwkaZLwQKe2k2bytGbIgAMJ Content-Type: multipart/mixed; boundary="------------HUf7JcKUPsY8r0z5DljT6L0D" --------------HUf7JcKUPsY8r0z5DljT6L0D Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Attila, I know this wasn't directly sent to me, but I wanted to share a couple of thoughts anyway :-) On 2024-03-12 14:18, Attila Lendvai wrote: > my gut feeling is that new abstractions are needed that would enable sp= litting the monorepo/community into less tightly coupled subgroups where = they can have their own coding standards, repos, channels, etc, and a mor= e federated way to maintain/integrate all the software that exists out th= ere into a guix system. As an end user, it is incredibly nice to have a single Guix channel to pull from. I just have to remember (or write down...) a single commit hash and that's all that's required to reproduce my setup. > channels are a step towards this, but they are not enough in their curr= ent form to successfully accommodate for such a setup. an obvious thing t= hat is missing is a way to formally express inter-channel dependencies, i= ncluding some form of versioning. Although I understand where you are coming from, I am not convinced that this solves more problems than it causes. For example, a naive approach to inter-channel dependencies with versioning could reintroduce the diamond dependency problem. However, solving this by locking every single transitive dependent channel would not allow security updates across all of them simultaneously anymore. > in this hypothetical setup commit rights could be issued much more libe= rally to non-core sub-repos, and more rigorous code reviews would only ne= ed to be done when a new version of the split-out part is being incorpora= ted back into a new revision of the core/bootstrap chain (if e.g. assumin= g python is needed for the bootstrap of the core, then the python subgrou= p's stuff would only need core review when a new version of that is point= ed to by the core). The same topic has come up in Nix as well [1, 2, 3], but they are using Github, so they are bound to a centralized workflow. Using Github (or any such git forge for that matter) reintroduces some of the same problems Git was designed to solve in the first place, which become most painful at scale [4]. =46rom a technical point of view, I don't see why we couldn't split into less tightly coupled subgroups with their own repos, standards and CI merging into a single Guix "monorepo". I think there is still a lot to learn from how the kernel does its development and we could extrapolate to something that makes sense for Guix. Best wishes, Troy [1] https://discourse.nixos.org/t/wild-idea-how-about-splitting-nixpkgs-and-n= ixos/11487/25 [2] https://github.com/NixOS/rfcs/pull/70 [3] https://github.com/NixOS/nixpkgs/issues/50105 [4] https://blog.ffwll.ch/2017/08/github-why-cant-host-the-kernel.html --------------HUf7JcKUPsY8r0z5DljT6L0D Content-Type: application/pgp-keys; name="OpenPGP_0xC67C9181B3893FB0.asc" Content-Disposition: attachment; filename="OpenPGP_0xC67C9181B3893FB0.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- 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 XMzIG1uBMRmk =3DzpVU -----END PGP PUBLIC KEY BLOCK----- --------------HUf7JcKUPsY8r0z5DljT6L0D-- --------------0EwkaZLwQKe2k2bytGbIgAMJ-- --------------CkCJ0WH3n3B92JdXgvVxalMJ Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE5HwNzSdo36E4/NzWxnyRgbOJP7AFAmXwiUoACgkQxnyRgbOJ P7AqIA/9G6o4XGnGTeNDGAyo0Jtt8ba04VY6XnGfb5Qa3rYbtlLxFgpnrjEnfj+T yS94KSUameEMBRLIj/i1yA6KGGOl0AyR71T+fkBecDV1GklzxX1kK/mNeXWXQ9D+ zS77vCbq7vw2D+7nD0R+VyA/wgdfp/qQSTLXHuCp7nB99SRm18HVTRhzs4qXU6Z7 zzuMK/D0DS5OgMfZWWuJc7PCVUAura4bPHSXBOsuVoQexXwXL1nmazv9ekrB+Zfh F+lc+BSCuIanraIh+Lgl9rzdXc+JOSlKjbcPPi92/dAE5AhABUe/j85p7+RPG9QH 4fkNGv2UNilBUafrjAsnxJ8yw9Dpxq0ufbp0H7g1a5P+C42iP5myydvHxzVn7/Ds LrOp8937L3g9tVqcpi2A4jti+7qvkXl7Z0YkE7COhev2McRABU7lSWmr0GEZWgHI Qen8uYCxXksDGUutpOU5q9AmVajvCitb2/tTy0Xq4cvQtPP+l4+4DoYckinLEzy6 d3ZDBZTFWB8crJTl6rXh9VXCOBOCzHNRCPtyOQaurRR6i9jCZ2sEtY8inq3YN013 va1FUnzZ6Ur9VA/gcnMobj45c6y9Aa432h3w55l7SC4eyaQDXCSck6kJjzMMNfIx a70Ulne6bwLDd5wiS+T9nJ8DVgKVgTdOOIvoRfZAsWbbDf5InzI= =cgsm -----END PGP SIGNATURE----- --------------CkCJ0WH3n3B92JdXgvVxalMJ--