I wish I would upload revisions via the command line.
pragmatics
Firstly, this would simply be more convenient, especially in that it would remember me I should always update the source repo, add a tag, etc. etc.
philosophy
Second, I think this would make people like revisions more for philosophical reasons. Right now, because revisions are done so differently, it is easily to mentally define revisions in that way:
versions are normal releases, revisions are something created in this special out of band way
But that is icky and imperative. The right way to think about versions always relational:
(version-x, source-x) Upholds-Invariants (version-y, source-y)
is valid if the “distance” between the sources does not exceed a threshold defined by the “distance” between the versions. This formalism plainly more beautiful, and also leads one to useful connections with many branches of mathematics (metrics and orders, at least).
With normal versions, we have the PVP defining the relation, which is sadly not enforceable with the tooling we have. With revisions, we indeed have the tooling, as implemented in the Hackage server!
This to me shows we have an opportunity to do better. Not only can we do revision uploads from cabal
, we can factor out the validation code and put it in Cabal so users can validate revisions locally!
This would whet the appetite for making cabal-diff
GitHub - phadej/cabal-extras: A tool suite to aid Haskell development using `cabal-install` first class (with the support from GHC, etc. it needs) so we implement the PVP just formally and conveniently.
Change logs in revisions?
Currently I have to document what I did in the revision in the change log after the fact. This is a bit annoying, especially as I and my colleagues are always working hard to remind each other to normally make sure we don’t leave the change log for later, so as not to burden whoever cuts the release.
If we allow sdists for revisions, might we relax the rules so that the change log file is also allowed to change? I am a bit wary of my desire here — some evil project could use the change log as part of the source proper! — but perhaps there is a way we can make this safe, e.g. by somehow ensuring the change log file is not part of the source present during buidls.