When to make new releases, how to use milestone

A discussion about the version release, not only about the aiida-core but also more general for plugins and other libraries we maintained. Questions I have are:

  • How to properly use the milestone feature of GitHub, and who should manage the milestones.
  • When and how often should we make releases
  • Which should go to which release

I think the answer is different between aiida-core and plugins and other libraries such as things in AiiDAlab. But it can be a guideline and some tips so at least in the team we have some agreement and can have a clear expectation on the new releases.

I personally in AiiDAlab repos use milestones as a “wishlist”, and put issues and PRs to it for what I think can be included in the next release. If it is too big, put to the next minor version, if it is small, put it to the patch release. If something obviously breaks the backward compatibility, consider putting it to the next major release. But worth to define “small” and “big”.

Pining @sphuber @danielhollas who is already involved in the discussion.

We were using milestones at some point, but to be honest, our development speed is relatively slow that it was mostly just added bureaucracy without much added benefit, so we stopped using it. If it can bring more clarity and even speed-up development, I would be fine with reintroducing it.

How to properly use the milestone feature of GitHub, and who should manage the milestones.

I think your suggestion of using it as you use it for AiiDAlab makes sense. It was also how we used to use it.

When and how often should we make releases

I think there is no fixed answer to this. Again, I think our development speed is too slow for having a fixed release schedule make sense. So far we are just playing it by ear. We are staying away from having to release major versions as it disrupts the ecosystem too much. If we have a “reasonable” amount of features in main it might be time for a minor release. Otherwise a patch release can be made. And whenever needed we can make a patch release on a support branch (as we just did for v2.4.1). I have the sense that this has been working just fine. But if you want to formalize this more, then I am not against this.