qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Bolognani <abologna@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Ben Widawsky" <ben@bwidawsk.net>,
	"Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	qemu-devel@nongnu.org,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Rohit Shinde" <rohit.shinde12194@gmail.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>, "Fam Zheng" <fam@euphon.net>,
	"Max Reitz" <mreitz@redhat.com>, "John Snow" <jsnow@redhat.com>
Subject: Re: [PATCH v2 03/15] python: add VERSION file
Date: Tue, 20 Oct 2020 10:52:14 +0200	[thread overview]
Message-ID: <bec8bd228f9d3627cb848241f2df413d917bd500.camel@redhat.com> (raw)
In-Reply-To: <20201019100207.GD236912@redhat.com>

On Mon, 2020-10-19 at 11:02 +0100, Daniel P. Berrangé wrote:
> On Mon, Oct 19, 2020 at 11:45:09AM +0200, Andrea Bolognani wrote:
> > I think this need to be considered very carefully.
> > 
> > I'm not overly familiar with the Python ecosystem but it would appear
> > that, despite PEP 440 not mandating this, many (most?) of the
> > packages uploaded to PyPi are using semantic versioning.
> 
>   https://packaging.python.org/guides/distributing-packages-using-setuptools/#choosing-a-versioning-scheme
> 
> Semver is the recommended approach, but they explicitly list date
> based versioning as a valid alternative
> 
>   "Semantic versioning is not a suitable choice for all projects, 
>    such as those with a regular time based release cadence and a 
>    deprecation process that provides warnings for a number of 
>    releases prior to removal of a feature."
> 
> That paragraph describes QEMU's scenario.

The section on date based versioning continues with

  A key advantage of date based versioning is that it is
  straightforward to tell how old the base feature set of a
  particular release is given just the version number.

  Version numbers for date based projects typically take the form of
  YEAR.MONTH (for example, 12.04, 15.10).

The problem with QEMU's version numbers is that, while they are date
based, they still *look* like semver, so it wouldn't be at all
unreasonable for the user to expect that they also *behave* like
semver.

This is not much of a problem when it comes to the main binary, but
it is certainly much more confusing when you start using the same
version number for a Python library.

> > With that in mind, I think it would be unwise for qemu.* not to do
> > the same; in particular, using a version number that's not <1.0.0 for
> > a package that is very much in flux will almost certainly break
> > people's expectations, and is also not something that you can easily
> > take back at a later time.
> 
> I don't think it is that big a deal, and there is clear benefit to
> having the python code version match the QEMU version that it is
> the companioon to.
> 
> Ultimately the versioning scheme just impacts on the version string
> conditionals people list for their dependancies. Apps consuming QEMU
> can handle any of the version schemes without much difference.

The problem comes from the expectations: a Python programmer, who is
used to semver due to its prominence on PyPi, when deciding whether
to move from qemu.core 4.2.0 to 5.0.0 might expect to need code
changes to cope with API-breaking changes - where in fact there are
none, and at the same time might expect upgrading to 5.2.0 from 5.0.0
to be completely straightforward when in reality a feature their
application depends on might have been removed after the usual
deprecation period.

-- 
Andrea Bolognani / Red Hat / Virtualization



  parent reply	other threads:[~2020-10-20  8:54 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-14 14:29 [PATCH v2 00/15] python: create installable package John Snow
2020-10-14 14:29 ` [PATCH v2 01/15] python: create qemu.core package John Snow
2020-10-14 18:03   ` Philippe Mathieu-Daudé
2020-10-14 14:29 ` [PATCH v2 02/15] python: add qemu package installer John Snow
2020-10-14 14:29 ` [PATCH v2 03/15] python: add VERSION file John Snow
2020-10-14 16:03   ` John Snow
2020-10-19  9:45   ` Andrea Bolognani
2020-10-19 10:02     ` Daniel P. Berrangé
2020-10-19 16:13       ` John Snow
2020-10-20  8:52       ` Andrea Bolognani [this message]
2020-10-20  9:06         ` Daniel P. Berrangé
2020-10-20  9:14           ` Andrea Bolognani
2020-10-14 14:29 ` [PATCH v2 04/15] python: add directory structure README.rst files John Snow
2020-10-14 18:05   ` Philippe Mathieu-Daudé
2020-10-14 20:51     ` John Snow
2020-10-14 14:29 ` [PATCH v2 05/15] python: Add pipenv support John Snow
2020-10-14 14:29 ` [PATCH v2 06/15] python: add pylint exceptions to __init__.py John Snow
2020-10-14 14:29 ` [PATCH v2 07/15] python: move pylintrc into setup.cfg John Snow
2020-10-14 14:29 ` [PATCH v2 08/15] python: add pylint to pipenv John Snow
2020-10-14 14:29 ` [PATCH v2 09/15] python: move flake8 config to setup.cfg John Snow
2020-10-14 14:29 ` [PATCH v2 10/15] python: Add flake8 to pipenv John Snow
2020-10-14 14:29 ` [PATCH v2 11/15] python: move mypy.ini into setup.cfg John Snow
2020-10-14 14:29 ` [PATCH v2 12/15] python: add mypy to pipenv John Snow
2020-10-14 14:29 ` [PATCH v2 13/15] python: move .isort.cfg into setup.cfg John Snow
2020-10-14 18:08   ` Philippe Mathieu-Daudé
2020-10-14 14:29 ` [PATCH v2 14/15] python/qemu: add isort to pipenv John Snow
2020-10-14 14:29 ` [PATCH v2 15/15] python/qemu: add qemu package itself " John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bec8bd228f9d3627cb848241f2df413d917bd500.camel@redhat.com \
    --to=abologna@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=armbru@redhat.com \
    --cc=ben@bwidawsk.net \
    --cc=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rohit.shinde12194@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@virtuozzo.com \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).