I don’t quite follow your conclusions, @dra27. I think this needs a deep look into opam-repository
, maintenance hours spent on it, and involved CI systems. Together with expectations and maintenance effort of packages (if you ask me, none of the packages I maintain will get new releases for old versions).
git vs http
At the moment, opam does not depend on git. I don’t see value in “switching the default repository to git”. One reason is that github.com is filtered in some countries (e.g. Cuba). Another is that ‘quite feasible to do without “checking out” any of the files’ - this is something that can be done very easily with a tar.gz as well.
smaller opam repositories
I stripped opam-repository down by 75% (having 7000 instead of 30000 opam files), and voila my 8 year old laptop (X250) was way faster with all opam operations (this is opam 2.1.5). I don’t think, as mentioned in the issue referenced, that opam does scale infinitely. This may not be primarily the solver, but the number of files created which all need to be parsed (and then stored in a state file to avoid re-parsing).
Also, take into consideration the long time opam.ocaml.org needs for an update (due to opam2web iterating over all packages). Roughly 4 hours last time I checked on OCurrent Deployer – surely “integrating this with ocaml.org” is the hope some have that it will be much faster, but honestly - how can that be faster (and if it easily can be, why did nobody bother to update opam2web in the meantime with the enhancements)?
From what I heard, at the moment “removal doesn’t work since there’s something broken on macOS”. Something that would be great to have fixed in the next opam release.
Discussion
I’d be happy to discuss this with the opam development team (and the opam-repository maintainers) - with a view on current issues (CI systems, opam.ocaml.org updates, security, maintenance). When I release packages, and I see how old packages are failing, I feel really bad for each package that the CI has to build now, but which will never be installed by anyone else (e.g. old tls releases - who’ll ever install tls 0.9.2?) - why should we put computer resources and human resources on it (triaging failures, updating upper bounds - this takes quite some amount of time (at least for me, when I release packages that are used by lots of other packages)?
PS: I like [ANN] Marking let-if and ssh-agent-unix unavailable - #4 by jbeckford option number 3.