I am looking for feedback/sponsors for a new GCD proposal to set up one or more international (outside EU) binary substitute servers in order to improve download speeds.
The PR is not ready yet because the proposal needs to be a more concrete plan. I would like to collect people's feedback before updating it - if you all think this issue is important, whether colocation vs. cloud would be preferable, where the servers should be located, or any other comments/concerns. The working repository is here: https://codeberg.org/antero/guix-consensus-documents/src/branch/wip-substitutes Here is the initial markdown text: title: International substitute servers id: 6 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 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.