[GCD PATCH] 00X-international-substitutes.md: New proposal.

  • Open
  • quality assurance status badge
Details
2 participants
  • Andreas Enge
  • Antero Mejr
Owner
unassigned
Submitted by
Antero Mejr
Severity
normal

Debbugs page

A
A
Antero Mejr wrote on 17 Aug 10:48 -0700
(address . guix-patches@gnu.org)
87v7ml261m.fsf@antr.me
---
00X-international-substitutes.md | 109 +++++++++++++++++++++++++++++++
1 file changed, 109 insertions(+)
create mode 100644 00X-international-substitutes.md

Toggle diff (117 lines)
diff --git a/00X-international-substitutes.md b/00X-international-substitutes.md
new file mode 100644
index 0000000..11c6a4f
--- /dev/null
+++ b/00X-international-substitutes.md
@@ -0,0 +1,109 @@
+title: International substitute servers
+id: <the next available number>
+status: draft
+discussion: <draft|submitted|accepted|withdrawn|deprecated>
+authors: Antero Mejr
+sponsors: <Sponsor Name>
+date: <date when the discussion period starts>
+draft-date: 2025-08-07
+discussion-date: <date when the discussion period starts>
+deliberation-date: <date when the deliberation starts>
+SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
+---
+
+# Summary
+
+The official binary substitute servers for Guix, `ci.guix.gnu.org` and
+`bordeaux`, are both located in Western Europe. Users outside Western Europe may
+experience slower speeds when downloading substitutes: 50-200 kbps is not
+uncommon. Since substitutes can be quite large, this causes significant slow
+down when performing package operations. This RFC proposes the establishment of
+additional substitute servers in other regions.
+
+# Motivation
+
+In the present state, users outside Europe experience substitute download speeds
+on the order of kilobits per second. This comprises some of the perceived
+"slowness" of Guix, as mentioned in all three of the [Guix
+surveys](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/).
+Other package managers with distributed substitute servers achieve download
+speeds of tens or even hundreds of megabytes per second, many times faster than
+the single Guix substitute server can provide.
+
+Common dependency packages such as LLVM can be large, around 50-200 MB.
+Downloading substitutes for them on such a slow connection will take at least 5
+minutes, and that is only for a single dependency. This is a significant
+impediment to package management operations and workflows.
+
+Distributing substitutes can also increase reliability. As it stands, if
+`ci.guix.gnu.org` is not available, the user will not be able to download
+substitutes at all. It also assists with reproducibility: more identical
+substitute builds means a higher degree of assurance of deterministic,
+reproducible packages.
+
+# Detailed Design
+
+Many package managers make available dozens of substitute servers (often called
+"mirrors") from which to download compiled packages. Usually package managers
+have some sort of configuration option to select the mirror with the fastest
+connection, typically the mirror that is geographically closest, and possibly
+some sort of auto-detection of connection speeds. Guix does not currently have
+such a configuration option, and defaults to `ci.guix.gnu.org`. The addition of
+a mirror selection configuration option is part of this proposal. Such an option
+could be a `guix-configuration` option of `guix-service-type`.
+
+The Guix installer, for both the ISO and foreign-distro forms, would have an
+additional prompt to select a substitute server from a list.
+
+Since many Guix users and developers are based in the United States, a US-based
+server would be a sensible first step beyond the European region. From there
+community feedback can be solicited to determine locations for future servers,
+so long as sufficient funds are available.
+
+## Cost of Reverting
+
+Cost scale: 0 - No incompatibility
+
+Users of Guix System would experience no change, as substitute server
+authentication is handled automatically. Users of Guix on foreign distros who
+are installing for the first time would experience no change, so long as they
+choose to authorize binary substitutes at install time.
+
+For users of Guix that is already installed on a foreign distro, they may need
+to follow [these
+steps](https://guix.gnu.org/manual/en/html_node/Substitute-Server-Authorization.html)
+to authorize the new substitute servers if they wish to use them. Otherwise they
+would not see the benefits.
+
+No deprecation of existing substitute servers would be necessary.
+
+Depending on whether colocation is used, maintenance of the substitute server
+may require a Guix developer in the geographic area of the server, with proper
+vetting/access clearance to perform administrative tasks directly on the
+hardware. Remote maintenance of the server(s) would be possible for most
+operations.
+
+Should a new substitute server need to be decommissioned (for whatever reason),
+there would need to be a process established for doing so without breaking
+compatibility. This would involve having the decommissioned substitute server
+URL redirect to a different active and authorized substitute server.
+
+# Drawbacks and Open Issues
+
+TODO: Decide specifics (colocate vs. cloud, location)
+
+The main drawback of maintaining additional substitute servers is cost, in both
+the initial investment and recurring costs. For example, Nix serves their
+infrastructure through [Amazon
+AWS](https://discourse.nixos.org/t/s3-sponsorship-extension-more-resources-to-build-a-more-sustainable-nix/50936)
+and their recurring costs are $15,000 per month.
+
+However, Guix could potentially mitigate some of the costs. Making use of
+donated hardware, and using colocation instead of the cloud could reduce the
+monthly spend. Also the FSF may have resources that can provide servers or
+colocation services at a reduced price. Guix also has an FSF [Working Together
+Fund](https://my.fsf.org/civicrm/contribute/transact?reset=1&id=50) that could
+potentially be used to fund substitute servers.
+
+The [Guix Foundation](https://foundation.guix.info/) may also be interested in
+providing financial support for international substitute servers.
--
2.50.1
A
A
Andreas Enge wrote on 18 Aug 08:12 -0700
(name . Antero Mejr)(address . mail@antr.me)(address . 79260@debbugs.gnu.org)
aKNC6nQSELRSMAnW@jurong
Hello Antero,

I forgot the official policy, but I think you are supposed to send GCD
proposals to guix-devel; very few people still look at the old issue
tracker after things have moved to Codeberg.

Andreas
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 79260@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 79260
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch