prepro -- prepare GOPROXY and go-import friendly website Go modules (https://go.dev/ref/mod), that are not located on hard-coded well-known hosting platforms like GitHub, are discovered by go-get using the go-import-protocol: it requests special URL, based on module's name, to get HTML with tag. That tag will redirect go-get further either to VCS, or to GOPROXY-capable URL. If VCS is in use, then go-get will invoke external utilities to checkout the code from VCS. After that, it will create ZIP-archive with the snapshot of the code and store it locally in cache directory. GOPROXY protocol can be treated just like a HTTP-transport to that cache directory. Only several prepared static files per each module's version is enough. * VCS solution is usually quicker to setup, because development VCS repositories are publicly available in most cases too * VCS requires corresponding external tools to be installed. Hardly either Fossil or GNU Bazaar are often installed on many systems * VCS checkout requires more disk space: for the VCS itself and for the cached module's archive * VCS is slower to check and download in general, because it requires several round-trips during the handshake between server and client * GOPROXY is easier to scale on multiple hosts, because you have to replicate only several static files Another advantage of GOPROXY is actually the reason why "prepro" was born: current go-get can not handle SHA256-driven Git repositories. It git-init-s empty repository first and then tries to git-fetch it, that won't work if git-init was not aware of SHA256-based format. GOPROXY gives easy ability to make that module's repository publicly fetchable.