From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id OM0hJDYV3mJ3tAAAbAwnHQ (envelope-from ) for ; Mon, 25 Jul 2022 05:59:50 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id aF5NIzYV3mIuaQEAG6o9tA (envelope-from ) for ; Mon, 25 Jul 2022 05:59:50 +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 1282C3E0BA for ; Mon, 25 Jul 2022 05:59:50 +0200 (CEST) Received: from localhost ([::1]:40314 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oFobp-0000ZT-C0 for larch@yhetil.org; Sun, 24 Jul 2022 23:18:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38174) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oFobJ-0000ZB-Cz for guix-devel@gnu.org; Sun, 24 Jul 2022 23:17:45 -0400 Received: from andre.telenet-ops.be ([2a02:1800:120:4::f00:15]:42168) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oFobG-0000FM-79 for guix-devel@gnu.org; Sun, 24 Jul 2022 23:17:45 -0400 Received: from [IPV6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16] ([IPv6:2a02:1811:8c09:9d00:5dba:d409:33f7:a16]) by andre.telenet-ops.be with bizsmtp id zFHa2700520ykKC01FHcdr; Mon, 25 Jul 2022 05:17:37 +0200 Message-ID: Date: Mon, 25 Jul 2022 05:17:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Content-Language: en-US To: Guix-devel From: Maxime Devos Subject: A proposal of a consistent set of clear rules and guidelines involving snippets, phases and patches. Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------e7ERR0YUy3m70MWdcWKUbHRW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22; t=1658719057; bh=TO6hYI2YerfrgkwsHm6n2I4xMi6IafNe5HnDVfTRSgA=; h=Date:To:From:Subject; b=HmUDzui+kSH3Jyofvz3u08eQ7rnNUHV+379LiviGSdKfgoxzEPWrAHVgTVJuDnv0v z9xceu162Gd5nmjSq1dMSQ65B4DyXT3LolCkleb9CPajaKJhooWYfxbtyPsKLjN9Rx D+beEdB+VSOmFQYfz5cdvMkk2Rl1x/185jJYlVSl8SCHp4xw4VokynVc1UnZUNQ+ig Sgh5HqIdKjtPNjdECOa4HZa2zKquPVvCEEdOzUV16KQBXm7lDFqTohimFdWUTzMD/w MnbkZvMhMORTQ9hp02TAy1x4WvMXKjzqueieniG/5u/TbRI+F021odfHpIgJzlpCaU JaQhOF1B1yHIQ== Received-SPF: pass client-ip=2a02:1800:120:4::f00:15; envelope-from=maximedevos@telenet.be; helo=andre.telenet-ops.be 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1658721590; 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:dkim-signature; bh=rGnOPFtcZSEbJhLluvn8LstGx0rLW1DJ5efJZONc3lk=; b=l6McGllh4zNrnMD/OBL0oWiKIPO9uietp2A/pV9JTDgYX6MnwZcaWay4Crhitgwu87/1Ki hgZ5tKkMkWUi2gd07Ug9DBv2BEq1I9lLKwxUjt0xr/uNGiPPkzlVrI+31hUfY5VA/3RXgn Ti6i1VKPyRQKWmXRPRk6xyNOXG2E+7+DS/cRTh3K7XGV3ZErbqCTc9w3Vnj0Y1l8h+rtMU kDe7669wQMj19EOIN9XK2ml99blOi/iEEsmPQhe0js6lCAP94E+9HNBo/6u0tkdLgBjnB2 IXdSuChd6v8h9is5LOKGX+EFqN6B/XtXLA2/3pQboyykhWm6H/IA/X4Y2t4H3g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1658721590; a=rsa-sha256; cv=none; b=Mfu+Gjzi8lklHeHlGYj9LpmcBfiI7VwI6AIXbe6qb8hlAcjthLAjAeJbK7OhtLoOBtt6Hm wvSo5DjORRmOM3Y9xb+upSpFZJeBVVmB2PcbNs2mp14iI3O0Srpily0qB6/1xUn0qvB6qN ZpzvZvRwwokP6vhBnfwNpzZ4292XtQmf1JChxHUGTia0UWABRaRYFKQ48pj5sh8MfWp6cA rMuCWhnimiTLckWMn5OktQPy5u4Z8bvssfaTvxhkuM2ctWhyp9VQk1/OI/IXADAVz2A/di EEvr3hS3WXZvQR/PMLKz7xXlh008YAKeEF+SasYTRLGeNdeYV2LnzpAuiqBMtA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=telenet.be header.s=r22 header.b=HmUDzui+; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=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" X-Migadu-Spam-Score: 4.27 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=telenet.be header.s=r22 header.b=HmUDzui+; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=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" X-Migadu-Queue-Id: 1282C3E0BA X-Spam-Score: 4.27 X-Migadu-Scanner: scn1.migadu.com X-TUID: LeyggQVH8o1w This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------e7ERR0YUy3m70MWdcWKUbHRW Content-Type: multipart/mixed; boundary="------------QXCWPXftD3PE4HelVwubFFSn"; protected-headers="v1" From: Maxime Devos To: Guix-devel Message-ID: Subject: A proposal of a consistent set of clear rules and guidelines involving snippets, phases and patches. --------------QXCWPXftD3PE4HelVwubFFSn Content-Type: multipart/mixed; boundary="------------j73DZ0GydrKaxIhhwdS0aOFS" --------------j73DZ0GydrKaxIhhwdS0aOFS Content-Type: multipart/alternative; boundary="------------W9v38lk0z0Cnb3TcNkvaRfvH" --------------W9v38lk0z0Cnb3TcNkvaRfvH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Q29udGV4dDogaXQncyBjdXJyZW50bHkgYSBtZXNzOiwgYW5kIGF0IHRpbWVzIGNvbnRyYWRp Y3RvcnkNCg0KICAqIFRoZXJlIGlzIHBvbGljeSBpbnZvbHZpbmcgdGhvc2UgdGhyZWUsIGFz IGNhbiBiZSBzZWVuIGZyb20gdGhlDQogICAgc2hlcGhlcmQgbWVzcy4NCiAgKiBUaGlzIHBv bGljeSBpcyBwYXJ0aWFsbHkgc2VjcmV0LCBhcyBjYW4gYmUgc2VlbiBieSBzb21lIHBlb3Bs ZQ0KICAgIHRyZWF0aW5nIHNvbWUgdGhpbmdzIGFzIHBvbGljeSBldmVuIGlmIGl0J3Mgbm90 IGluIHRoZSBtYW51YWwuDQogICogU29tZSB2ZXJzaW9ucyBvZiB0aGUgcG9saWN5IGFyZSBi YXNlZCBvbiBhcmNoZW9sb2d5LCBlLmcuIHNlZSB0aGUNCiAgICAnc25pcHBldHMgd2VyZSBp bnRyb2R1Y2VkIGZvciB0aGlzIHBhcnRpY3VsYXIgcHVycG9zZSwgc28gZG9uJ3QgdXNlDQog ICAgaXQgZm9yIG90aGVyIHRoaW5nc+KAmSB3aGljaCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0 aGUgbWFudWFsIGFzIHNvbGUNCiAgICBsZWdpdGltYXRlIHJlYXNvbiBhbmQgYXNraW5nIGNv bnRyaWJ1dG9ycyB0byByZWFkIGFsbCBwYXN0DQogICAgZGlzY3Vzc2lvbnMgc2VlbXMgdG9v IG11Y2ggZm9yIG1lLg0KICAqIFNvbWV0aW1lcywgcGVvcGxlIHJlZmVyIHRvIHRoZSBtYW51 YWwgKFNuaXBwZXRzIHZlcnN1cyBQaGFzZXMpIGZvcg0KICAgIGhvdyB0aGluZ3MgKHNob3Vs ZCkgd29yaywgYnV0IHdoYXQgdGhleSBzYXkgaXMgbm90IGFjdHVhbGx5IHByZXNlbnQNCiAg ICBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIG1hbnVhbC4NCiAgKiBTb21lIHZhcmlhbnRzIG9m IHRoZSBwb2xpY3kgYXJlIGNvbnRyYWRpY3Rvcnkgd2l0aCBlYWNoIG90aGVyIChJSVJDKQ0K ICAqIFNvbWUgb2YgdGhlIHBvbGljaWVzIGFyZSBjb250cmFkaWN0b3J5IHdpdGggY3VycmVu dCBwcmFjdGljZSBpbg0KICAgIG90aGVyIEd1aXggcGFja2FnZXMuDQogICogJyhndWl4KVNu aXBwZXRzIHZlcnN1cyBQaGFzZXMgc2F5cyBQaGFzZXMnIHN0YXRlcyB0aGF0IGl0IGlzIGVs dXNpdmUuDQogICogVGhlIHNlY3Rpb24gbmFtZSBpbXBsaWVzIGl0J3MgYSDigJhYIHZlcnN1 cyBZ4oCZLCB3aGljaCBzZWVtcw0KICAgIHBvbGFyaXppbmc/IChNYXliZT8pDQogICogVGhl IHNlY3Rpb24gbmVnbGVjdHMgdGhlIGlzL291Z2h0LWRpc3RpbmN0aW9uIC0tIGl0IGp1c3Qg c2F5cyB3aGF0DQogICAgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIHdoYXQsIG5vdCB3aGV0aGVy IHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZW0NCiAgICBhbmQgd2hldGhlciB0aGV5IGFy ZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncywgc28gdGhhdA0KICAgIHNl Y3Rpb24gZG9lcyBub3Qgc2VlbSBwb2xpY3kgdG8gbWUgKGV4Y2VwdCBmb3IgdGhlIHNpbmds ZSAnc2hvdWxkDQogICAgcHJvZHVjZScgYW5kICdtdXN0IG5vdCcgbGluZSksIG9ubHkgbWF0 dGVycyBvZiBmYWN0Lg0KDQpJIGNhbid0IHdvcmsgd2l0aCBzdWNoIGEgbWVzcy4gQXMgc3Vj aCwgSSd2ZSBhIHByb3Bvc2FsIGZvciBhIA0KY29uc2lzdGVudCwgY2xlYXIgYW5kIG5vbi1l bHVzaXZlIHNldCBvZiBydWxlcyBhbmQgZ3VpZGVsaW5lcywgYmFzZWQgb24gDQp0aGUgZm9s bG93aW5nIHByaW5jaXBsZXM6DQoNCiAgKiBJdCBhcHBlYXJzIHdlIGNhbm5vdCBhZ3JlZSBv biB3aGF0IGV4YWN0bHkgdGhlIHBvbGljeSBzaG91bGQgYmUsIGJ1dA0KICAgIGhhdmluZyBh IHNpbmdsZSBwb2xpY3kgZXZlcnlvbmUgY2FuIHVzZSBldmVuIGlmIHNvbWUgd291bGQgcmF0 aGVyDQogICAgaGF2ZSB0aGUgc3BlY2lmaWNzIGJlIGEgdGlueSBiaXQgZGlmZmVyZW50LCBp cyBtdWNoIGJldHRlciB0aGFuIHRoZQ0KICAgIG1lc3Mgb2YgZXZlcnlvbmUgaGF2aW5nIHRo ZWlyIG93biBwb2xpY3kuDQogICogVGhlcmUgYXJlIG5vIGFic29sdXRlcywgZXhjZXB0IHRo YXQgdGhlIHJlc3VsdCBvZiAiZ3VpeCBidWlsZA0KICAgIC0tc291cmNlIiBtdXN0IGJlIGZy ZWUgc29mdHdhcmU7DQogICogVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgKGFjY2VwdGFi bGUpIHdheSB0byBkbyB0aGluZ3MsIGJ1dCB0aGlzDQogICAgZG9lc24ndCBtYWtlIHRoaW5n cyBlbHVzaXZlLCB0aGlzIGp1c3QgbWVhbnMgdGhlcmUgYXJlIG11bHRpcGxlDQogICAgYWNj ZXB0YWJsZSBvcHRpb25zIGFuZCB5b3Ugc2hvdWxkIHByb2JhYmx5IGdvIGZvciB0aGUgc2lt cGxlc3QuDQoNCk1vcmUgY29uY3JldGVseSwgSSBwcm9wb3NlIHRoZSBmb2xsb3dpbmcgbmV3 IGNvbnRlbnRzIGZvciAoZ3VpeClTbmlwcGV0cyANCnZlcnN1cyBQaGFzZXMgKHRoZSBwaHJh c2luZyBjb3VsZCB1c2Ugc29tZSB3b3JrIGZvciBzbW9vdGggcmVhZGluZyksIA0Kd2hpY2gg SSBiZWxpZXZlIHRvIGJlIHN1ZmZpY2llbnRseSBjbGVhciAoZXhjZXB0IGZvciBzb21lIHBo cmFzaW5nIHRoYXQgDQpjb3VsZCBiZSB0d2Vha2VkLCBlLmcuIHRoZSBwaHJhc2VzIGFyZSBj dXJyZW50bHkgcmF0aGVyIGxvbmcpLCBjb3ZlcnMgYSANCnN1ZmZpY2llbnQgYW1vdW50IG9m IGNhc2VzIChmZWVsIGZyZWUgdG8gcmVzcG9uZCBpZiB5b3Ugc2VlIGEgbWlzc2luZyANCmNh c2UpLCBmcmVlIG9mIGNvbnRyYWRpY3Rpb25zIChsaWtld2lzZSkgYW5kIG1vc3RseSBpbiBs aW5lIHdpdGggY3VycmVudCANCnByYWN0aWNlOg0KDQpbc3RhcnRdDQoNCkBjOiBUaGVyZSBp cyBubyBvcHBvc2l0aW9uIG9yIHN1Y2gsIHNvIG5vIHZlcnN1cywgbGV0J3Mgbm90IHN0YXJ0 IHdpdGggDQpwb2xhcmlzYXRpb24uDQoNCjIwLjQuNSBTbmlwcGV0cywgcGhhc2VzIGFuZCBw YXRjaGVzDQoNClNuaXBwZXRzLCBwaGFzZXMgYW5kIHBhdGNoZXMgYXQgdGltZXMgc2VydmUg b3ZlcmxhcHBpbmcgcHVycG9zZXMuIFRvIA0KZGVjaWRlIGJldHdlZW4gdGhlIHRocmVlLCB0 aGVyZSBhcmUgc2V2ZXJhbCBjb25zaWRlcmF0aW9ucyB0byBrZWVwIGluIG1pbmQ6DQoNCiAg KiBQYXRjaGVzIG11c3Qgbm90IGJlIHVzZWQgdG8gcmVtb3ZlIG5vbi1mcmVlIGZpbGVzLCBi ZWNhdXNlIGEgcGF0Y2gNCiAgICBieSBjb25zdHJ1Y3Rpb24gY29udGFpbnMgdGhlIG5vbi1m cmVlIGZpbGUgaXRzZWxmIHNvIHRoZSBwYXRjaCB3b3VsZA0KICAgIGJlIG5vbi1mcmVlLCB3 aGljaCB3b3VsZCBub3QgYmUgYWNjZXB0YWJsZSB0byBHdWl4LiBMaWtld2lzZSwNCiAgICBw YXRjaGVzIHNob3VsZCBub3QgYmUgdXNlZCB0byByZW1vdmUgYnVuZGxlZCBsaWJyYXJpZXMs IHRvIGF2b2lkDQogICAgbGFyZ2Ugc3BhY2UgdXNhZ2UsIGJ1dCB0aGlzIGlzIG5vdCBhbiBh YnNvbHV0ZSBydWxlIHVubGlrZSBhcyBmb3INCiAgICBub24tZnJlZSBmaWxlcy4NCiAgKiBT bmlwcGV0cyBhcmUgb2Z0ZW4gY29udmVuaWVudCBmb3IgcmVtb3ZpbmcgdW53YW50ZWQgZmls ZXMgc3VjaCBhcw0KICAgIGJ1bmRsZWQgbGlicmFyaWVzLCBub24tZnJlZSBzb3VyY2VzIGFu ZCBiaW5hcmllcy4gSXQgaXMgdGVjaG5pY2FsbHkNCiAgICBhbHNvIHBvc3NpYmxlIHRvIHVz ZSBwaGFzZXMgZm9yIHRoaXMsIGFsYmVpdCBzbGlnaHRseSBsZXNzDQogICAgY29udmVuaWVu dCBhdCB0aW1lcy4gSG93ZXZlciwgcGhhc2VzIG11c3Qgbm90IGJlIHVzZWQgdG8gcmVtb3Zl DQogICAgbm9uLWZyZWUgc291cmNlcywgYXMgdGhlbiB0aGUgb3V0cHV0IG9mICJndWl4IGJ1 aWxkIC0tc291cmNlIiB3b3VsZA0KICAgIHN0aWxsIGNvbnRhaW4gdGhlIG5vbi1mcmVlIHNv dXJjZXMsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIEd1aXgnDQogICAgc3RhbmNlIG9u IGZyZWUgc29mdHdhcmUuIExpa2V3aXNlLCBwaGFzZXMgc2hvdWxkIG5vdCBiZSB1c2VkIHRv DQogICAgcmVtb3ZlIGJpbmFyaWVzOyBob3dldmVyLCB0aGlzIGlzIG5vdCBzdHJpY3RseSBm b3JiaWRkZW4uDQogICogU25pcHBldHMgbXVzdCBub3QgZW1iZWQgc3RvcmUgaXRlbXMgaW4g dGhlIHNvdXJjZSwgYXMgdGhpcyBpcw0KICAgIGluY29tcGF0aWJsZSB3aXRoIGNyb3NzLWNv bXBpbGF0aW9uIGFuZCBwcmV2ZW50cyBlZmZlY3RpdmVseSBzaGFyaW5nDQogICAgdGhlIHNv dXJjZSBjb2RlIHByb2R1Y2VkIHdpdGggImd1aXggYnVpbGQgLS1zb3VyY2UiIHdpdGggcGVv cGxlDQogICAgdXNpbmcgbm9uLUd1aXggc3lzdGVtcy4NCiAgKiBJbiBwcmluY2lwbGUsIHlv dSBjYW4gYXBwbHkgYSBwYXRjaCBmcm9tIGEgcGhhc2UuIEhvd2V2ZXIsIHRoaXMNCiAgICBj YXVzZXMgdGhlIHJlc3VsdCBvZiAiZ3VpeCBidWlsZCAtLXNvdXJjZSIgdG8gbm90IGNvcnJl c3BvbmQgdG8gdGhlDQogICAgYWN0dWFsIHNvdXJjZSBjb2RlIGFueW1vcmUgKGkuZS4sIGl0 IGRvZXNuJ3QgYWN0IGFzIGNvcnJlc3BvbmRpbmcNCiAgICBzb3VyY2UgYW55bW9yZSksIHNv IGNvbnNpZGVyIHRoaXMgYSBsYXN0IHJlc29ydCBmb3Igc2l0dWF0aW9ucyBzdWNoDQogICAg YXMgYXZvaWRpbmcgY2F1c2luZyBhIHdvcmxkLXJlYnVpbGQgZm9yIGEgcGF0Y2ggZml4aW5n IGENCiAgICB0YXJnZXQtc3BlY2lmaWMgYnVnIGJ5IG1ha2luZyB0aGUgcGF0Y2hpbmcgY29u ZGl0aW9uYWwgdXBvbg0KICAgIHRhcmdldC1mb28/LiBJZiB5b3UgYXBwbHkgYSBwYXRjaCBm cm9tIGEgcGhhc2UsIG1ha2Ugc3VyZSB0aGF0IHRoZQ0KICAgIHBhdGNoIGFwcGVhcnMgaW4g dGhlIGlucHV0cyBvciBuYXRpdmUtaW5wdXRzLCBzdWNoIHRoYXQgImd1aXggYnVpbGQNCiAg ICAtLXNvdXJjZT1hbGwiIHdpbGwgaW5jbHVkZSB0aGUgcGF0Y2guDQoNCiAgICBAYyB0aGlz IHJlbGF4ZXMgdGhlIG9sZCBydWxlIGEgbGl0dGxlDQoNCiAgKiBJZGVhbGx5LCB0aGUgc291 cmNlIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luIHNob3VsZCBiZSB1c2FibGUgZm9yDQogICAg YnVpbGRpbmcgb24gYW55IHN5c3RlbSB0aGF0IHRoZSB1cHN0cmVhbSBwYWNrYWdlIHN1cHBv cnRzIChldmVuIGlmDQogICAgR3VpeCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgc3lzdGVtKSwg YXMgYSBjb3VydGVzeSB0byB0aGUgcGVvcGxlIHRoYXQNCiAgICB0aGUgc291cmNlIGNvZGUg aXMgc2hhcmVkIHdpdGguIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGFuIGFic29sdXRlDQogICAg cnVsZSwgbW9zdCBpbXBvcnRhbnQgaXMgdGhhdCBpdCBpcyB1c2FibGUgb24gR3VpeCBhbmQg aXQgaXMgYWxsb3dlZA0KICAgIHRvIG5lZ2xlY3QgdGhpcyByZWNvbW1lbmRhdGlvbiB3aGVu IGl0IGlzIHRyaWNreSB0byBmb2xsb3cgb3IgYQ0KICAgIGxhcmdlIGFtb3VudCBvZiB3b3Jr LiBGb3IgZXhhbXBsZSwgaWYgc29tZSBXaW5kb3dzLXNwZWNpZmljIHNvdXJjZQ0KICAgIGZp bGVzIGFyZSBub24tZnJlZSwgeW91IGNhbiBzaW1wbHkgcmVtb3ZlIHRoZW0gd2l0aG91dCBy ZXBsYWNpbmcNCiAgICB0aGVtIGJ5IGEgZnJlZSBpbXBsZW1lbnRhdGlvbiwgZXZlbiBpZiB0 aGF0IHdvdWxkIHJlZHVjZSB0aGUgc2V0IG9mDQogICAgc3lzdGVtcyB0aGUgcGFja2FnZSBj YW4gYmUgYnVpbHQgb24uDQoNClNvbWV0aW1lcywgdGhlcmUgcmVtYWlucyBtb3JlIHRoYW4g b25lIGFjY2VwdGFibGUgd2F5IHRvIGFjY29tcGxpc2ggdGhlIA0KZ29hbC4gSW4gdGhhdCBj YXNlLCBjaG9vc2Ugd2hhdGV2ZXIgYXBwZWFycyB0byBiZSBtb3N0IGNvbnZlbmllbnQuDQoN CltlbmRdDQoNCihDb21tZW50cyB3ZWxjb21lLCBhbmQgcmVxdWlyZWQgdG8gZ28gZm9yd2Fy ZCkNCg0KR3JlZXRpbmdzLA0KTWF4aW1lDQoNCg== --------------W9v38lk0z0Cnb3TcNkvaRfvH Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Context: it's currently a mess:, and at times contradictory

  • There is policy involving those three, as can be seen from the shepherd mess.
  • This policy is partially secret, as can be seen by some people treating some things as policy even if it's not in the manual.
  • Some versions of the policy are based on archeology, e.g. see the 'snippets were introduced for this particular purpose, so don't use it for other things=E2=80=99 which is not documented in= the manual as sole legitimate reason and asking contributors to read all past discussions seems too much for me.
  • Sometimes, people refer to the manual (Snippets versus Phases) for how things (should) work, but what they say is not actually present in that section of the manual.
  • Some variants of the policy are contradictory with each other (IIRC)
  • Some of the policies are contradictory with current practice in other Guix packages.
  • '(guix)Snippets versus Phases says Phases' states that it is elusive.
  • The section name implies it's a =E2=80=98X versus Y=E2=80=99, w= hich seems polarizing? (Maybe?)
  • The section neglects the is/ought-distinction -- it just says what is typically used for what, not whether they should be used for them and whether they are allowed to be used for other things, so that section does not seem policy to me (except for the single 'should produce' and 'must not' line), only matters of fact.

