There are no strict rules of how and what URLs you should specify for
your tarballs. But it is highly advisable to get rid of single point of
failures. Hosts may be down. They may have connectivity problems.
Network splits may occur.
Here we use the following precedence preference:
* balancers > mirrors > CDNs > homepage > GitHub
* all links should use HTTP as higher priority than HTTPS
* distcache.FreeBSD.org and cdn.NetBSD.org/pub/pkgsrc/distfiles
are used as least priority fallback
* be aware that codeload.github.com downloads have no guarantees
of format/compression stability (their hashes may change)
There are special country codes for identifying and specifying CDNs:
xa -> Akamai
xc -> Cloudflare
xf -> Fastly
xg -> GitHub
xm -> Amazon
Example list of URLs:
1|dk|http://mirrors.dotsrc.org/gcrypt/gnupg/gnupg-2.5.17.tar.bz2
1|gb|http://mirrorservice.org/sites/ftp.gnupg.org/gcrypt/gnupg/gnupg-2.5.17.tar.bz2
2|dk|https://mirrors.dotsrc.org/gcrypt/gnupg/gnupg-2.5.17.tar.bz2
2|gb|https://mirrorservice.org/sites/ftp.gnupg.org/gcrypt/gnupg/gnupg-2.5.17.tar.bz2
3|de|https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.5.17.tar.bz2
20||http://distcache.FreeBSD.org/ports-distfiles/gnupg-2.5.17.tar.bz2
21|eu|http://distcache.eu.FreeBSD.org/ports-distfiles/gnupg-2.5.17.tar.bz2
21|us|http://distcache.us-east.FreeBSD.org/ports-distfiles/gnupg-2.5.17.tar.bz2
21|us|http://distcache.us-west.FreeBSD.org/ports-distfiles/gnupg-2.5.17.tar.bz2
Here we see two HTTP mirrors or the same priority. Then their HTTPS
alternative. Then the main project's download area. FreeBSD's distcache
as a fallback, having balancer entrypoint.
List of known mirrors:
=> http://download-mirror.savannah.gnu.org/releases/00_MIRRORS.html
=> http://mirror.planetunix.net/
=> http://mirrors.cpan.org/
=> http://www.openbsd.org/build/mirrors.dat
=> https://archlinux.org/mirrors/
=> https://cran.r-project.org/mirrors.html
=> https://crux.nu/Main/Download#Mirrors
=> https://ctan.org/mirrors/
=> https://docs.freebsd.org/en/books/handbook/mirrors/#mirrors
=> https://gcc.gnu.org/mirrors.html
=> https://gnupg.org/download/mirrors.html
=> https://launchpad.net/ubuntu/+cdmirrors
=> https://mirrors.almalinux.org/
=> https://mirrors.alpinelinux.org/
=> https://mirrors.opensuse.org/
=> https://mirrors.slackware.com/mirrorlist/
=> https://sourceforge.net/p/forge/documentation/Mirrors/
=> https://sourceware.org/mirrors.html
=> https://status.artixlinux.org/mirrors/
=> https://www.debian.org/mirror/list
=> https://www.gentoo.org/downloads/mirrors/
=> https://www.gnu.org/prep/ftp.html
=> https://www.netbsd.org/mirrors/
=> https://www.openbsd.org/ftp.html
=> https://www.openssh.org/portable.html
=> https://www.ruby-lang.org/en/downloads/mirrors/
=> https://www.x.org/wiki/Releases/Download/
=> https://xmirror.voidlinux.org/