Viability of Mercurial as an alternative to Git in 2024?

PIERRE AUGIER pierre.augier at univ-grenoble-alpes.fr
Tue Sep 3 11:48:30 UTC 2024


Thanks for your answer Anton,

----- Mail original -----
> De: "Anton Shestakov" <engored at gmail.com>
> À: "PIERRE AUGIER" <pierre.augier at univ-grenoble-alpes.fr>, "mercurial" <mercurial at lists.mercurial-scm.org>
> Envoyé: Vendredi 30 Août 2024 15:24:14
> Objet: Re: Viability of Mercurial as an alternative to Git in 2024?

> 19.07.2024 16:28, PIERRE AUGIER пишет:
>> Unfortunately, there is no Mercurial wheels on PyPI (see
>> https://pypi.org/project/mercurial/#files)! I don't know any other big public
>> open-source Python projects using extensions that do not upload wheels on PyPI.
>> Nowadays, it is very simple.
> 
> I'm not sure why it wasn't mentioned, but we used to have wheels on
> PyPI. I think at some point the person who was doing it manually got too
> busy and now there are no wheels for newer releases.

I think this should be completely automatized. A Mercurial maintainer pushes a version tag on the repo and few hours later we have wheels for most standard platforms on PyPI.
This is done like that for most of popular Python projects using extensions (for example Numpy, Scipy, Matplotlib, Scikit-learn, Scikit-image, Mypy, Tornado, etc.).

> https://pypi.org/project/mercurial/6.2.2/#files still has wheels for
> windows, for example.
> 
>> If this is a matter of founding, I may be able to help a bit and more generally
>> we should organize ourself to get enough money to get these improvements.
> 
> Well then. If you want to contribute, you can fund/motivate someone to,
> for example, simply get some work done to set up building Mercurial
> wheels on our CI (for anylinux), and someone to contribute a windows box
> and/or a mac that can be used for our CI to build wheels.

My sentence was here to see if someone could be motivated to work on that for a bit of money. I can't spend more time on open-source right now to do it myself.

Moreover, I don't know the CI used by Mercurial. I'm not sure if there are Windows or macOS machines...

I think the simplest way to provide wheels would be to follow projects of the Fluiddyn project (also using Mercurial and foss.heptapod.net), in particular fluidfft, fluidsim and fluidimage. We have mirrors on Github pushed by foss.heptapod.net and then we produce the wheels exactly as most mainstream Python open-source projects, i.e. with Github Actions and cibuildwheel. The maintenance cost is very low.

See
- https://github.com/pypa/cibuildwheel
- https://foss.heptapod.net/fluiddyn/fluidfft/-/blob/branch/default/.github/workflows/wheels.yml
- https://github.com/fluiddyn/fluidfft/actions/runs/10508557043

> There are plenty of build scripts in contrib/packaging/ that build
> wheels, maybe some of them are a couple of lines of code away from being
> runnable on our CI.

We should not need fancy build scripts to build and upload wheels on PyPI. IMHO, since the Mercurial community is not able to work on its own solution, we should go for the mainstream way (through Github Actions), which is very easy and efficient.

For someone with a bit of experience in Mercurial and Github Actions, and the rights on https://foss.heptapod.net/mercurial/mercurial-devel and https://pypi.org/project/mercurial/, I evaluate the time needed to setup this mechanism to no more than few hours (at least to build simple wheels without Rust).

Regards,
Pierre


More information about the Mercurial mailing list