Hi all,

In consideration of the change (pending review) which adds the much
requested `--retry-failed` feature:

    https://github.com/apache/buildstream/issues/1335
    https://github.com/apache/buildstream/pull/1849

... I am reluctant to make a release including this feature addition
without bumping the minor version.

I think the "safely postponed" decision about versioning now has to be
addressed.

And as this is the first feature addition BuildStream 2.x release, it
presents an opportunity to break away from the versioning scheme
inherited from our origins in GNOME, which I have to reluctantly agree
is confusing and not what people expect from a semver versioning
scheme.

I.e. currently:
  2.1.x = development snapshots leading up to a 2.2.0 release

But it would be nice if the next feature adding release was: 2.1.0

And that a dev snapshot leading up to 2.1.0 would be 2.1.0-dev0,
and -dev1, -dev2 etc ... in the case that we do want to release
dev snapshots, this follows the format generally used for python
prereleases.

Please let me know your thoughts on this change.

Cheers,
    -Tristan

PS:

I've done a bit of analysis, and looks like the blockers we have to
actually updating the versioning scheme are few, here are the the
results of my research:

* runtime checks

  A cursory reading of the code shows me there is no changes needed
  here.

  - The installed version is parsed by splitting on "." and only the
    first 2 components (major/minor) are observed.

  - One can depend on the next release version in advance when only
    dev snapshots are available.

    E.g. a project.conf of plugin's BST_MIN_VERSION can require "2.1.0"
    when there is no such released version, if a "2.1.0-dev0" is
    available.

* CI release workflows

  The release workflow is triggered on the '*.*.*' glob match on pushed
  tags, so this does not prevent the automated releases to occur on dev
  snapshots.

  This requires no changes as far as I can see, the "-devN" standard
  for python will allow people to test development snapshots with
  `pip install --pre BuildStream` automatically, as documented here:

  
https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#pre-release-versioning

* badges

  doc/badges.py generates the badge svg/html snippet, which is
  generated in CI and continuously updated at:

  https://docs.buildstream.build/master/_static/release.svg
  https://docs.buildstream.build/master/_static/release.html
  https://docs.buildstream.build/master/_static/snapshot.svg
  https://docs.buildstream.build/master/_static/snapshot.html

  These are rendered inline in all published documentation and in
  the README, so that no matter what documentation you are looking at,
  you can be aware of what the latest stable/devel versions are.

  This will need to be updated to differentiate stable/devel git tags
  differently.

  Since this only cares about the _latest_ versions, we need not care
  about historical 1.x tags.

* documentation index website

  At https://docs.buildstream.build/, we generate the index of per
  release documentation.

  The generate_pages.py script which generates this will need to be
  updated so that:
  - We continue to ignore odd numbered minor points for the bst1 docs
  - We stop ignoring odd numbered minor points for the bst2 docs


Reply via email to