Ensure compatibility with older Python versions in CI
Currently, we use Vermin to ensure that our code doesn't use Python features that don't work with our supported version range. However, this check has become effectively meaningless as Vermin is nearing a year without a new release at the time of writing, and very little activity in the master branch for almost as long. I've not been able to find an alternative to Vermin. In a Reddit thread I found, people are still recommending Vermin, and this StackOverflow thread also just suggests Vermin. I also looked through the forks of Vermin on GitHub, and none of them are active.
As such, it doesn't seem like there's any Vermin alternative or Vermin fork that we easily could use as a drop-in replacement for our current strategy. I see three possible solutions:
- Fork Vermin and maintain it ourselves: I don't want to do this and I don't think anyone else here has the time or will to do it.
- Run all our pipelines with the oldest Python version we support: Simple, but then we don't get any errors if we use some feature that was removed in a new version.
- Run parallel pipelines with all Python versions we support: More complex, but I think it's the best option. This was we actually test that all Python versions we support can execute pmbootstrap and we're not reliant on any third-party tooling to stay updated. One downside is that it's only as exhaustive as our testsuite, but I think that's unavoidable unless we go with option 1.
Also, previous discussion regarding this: !2455 (comment 453336)