I can't work with such a mess. As such, I've a proposal for a consistent, clear and non-elusive set of rules and guidelines, based on the following principles:

  • It appears we cannot agree on what exactly the policy should be, but having a single policy everyone can use even if some would rather have the specifics be a tiny bit different, is much better than the mess of everyone having their own policy.
  • There are no absolutes, except that the result of "guix build --source" must be free software;
  • There can be more than one (acceptable) way to do things, but this doesn't make things elusive, this just means there are multiple acceptable options and you should probably go for the simplest.

More concretely, I propose the following new contents for (guix)Snippets versus Phases (the phrasing could use some work for smooth reading), which I believe to be sufficiently clear (except for some phrasing that could be tweaked, e.g. the phrases are currently rather long), covers a sufficient amount of cases (feel free to respond if you see a missing case), free of contradictions (likewise) and mostly in line with current practice:

[start]

@c: There is no opposition or such, so no versus, let's not start with polarisation.

20.4.5 Snippets, phases and patches

Snippets, phases and patches at times serve overlapping purposes. To decide between the three, there are several considerations to keep in mind:

  • Patches must not be used to remove non-free files, because a patch by construction contains the non-free file itself so the patch would be non-free, which would not be acceptable to Guix. Likewise, patches should not be used to remove bundled libraries, to avoid large space usage, but this is not an absolute rule unlike as for non-free files.
  • Snippets are often convenient for removing unwanted files such as bundled libraries, non-free sources and binaries. It is technically also possible to use phases for this, albeit slightly less convenient at times. However, phases must not be used to remove non-free sources, as then the output of "guix build --source" would still contain the non-free sources, which is incompatible with Guix' stance on free software. Likewise, phases should not be used to remove binaries; however, this is not strictly forbidden.
  • Snippets must not embed store items in the source, as this is incompatible with cross-compilation and prevents effectively sharing the source code produced with "guix build --source" with people using non-Guix systems.
  • In principle, you can apply a patch from a phase. However, this causes the result of "guix build --source" to not correspond to the actual source code anymore (i.e., it doesn't act as corresponding source anymore), so consider this a last resort for situations such as avoiding causing a world-rebuild for a patch fixing a target-specific bug by making the patching conditional upon target-foo?. If you apply a patch from a phase, make sure that the patch appears in the inputs or native-inputs, such that "guix build --source=3Dall" will include the patch.
    =
    @c this relaxes the old rule a little
  • Ideally, the source derived from the origin should be usable for building on any system that the upstream package supports (even if Guix does not support that system), as a courtesy to the people that the source code is shared with. However, this is not an absolute rule, most important is that it is usable on Guix and it is allowed to neglect this recommendation when it is tricky to follow or a large amount of work. For example, if some Windows-specific source files are non-free, you can simply remove them without replacing them by a free implementation, even if that would reduce the set of systems the package can be built on.

Sometimes, there remains more than one acceptable way to accomplish the goal. In that case, choose whatever appears to be most convenient.

[end]

(Comments welcome, and required to go forward)

Greetings,
Maxime

--------------W9v38lk0z0Cnb3TcNkvaRfvH-- --------------j73DZ0GydrKaxIhhwdS0aOFS Content-Type: application/pgp-keys; name="OpenPGP_0x49E3EE22191725EE.asc" Content-Disposition: attachment; filename="OpenPGP_0x49E3EE22191725EE.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEX4ch6BYJKwYBBAHaRw8BAQdANPb/d6MrGnGi5HyvODCkBUJPRjiFQcRU5V+m xvMaAa/NL01heGltZSBEZXZvcyA8bWF4aW1lLmRldm9zQHN0dWRlbnQua3VsZXV2 ZW4uYmU+wpAEExYIADgWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCX4ch6AIbAwUL CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBJ4+4iGRcl7japAQC3opZ2KGWzWmRc /gIWSu0AAcfMwyinFEEPa/QhUt2CogD/e2RdF4CYAgaRHJJmZ9WU7piKbLZ7llB4 LzgezVDHggzNJU1heGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT7C kAQTFggAOBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJf56ycAhsDBQsJCAcDBRUK CQgLBRYCAwEAAh4BAheAAAoJEEnj7iIZFyXujpQBAKV1SwDDl4f24rXciDlB9L8W ycZt30CgbewMSRQk4mvbAP9dFMbVVixYBd6C8cfhR+NsOBGiOJnQABlUmgNuqGFJ Dc44BF+HIegSCisGAQQBl1UBBQEBB0BOlzIWiJzgobMF6/cqwLaLk7jIcFSZ++c0 k9cCNT6YXwMBCAfCeAQYFggAIBYhBMHzPuIMUo/bfdcBH0nj7iIZFyXuBQJfhyHo AhsMAAoJEEnj7iIZFyXuMr0BAJc8cl5PGvVmVuSQVKjleNl4DK1/XAaPAYPe34AE fZJPAP9IqLCQhH/FeJanHqBP8gNdGNI2qn8RnnLVfRJgUjZ1BA=3D=3D =3DOVqp -----END PGP PUBLIC KEY BLOCK----- --------------j73DZ0GydrKaxIhhwdS0aOFS-- --------------QXCWPXftD3PE4HelVwubFFSn-- --------------e7ERR0YUy3m70MWdcWKUbHRW Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYt4LTQUDAAAAAAAKCRBJ4+4iGRcl7gnS AP9NlGgWqZAUwXOJ2+s0Er0svnEaAeSWXRgwspj9ItnTwgD+I1Vxo4+zLYosMByTWGvJfVuG6HT2 +OaEbUKETIkAvgk= =LmKx -----END PGP SIGNATURE----- --------------e7ERR0YUy3m70MWdcWKUbHRW--